; LLVM IR from bohanwang/libpgo :: src/core/mesh (predicates_Shewchuk)

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

@splitter = external dso_local global double, align 8
@resulterrbound = external dso_local global double, align 8
@o3derrboundB = external dso_local global double, align 8
@o3derrboundC = external dso_local global double, align 8

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @fast_expansion_sum_zeroelim(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @scale_expansion_zeroelim(i32 noundef, ptr noundef, double noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local double @estimate(i32 noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
define dso_local double @orient3dadapt(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, double noundef %4) #2 {
  %6 = alloca double, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, 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 double, align 8
  %34 = alloca double, align 8
  %35 = alloca [4 x double], align 16
  %36 = alloca [4 x double], align 16
  %37 = alloca [4 x double], align 16
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca [8 x double], align 16
  %42 = alloca [8 x double], align 16
  %43 = alloca [8 x double], align 16
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca [16 x double], align 16
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca [192 x double], align 16
  %53 = alloca [192 x double], align 16
  %54 = alloca i32, align 4
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca [4 x double], align 16
  %71 = alloca [4 x double], align 16
  %72 = alloca [4 x double], align 16
  %73 = alloca [4 x double], align 16
  %74 = alloca [4 x double], align 16
  %75 = alloca [4 x double], align 16
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca double, align 8
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca double, align 8
  %106 = alloca [8 x double], align 16
  %107 = alloca [8 x double], align 16
  %108 = alloca [8 x double], align 16
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca double, align 8
  %113 = alloca double, align 8
  %114 = alloca double, align 8
  %115 = alloca double, align 8
  %116 = alloca double, align 8
  %117 = alloca double, align 8
  %118 = alloca double, align 8
  %119 = alloca double, align 8
  %120 = alloca double, align 8
  %121 = alloca double, align 8
  %122 = alloca double, align 8
  %123 = alloca double, align 8
  %124 = alloca [4 x double], align 16
  %125 = alloca [12 x double], align 16
  %126 = alloca [16 x double], align 16
  %127 = alloca double, align 8
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = alloca double, align 8
  %131 = alloca double, align 8
  %132 = alloca double, align 8
  %133 = alloca double, align 8
  %134 = alloca double, align 8
  %135 = alloca double, align 8
  %136 = alloca double, align 8
  %137 = alloca double, align 8
  %138 = alloca double, align 8
  %139 = alloca double, align 8
  %140 = alloca double, align 8
  %141 = alloca double, align 8
  %142 = alloca double, align 8
  %143 = alloca double, align 8
  %144 = alloca double, align 8
  %145 = alloca double, align 8
  %146 = alloca double, align 8
  %147 = alloca double, align 8
  %148 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store double %4, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 64, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 64, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 128, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 1536, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 1536, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.start.p0(i64 64, ptr %106) #3
  call void @llvm.lifetime.start.p0(i64 64, ptr %107) #3
  call void @llvm.lifetime.start.p0(i64 64, ptr %108) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #3
  call void @llvm.lifetime.start.p0(i64 32, ptr %124) #3
  call void @llvm.lifetime.start.p0(i64 96, ptr %125) #3
  call void @llvm.lifetime.start.p0(i64 128, ptr %126) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #3
  %149 = load ptr, ptr %7, align 8, !tbaa !5
  %150 = getelementptr inbounds double, ptr %149, i64 0
  %151 = load double, ptr %150, align 8, !tbaa !9
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = getelementptr inbounds double, ptr %152, i64 0
  %154 = load double, ptr %153, align 8, !tbaa !9
  %155 = fsub double %151, %154
  store double %155, ptr %12, align 8, !tbaa !9
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = getelementptr inbounds double, ptr %156, i64 0
  %158 = load double, ptr %157, align 8, !tbaa !9
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = getelementptr inbounds double, ptr %159, i64 0
  %161 = load double, ptr %160, align 8, !tbaa !9
  %162 = fsub double %158, %161
  store double %162, ptr %13, align 8, !tbaa !9
  %163 = load ptr, ptr %9, align 8, !tbaa !5
  %164 = getelementptr inbounds double, ptr %163, i64 0
  %165 = load double, ptr %164, align 8, !tbaa !9
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  %167 = getelementptr inbounds double, ptr %166, i64 0
  %168 = load double, ptr %167, align 8, !tbaa !9
  %169 = fsub double %165, %168
  store double %169, ptr %14, align 8, !tbaa !9
  %170 = load ptr, ptr %7, align 8, !tbaa !5
  %171 = getelementptr inbounds double, ptr %170, i64 1
  %172 = load double, ptr %171, align 8, !tbaa !9
  %173 = load ptr, ptr %10, align 8, !tbaa !5
  %174 = getelementptr inbounds double, ptr %173, i64 1
  %175 = load double, ptr %174, align 8, !tbaa !9
  %176 = fsub double %172, %175
  store double %176, ptr %15, align 8, !tbaa !9
  %177 = load ptr, ptr %8, align 8, !tbaa !5
  %178 = getelementptr inbounds double, ptr %177, i64 1
  %179 = load double, ptr %178, align 8, !tbaa !9
  %180 = load ptr, ptr %10, align 8, !tbaa !5
  %181 = getelementptr inbounds double, ptr %180, i64 1
  %182 = load double, ptr %181, align 8, !tbaa !9
  %183 = fsub double %179, %182
  store double %183, ptr %16, align 8, !tbaa !9
  %184 = load ptr, ptr %9, align 8, !tbaa !5
  %185 = getelementptr inbounds double, ptr %184, i64 1
  %186 = load double, ptr %185, align 8, !tbaa !9
  %187 = load ptr, ptr %10, align 8, !tbaa !5
  %188 = getelementptr inbounds double, ptr %187, i64 1
  %189 = load double, ptr %188, align 8, !tbaa !9
  %190 = fsub double %186, %189
  store double %190, ptr %17, align 8, !tbaa !9
  %191 = load ptr, ptr %7, align 8, !tbaa !5
  %192 = getelementptr inbounds double, ptr %191, i64 2
  %193 = load double, ptr %192, align 8, !tbaa !9
  %194 = load ptr, ptr %10, align 8, !tbaa !5
  %195 = getelementptr inbounds double, ptr %194, i64 2
  %196 = load double, ptr %195, align 8, !tbaa !9
  %197 = fsub double %193, %196
  store double %197, ptr %18, align 8, !tbaa !9
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = getelementptr inbounds double, ptr %198, i64 2
  %200 = load double, ptr %199, align 8, !tbaa !9
  %201 = load ptr, ptr %10, align 8, !tbaa !5
  %202 = getelementptr inbounds double, ptr %201, i64 2
  %203 = load double, ptr %202, align 8, !tbaa !9
  %204 = fsub double %200, %203
  store double %204, ptr %19, align 8, !tbaa !9
  %205 = load ptr, ptr %9, align 8, !tbaa !5
  %206 = getelementptr inbounds double, ptr %205, i64 2
  %207 = load double, ptr %206, align 8, !tbaa !9
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  %209 = getelementptr inbounds double, ptr %208, i64 2
  %210 = load double, ptr %209, align 8, !tbaa !9
  %211 = fsub double %207, %210
  store double %211, ptr %20, align 8, !tbaa !9
  %212 = load double, ptr %13, align 8, !tbaa !9
  %213 = load double, ptr %17, align 8, !tbaa !9
  %214 = fmul double %212, %213
  store double %214, ptr %23, align 8, !tbaa !9
  %215 = load double, ptr @splitter, align 8, !tbaa !9
  %216 = load double, ptr %13, align 8, !tbaa !9
  %217 = fmul double %215, %216
  store double %217, ptr %135, align 8, !tbaa !9
  %218 = load double, ptr %135, align 8, !tbaa !9
  %219 = load double, ptr %13, align 8, !tbaa !9
  %220 = fsub double %218, %219
  store double %220, ptr %136, align 8, !tbaa !9
  %221 = load double, ptr %135, align 8, !tbaa !9
  %222 = load double, ptr %136, align 8, !tbaa !9
  %223 = fsub double %221, %222
  store double %223, ptr %137, align 8, !tbaa !9
  %224 = load double, ptr %13, align 8, !tbaa !9
  %225 = load double, ptr %137, align 8, !tbaa !9
  %226 = fsub double %224, %225
  store double %226, ptr %138, align 8, !tbaa !9
  %227 = load double, ptr @splitter, align 8, !tbaa !9
  %228 = load double, ptr %17, align 8, !tbaa !9
  %229 = fmul double %227, %228
  store double %229, ptr %135, align 8, !tbaa !9
  %230 = load double, ptr %135, align 8, !tbaa !9
  %231 = load double, ptr %17, align 8, !tbaa !9
  %232 = fsub double %230, %231
  store double %232, ptr %136, align 8, !tbaa !9
  %233 = load double, ptr %135, align 8, !tbaa !9
  %234 = load double, ptr %136, align 8, !tbaa !9
  %235 = fsub double %233, %234
  store double %235, ptr %139, align 8, !tbaa !9
  %236 = load double, ptr %17, align 8, !tbaa !9
  %237 = load double, ptr %139, align 8, !tbaa !9
  %238 = fsub double %236, %237
  store double %238, ptr %140, align 8, !tbaa !9
  %239 = load double, ptr %23, align 8, !tbaa !9
  %240 = load double, ptr %137, align 8, !tbaa !9
  %241 = load double, ptr %139, align 8, !tbaa !9
  %242 = fneg double %240
  %243 = call double @llvm.fmuladd.f64(double %242, double %241, double %239)
  store double %243, ptr %141, align 8, !tbaa !9
  %244 = load double, ptr %141, align 8, !tbaa !9
  %245 = load double, ptr %138, align 8, !tbaa !9
  %246 = load double, ptr %139, align 8, !tbaa !9
  %247 = fneg double %245
  %248 = call double @llvm.fmuladd.f64(double %247, double %246, double %244)
  store double %248, ptr %142, align 8, !tbaa !9
  %249 = load double, ptr %142, align 8, !tbaa !9
  %250 = load double, ptr %137, align 8, !tbaa !9
  %251 = load double, ptr %140, align 8, !tbaa !9
  %252 = fneg double %250
  %253 = call double @llvm.fmuladd.f64(double %252, double %251, double %249)
  store double %253, ptr %143, align 8, !tbaa !9
  %254 = load double, ptr %138, align 8, !tbaa !9
  %255 = load double, ptr %140, align 8, !tbaa !9
  %256 = load double, ptr %143, align 8, !tbaa !9
  %257 = fneg double %256
  %258 = call double @llvm.fmuladd.f64(double %254, double %255, double %257)
  store double %258, ptr %29, align 8, !tbaa !9
  %259 = load double, ptr %14, align 8, !tbaa !9
  %260 = load double, ptr %16, align 8, !tbaa !9
  %261 = fmul double %259, %260
  store double %261, ptr %24, align 8, !tbaa !9
  %262 = load double, ptr @splitter, align 8, !tbaa !9
  %263 = load double, ptr %14, align 8, !tbaa !9
  %264 = fmul double %262, %263
  store double %264, ptr %135, align 8, !tbaa !9
  %265 = load double, ptr %135, align 8, !tbaa !9
  %266 = load double, ptr %14, align 8, !tbaa !9
  %267 = fsub double %265, %266
  store double %267, ptr %136, align 8, !tbaa !9
  %268 = load double, ptr %135, align 8, !tbaa !9
  %269 = load double, ptr %136, align 8, !tbaa !9
  %270 = fsub double %268, %269
  store double %270, ptr %137, align 8, !tbaa !9
  %271 = load double, ptr %14, align 8, !tbaa !9
  %272 = load double, ptr %137, align 8, !tbaa !9
  %273 = fsub double %271, %272
  store double %273, ptr %138, align 8, !tbaa !9
  %274 = load double, ptr @splitter, align 8, !tbaa !9
  %275 = load double, ptr %16, align 8, !tbaa !9
  %276 = fmul double %274, %275
  store double %276, ptr %135, align 8, !tbaa !9
  %277 = load double, ptr %135, align 8, !tbaa !9
  %278 = load double, ptr %16, align 8, !tbaa !9
  %279 = fsub double %277, %278
  store double %279, ptr %136, align 8, !tbaa !9
  %280 = load double, ptr %135, align 8, !tbaa !9
  %281 = load double, ptr %136, align 8, !tbaa !9
  %282 = fsub double %280, %281
  store double %282, ptr %139, align 8, !tbaa !9
  %283 = load double, ptr %16, align 8, !tbaa !9
  %284 = load double, ptr %139, align 8, !tbaa !9
  %285 = fsub double %283, %284
  store double %285, ptr %140, align 8, !tbaa !9
  %286 = load double, ptr %24, align 8, !tbaa !9
  %287 = load double, ptr %137, align 8, !tbaa !9
  %288 = load double, ptr %139, align 8, !tbaa !9
  %289 = fneg double %287
  %290 = call double @llvm.fmuladd.f64(double %289, double %288, double %286)
  store double %290, ptr %141, align 8, !tbaa !9
  %291 = load double, ptr %141, align 8, !tbaa !9
  %292 = load double, ptr %138, align 8, !tbaa !9
  %293 = load double, ptr %139, align 8, !tbaa !9
  %294 = fneg double %292
  %295 = call double @llvm.fmuladd.f64(double %294, double %293, double %291)
  store double %295, ptr %142, align 8, !tbaa !9
  %296 = load double, ptr %142, align 8, !tbaa !9
  %297 = load double, ptr %137, align 8, !tbaa !9
  %298 = load double, ptr %140, align 8, !tbaa !9
  %299 = fneg double %297
  %300 = call double @llvm.fmuladd.f64(double %299, double %298, double %296)
  store double %300, ptr %143, align 8, !tbaa !9
  %301 = load double, ptr %138, align 8, !tbaa !9
  %302 = load double, ptr %140, align 8, !tbaa !9
  %303 = load double, ptr %143, align 8, !tbaa !9
  %304 = fneg double %303
  %305 = call double @llvm.fmuladd.f64(double %301, double %302, double %304)
  store double %305, ptr %30, align 8, !tbaa !9
  %306 = load double, ptr %29, align 8, !tbaa !9
  %307 = load double, ptr %30, align 8, !tbaa !9
  %308 = fsub double %306, %307
  store double %308, ptr %144, align 8, !tbaa !9
  %309 = load double, ptr %29, align 8, !tbaa !9
  %310 = load double, ptr %144, align 8, !tbaa !9
  %311 = fsub double %309, %310
  store double %311, ptr %131, align 8, !tbaa !9
  %312 = load double, ptr %144, align 8, !tbaa !9
  %313 = load double, ptr %131, align 8, !tbaa !9
  %314 = fadd double %312, %313
  store double %314, ptr %132, align 8, !tbaa !9
  %315 = load double, ptr %131, align 8, !tbaa !9
  %316 = load double, ptr %30, align 8, !tbaa !9
  %317 = fsub double %315, %316
  store double %317, ptr %133, align 8, !tbaa !9
  %318 = load double, ptr %29, align 8, !tbaa !9
  %319 = load double, ptr %132, align 8, !tbaa !9
  %320 = fsub double %318, %319
  store double %320, ptr %134, align 8, !tbaa !9
  %321 = load double, ptr %134, align 8, !tbaa !9
  %322 = load double, ptr %133, align 8, !tbaa !9
  %323 = fadd double %321, %322
  %324 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 0
  store double %323, ptr %324, align 16, !tbaa !9
  %325 = load double, ptr %23, align 8, !tbaa !9
  %326 = load double, ptr %144, align 8, !tbaa !9
  %327 = fadd double %325, %326
  store double %327, ptr %145, align 8, !tbaa !9
  %328 = load double, ptr %145, align 8, !tbaa !9
  %329 = load double, ptr %23, align 8, !tbaa !9
  %330 = fsub double %328, %329
  store double %330, ptr %131, align 8, !tbaa !9
  %331 = load double, ptr %145, align 8, !tbaa !9
  %332 = load double, ptr %131, align 8, !tbaa !9
  %333 = fsub double %331, %332
  store double %333, ptr %132, align 8, !tbaa !9
  %334 = load double, ptr %144, align 8, !tbaa !9
  %335 = load double, ptr %131, align 8, !tbaa !9
  %336 = fsub double %334, %335
  store double %336, ptr %133, align 8, !tbaa !9
  %337 = load double, ptr %23, align 8, !tbaa !9
  %338 = load double, ptr %132, align 8, !tbaa !9
  %339 = fsub double %337, %338
  store double %339, ptr %134, align 8, !tbaa !9
  %340 = load double, ptr %134, align 8, !tbaa !9
  %341 = load double, ptr %133, align 8, !tbaa !9
  %342 = fadd double %340, %341
  store double %342, ptr %147, align 8, !tbaa !9
  %343 = load double, ptr %147, align 8, !tbaa !9
  %344 = load double, ptr %24, align 8, !tbaa !9
  %345 = fsub double %343, %344
  store double %345, ptr %144, align 8, !tbaa !9
  %346 = load double, ptr %147, align 8, !tbaa !9
  %347 = load double, ptr %144, align 8, !tbaa !9
  %348 = fsub double %346, %347
  store double %348, ptr %131, align 8, !tbaa !9
  %349 = load double, ptr %144, align 8, !tbaa !9
  %350 = load double, ptr %131, align 8, !tbaa !9
  %351 = fadd double %349, %350
  store double %351, ptr %132, align 8, !tbaa !9
  %352 = load double, ptr %131, align 8, !tbaa !9
  %353 = load double, ptr %24, align 8, !tbaa !9
  %354 = fsub double %352, %353
  store double %354, ptr %133, align 8, !tbaa !9
  %355 = load double, ptr %147, align 8, !tbaa !9
  %356 = load double, ptr %132, align 8, !tbaa !9
  %357 = fsub double %355, %356
  store double %357, ptr %134, align 8, !tbaa !9
  %358 = load double, ptr %134, align 8, !tbaa !9
  %359 = load double, ptr %133, align 8, !tbaa !9
  %360 = fadd double %358, %359
  %361 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 1
  store double %360, ptr %361, align 8, !tbaa !9
  %362 = load double, ptr %145, align 8, !tbaa !9
  %363 = load double, ptr %144, align 8, !tbaa !9
  %364 = fadd double %362, %363
  store double %364, ptr %38, align 8, !tbaa !9
  %365 = load double, ptr %38, align 8, !tbaa !9
  %366 = load double, ptr %145, align 8, !tbaa !9
  %367 = fsub double %365, %366
  store double %367, ptr %131, align 8, !tbaa !9
  %368 = load double, ptr %38, align 8, !tbaa !9
  %369 = load double, ptr %131, align 8, !tbaa !9
  %370 = fsub double %368, %369
  store double %370, ptr %132, align 8, !tbaa !9
  %371 = load double, ptr %144, align 8, !tbaa !9
  %372 = load double, ptr %131, align 8, !tbaa !9
  %373 = fsub double %371, %372
  store double %373, ptr %133, align 8, !tbaa !9
  %374 = load double, ptr %145, align 8, !tbaa !9
  %375 = load double, ptr %132, align 8, !tbaa !9
  %376 = fsub double %374, %375
  store double %376, ptr %134, align 8, !tbaa !9
  %377 = load double, ptr %134, align 8, !tbaa !9
  %378 = load double, ptr %133, align 8, !tbaa !9
  %379 = fadd double %377, %378
  %380 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 2
  store double %379, ptr %380, align 16, !tbaa !9
  %381 = load double, ptr %38, align 8, !tbaa !9
  %382 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 3
  store double %381, ptr %382, align 8, !tbaa !9
  %383 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 0
  %384 = load double, ptr %18, align 8, !tbaa !9
  %385 = getelementptr inbounds [8 x double], ptr %41, i64 0, i64 0
  %386 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef %383, double noundef %384, ptr noundef %385)
  store i32 %386, ptr %44, align 4, !tbaa !11
  %387 = load double, ptr %14, align 8, !tbaa !9
  %388 = load double, ptr %15, align 8, !tbaa !9
  %389 = fmul double %387, %388
  store double %389, ptr %25, align 8, !tbaa !9
  %390 = load double, ptr @splitter, align 8, !tbaa !9
  %391 = load double, ptr %14, align 8, !tbaa !9
  %392 = fmul double %390, %391
  store double %392, ptr %135, align 8, !tbaa !9
  %393 = load double, ptr %135, align 8, !tbaa !9
  %394 = load double, ptr %14, align 8, !tbaa !9
  %395 = fsub double %393, %394
  store double %395, ptr %136, align 8, !tbaa !9
  %396 = load double, ptr %135, align 8, !tbaa !9
  %397 = load double, ptr %136, align 8, !tbaa !9
  %398 = fsub double %396, %397
  store double %398, ptr %137, align 8, !tbaa !9
  %399 = load double, ptr %14, align 8, !tbaa !9
  %400 = load double, ptr %137, align 8, !tbaa !9
  %401 = fsub double %399, %400
  store double %401, ptr %138, align 8, !tbaa !9
  %402 = load double, ptr @splitter, align 8, !tbaa !9
  %403 = load double, ptr %15, align 8, !tbaa !9
  %404 = fmul double %402, %403
  store double %404, ptr %135, align 8, !tbaa !9
  %405 = load double, ptr %135, align 8, !tbaa !9
  %406 = load double, ptr %15, align 8, !tbaa !9
  %407 = fsub double %405, %406
  store double %407, ptr %136, align 8, !tbaa !9
  %408 = load double, ptr %135, align 8, !tbaa !9
  %409 = load double, ptr %136, align 8, !tbaa !9
  %410 = fsub double %408, %409
  store double %410, ptr %139, align 8, !tbaa !9
  %411 = load double, ptr %15, align 8, !tbaa !9
  %412 = load double, ptr %139, align 8, !tbaa !9
  %413 = fsub double %411, %412
  store double %413, ptr %140, align 8, !tbaa !9
  %414 = load double, ptr %25, align 8, !tbaa !9
  %415 = load double, ptr %137, align 8, !tbaa !9
  %416 = load double, ptr %139, align 8, !tbaa !9
  %417 = fneg double %415
  %418 = call double @llvm.fmuladd.f64(double %417, double %416, double %414)
  store double %418, ptr %141, align 8, !tbaa !9
  %419 = load double, ptr %141, align 8, !tbaa !9
  %420 = load double, ptr %138, align 8, !tbaa !9
  %421 = load double, ptr %139, align 8, !tbaa !9
  %422 = fneg double %420
  %423 = call double @llvm.fmuladd.f64(double %422, double %421, double %419)
  store double %423, ptr %142, align 8, !tbaa !9
  %424 = load double, ptr %142, align 8, !tbaa !9
  %425 = load double, ptr %137, align 8, !tbaa !9
  %426 = load double, ptr %140, align 8, !tbaa !9
  %427 = fneg double %425
  %428 = call double @llvm.fmuladd.f64(double %427, double %426, double %424)
  store double %428, ptr %143, align 8, !tbaa !9
  %429 = load double, ptr %138, align 8, !tbaa !9
  %430 = load double, ptr %140, align 8, !tbaa !9
  %431 = load double, ptr %143, align 8, !tbaa !9
  %432 = fneg double %431
  %433 = call double @llvm.fmuladd.f64(double %429, double %430, double %432)
  store double %433, ptr %31, align 8, !tbaa !9
  %434 = load double, ptr %12, align 8, !tbaa !9
  %435 = load double, ptr %17, align 8, !tbaa !9
  %436 = fmul double %434, %435
  store double %436, ptr %26, align 8, !tbaa !9
  %437 = load double, ptr @splitter, align 8, !tbaa !9
  %438 = load double, ptr %12, align 8, !tbaa !9
  %439 = fmul double %437, %438
  store double %439, ptr %135, align 8, !tbaa !9
  %440 = load double, ptr %135, align 8, !tbaa !9
  %441 = load double, ptr %12, align 8, !tbaa !9
  %442 = fsub double %440, %441
  store double %442, ptr %136, align 8, !tbaa !9
  %443 = load double, ptr %135, align 8, !tbaa !9
  %444 = load double, ptr %136, align 8, !tbaa !9
  %445 = fsub double %443, %444
  store double %445, ptr %137, align 8, !tbaa !9
  %446 = load double, ptr %12, align 8, !tbaa !9
  %447 = load double, ptr %137, align 8, !tbaa !9
  %448 = fsub double %446, %447
  store double %448, ptr %138, align 8, !tbaa !9
  %449 = load double, ptr @splitter, align 8, !tbaa !9
  %450 = load double, ptr %17, align 8, !tbaa !9
  %451 = fmul double %449, %450
  store double %451, ptr %135, align 8, !tbaa !9
  %452 = load double, ptr %135, align 8, !tbaa !9
  %453 = load double, ptr %17, align 8, !tbaa !9
  %454 = fsub double %452, %453
  store double %454, ptr %136, align 8, !tbaa !9
  %455 = load double, ptr %135, align 8, !tbaa !9
  %456 = load double, ptr %136, align 8, !tbaa !9
  %457 = fsub double %455, %456
  store double %457, ptr %139, align 8, !tbaa !9
  %458 = load double, ptr %17, align 8, !tbaa !9
  %459 = load double, ptr %139, align 8, !tbaa !9
  %460 = fsub double %458, %459
  store double %460, ptr %140, align 8, !tbaa !9
  %461 = load double, ptr %26, align 8, !tbaa !9
  %462 = load double, ptr %137, align 8, !tbaa !9
  %463 = load double, ptr %139, align 8, !tbaa !9
  %464 = fneg double %462
  %465 = call double @llvm.fmuladd.f64(double %464, double %463, double %461)
  store double %465, ptr %141, align 8, !tbaa !9
  %466 = load double, ptr %141, align 8, !tbaa !9
  %467 = load double, ptr %138, align 8, !tbaa !9
  %468 = load double, ptr %139, align 8, !tbaa !9
  %469 = fneg double %467
  %470 = call double @llvm.fmuladd.f64(double %469, double %468, double %466)
  store double %470, ptr %142, align 8, !tbaa !9
  %471 = load double, ptr %142, align 8, !tbaa !9
  %472 = load double, ptr %137, align 8, !tbaa !9
  %473 = load double, ptr %140, align 8, !tbaa !9
  %474 = fneg double %472
  %475 = call double @llvm.fmuladd.f64(double %474, double %473, double %471)
  store double %475, ptr %143, align 8, !tbaa !9
  %476 = load double, ptr %138, align 8, !tbaa !9
  %477 = load double, ptr %140, align 8, !tbaa !9
  %478 = load double, ptr %143, align 8, !tbaa !9
  %479 = fneg double %478
  %480 = call double @llvm.fmuladd.f64(double %476, double %477, double %479)
  store double %480, ptr %32, align 8, !tbaa !9
  %481 = load double, ptr %31, align 8, !tbaa !9
  %482 = load double, ptr %32, align 8, !tbaa !9
  %483 = fsub double %481, %482
  store double %483, ptr %144, align 8, !tbaa !9
  %484 = load double, ptr %31, align 8, !tbaa !9
  %485 = load double, ptr %144, align 8, !tbaa !9
  %486 = fsub double %484, %485
  store double %486, ptr %131, align 8, !tbaa !9
  %487 = load double, ptr %144, align 8, !tbaa !9
  %488 = load double, ptr %131, align 8, !tbaa !9
  %489 = fadd double %487, %488
  store double %489, ptr %132, align 8, !tbaa !9
  %490 = load double, ptr %131, align 8, !tbaa !9
  %491 = load double, ptr %32, align 8, !tbaa !9
  %492 = fsub double %490, %491
  store double %492, ptr %133, align 8, !tbaa !9
  %493 = load double, ptr %31, align 8, !tbaa !9
  %494 = load double, ptr %132, align 8, !tbaa !9
  %495 = fsub double %493, %494
  store double %495, ptr %134, align 8, !tbaa !9
  %496 = load double, ptr %134, align 8, !tbaa !9
  %497 = load double, ptr %133, align 8, !tbaa !9
  %498 = fadd double %496, %497
  %499 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  store double %498, ptr %499, align 16, !tbaa !9
  %500 = load double, ptr %25, align 8, !tbaa !9
  %501 = load double, ptr %144, align 8, !tbaa !9
  %502 = fadd double %500, %501
  store double %502, ptr %145, align 8, !tbaa !9
  %503 = load double, ptr %145, align 8, !tbaa !9
  %504 = load double, ptr %25, align 8, !tbaa !9
  %505 = fsub double %503, %504
  store double %505, ptr %131, align 8, !tbaa !9
  %506 = load double, ptr %145, align 8, !tbaa !9
  %507 = load double, ptr %131, align 8, !tbaa !9
  %508 = fsub double %506, %507
  store double %508, ptr %132, align 8, !tbaa !9
  %509 = load double, ptr %144, align 8, !tbaa !9
  %510 = load double, ptr %131, align 8, !tbaa !9
  %511 = fsub double %509, %510
  store double %511, ptr %133, align 8, !tbaa !9
  %512 = load double, ptr %25, align 8, !tbaa !9
  %513 = load double, ptr %132, align 8, !tbaa !9
  %514 = fsub double %512, %513
  store double %514, ptr %134, align 8, !tbaa !9
  %515 = load double, ptr %134, align 8, !tbaa !9
  %516 = load double, ptr %133, align 8, !tbaa !9
  %517 = fadd double %515, %516
  store double %517, ptr %147, align 8, !tbaa !9
  %518 = load double, ptr %147, align 8, !tbaa !9
  %519 = load double, ptr %26, align 8, !tbaa !9
  %520 = fsub double %518, %519
  store double %520, ptr %144, align 8, !tbaa !9
  %521 = load double, ptr %147, align 8, !tbaa !9
  %522 = load double, ptr %144, align 8, !tbaa !9
  %523 = fsub double %521, %522
  store double %523, ptr %131, align 8, !tbaa !9
  %524 = load double, ptr %144, align 8, !tbaa !9
  %525 = load double, ptr %131, align 8, !tbaa !9
  %526 = fadd double %524, %525
  store double %526, ptr %132, align 8, !tbaa !9
  %527 = load double, ptr %131, align 8, !tbaa !9
  %528 = load double, ptr %26, align 8, !tbaa !9
  %529 = fsub double %527, %528
  store double %529, ptr %133, align 8, !tbaa !9
  %530 = load double, ptr %147, align 8, !tbaa !9
  %531 = load double, ptr %132, align 8, !tbaa !9
  %532 = fsub double %530, %531
  store double %532, ptr %134, align 8, !tbaa !9
  %533 = load double, ptr %134, align 8, !tbaa !9
  %534 = load double, ptr %133, align 8, !tbaa !9
  %535 = fadd double %533, %534
  %536 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 1
  store double %535, ptr %536, align 8, !tbaa !9
  %537 = load double, ptr %145, align 8, !tbaa !9
  %538 = load double, ptr %144, align 8, !tbaa !9
  %539 = fadd double %537, %538
  store double %539, ptr %39, align 8, !tbaa !9
  %540 = load double, ptr %39, align 8, !tbaa !9
  %541 = load double, ptr %145, align 8, !tbaa !9
  %542 = fsub double %540, %541
  store double %542, ptr %131, align 8, !tbaa !9
  %543 = load double, ptr %39, align 8, !tbaa !9
  %544 = load double, ptr %131, align 8, !tbaa !9
  %545 = fsub double %543, %544
  store double %545, ptr %132, align 8, !tbaa !9
  %546 = load double, ptr %144, align 8, !tbaa !9
  %547 = load double, ptr %131, align 8, !tbaa !9
  %548 = fsub double %546, %547
  store double %548, ptr %133, align 8, !tbaa !9
  %549 = load double, ptr %145, align 8, !tbaa !9
  %550 = load double, ptr %132, align 8, !tbaa !9
  %551 = fsub double %549, %550
  store double %551, ptr %134, align 8, !tbaa !9
  %552 = load double, ptr %134, align 8, !tbaa !9
  %553 = load double, ptr %133, align 8, !tbaa !9
  %554 = fadd double %552, %553
  %555 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 2
  store double %554, ptr %555, align 16, !tbaa !9
  %556 = load double, ptr %39, align 8, !tbaa !9
  %557 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 3
  store double %556, ptr %557, align 8, !tbaa !9
  %558 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %559 = load double, ptr %19, align 8, !tbaa !9
  %560 = getelementptr inbounds [8 x double], ptr %42, i64 0, i64 0
  %561 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef %558, double noundef %559, ptr noundef %560)
  store i32 %561, ptr %45, align 4, !tbaa !11
  %562 = load double, ptr %12, align 8, !tbaa !9
  %563 = load double, ptr %16, align 8, !tbaa !9
  %564 = fmul double %562, %563
  store double %564, ptr %27, align 8, !tbaa !9
  %565 = load double, ptr @splitter, align 8, !tbaa !9
  %566 = load double, ptr %12, align 8, !tbaa !9
  %567 = fmul double %565, %566
  store double %567, ptr %135, align 8, !tbaa !9
  %568 = load double, ptr %135, align 8, !tbaa !9
  %569 = load double, ptr %12, align 8, !tbaa !9
  %570 = fsub double %568, %569
  store double %570, ptr %136, align 8, !tbaa !9
  %571 = load double, ptr %135, align 8, !tbaa !9
  %572 = load double, ptr %136, align 8, !tbaa !9
  %573 = fsub double %571, %572
  store double %573, ptr %137, align 8, !tbaa !9
  %574 = load double, ptr %12, align 8, !tbaa !9
  %575 = load double, ptr %137, align 8, !tbaa !9
  %576 = fsub double %574, %575
  store double %576, ptr %138, align 8, !tbaa !9
  %577 = load double, ptr @splitter, align 8, !tbaa !9
  %578 = load double, ptr %16, align 8, !tbaa !9
  %579 = fmul double %577, %578
  store double %579, ptr %135, align 8, !tbaa !9
  %580 = load double, ptr %135, align 8, !tbaa !9
  %581 = load double, ptr %16, align 8, !tbaa !9
  %582 = fsub double %580, %581
  store double %582, ptr %136, align 8, !tbaa !9
  %583 = load double, ptr %135, align 8, !tbaa !9
  %584 = load double, ptr %136, align 8, !tbaa !9
  %585 = fsub double %583, %584
  store double %585, ptr %139, align 8, !tbaa !9
  %586 = load double, ptr %16, align 8, !tbaa !9
  %587 = load double, ptr %139, align 8, !tbaa !9
  %588 = fsub double %586, %587
  store double %588, ptr %140, align 8, !tbaa !9
  %589 = load double, ptr %27, align 8, !tbaa !9
  %590 = load double, ptr %137, align 8, !tbaa !9
  %591 = load double, ptr %139, align 8, !tbaa !9
  %592 = fneg double %590
  %593 = call double @llvm.fmuladd.f64(double %592, double %591, double %589)
  store double %593, ptr %141, align 8, !tbaa !9
  %594 = load double, ptr %141, align 8, !tbaa !9
  %595 = load double, ptr %138, align 8, !tbaa !9
  %596 = load double, ptr %139, align 8, !tbaa !9
  %597 = fneg double %595
  %598 = call double @llvm.fmuladd.f64(double %597, double %596, double %594)
  store double %598, ptr %142, align 8, !tbaa !9
  %599 = load double, ptr %142, align 8, !tbaa !9
  %600 = load double, ptr %137, align 8, !tbaa !9
  %601 = load double, ptr %140, align 8, !tbaa !9
  %602 = fneg double %600
  %603 = call double @llvm.fmuladd.f64(double %602, double %601, double %599)
  store double %603, ptr %143, align 8, !tbaa !9
  %604 = load double, ptr %138, align 8, !tbaa !9
  %605 = load double, ptr %140, align 8, !tbaa !9
  %606 = load double, ptr %143, align 8, !tbaa !9
  %607 = fneg double %606
  %608 = call double @llvm.fmuladd.f64(double %604, double %605, double %607)
  store double %608, ptr %33, align 8, !tbaa !9
  %609 = load double, ptr %13, align 8, !tbaa !9
  %610 = load double, ptr %15, align 8, !tbaa !9
  %611 = fmul double %609, %610
  store double %611, ptr %28, align 8, !tbaa !9
  %612 = load double, ptr @splitter, align 8, !tbaa !9
  %613 = load double, ptr %13, align 8, !tbaa !9
  %614 = fmul double %612, %613
  store double %614, ptr %135, align 8, !tbaa !9
  %615 = load double, ptr %135, align 8, !tbaa !9
  %616 = load double, ptr %13, align 8, !tbaa !9
  %617 = fsub double %615, %616
  store double %617, ptr %136, align 8, !tbaa !9
  %618 = load double, ptr %135, align 8, !tbaa !9
  %619 = load double, ptr %136, align 8, !tbaa !9
  %620 = fsub double %618, %619
  store double %620, ptr %137, align 8, !tbaa !9
  %621 = load double, ptr %13, align 8, !tbaa !9
  %622 = load double, ptr %137, align 8, !tbaa !9
  %623 = fsub double %621, %622
  store double %623, ptr %138, align 8, !tbaa !9
  %624 = load double, ptr @splitter, align 8, !tbaa !9
  %625 = load double, ptr %15, align 8, !tbaa !9
  %626 = fmul double %624, %625
  store double %626, ptr %135, align 8, !tbaa !9
  %627 = load double, ptr %135, align 8, !tbaa !9
  %628 = load double, ptr %15, align 8, !tbaa !9
  %629 = fsub double %627, %628
  store double %629, ptr %136, align 8, !tbaa !9
  %630 = load double, ptr %135, align 8, !tbaa !9
  %631 = load double, ptr %136, align 8, !tbaa !9
  %632 = fsub double %630, %631
  store double %632, ptr %139, align 8, !tbaa !9
  %633 = load double, ptr %15, align 8, !tbaa !9
  %634 = load double, ptr %139, align 8, !tbaa !9
  %635 = fsub double %633, %634
  store double %635, ptr %140, align 8, !tbaa !9
  %636 = load double, ptr %28, align 8, !tbaa !9
  %637 = load double, ptr %137, align 8, !tbaa !9
  %638 = load double, ptr %139, align 8, !tbaa !9
  %639 = fneg double %637
  %640 = call double @llvm.fmuladd.f64(double %639, double %638, double %636)
  store double %640, ptr %141, align 8, !tbaa !9
  %641 = load double, ptr %141, align 8, !tbaa !9
  %642 = load double, ptr %138, align 8, !tbaa !9
  %643 = load double, ptr %139, align 8, !tbaa !9
  %644 = fneg double %642
  %645 = call double @llvm.fmuladd.f64(double %644, double %643, double %641)
  store double %645, ptr %142, align 8, !tbaa !9
  %646 = load double, ptr %142, align 8, !tbaa !9
  %647 = load double, ptr %137, align 8, !tbaa !9
  %648 = load double, ptr %140, align 8, !tbaa !9
  %649 = fneg double %647
  %650 = call double @llvm.fmuladd.f64(double %649, double %648, double %646)
  store double %650, ptr %143, align 8, !tbaa !9
  %651 = load double, ptr %138, align 8, !tbaa !9
  %652 = load double, ptr %140, align 8, !tbaa !9
  %653 = load double, ptr %143, align 8, !tbaa !9
  %654 = fneg double %653
  %655 = call double @llvm.fmuladd.f64(double %651, double %652, double %654)
  store double %655, ptr %34, align 8, !tbaa !9
  %656 = load double, ptr %33, align 8, !tbaa !9
  %657 = load double, ptr %34, align 8, !tbaa !9
  %658 = fsub double %656, %657
  store double %658, ptr %144, align 8, !tbaa !9
  %659 = load double, ptr %33, align 8, !tbaa !9
  %660 = load double, ptr %144, align 8, !tbaa !9
  %661 = fsub double %659, %660
  store double %661, ptr %131, align 8, !tbaa !9
  %662 = load double, ptr %144, align 8, !tbaa !9
  %663 = load double, ptr %131, align 8, !tbaa !9
  %664 = fadd double %662, %663
  store double %664, ptr %132, align 8, !tbaa !9
  %665 = load double, ptr %131, align 8, !tbaa !9
  %666 = load double, ptr %34, align 8, !tbaa !9
  %667 = fsub double %665, %666
  store double %667, ptr %133, align 8, !tbaa !9
  %668 = load double, ptr %33, align 8, !tbaa !9
  %669 = load double, ptr %132, align 8, !tbaa !9
  %670 = fsub double %668, %669
  store double %670, ptr %134, align 8, !tbaa !9
  %671 = load double, ptr %134, align 8, !tbaa !9
  %672 = load double, ptr %133, align 8, !tbaa !9
  %673 = fadd double %671, %672
  %674 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 0
  store double %673, ptr %674, align 16, !tbaa !9
  %675 = load double, ptr %27, align 8, !tbaa !9
  %676 = load double, ptr %144, align 8, !tbaa !9
  %677 = fadd double %675, %676
  store double %677, ptr %145, align 8, !tbaa !9
  %678 = load double, ptr %145, align 8, !tbaa !9
  %679 = load double, ptr %27, align 8, !tbaa !9
  %680 = fsub double %678, %679
  store double %680, ptr %131, align 8, !tbaa !9
  %681 = load double, ptr %145, align 8, !tbaa !9
  %682 = load double, ptr %131, align 8, !tbaa !9
  %683 = fsub double %681, %682
  store double %683, ptr %132, align 8, !tbaa !9
  %684 = load double, ptr %144, align 8, !tbaa !9
  %685 = load double, ptr %131, align 8, !tbaa !9
  %686 = fsub double %684, %685
  store double %686, ptr %133, align 8, !tbaa !9
  %687 = load double, ptr %27, align 8, !tbaa !9
  %688 = load double, ptr %132, align 8, !tbaa !9
  %689 = fsub double %687, %688
  store double %689, ptr %134, align 8, !tbaa !9
  %690 = load double, ptr %134, align 8, !tbaa !9
  %691 = load double, ptr %133, align 8, !tbaa !9
  %692 = fadd double %690, %691
  store double %692, ptr %147, align 8, !tbaa !9
  %693 = load double, ptr %147, align 8, !tbaa !9
  %694 = load double, ptr %28, align 8, !tbaa !9
  %695 = fsub double %693, %694
  store double %695, ptr %144, align 8, !tbaa !9
  %696 = load double, ptr %147, align 8, !tbaa !9
  %697 = load double, ptr %144, align 8, !tbaa !9
  %698 = fsub double %696, %697
  store double %698, ptr %131, align 8, !tbaa !9
  %699 = load double, ptr %144, align 8, !tbaa !9
  %700 = load double, ptr %131, align 8, !tbaa !9
  %701 = fadd double %699, %700
  store double %701, ptr %132, align 8, !tbaa !9
  %702 = load double, ptr %131, align 8, !tbaa !9
  %703 = load double, ptr %28, align 8, !tbaa !9
  %704 = fsub double %702, %703
  store double %704, ptr %133, align 8, !tbaa !9
  %705 = load double, ptr %147, align 8, !tbaa !9
  %706 = load double, ptr %132, align 8, !tbaa !9
  %707 = fsub double %705, %706
  store double %707, ptr %134, align 8, !tbaa !9
  %708 = load double, ptr %134, align 8, !tbaa !9
  %709 = load double, ptr %133, align 8, !tbaa !9
  %710 = fadd double %708, %709
  %711 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 1
  store double %710, ptr %711, align 8, !tbaa !9
  %712 = load double, ptr %145, align 8, !tbaa !9
  %713 = load double, ptr %144, align 8, !tbaa !9
  %714 = fadd double %712, %713
  store double %714, ptr %40, align 8, !tbaa !9
  %715 = load double, ptr %40, align 8, !tbaa !9
  %716 = load double, ptr %145, align 8, !tbaa !9
  %717 = fsub double %715, %716
  store double %717, ptr %131, align 8, !tbaa !9
  %718 = load double, ptr %40, align 8, !tbaa !9
  %719 = load double, ptr %131, align 8, !tbaa !9
  %720 = fsub double %718, %719
  store double %720, ptr %132, align 8, !tbaa !9
  %721 = load double, ptr %144, align 8, !tbaa !9
  %722 = load double, ptr %131, align 8, !tbaa !9
  %723 = fsub double %721, %722
  store double %723, ptr %133, align 8, !tbaa !9
  %724 = load double, ptr %145, align 8, !tbaa !9
  %725 = load double, ptr %132, align 8, !tbaa !9
  %726 = fsub double %724, %725
  store double %726, ptr %134, align 8, !tbaa !9
  %727 = load double, ptr %134, align 8, !tbaa !9
  %728 = load double, ptr %133, align 8, !tbaa !9
  %729 = fadd double %727, %728
  %730 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 2
  store double %729, ptr %730, align 16, !tbaa !9
  %731 = load double, ptr %40, align 8, !tbaa !9
  %732 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 3
  store double %731, ptr %732, align 8, !tbaa !9
  %733 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 0
  %734 = load double, ptr %20, align 8, !tbaa !9
  %735 = getelementptr inbounds [8 x double], ptr %43, i64 0, i64 0
  %736 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef %733, double noundef %734, ptr noundef %735)
  store i32 %736, ptr %46, align 4, !tbaa !11
  %737 = load i32, ptr %44, align 4, !tbaa !11
  %738 = getelementptr inbounds [8 x double], ptr %41, i64 0, i64 0
  %739 = load i32, ptr %45, align 4, !tbaa !11
  %740 = getelementptr inbounds [8 x double], ptr %42, i64 0, i64 0
  %741 = getelementptr inbounds [16 x double], ptr %47, i64 0, i64 0
  %742 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %737, ptr noundef %738, i32 noundef %739, ptr noundef %740, ptr noundef %741)
  store i32 %742, ptr %48, align 4, !tbaa !11
  %743 = load i32, ptr %48, align 4, !tbaa !11
  %744 = getelementptr inbounds [16 x double], ptr %47, i64 0, i64 0
  %745 = load i32, ptr %46, align 4, !tbaa !11
  %746 = getelementptr inbounds [8 x double], ptr %43, i64 0, i64 0
  %747 = getelementptr inbounds [192 x double], ptr %52, i64 0, i64 0
  %748 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %743, ptr noundef %744, i32 noundef %745, ptr noundef %746, ptr noundef %747)
  store i32 %748, ptr %54, align 4, !tbaa !11
  %749 = load i32, ptr %54, align 4, !tbaa !11
  %750 = getelementptr inbounds [192 x double], ptr %52, i64 0, i64 0
  %751 = call double @estimate(i32 noundef %749, ptr noundef %750)
  store double %751, ptr %21, align 8, !tbaa !9
  %752 = load double, ptr @o3derrboundB, align 8, !tbaa !9
  %753 = load double, ptr %11, align 8, !tbaa !9
  %754 = fmul double %752, %753
  store double %754, ptr %22, align 8, !tbaa !9
  %755 = load double, ptr %21, align 8, !tbaa !9
  %756 = load double, ptr %22, align 8, !tbaa !9
  %757 = fcmp oge double %755, %756
  br i1 %757, label %763, label %758

758:                                              ; preds = %5
  %759 = load double, ptr %21, align 8, !tbaa !9
  %760 = fneg double %759
  %761 = load double, ptr %22, align 8, !tbaa !9
  %762 = fcmp oge double %760, %761
  br i1 %762, label %763, label %765

763:                                              ; preds = %758, %5
  %764 = load double, ptr %21, align 8, !tbaa !9
  store double %764, ptr %6, align 8
  store i32 1, ptr %148, align 4
  br label %4759

765:                                              ; preds = %758
  %766 = load ptr, ptr %7, align 8, !tbaa !5
  %767 = getelementptr inbounds double, ptr %766, i64 0
  %768 = load double, ptr %767, align 8, !tbaa !9
  %769 = load double, ptr %12, align 8, !tbaa !9
  %770 = fsub double %768, %769
  store double %770, ptr %131, align 8, !tbaa !9
  %771 = load double, ptr %12, align 8, !tbaa !9
  %772 = load double, ptr %131, align 8, !tbaa !9
  %773 = fadd double %771, %772
  store double %773, ptr %132, align 8, !tbaa !9
  %774 = load double, ptr %131, align 8, !tbaa !9
  %775 = load ptr, ptr %10, align 8, !tbaa !5
  %776 = getelementptr inbounds double, ptr %775, i64 0
  %777 = load double, ptr %776, align 8, !tbaa !9
  %778 = fsub double %774, %777
  store double %778, ptr %133, align 8, !tbaa !9
  %779 = load ptr, ptr %7, align 8, !tbaa !5
  %780 = getelementptr inbounds double, ptr %779, i64 0
  %781 = load double, ptr %780, align 8, !tbaa !9
  %782 = load double, ptr %132, align 8, !tbaa !9
  %783 = fsub double %781, %782
  store double %783, ptr %134, align 8, !tbaa !9
  %784 = load double, ptr %134, align 8, !tbaa !9
  %785 = load double, ptr %133, align 8, !tbaa !9
  %786 = fadd double %784, %785
  store double %786, ptr %55, align 8, !tbaa !9
  %787 = load ptr, ptr %8, align 8, !tbaa !5
  %788 = getelementptr inbounds double, ptr %787, i64 0
  %789 = load double, ptr %788, align 8, !tbaa !9
  %790 = load double, ptr %13, align 8, !tbaa !9
  %791 = fsub double %789, %790
  store double %791, ptr %131, align 8, !tbaa !9
  %792 = load double, ptr %13, align 8, !tbaa !9
  %793 = load double, ptr %131, align 8, !tbaa !9
  %794 = fadd double %792, %793
  store double %794, ptr %132, align 8, !tbaa !9
  %795 = load double, ptr %131, align 8, !tbaa !9
  %796 = load ptr, ptr %10, align 8, !tbaa !5
  %797 = getelementptr inbounds double, ptr %796, i64 0
  %798 = load double, ptr %797, align 8, !tbaa !9
  %799 = fsub double %795, %798
  store double %799, ptr %133, align 8, !tbaa !9
  %800 = load ptr, ptr %8, align 8, !tbaa !5
  %801 = getelementptr inbounds double, ptr %800, i64 0
  %802 = load double, ptr %801, align 8, !tbaa !9
  %803 = load double, ptr %132, align 8, !tbaa !9
  %804 = fsub double %802, %803
  store double %804, ptr %134, align 8, !tbaa !9
  %805 = load double, ptr %134, align 8, !tbaa !9
  %806 = load double, ptr %133, align 8, !tbaa !9
  %807 = fadd double %805, %806
  store double %807, ptr %56, align 8, !tbaa !9
  %808 = load ptr, ptr %9, align 8, !tbaa !5
  %809 = getelementptr inbounds double, ptr %808, i64 0
  %810 = load double, ptr %809, align 8, !tbaa !9
  %811 = load double, ptr %14, align 8, !tbaa !9
  %812 = fsub double %810, %811
  store double %812, ptr %131, align 8, !tbaa !9
  %813 = load double, ptr %14, align 8, !tbaa !9
  %814 = load double, ptr %131, align 8, !tbaa !9
  %815 = fadd double %813, %814
  store double %815, ptr %132, align 8, !tbaa !9
  %816 = load double, ptr %131, align 8, !tbaa !9
  %817 = load ptr, ptr %10, align 8, !tbaa !5
  %818 = getelementptr inbounds double, ptr %817, i64 0
  %819 = load double, ptr %818, align 8, !tbaa !9
  %820 = fsub double %816, %819
  store double %820, ptr %133, align 8, !tbaa !9
  %821 = load ptr, ptr %9, align 8, !tbaa !5
  %822 = getelementptr inbounds double, ptr %821, i64 0
  %823 = load double, ptr %822, align 8, !tbaa !9
  %824 = load double, ptr %132, align 8, !tbaa !9
  %825 = fsub double %823, %824
  store double %825, ptr %134, align 8, !tbaa !9
  %826 = load double, ptr %134, align 8, !tbaa !9
  %827 = load double, ptr %133, align 8, !tbaa !9
  %828 = fadd double %826, %827
  store double %828, ptr %57, align 8, !tbaa !9
  %829 = load ptr, ptr %7, align 8, !tbaa !5
  %830 = getelementptr inbounds double, ptr %829, i64 1
  %831 = load double, ptr %830, align 8, !tbaa !9
  %832 = load double, ptr %15, align 8, !tbaa !9
  %833 = fsub double %831, %832
  store double %833, ptr %131, align 8, !tbaa !9
  %834 = load double, ptr %15, align 8, !tbaa !9
  %835 = load double, ptr %131, align 8, !tbaa !9
  %836 = fadd double %834, %835
  store double %836, ptr %132, align 8, !tbaa !9
  %837 = load double, ptr %131, align 8, !tbaa !9
  %838 = load ptr, ptr %10, align 8, !tbaa !5
  %839 = getelementptr inbounds double, ptr %838, i64 1
  %840 = load double, ptr %839, align 8, !tbaa !9
  %841 = fsub double %837, %840
  store double %841, ptr %133, align 8, !tbaa !9
  %842 = load ptr, ptr %7, align 8, !tbaa !5
  %843 = getelementptr inbounds double, ptr %842, i64 1
  %844 = load double, ptr %843, align 8, !tbaa !9
  %845 = load double, ptr %132, align 8, !tbaa !9
  %846 = fsub double %844, %845
  store double %846, ptr %134, align 8, !tbaa !9
  %847 = load double, ptr %134, align 8, !tbaa !9
  %848 = load double, ptr %133, align 8, !tbaa !9
  %849 = fadd double %847, %848
  store double %849, ptr %58, align 8, !tbaa !9
  %850 = load ptr, ptr %8, align 8, !tbaa !5
  %851 = getelementptr inbounds double, ptr %850, i64 1
  %852 = load double, ptr %851, align 8, !tbaa !9
  %853 = load double, ptr %16, align 8, !tbaa !9
  %854 = fsub double %852, %853
  store double %854, ptr %131, align 8, !tbaa !9
  %855 = load double, ptr %16, align 8, !tbaa !9
  %856 = load double, ptr %131, align 8, !tbaa !9
  %857 = fadd double %855, %856
  store double %857, ptr %132, align 8, !tbaa !9
  %858 = load double, ptr %131, align 8, !tbaa !9
  %859 = load ptr, ptr %10, align 8, !tbaa !5
  %860 = getelementptr inbounds double, ptr %859, i64 1
  %861 = load double, ptr %860, align 8, !tbaa !9
  %862 = fsub double %858, %861
  store double %862, ptr %133, align 8, !tbaa !9
  %863 = load ptr, ptr %8, align 8, !tbaa !5
  %864 = getelementptr inbounds double, ptr %863, i64 1
  %865 = load double, ptr %864, align 8, !tbaa !9
  %866 = load double, ptr %132, align 8, !tbaa !9
  %867 = fsub double %865, %866
  store double %867, ptr %134, align 8, !tbaa !9
  %868 = load double, ptr %134, align 8, !tbaa !9
  %869 = load double, ptr %133, align 8, !tbaa !9
  %870 = fadd double %868, %869
  store double %870, ptr %59, align 8, !tbaa !9
  %871 = load ptr, ptr %9, align 8, !tbaa !5
  %872 = getelementptr inbounds double, ptr %871, i64 1
  %873 = load double, ptr %872, align 8, !tbaa !9
  %874 = load double, ptr %17, align 8, !tbaa !9
  %875 = fsub double %873, %874
  store double %875, ptr %131, align 8, !tbaa !9
  %876 = load double, ptr %17, align 8, !tbaa !9
  %877 = load double, ptr %131, align 8, !tbaa !9
  %878 = fadd double %876, %877
  store double %878, ptr %132, align 8, !tbaa !9
  %879 = load double, ptr %131, align 8, !tbaa !9
  %880 = load ptr, ptr %10, align 8, !tbaa !5
  %881 = getelementptr inbounds double, ptr %880, i64 1
  %882 = load double, ptr %881, align 8, !tbaa !9
  %883 = fsub double %879, %882
  store double %883, ptr %133, align 8, !tbaa !9
  %884 = load ptr, ptr %9, align 8, !tbaa !5
  %885 = getelementptr inbounds double, ptr %884, i64 1
  %886 = load double, ptr %885, align 8, !tbaa !9
  %887 = load double, ptr %132, align 8, !tbaa !9
  %888 = fsub double %886, %887
  store double %888, ptr %134, align 8, !tbaa !9
  %889 = load double, ptr %134, align 8, !tbaa !9
  %890 = load double, ptr %133, align 8, !tbaa !9
  %891 = fadd double %889, %890
  store double %891, ptr %60, align 8, !tbaa !9
  %892 = load ptr, ptr %7, align 8, !tbaa !5
  %893 = getelementptr inbounds double, ptr %892, i64 2
  %894 = load double, ptr %893, align 8, !tbaa !9
  %895 = load double, ptr %18, align 8, !tbaa !9
  %896 = fsub double %894, %895
  store double %896, ptr %131, align 8, !tbaa !9
  %897 = load double, ptr %18, align 8, !tbaa !9
  %898 = load double, ptr %131, align 8, !tbaa !9
  %899 = fadd double %897, %898
  store double %899, ptr %132, align 8, !tbaa !9
  %900 = load double, ptr %131, align 8, !tbaa !9
  %901 = load ptr, ptr %10, align 8, !tbaa !5
  %902 = getelementptr inbounds double, ptr %901, i64 2
  %903 = load double, ptr %902, align 8, !tbaa !9
  %904 = fsub double %900, %903
  store double %904, ptr %133, align 8, !tbaa !9
  %905 = load ptr, ptr %7, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 2
  %907 = load double, ptr %906, align 8, !tbaa !9
  %908 = load double, ptr %132, align 8, !tbaa !9
  %909 = fsub double %907, %908
  store double %909, ptr %134, align 8, !tbaa !9
  %910 = load double, ptr %134, align 8, !tbaa !9
  %911 = load double, ptr %133, align 8, !tbaa !9
  %912 = fadd double %910, %911
  store double %912, ptr %61, align 8, !tbaa !9
  %913 = load ptr, ptr %8, align 8, !tbaa !5
  %914 = getelementptr inbounds double, ptr %913, i64 2
  %915 = load double, ptr %914, align 8, !tbaa !9
  %916 = load double, ptr %19, align 8, !tbaa !9
  %917 = fsub double %915, %916
  store double %917, ptr %131, align 8, !tbaa !9
  %918 = load double, ptr %19, align 8, !tbaa !9
  %919 = load double, ptr %131, align 8, !tbaa !9
  %920 = fadd double %918, %919
  store double %920, ptr %132, align 8, !tbaa !9
  %921 = load double, ptr %131, align 8, !tbaa !9
  %922 = load ptr, ptr %10, align 8, !tbaa !5
  %923 = getelementptr inbounds double, ptr %922, i64 2
  %924 = load double, ptr %923, align 8, !tbaa !9
  %925 = fsub double %921, %924
  store double %925, ptr %133, align 8, !tbaa !9
  %926 = load ptr, ptr %8, align 8, !tbaa !5
  %927 = getelementptr inbounds double, ptr %926, i64 2
  %928 = load double, ptr %927, align 8, !tbaa !9
  %929 = load double, ptr %132, align 8, !tbaa !9
  %930 = fsub double %928, %929
  store double %930, ptr %134, align 8, !tbaa !9
  %931 = load double, ptr %134, align 8, !tbaa !9
  %932 = load double, ptr %133, align 8, !tbaa !9
  %933 = fadd double %931, %932
  store double %933, ptr %62, align 8, !tbaa !9
  %934 = load ptr, ptr %9, align 8, !tbaa !5
  %935 = getelementptr inbounds double, ptr %934, i64 2
  %936 = load double, ptr %935, align 8, !tbaa !9
  %937 = load double, ptr %20, align 8, !tbaa !9
  %938 = fsub double %936, %937
  store double %938, ptr %131, align 8, !tbaa !9
  %939 = load double, ptr %20, align 8, !tbaa !9
  %940 = load double, ptr %131, align 8, !tbaa !9
  %941 = fadd double %939, %940
  store double %941, ptr %132, align 8, !tbaa !9
  %942 = load double, ptr %131, align 8, !tbaa !9
  %943 = load ptr, ptr %10, align 8, !tbaa !5
  %944 = getelementptr inbounds double, ptr %943, i64 2
  %945 = load double, ptr %944, align 8, !tbaa !9
  %946 = fsub double %942, %945
  store double %946, ptr %133, align 8, !tbaa !9
  %947 = load ptr, ptr %9, align 8, !tbaa !5
  %948 = getelementptr inbounds double, ptr %947, i64 2
  %949 = load double, ptr %948, align 8, !tbaa !9
  %950 = load double, ptr %132, align 8, !tbaa !9
  %951 = fsub double %949, %950
  store double %951, ptr %134, align 8, !tbaa !9
  %952 = load double, ptr %134, align 8, !tbaa !9
  %953 = load double, ptr %133, align 8, !tbaa !9
  %954 = fadd double %952, %953
  store double %954, ptr %63, align 8, !tbaa !9
  %955 = load double, ptr %55, align 8, !tbaa !9
  %956 = fcmp oeq double %955, 0.000000e+00
  br i1 %956, label %957, label %983

957:                                              ; preds = %765
  %958 = load double, ptr %56, align 8, !tbaa !9
  %959 = fcmp oeq double %958, 0.000000e+00
  br i1 %959, label %960, label %983

960:                                              ; preds = %957
  %961 = load double, ptr %57, align 8, !tbaa !9
  %962 = fcmp oeq double %961, 0.000000e+00
  br i1 %962, label %963, label %983

963:                                              ; preds = %960
  %964 = load double, ptr %58, align 8, !tbaa !9
  %965 = fcmp oeq double %964, 0.000000e+00
  br i1 %965, label %966, label %983

966:                                              ; preds = %963
  %967 = load double, ptr %59, align 8, !tbaa !9
  %968 = fcmp oeq double %967, 0.000000e+00
  br i1 %968, label %969, label %983

969:                                              ; preds = %966
  %970 = load double, ptr %60, align 8, !tbaa !9
  %971 = fcmp oeq double %970, 0.000000e+00
  br i1 %971, label %972, label %983

972:                                              ; preds = %969
  %973 = load double, ptr %61, align 8, !tbaa !9
  %974 = fcmp oeq double %973, 0.000000e+00
  br i1 %974, label %975, label %983

975:                                              ; preds = %972
  %976 = load double, ptr %62, align 8, !tbaa !9
  %977 = fcmp oeq double %976, 0.000000e+00
  br i1 %977, label %978, label %983

978:                                              ; preds = %975
  %979 = load double, ptr %63, align 8, !tbaa !9
  %980 = fcmp oeq double %979, 0.000000e+00
  br i1 %980, label %981, label %983

981:                                              ; preds = %978
  %982 = load double, ptr %21, align 8, !tbaa !9
  store double %982, ptr %6, align 8
  store i32 1, ptr %148, align 4
  br label %4759

983:                                              ; preds = %978, %975, %972, %969, %966, %963, %960, %957, %765
  %984 = load double, ptr @o3derrboundC, align 8, !tbaa !9
  %985 = load double, ptr %11, align 8, !tbaa !9
  %986 = load double, ptr @resulterrbound, align 8, !tbaa !9
  %987 = load double, ptr %21, align 8, !tbaa !9
  %988 = fcmp oge double %987, 0.000000e+00
  br i1 %988, label %989, label %991

989:                                              ; preds = %983
  %990 = load double, ptr %21, align 8, !tbaa !9
  br label %994

991:                                              ; preds = %983
  %992 = load double, ptr %21, align 8, !tbaa !9
  %993 = fneg double %992
  br label %994

994:                                              ; preds = %991, %989
  %995 = phi double [ %990, %989 ], [ %993, %991 ]
  %996 = fmul double %986, %995
  %997 = call double @llvm.fmuladd.f64(double %984, double %985, double %996)
  store double %997, ptr %22, align 8, !tbaa !9
  %998 = load double, ptr %18, align 8, !tbaa !9
  %999 = load double, ptr %13, align 8, !tbaa !9
  %1000 = load double, ptr %60, align 8, !tbaa !9
  %1001 = load double, ptr %17, align 8, !tbaa !9
  %1002 = load double, ptr %56, align 8, !tbaa !9
  %1003 = fmul double %1001, %1002
  %1004 = call double @llvm.fmuladd.f64(double %999, double %1000, double %1003)
  %1005 = load double, ptr %16, align 8, !tbaa !9
  %1006 = load double, ptr %57, align 8, !tbaa !9
  %1007 = load double, ptr %14, align 8, !tbaa !9
  %1008 = load double, ptr %59, align 8, !tbaa !9
  %1009 = fmul double %1007, %1008
  %1010 = call double @llvm.fmuladd.f64(double %1005, double %1006, double %1009)
  %1011 = fsub double %1004, %1010
  %1012 = load double, ptr %61, align 8, !tbaa !9
  %1013 = load double, ptr %13, align 8, !tbaa !9
  %1014 = load double, ptr %17, align 8, !tbaa !9
  %1015 = load double, ptr %16, align 8, !tbaa !9
  %1016 = load double, ptr %14, align 8, !tbaa !9
  %1017 = fmul double %1015, %1016
  %1018 = fneg double %1017
  %1019 = call double @llvm.fmuladd.f64(double %1013, double %1014, double %1018)
  %1020 = fmul double %1012, %1019
  %1021 = call double @llvm.fmuladd.f64(double %998, double %1011, double %1020)
  %1022 = load double, ptr %19, align 8, !tbaa !9
  %1023 = load double, ptr %14, align 8, !tbaa !9
  %1024 = load double, ptr %58, align 8, !tbaa !9
  %1025 = load double, ptr %15, align 8, !tbaa !9
  %1026 = load double, ptr %57, align 8, !tbaa !9
  %1027 = fmul double %1025, %1026
  %1028 = call double @llvm.fmuladd.f64(double %1023, double %1024, double %1027)
  %1029 = load double, ptr %17, align 8, !tbaa !9
  %1030 = load double, ptr %55, align 8, !tbaa !9
  %1031 = load double, ptr %12, align 8, !tbaa !9
  %1032 = load double, ptr %60, align 8, !tbaa !9
  %1033 = fmul double %1031, %1032
  %1034 = call double @llvm.fmuladd.f64(double %1029, double %1030, double %1033)
  %1035 = fsub double %1028, %1034
  %1036 = load double, ptr %62, align 8, !tbaa !9
  %1037 = load double, ptr %14, align 8, !tbaa !9
  %1038 = load double, ptr %15, align 8, !tbaa !9
  %1039 = load double, ptr %17, align 8, !tbaa !9
  %1040 = load double, ptr %12, align 8, !tbaa !9
  %1041 = fmul double %1039, %1040
  %1042 = fneg double %1041
  %1043 = call double @llvm.fmuladd.f64(double %1037, double %1038, double %1042)
  %1044 = fmul double %1036, %1043
  %1045 = call double @llvm.fmuladd.f64(double %1022, double %1035, double %1044)
  %1046 = fadd double %1021, %1045
  %1047 = load double, ptr %20, align 8, !tbaa !9
  %1048 = load double, ptr %12, align 8, !tbaa !9
  %1049 = load double, ptr %59, align 8, !tbaa !9
  %1050 = load double, ptr %16, align 8, !tbaa !9
  %1051 = load double, ptr %55, align 8, !tbaa !9
  %1052 = fmul double %1050, %1051
  %1053 = call double @llvm.fmuladd.f64(double %1048, double %1049, double %1052)
  %1054 = load double, ptr %15, align 8, !tbaa !9
  %1055 = load double, ptr %56, align 8, !tbaa !9
  %1056 = load double, ptr %13, align 8, !tbaa !9
  %1057 = load double, ptr %58, align 8, !tbaa !9
  %1058 = fmul double %1056, %1057
  %1059 = call double @llvm.fmuladd.f64(double %1054, double %1055, double %1058)
  %1060 = fsub double %1053, %1059
  %1061 = load double, ptr %63, align 8, !tbaa !9
  %1062 = load double, ptr %12, align 8, !tbaa !9
  %1063 = load double, ptr %16, align 8, !tbaa !9
  %1064 = load double, ptr %15, align 8, !tbaa !9
  %1065 = load double, ptr %13, align 8, !tbaa !9
  %1066 = fmul double %1064, %1065
  %1067 = fneg double %1066
  %1068 = call double @llvm.fmuladd.f64(double %1062, double %1063, double %1067)
  %1069 = fmul double %1061, %1068
  %1070 = call double @llvm.fmuladd.f64(double %1047, double %1060, double %1069)
  %1071 = fadd double %1046, %1070
  %1072 = load double, ptr %21, align 8, !tbaa !9
  %1073 = fadd double %1072, %1071
  store double %1073, ptr %21, align 8, !tbaa !9
  %1074 = load double, ptr %21, align 8, !tbaa !9
  %1075 = load double, ptr %22, align 8, !tbaa !9
  %1076 = fcmp oge double %1074, %1075
  br i1 %1076, label %1082, label %1077

1077:                                             ; preds = %994
  %1078 = load double, ptr %21, align 8, !tbaa !9
  %1079 = fneg double %1078
  %1080 = load double, ptr %22, align 8, !tbaa !9
  %1081 = fcmp oge double %1079, %1080
  br i1 %1081, label %1082, label %1084

1082:                                             ; preds = %1077, %994
  %1083 = load double, ptr %21, align 8, !tbaa !9
  store double %1083, ptr %6, align 8
  store i32 1, ptr %148, align 4
  br label %4759

1084:                                             ; preds = %1077
  %1085 = getelementptr inbounds [192 x double], ptr %52, i64 0, i64 0
  store ptr %1085, ptr %49, align 8, !tbaa !5
  %1086 = getelementptr inbounds [192 x double], ptr %53, i64 0, i64 0
  store ptr %1086, ptr %50, align 8, !tbaa !5
  %1087 = load double, ptr %55, align 8, !tbaa !9
  %1088 = fcmp oeq double %1087, 0.000000e+00
  br i1 %1088, label %1089, label %1199

1089:                                             ; preds = %1084
  %1090 = load double, ptr %58, align 8, !tbaa !9
  %1091 = fcmp oeq double %1090, 0.000000e+00
  br i1 %1091, label %1092, label %1095

1092:                                             ; preds = %1089
  %1093 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 0
  store double 0.000000e+00, ptr %1093, align 16, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !11
  %1094 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 0
  store double 0.000000e+00, ptr %1094, align 16, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !11
  br label %1198

1095:                                             ; preds = %1089
  %1096 = load double, ptr %58, align 8, !tbaa !9
  %1097 = fneg double %1096
  store double %1097, ptr %130, align 8, !tbaa !9
  %1098 = load double, ptr %130, align 8, !tbaa !9
  %1099 = load double, ptr %13, align 8, !tbaa !9
  %1100 = fmul double %1098, %1099
  store double %1100, ptr %64, align 8, !tbaa !9
  %1101 = load double, ptr @splitter, align 8, !tbaa !9
  %1102 = load double, ptr %130, align 8, !tbaa !9
  %1103 = fmul double %1101, %1102
  store double %1103, ptr %135, align 8, !tbaa !9
  %1104 = load double, ptr %135, align 8, !tbaa !9
  %1105 = load double, ptr %130, align 8, !tbaa !9
  %1106 = fsub double %1104, %1105
  store double %1106, ptr %136, align 8, !tbaa !9
  %1107 = load double, ptr %135, align 8, !tbaa !9
  %1108 = load double, ptr %136, align 8, !tbaa !9
  %1109 = fsub double %1107, %1108
  store double %1109, ptr %137, align 8, !tbaa !9
  %1110 = load double, ptr %130, align 8, !tbaa !9
  %1111 = load double, ptr %137, align 8, !tbaa !9
  %1112 = fsub double %1110, %1111
  store double %1112, ptr %138, align 8, !tbaa !9
  %1113 = load double, ptr @splitter, align 8, !tbaa !9
  %1114 = load double, ptr %13, align 8, !tbaa !9
  %1115 = fmul double %1113, %1114
  store double %1115, ptr %135, align 8, !tbaa !9
  %1116 = load double, ptr %135, align 8, !tbaa !9
  %1117 = load double, ptr %13, align 8, !tbaa !9
  %1118 = fsub double %1116, %1117
  store double %1118, ptr %136, align 8, !tbaa !9
  %1119 = load double, ptr %135, align 8, !tbaa !9
  %1120 = load double, ptr %136, align 8, !tbaa !9
  %1121 = fsub double %1119, %1120
  store double %1121, ptr %139, align 8, !tbaa !9
  %1122 = load double, ptr %13, align 8, !tbaa !9
  %1123 = load double, ptr %139, align 8, !tbaa !9
  %1124 = fsub double %1122, %1123
  store double %1124, ptr %140, align 8, !tbaa !9
  %1125 = load double, ptr %64, align 8, !tbaa !9
  %1126 = load double, ptr %137, align 8, !tbaa !9
  %1127 = load double, ptr %139, align 8, !tbaa !9
  %1128 = fneg double %1126
  %1129 = call double @llvm.fmuladd.f64(double %1128, double %1127, double %1125)
  store double %1129, ptr %141, align 8, !tbaa !9
  %1130 = load double, ptr %141, align 8, !tbaa !9
  %1131 = load double, ptr %138, align 8, !tbaa !9
  %1132 = load double, ptr %139, align 8, !tbaa !9
  %1133 = fneg double %1131
  %1134 = call double @llvm.fmuladd.f64(double %1133, double %1132, double %1130)
  store double %1134, ptr %142, align 8, !tbaa !9
  %1135 = load double, ptr %142, align 8, !tbaa !9
  %1136 = load double, ptr %137, align 8, !tbaa !9
  %1137 = load double, ptr %140, align 8, !tbaa !9
  %1138 = fneg double %1136
  %1139 = call double @llvm.fmuladd.f64(double %1138, double %1137, double %1135)
  store double %1139, ptr %143, align 8, !tbaa !9
  %1140 = load double, ptr %138, align 8, !tbaa !9
  %1141 = load double, ptr %140, align 8, !tbaa !9
  %1142 = load double, ptr %143, align 8, !tbaa !9
  %1143 = fneg double %1142
  %1144 = call double @llvm.fmuladd.f64(double %1140, double %1141, double %1143)
  %1145 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 0
  store double %1144, ptr %1145, align 16, !tbaa !9
  %1146 = load double, ptr %64, align 8, !tbaa !9
  %1147 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 1
  store double %1146, ptr %1147, align 8, !tbaa !9
  store i32 2, ptr %76, align 4, !tbaa !11
  %1148 = load double, ptr %58, align 8, !tbaa !9
  %1149 = load double, ptr %14, align 8, !tbaa !9
  %1150 = fmul double %1148, %1149
  store double %1150, ptr %65, align 8, !tbaa !9
  %1151 = load double, ptr @splitter, align 8, !tbaa !9
  %1152 = load double, ptr %58, align 8, !tbaa !9
  %1153 = fmul double %1151, %1152
  store double %1153, ptr %135, align 8, !tbaa !9
  %1154 = load double, ptr %135, align 8, !tbaa !9
  %1155 = load double, ptr %58, align 8, !tbaa !9
  %1156 = fsub double %1154, %1155
  store double %1156, ptr %136, align 8, !tbaa !9
  %1157 = load double, ptr %135, align 8, !tbaa !9
  %1158 = load double, ptr %136, align 8, !tbaa !9
  %1159 = fsub double %1157, %1158
  store double %1159, ptr %137, align 8, !tbaa !9
  %1160 = load double, ptr %58, align 8, !tbaa !9
  %1161 = load double, ptr %137, align 8, !tbaa !9
  %1162 = fsub double %1160, %1161
  store double %1162, ptr %138, align 8, !tbaa !9
  %1163 = load double, ptr @splitter, align 8, !tbaa !9
  %1164 = load double, ptr %14, align 8, !tbaa !9
  %1165 = fmul double %1163, %1164
  store double %1165, ptr %135, align 8, !tbaa !9
  %1166 = load double, ptr %135, align 8, !tbaa !9
  %1167 = load double, ptr %14, align 8, !tbaa !9
  %1168 = fsub double %1166, %1167
  store double %1168, ptr %136, align 8, !tbaa !9
  %1169 = load double, ptr %135, align 8, !tbaa !9
  %1170 = load double, ptr %136, align 8, !tbaa !9
  %1171 = fsub double %1169, %1170
  store double %1171, ptr %139, align 8, !tbaa !9
  %1172 = load double, ptr %14, align 8, !tbaa !9
  %1173 = load double, ptr %139, align 8, !tbaa !9
  %1174 = fsub double %1172, %1173
  store double %1174, ptr %140, align 8, !tbaa !9
  %1175 = load double, ptr %65, align 8, !tbaa !9
  %1176 = load double, ptr %137, align 8, !tbaa !9
  %1177 = load double, ptr %139, align 8, !tbaa !9
  %1178 = fneg double %1176
  %1179 = call double @llvm.fmuladd.f64(double %1178, double %1177, double %1175)
  store double %1179, ptr %141, align 8, !tbaa !9
  %1180 = load double, ptr %141, align 8, !tbaa !9
  %1181 = load double, ptr %138, align 8, !tbaa !9
  %1182 = load double, ptr %139, align 8, !tbaa !9
  %1183 = fneg double %1181
  %1184 = call double @llvm.fmuladd.f64(double %1183, double %1182, double %1180)
  store double %1184, ptr %142, align 8, !tbaa !9
  %1185 = load double, ptr %142, align 8, !tbaa !9
  %1186 = load double, ptr %137, align 8, !tbaa !9
  %1187 = load double, ptr %140, align 8, !tbaa !9
  %1188 = fneg double %1186
  %1189 = call double @llvm.fmuladd.f64(double %1188, double %1187, double %1185)
  store double %1189, ptr %143, align 8, !tbaa !9
  %1190 = load double, ptr %138, align 8, !tbaa !9
  %1191 = load double, ptr %140, align 8, !tbaa !9
  %1192 = load double, ptr %143, align 8, !tbaa !9
  %1193 = fneg double %1192
  %1194 = call double @llvm.fmuladd.f64(double %1190, double %1191, double %1193)
  %1195 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 0
  store double %1194, ptr %1195, align 16, !tbaa !9
  %1196 = load double, ptr %65, align 8, !tbaa !9
  %1197 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 1
  store double %1196, ptr %1197, align 8, !tbaa !9
  store i32 2, ptr %77, align 4, !tbaa !11
  br label %1198

1198:                                             ; preds = %1095, %1092
  br label %1649

1199:                                             ; preds = %1084
  %1200 = load double, ptr %58, align 8, !tbaa !9
  %1201 = fcmp oeq double %1200, 0.000000e+00
  br i1 %1201, label %1202, label %1305

1202:                                             ; preds = %1199
  %1203 = load double, ptr %55, align 8, !tbaa !9
  %1204 = load double, ptr %16, align 8, !tbaa !9
  %1205 = fmul double %1203, %1204
  store double %1205, ptr %64, align 8, !tbaa !9
  %1206 = load double, ptr @splitter, align 8, !tbaa !9
  %1207 = load double, ptr %55, align 8, !tbaa !9
  %1208 = fmul double %1206, %1207
  store double %1208, ptr %135, align 8, !tbaa !9
  %1209 = load double, ptr %135, align 8, !tbaa !9
  %1210 = load double, ptr %55, align 8, !tbaa !9
  %1211 = fsub double %1209, %1210
  store double %1211, ptr %136, align 8, !tbaa !9
  %1212 = load double, ptr %135, align 8, !tbaa !9
  %1213 = load double, ptr %136, align 8, !tbaa !9
  %1214 = fsub double %1212, %1213
  store double %1214, ptr %137, align 8, !tbaa !9
  %1215 = load double, ptr %55, align 8, !tbaa !9
  %1216 = load double, ptr %137, align 8, !tbaa !9
  %1217 = fsub double %1215, %1216
  store double %1217, ptr %138, align 8, !tbaa !9
  %1218 = load double, ptr @splitter, align 8, !tbaa !9
  %1219 = load double, ptr %16, align 8, !tbaa !9
  %1220 = fmul double %1218, %1219
  store double %1220, ptr %135, align 8, !tbaa !9
  %1221 = load double, ptr %135, align 8, !tbaa !9
  %1222 = load double, ptr %16, align 8, !tbaa !9
  %1223 = fsub double %1221, %1222
  store double %1223, ptr %136, align 8, !tbaa !9
  %1224 = load double, ptr %135, align 8, !tbaa !9
  %1225 = load double, ptr %136, align 8, !tbaa !9
  %1226 = fsub double %1224, %1225
  store double %1226, ptr %139, align 8, !tbaa !9
  %1227 = load double, ptr %16, align 8, !tbaa !9
  %1228 = load double, ptr %139, align 8, !tbaa !9
  %1229 = fsub double %1227, %1228
  store double %1229, ptr %140, align 8, !tbaa !9
  %1230 = load double, ptr %64, align 8, !tbaa !9
  %1231 = load double, ptr %137, align 8, !tbaa !9
  %1232 = load double, ptr %139, align 8, !tbaa !9
  %1233 = fneg double %1231
  %1234 = call double @llvm.fmuladd.f64(double %1233, double %1232, double %1230)
  store double %1234, ptr %141, align 8, !tbaa !9
  %1235 = load double, ptr %141, align 8, !tbaa !9
  %1236 = load double, ptr %138, align 8, !tbaa !9
  %1237 = load double, ptr %139, align 8, !tbaa !9
  %1238 = fneg double %1236
  %1239 = call double @llvm.fmuladd.f64(double %1238, double %1237, double %1235)
  store double %1239, ptr %142, align 8, !tbaa !9
  %1240 = load double, ptr %142, align 8, !tbaa !9
  %1241 = load double, ptr %137, align 8, !tbaa !9
  %1242 = load double, ptr %140, align 8, !tbaa !9
  %1243 = fneg double %1241
  %1244 = call double @llvm.fmuladd.f64(double %1243, double %1242, double %1240)
  store double %1244, ptr %143, align 8, !tbaa !9
  %1245 = load double, ptr %138, align 8, !tbaa !9
  %1246 = load double, ptr %140, align 8, !tbaa !9
  %1247 = load double, ptr %143, align 8, !tbaa !9
  %1248 = fneg double %1247
  %1249 = call double @llvm.fmuladd.f64(double %1245, double %1246, double %1248)
  %1250 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 0
  store double %1249, ptr %1250, align 16, !tbaa !9
  %1251 = load double, ptr %64, align 8, !tbaa !9
  %1252 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 1
  store double %1251, ptr %1252, align 8, !tbaa !9
  store i32 2, ptr %76, align 4, !tbaa !11
  %1253 = load double, ptr %55, align 8, !tbaa !9
  %1254 = fneg double %1253
  store double %1254, ptr %130, align 8, !tbaa !9
  %1255 = load double, ptr %130, align 8, !tbaa !9
  %1256 = load double, ptr %17, align 8, !tbaa !9
  %1257 = fmul double %1255, %1256
  store double %1257, ptr %65, align 8, !tbaa !9
  %1258 = load double, ptr @splitter, align 8, !tbaa !9
  %1259 = load double, ptr %130, align 8, !tbaa !9
  %1260 = fmul double %1258, %1259
  store double %1260, ptr %135, align 8, !tbaa !9
  %1261 = load double, ptr %135, align 8, !tbaa !9
  %1262 = load double, ptr %130, align 8, !tbaa !9
  %1263 = fsub double %1261, %1262
  store double %1263, ptr %136, align 8, !tbaa !9
  %1264 = load double, ptr %135, align 8, !tbaa !9
  %1265 = load double, ptr %136, align 8, !tbaa !9
  %1266 = fsub double %1264, %1265
  store double %1266, ptr %137, align 8, !tbaa !9
  %1267 = load double, ptr %130, align 8, !tbaa !9
  %1268 = load double, ptr %137, align 8, !tbaa !9
  %1269 = fsub double %1267, %1268
  store double %1269, ptr %138, align 8, !tbaa !9
  %1270 = load double, ptr @splitter, align 8, !tbaa !9
  %1271 = load double, ptr %17, align 8, !tbaa !9
  %1272 = fmul double %1270, %1271
  store double %1272, ptr %135, align 8, !tbaa !9
  %1273 = load double, ptr %135, align 8, !tbaa !9
  %1274 = load double, ptr %17, align 8, !tbaa !9
  %1275 = fsub double %1273, %1274
  store double %1275, ptr %136, align 8, !tbaa !9
  %1276 = load double, ptr %135, align 8, !tbaa !9
  %1277 = load double, ptr %136, align 8, !tbaa !9
  %1278 = fsub double %1276, %1277
  store double %1278, ptr %139, align 8, !tbaa !9
  %1279 = load double, ptr %17, align 8, !tbaa !9
  %1280 = load double, ptr %139, align 8, !tbaa !9
  %1281 = fsub double %1279, %1280
  store double %1281, ptr %140, align 8, !tbaa !9
  %1282 = load double, ptr %65, align 8, !tbaa !9
  %1283 = load double, ptr %137, align 8, !tbaa !9
  %1284 = load double, ptr %139, align 8, !tbaa !9
  %1285 = fneg double %1283
  %1286 = call double @llvm.fmuladd.f64(double %1285, double %1284, double %1282)
  store double %1286, ptr %141, align 8, !tbaa !9
  %1287 = load double, ptr %141, align 8, !tbaa !9
  %1288 = load double, ptr %138, align 8, !tbaa !9
  %1289 = load double, ptr %139, align 8, !tbaa !9
  %1290 = fneg double %1288
  %1291 = call double @llvm.fmuladd.f64(double %1290, double %1289, double %1287)
  store double %1291, ptr %142, align 8, !tbaa !9
  %1292 = load double, ptr %142, align 8, !tbaa !9
  %1293 = load double, ptr %137, align 8, !tbaa !9
  %1294 = load double, ptr %140, align 8, !tbaa !9
  %1295 = fneg double %1293
  %1296 = call double @llvm.fmuladd.f64(double %1295, double %1294, double %1292)
  store double %1296, ptr %143, align 8, !tbaa !9
  %1297 = load double, ptr %138, align 8, !tbaa !9
  %1298 = load double, ptr %140, align 8, !tbaa !9
  %1299 = load double, ptr %143, align 8, !tbaa !9
  %1300 = fneg double %1299
  %1301 = call double @llvm.fmuladd.f64(double %1297, double %1298, double %1300)
  %1302 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 0
  store double %1301, ptr %1302, align 16, !tbaa !9
  %1303 = load double, ptr %65, align 8, !tbaa !9
  %1304 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 1
  store double %1303, ptr %1304, align 8, !tbaa !9
  store i32 2, ptr %77, align 4, !tbaa !11
  br label %1648

1305:                                             ; preds = %1199
  %1306 = load double, ptr %55, align 8, !tbaa !9
  %1307 = load double, ptr %16, align 8, !tbaa !9
  %1308 = fmul double %1306, %1307
  store double %1308, ptr %86, align 8, !tbaa !9
  %1309 = load double, ptr @splitter, align 8, !tbaa !9
  %1310 = load double, ptr %55, align 8, !tbaa !9
  %1311 = fmul double %1309, %1310
  store double %1311, ptr %135, align 8, !tbaa !9
  %1312 = load double, ptr %135, align 8, !tbaa !9
  %1313 = load double, ptr %55, align 8, !tbaa !9
  %1314 = fsub double %1312, %1313
  store double %1314, ptr %136, align 8, !tbaa !9
  %1315 = load double, ptr %135, align 8, !tbaa !9
  %1316 = load double, ptr %136, align 8, !tbaa !9
  %1317 = fsub double %1315, %1316
  store double %1317, ptr %137, align 8, !tbaa !9
  %1318 = load double, ptr %55, align 8, !tbaa !9
  %1319 = load double, ptr %137, align 8, !tbaa !9
  %1320 = fsub double %1318, %1319
  store double %1320, ptr %138, align 8, !tbaa !9
  %1321 = load double, ptr @splitter, align 8, !tbaa !9
  %1322 = load double, ptr %16, align 8, !tbaa !9
  %1323 = fmul double %1321, %1322
  store double %1323, ptr %135, align 8, !tbaa !9
  %1324 = load double, ptr %135, align 8, !tbaa !9
  %1325 = load double, ptr %16, align 8, !tbaa !9
  %1326 = fsub double %1324, %1325
  store double %1326, ptr %136, align 8, !tbaa !9
  %1327 = load double, ptr %135, align 8, !tbaa !9
  %1328 = load double, ptr %136, align 8, !tbaa !9
  %1329 = fsub double %1327, %1328
  store double %1329, ptr %139, align 8, !tbaa !9
  %1330 = load double, ptr %16, align 8, !tbaa !9
  %1331 = load double, ptr %139, align 8, !tbaa !9
  %1332 = fsub double %1330, %1331
  store double %1332, ptr %140, align 8, !tbaa !9
  %1333 = load double, ptr %86, align 8, !tbaa !9
  %1334 = load double, ptr %137, align 8, !tbaa !9
  %1335 = load double, ptr %139, align 8, !tbaa !9
  %1336 = fneg double %1334
  %1337 = call double @llvm.fmuladd.f64(double %1336, double %1335, double %1333)
  store double %1337, ptr %141, align 8, !tbaa !9
  %1338 = load double, ptr %141, align 8, !tbaa !9
  %1339 = load double, ptr %138, align 8, !tbaa !9
  %1340 = load double, ptr %139, align 8, !tbaa !9
  %1341 = fneg double %1339
  %1342 = call double @llvm.fmuladd.f64(double %1341, double %1340, double %1338)
  store double %1342, ptr %142, align 8, !tbaa !9
  %1343 = load double, ptr %142, align 8, !tbaa !9
  %1344 = load double, ptr %137, align 8, !tbaa !9
  %1345 = load double, ptr %140, align 8, !tbaa !9
  %1346 = fneg double %1344
  %1347 = call double @llvm.fmuladd.f64(double %1346, double %1345, double %1343)
  store double %1347, ptr %143, align 8, !tbaa !9
  %1348 = load double, ptr %138, align 8, !tbaa !9
  %1349 = load double, ptr %140, align 8, !tbaa !9
  %1350 = load double, ptr %143, align 8, !tbaa !9
  %1351 = fneg double %1350
  %1352 = call double @llvm.fmuladd.f64(double %1348, double %1349, double %1351)
  store double %1352, ptr %92, align 8, !tbaa !9
  %1353 = load double, ptr %58, align 8, !tbaa !9
  %1354 = load double, ptr %13, align 8, !tbaa !9
  %1355 = fmul double %1353, %1354
  store double %1355, ptr %98, align 8, !tbaa !9
  %1356 = load double, ptr @splitter, align 8, !tbaa !9
  %1357 = load double, ptr %58, align 8, !tbaa !9
  %1358 = fmul double %1356, %1357
  store double %1358, ptr %135, align 8, !tbaa !9
  %1359 = load double, ptr %135, align 8, !tbaa !9
  %1360 = load double, ptr %58, align 8, !tbaa !9
  %1361 = fsub double %1359, %1360
  store double %1361, ptr %136, align 8, !tbaa !9
  %1362 = load double, ptr %135, align 8, !tbaa !9
  %1363 = load double, ptr %136, align 8, !tbaa !9
  %1364 = fsub double %1362, %1363
  store double %1364, ptr %137, align 8, !tbaa !9
  %1365 = load double, ptr %58, align 8, !tbaa !9
  %1366 = load double, ptr %137, align 8, !tbaa !9
  %1367 = fsub double %1365, %1366
  store double %1367, ptr %138, align 8, !tbaa !9
  %1368 = load double, ptr @splitter, align 8, !tbaa !9
  %1369 = load double, ptr %13, align 8, !tbaa !9
  %1370 = fmul double %1368, %1369
  store double %1370, ptr %135, align 8, !tbaa !9
  %1371 = load double, ptr %135, align 8, !tbaa !9
  %1372 = load double, ptr %13, align 8, !tbaa !9
  %1373 = fsub double %1371, %1372
  store double %1373, ptr %136, align 8, !tbaa !9
  %1374 = load double, ptr %135, align 8, !tbaa !9
  %1375 = load double, ptr %136, align 8, !tbaa !9
  %1376 = fsub double %1374, %1375
  store double %1376, ptr %139, align 8, !tbaa !9
  %1377 = load double, ptr %13, align 8, !tbaa !9
  %1378 = load double, ptr %139, align 8, !tbaa !9
  %1379 = fsub double %1377, %1378
  store double %1379, ptr %140, align 8, !tbaa !9
  %1380 = load double, ptr %98, align 8, !tbaa !9
  %1381 = load double, ptr %137, align 8, !tbaa !9
  %1382 = load double, ptr %139, align 8, !tbaa !9
  %1383 = fneg double %1381
  %1384 = call double @llvm.fmuladd.f64(double %1383, double %1382, double %1380)
  store double %1384, ptr %141, align 8, !tbaa !9
  %1385 = load double, ptr %141, align 8, !tbaa !9
  %1386 = load double, ptr %138, align 8, !tbaa !9
  %1387 = load double, ptr %139, align 8, !tbaa !9
  %1388 = fneg double %1386
  %1389 = call double @llvm.fmuladd.f64(double %1388, double %1387, double %1385)
  store double %1389, ptr %142, align 8, !tbaa !9
  %1390 = load double, ptr %142, align 8, !tbaa !9
  %1391 = load double, ptr %137, align 8, !tbaa !9
  %1392 = load double, ptr %140, align 8, !tbaa !9
  %1393 = fneg double %1391
  %1394 = call double @llvm.fmuladd.f64(double %1393, double %1392, double %1390)
  store double %1394, ptr %143, align 8, !tbaa !9
  %1395 = load double, ptr %138, align 8, !tbaa !9
  %1396 = load double, ptr %140, align 8, !tbaa !9
  %1397 = load double, ptr %143, align 8, !tbaa !9
  %1398 = fneg double %1397
  %1399 = call double @llvm.fmuladd.f64(double %1395, double %1396, double %1398)
  store double %1399, ptr %104, align 8, !tbaa !9
  %1400 = load double, ptr %92, align 8, !tbaa !9
  %1401 = load double, ptr %104, align 8, !tbaa !9
  %1402 = fsub double %1400, %1401
  store double %1402, ptr %144, align 8, !tbaa !9
  %1403 = load double, ptr %92, align 8, !tbaa !9
  %1404 = load double, ptr %144, align 8, !tbaa !9
  %1405 = fsub double %1403, %1404
  store double %1405, ptr %131, align 8, !tbaa !9
  %1406 = load double, ptr %144, align 8, !tbaa !9
  %1407 = load double, ptr %131, align 8, !tbaa !9
  %1408 = fadd double %1406, %1407
  store double %1408, ptr %132, align 8, !tbaa !9
  %1409 = load double, ptr %131, align 8, !tbaa !9
  %1410 = load double, ptr %104, align 8, !tbaa !9
  %1411 = fsub double %1409, %1410
  store double %1411, ptr %133, align 8, !tbaa !9
  %1412 = load double, ptr %92, align 8, !tbaa !9
  %1413 = load double, ptr %132, align 8, !tbaa !9
  %1414 = fsub double %1412, %1413
  store double %1414, ptr %134, align 8, !tbaa !9
  %1415 = load double, ptr %134, align 8, !tbaa !9
  %1416 = load double, ptr %133, align 8, !tbaa !9
  %1417 = fadd double %1415, %1416
  %1418 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 0
  store double %1417, ptr %1418, align 16, !tbaa !9
  %1419 = load double, ptr %86, align 8, !tbaa !9
  %1420 = load double, ptr %144, align 8, !tbaa !9
  %1421 = fadd double %1419, %1420
  store double %1421, ptr %145, align 8, !tbaa !9
  %1422 = load double, ptr %145, align 8, !tbaa !9
  %1423 = load double, ptr %86, align 8, !tbaa !9
  %1424 = fsub double %1422, %1423
  store double %1424, ptr %131, align 8, !tbaa !9
  %1425 = load double, ptr %145, align 8, !tbaa !9
  %1426 = load double, ptr %131, align 8, !tbaa !9
  %1427 = fsub double %1425, %1426
  store double %1427, ptr %132, align 8, !tbaa !9
  %1428 = load double, ptr %144, align 8, !tbaa !9
  %1429 = load double, ptr %131, align 8, !tbaa !9
  %1430 = fsub double %1428, %1429
  store double %1430, ptr %133, align 8, !tbaa !9
  %1431 = load double, ptr %86, align 8, !tbaa !9
  %1432 = load double, ptr %132, align 8, !tbaa !9
  %1433 = fsub double %1431, %1432
  store double %1433, ptr %134, align 8, !tbaa !9
  %1434 = load double, ptr %134, align 8, !tbaa !9
  %1435 = load double, ptr %133, align 8, !tbaa !9
  %1436 = fadd double %1434, %1435
  store double %1436, ptr %147, align 8, !tbaa !9
  %1437 = load double, ptr %147, align 8, !tbaa !9
  %1438 = load double, ptr %98, align 8, !tbaa !9
  %1439 = fsub double %1437, %1438
  store double %1439, ptr %144, align 8, !tbaa !9
  %1440 = load double, ptr %147, align 8, !tbaa !9
  %1441 = load double, ptr %144, align 8, !tbaa !9
  %1442 = fsub double %1440, %1441
  store double %1442, ptr %131, align 8, !tbaa !9
  %1443 = load double, ptr %144, align 8, !tbaa !9
  %1444 = load double, ptr %131, align 8, !tbaa !9
  %1445 = fadd double %1443, %1444
  store double %1445, ptr %132, align 8, !tbaa !9
  %1446 = load double, ptr %131, align 8, !tbaa !9
  %1447 = load double, ptr %98, align 8, !tbaa !9
  %1448 = fsub double %1446, %1447
  store double %1448, ptr %133, align 8, !tbaa !9
  %1449 = load double, ptr %147, align 8, !tbaa !9
  %1450 = load double, ptr %132, align 8, !tbaa !9
  %1451 = fsub double %1449, %1450
  store double %1451, ptr %134, align 8, !tbaa !9
  %1452 = load double, ptr %134, align 8, !tbaa !9
  %1453 = load double, ptr %133, align 8, !tbaa !9
  %1454 = fadd double %1452, %1453
  %1455 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 1
  store double %1454, ptr %1455, align 8, !tbaa !9
  %1456 = load double, ptr %145, align 8, !tbaa !9
  %1457 = load double, ptr %144, align 8, !tbaa !9
  %1458 = fadd double %1456, %1457
  store double %1458, ptr %64, align 8, !tbaa !9
  %1459 = load double, ptr %64, align 8, !tbaa !9
  %1460 = load double, ptr %145, align 8, !tbaa !9
  %1461 = fsub double %1459, %1460
  store double %1461, ptr %131, align 8, !tbaa !9
  %1462 = load double, ptr %64, align 8, !tbaa !9
  %1463 = load double, ptr %131, align 8, !tbaa !9
  %1464 = fsub double %1462, %1463
  store double %1464, ptr %132, align 8, !tbaa !9
  %1465 = load double, ptr %144, align 8, !tbaa !9
  %1466 = load double, ptr %131, align 8, !tbaa !9
  %1467 = fsub double %1465, %1466
  store double %1467, ptr %133, align 8, !tbaa !9
  %1468 = load double, ptr %145, align 8, !tbaa !9
  %1469 = load double, ptr %132, align 8, !tbaa !9
  %1470 = fsub double %1468, %1469
  store double %1470, ptr %134, align 8, !tbaa !9
  %1471 = load double, ptr %134, align 8, !tbaa !9
  %1472 = load double, ptr %133, align 8, !tbaa !9
  %1473 = fadd double %1471, %1472
  %1474 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 2
  store double %1473, ptr %1474, align 16, !tbaa !9
  %1475 = load double, ptr %64, align 8, !tbaa !9
  %1476 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 3
  store double %1475, ptr %1476, align 8, !tbaa !9
  store i32 4, ptr %76, align 4, !tbaa !11
  %1477 = load double, ptr %58, align 8, !tbaa !9
  %1478 = load double, ptr %14, align 8, !tbaa !9
  %1479 = fmul double %1477, %1478
  store double %1479, ptr %97, align 8, !tbaa !9
  %1480 = load double, ptr @splitter, align 8, !tbaa !9
  %1481 = load double, ptr %58, align 8, !tbaa !9
  %1482 = fmul double %1480, %1481
  store double %1482, ptr %135, align 8, !tbaa !9
  %1483 = load double, ptr %135, align 8, !tbaa !9
  %1484 = load double, ptr %58, align 8, !tbaa !9
  %1485 = fsub double %1483, %1484
  store double %1485, ptr %136, align 8, !tbaa !9
  %1486 = load double, ptr %135, align 8, !tbaa !9
  %1487 = load double, ptr %136, align 8, !tbaa !9
  %1488 = fsub double %1486, %1487
  store double %1488, ptr %137, align 8, !tbaa !9
  %1489 = load double, ptr %58, align 8, !tbaa !9
  %1490 = load double, ptr %137, align 8, !tbaa !9
  %1491 = fsub double %1489, %1490
  store double %1491, ptr %138, align 8, !tbaa !9
  %1492 = load double, ptr @splitter, align 8, !tbaa !9
  %1493 = load double, ptr %14, align 8, !tbaa !9
  %1494 = fmul double %1492, %1493
  store double %1494, ptr %135, align 8, !tbaa !9
  %1495 = load double, ptr %135, align 8, !tbaa !9
  %1496 = load double, ptr %14, align 8, !tbaa !9
  %1497 = fsub double %1495, %1496
  store double %1497, ptr %136, align 8, !tbaa !9
  %1498 = load double, ptr %135, align 8, !tbaa !9
  %1499 = load double, ptr %136, align 8, !tbaa !9
  %1500 = fsub double %1498, %1499
  store double %1500, ptr %139, align 8, !tbaa !9
  %1501 = load double, ptr %14, align 8, !tbaa !9
  %1502 = load double, ptr %139, align 8, !tbaa !9
  %1503 = fsub double %1501, %1502
  store double %1503, ptr %140, align 8, !tbaa !9
  %1504 = load double, ptr %97, align 8, !tbaa !9
  %1505 = load double, ptr %137, align 8, !tbaa !9
  %1506 = load double, ptr %139, align 8, !tbaa !9
  %1507 = fneg double %1505
  %1508 = call double @llvm.fmuladd.f64(double %1507, double %1506, double %1504)
  store double %1508, ptr %141, align 8, !tbaa !9
  %1509 = load double, ptr %141, align 8, !tbaa !9
  %1510 = load double, ptr %138, align 8, !tbaa !9
  %1511 = load double, ptr %139, align 8, !tbaa !9
  %1512 = fneg double %1510
  %1513 = call double @llvm.fmuladd.f64(double %1512, double %1511, double %1509)
  store double %1513, ptr %142, align 8, !tbaa !9
  %1514 = load double, ptr %142, align 8, !tbaa !9
  %1515 = load double, ptr %137, align 8, !tbaa !9
  %1516 = load double, ptr %140, align 8, !tbaa !9
  %1517 = fneg double %1515
  %1518 = call double @llvm.fmuladd.f64(double %1517, double %1516, double %1514)
  store double %1518, ptr %143, align 8, !tbaa !9
  %1519 = load double, ptr %138, align 8, !tbaa !9
  %1520 = load double, ptr %140, align 8, !tbaa !9
  %1521 = load double, ptr %143, align 8, !tbaa !9
  %1522 = fneg double %1521
  %1523 = call double @llvm.fmuladd.f64(double %1519, double %1520, double %1522)
  store double %1523, ptr %103, align 8, !tbaa !9
  %1524 = load double, ptr %55, align 8, !tbaa !9
  %1525 = load double, ptr %17, align 8, !tbaa !9
  %1526 = fmul double %1524, %1525
  store double %1526, ptr %85, align 8, !tbaa !9
  %1527 = load double, ptr @splitter, align 8, !tbaa !9
  %1528 = load double, ptr %55, align 8, !tbaa !9
  %1529 = fmul double %1527, %1528
  store double %1529, ptr %135, align 8, !tbaa !9
  %1530 = load double, ptr %135, align 8, !tbaa !9
  %1531 = load double, ptr %55, align 8, !tbaa !9
  %1532 = fsub double %1530, %1531
  store double %1532, ptr %136, align 8, !tbaa !9
  %1533 = load double, ptr %135, align 8, !tbaa !9
  %1534 = load double, ptr %136, align 8, !tbaa !9
  %1535 = fsub double %1533, %1534
  store double %1535, ptr %137, align 8, !tbaa !9
  %1536 = load double, ptr %55, align 8, !tbaa !9
  %1537 = load double, ptr %137, align 8, !tbaa !9
  %1538 = fsub double %1536, %1537
  store double %1538, ptr %138, align 8, !tbaa !9
  %1539 = load double, ptr @splitter, align 8, !tbaa !9
  %1540 = load double, ptr %17, align 8, !tbaa !9
  %1541 = fmul double %1539, %1540
  store double %1541, ptr %135, align 8, !tbaa !9
  %1542 = load double, ptr %135, align 8, !tbaa !9
  %1543 = load double, ptr %17, align 8, !tbaa !9
  %1544 = fsub double %1542, %1543
  store double %1544, ptr %136, align 8, !tbaa !9
  %1545 = load double, ptr %135, align 8, !tbaa !9
  %1546 = load double, ptr %136, align 8, !tbaa !9
  %1547 = fsub double %1545, %1546
  store double %1547, ptr %139, align 8, !tbaa !9
  %1548 = load double, ptr %17, align 8, !tbaa !9
  %1549 = load double, ptr %139, align 8, !tbaa !9
  %1550 = fsub double %1548, %1549
  store double %1550, ptr %140, align 8, !tbaa !9
  %1551 = load double, ptr %85, align 8, !tbaa !9
  %1552 = load double, ptr %137, align 8, !tbaa !9
  %1553 = load double, ptr %139, align 8, !tbaa !9
  %1554 = fneg double %1552
  %1555 = call double @llvm.fmuladd.f64(double %1554, double %1553, double %1551)
  store double %1555, ptr %141, align 8, !tbaa !9
  %1556 = load double, ptr %141, align 8, !tbaa !9
  %1557 = load double, ptr %138, align 8, !tbaa !9
  %1558 = load double, ptr %139, align 8, !tbaa !9
  %1559 = fneg double %1557
  %1560 = call double @llvm.fmuladd.f64(double %1559, double %1558, double %1556)
  store double %1560, ptr %142, align 8, !tbaa !9
  %1561 = load double, ptr %142, align 8, !tbaa !9
  %1562 = load double, ptr %137, align 8, !tbaa !9
  %1563 = load double, ptr %140, align 8, !tbaa !9
  %1564 = fneg double %1562
  %1565 = call double @llvm.fmuladd.f64(double %1564, double %1563, double %1561)
  store double %1565, ptr %143, align 8, !tbaa !9
  %1566 = load double, ptr %138, align 8, !tbaa !9
  %1567 = load double, ptr %140, align 8, !tbaa !9
  %1568 = load double, ptr %143, align 8, !tbaa !9
  %1569 = fneg double %1568
  %1570 = call double @llvm.fmuladd.f64(double %1566, double %1567, double %1569)
  store double %1570, ptr %91, align 8, !tbaa !9
  %1571 = load double, ptr %103, align 8, !tbaa !9
  %1572 = load double, ptr %91, align 8, !tbaa !9
  %1573 = fsub double %1571, %1572
  store double %1573, ptr %144, align 8, !tbaa !9
  %1574 = load double, ptr %103, align 8, !tbaa !9
  %1575 = load double, ptr %144, align 8, !tbaa !9
  %1576 = fsub double %1574, %1575
  store double %1576, ptr %131, align 8, !tbaa !9
  %1577 = load double, ptr %144, align 8, !tbaa !9
  %1578 = load double, ptr %131, align 8, !tbaa !9
  %1579 = fadd double %1577, %1578
  store double %1579, ptr %132, align 8, !tbaa !9
  %1580 = load double, ptr %131, align 8, !tbaa !9
  %1581 = load double, ptr %91, align 8, !tbaa !9
  %1582 = fsub double %1580, %1581
  store double %1582, ptr %133, align 8, !tbaa !9
  %1583 = load double, ptr %103, align 8, !tbaa !9
  %1584 = load double, ptr %132, align 8, !tbaa !9
  %1585 = fsub double %1583, %1584
  store double %1585, ptr %134, align 8, !tbaa !9
  %1586 = load double, ptr %134, align 8, !tbaa !9
  %1587 = load double, ptr %133, align 8, !tbaa !9
  %1588 = fadd double %1586, %1587
  %1589 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 0
  store double %1588, ptr %1589, align 16, !tbaa !9
  %1590 = load double, ptr %97, align 8, !tbaa !9
  %1591 = load double, ptr %144, align 8, !tbaa !9
  %1592 = fadd double %1590, %1591
  store double %1592, ptr %145, align 8, !tbaa !9
  %1593 = load double, ptr %145, align 8, !tbaa !9
  %1594 = load double, ptr %97, align 8, !tbaa !9
  %1595 = fsub double %1593, %1594
  store double %1595, ptr %131, align 8, !tbaa !9
  %1596 = load double, ptr %145, align 8, !tbaa !9
  %1597 = load double, ptr %131, align 8, !tbaa !9
  %1598 = fsub double %1596, %1597
  store double %1598, ptr %132, align 8, !tbaa !9
  %1599 = load double, ptr %144, align 8, !tbaa !9
  %1600 = load double, ptr %131, align 8, !tbaa !9
  %1601 = fsub double %1599, %1600
  store double %1601, ptr %133, align 8, !tbaa !9
  %1602 = load double, ptr %97, align 8, !tbaa !9
  %1603 = load double, ptr %132, align 8, !tbaa !9
  %1604 = fsub double %1602, %1603
  store double %1604, ptr %134, align 8, !tbaa !9
  %1605 = load double, ptr %134, align 8, !tbaa !9
  %1606 = load double, ptr %133, align 8, !tbaa !9
  %1607 = fadd double %1605, %1606
  store double %1607, ptr %147, align 8, !tbaa !9
  %1608 = load double, ptr %147, align 8, !tbaa !9
  %1609 = load double, ptr %85, align 8, !tbaa !9
  %1610 = fsub double %1608, %1609
  store double %1610, ptr %144, align 8, !tbaa !9
  %1611 = load double, ptr %147, align 8, !tbaa !9
  %1612 = load double, ptr %144, align 8, !tbaa !9
  %1613 = fsub double %1611, %1612
  store double %1613, ptr %131, align 8, !tbaa !9
  %1614 = load double, ptr %144, align 8, !tbaa !9
  %1615 = load double, ptr %131, align 8, !tbaa !9
  %1616 = fadd double %1614, %1615
  store double %1616, ptr %132, align 8, !tbaa !9
  %1617 = load double, ptr %131, align 8, !tbaa !9
  %1618 = load double, ptr %85, align 8, !tbaa !9
  %1619 = fsub double %1617, %1618
  store double %1619, ptr %133, align 8, !tbaa !9
  %1620 = load double, ptr %147, align 8, !tbaa !9
  %1621 = load double, ptr %132, align 8, !tbaa !9
  %1622 = fsub double %1620, %1621
  store double %1622, ptr %134, align 8, !tbaa !9
  %1623 = load double, ptr %134, align 8, !tbaa !9
  %1624 = load double, ptr %133, align 8, !tbaa !9
  %1625 = fadd double %1623, %1624
  %1626 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 1
  store double %1625, ptr %1626, align 8, !tbaa !9
  %1627 = load double, ptr %145, align 8, !tbaa !9
  %1628 = load double, ptr %144, align 8, !tbaa !9
  %1629 = fadd double %1627, %1628
  store double %1629, ptr %65, align 8, !tbaa !9
  %1630 = load double, ptr %65, align 8, !tbaa !9
  %1631 = load double, ptr %145, align 8, !tbaa !9
  %1632 = fsub double %1630, %1631
  store double %1632, ptr %131, align 8, !tbaa !9
  %1633 = load double, ptr %65, align 8, !tbaa !9
  %1634 = load double, ptr %131, align 8, !tbaa !9
  %1635 = fsub double %1633, %1634
  store double %1635, ptr %132, align 8, !tbaa !9
  %1636 = load double, ptr %144, align 8, !tbaa !9
  %1637 = load double, ptr %131, align 8, !tbaa !9
  %1638 = fsub double %1636, %1637
  store double %1638, ptr %133, align 8, !tbaa !9
  %1639 = load double, ptr %145, align 8, !tbaa !9
  %1640 = load double, ptr %132, align 8, !tbaa !9
  %1641 = fsub double %1639, %1640
  store double %1641, ptr %134, align 8, !tbaa !9
  %1642 = load double, ptr %134, align 8, !tbaa !9
  %1643 = load double, ptr %133, align 8, !tbaa !9
  %1644 = fadd double %1642, %1643
  %1645 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 2
  store double %1644, ptr %1645, align 16, !tbaa !9
  %1646 = load double, ptr %65, align 8, !tbaa !9
  %1647 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 3
  store double %1646, ptr %1647, align 8, !tbaa !9
  store i32 4, ptr %77, align 4, !tbaa !11
  br label %1648

1648:                                             ; preds = %1305, %1202
  br label %1649

1649:                                             ; preds = %1648, %1198
  %1650 = load double, ptr %56, align 8, !tbaa !9
  %1651 = fcmp oeq double %1650, 0.000000e+00
  br i1 %1651, label %1652, label %1762

1652:                                             ; preds = %1649
  %1653 = load double, ptr %59, align 8, !tbaa !9
  %1654 = fcmp oeq double %1653, 0.000000e+00
  br i1 %1654, label %1655, label %1658

1655:                                             ; preds = %1652
  %1656 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 0
  store double 0.000000e+00, ptr %1656, align 16, !tbaa !9
  store i32 1, ptr %78, align 4, !tbaa !11
  %1657 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 0
  store double 0.000000e+00, ptr %1657, align 16, !tbaa !9
  store i32 1, ptr %79, align 4, !tbaa !11
  br label %1761

1658:                                             ; preds = %1652
  %1659 = load double, ptr %59, align 8, !tbaa !9
  %1660 = fneg double %1659
  store double %1660, ptr %130, align 8, !tbaa !9
  %1661 = load double, ptr %130, align 8, !tbaa !9
  %1662 = load double, ptr %14, align 8, !tbaa !9
  %1663 = fmul double %1661, %1662
  store double %1663, ptr %66, align 8, !tbaa !9
  %1664 = load double, ptr @splitter, align 8, !tbaa !9
  %1665 = load double, ptr %130, align 8, !tbaa !9
  %1666 = fmul double %1664, %1665
  store double %1666, ptr %135, align 8, !tbaa !9
  %1667 = load double, ptr %135, align 8, !tbaa !9
  %1668 = load double, ptr %130, align 8, !tbaa !9
  %1669 = fsub double %1667, %1668
  store double %1669, ptr %136, align 8, !tbaa !9
  %1670 = load double, ptr %135, align 8, !tbaa !9
  %1671 = load double, ptr %136, align 8, !tbaa !9
  %1672 = fsub double %1670, %1671
  store double %1672, ptr %137, align 8, !tbaa !9
  %1673 = load double, ptr %130, align 8, !tbaa !9
  %1674 = load double, ptr %137, align 8, !tbaa !9
  %1675 = fsub double %1673, %1674
  store double %1675, ptr %138, align 8, !tbaa !9
  %1676 = load double, ptr @splitter, align 8, !tbaa !9
  %1677 = load double, ptr %14, align 8, !tbaa !9
  %1678 = fmul double %1676, %1677
  store double %1678, ptr %135, align 8, !tbaa !9
  %1679 = load double, ptr %135, align 8, !tbaa !9
  %1680 = load double, ptr %14, align 8, !tbaa !9
  %1681 = fsub double %1679, %1680
  store double %1681, ptr %136, align 8, !tbaa !9
  %1682 = load double, ptr %135, align 8, !tbaa !9
  %1683 = load double, ptr %136, align 8, !tbaa !9
  %1684 = fsub double %1682, %1683
  store double %1684, ptr %139, align 8, !tbaa !9
  %1685 = load double, ptr %14, align 8, !tbaa !9
  %1686 = load double, ptr %139, align 8, !tbaa !9
  %1687 = fsub double %1685, %1686
  store double %1687, ptr %140, align 8, !tbaa !9
  %1688 = load double, ptr %66, align 8, !tbaa !9
  %1689 = load double, ptr %137, align 8, !tbaa !9
  %1690 = load double, ptr %139, align 8, !tbaa !9
  %1691 = fneg double %1689
  %1692 = call double @llvm.fmuladd.f64(double %1691, double %1690, double %1688)
  store double %1692, ptr %141, align 8, !tbaa !9
  %1693 = load double, ptr %141, align 8, !tbaa !9
  %1694 = load double, ptr %138, align 8, !tbaa !9
  %1695 = load double, ptr %139, align 8, !tbaa !9
  %1696 = fneg double %1694
  %1697 = call double @llvm.fmuladd.f64(double %1696, double %1695, double %1693)
  store double %1697, ptr %142, align 8, !tbaa !9
  %1698 = load double, ptr %142, align 8, !tbaa !9
  %1699 = load double, ptr %137, align 8, !tbaa !9
  %1700 = load double, ptr %140, align 8, !tbaa !9
  %1701 = fneg double %1699
  %1702 = call double @llvm.fmuladd.f64(double %1701, double %1700, double %1698)
  store double %1702, ptr %143, align 8, !tbaa !9
  %1703 = load double, ptr %138, align 8, !tbaa !9
  %1704 = load double, ptr %140, align 8, !tbaa !9
  %1705 = load double, ptr %143, align 8, !tbaa !9
  %1706 = fneg double %1705
  %1707 = call double @llvm.fmuladd.f64(double %1703, double %1704, double %1706)
  %1708 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 0
  store double %1707, ptr %1708, align 16, !tbaa !9
  %1709 = load double, ptr %66, align 8, !tbaa !9
  %1710 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 1
  store double %1709, ptr %1710, align 8, !tbaa !9
  store i32 2, ptr %78, align 4, !tbaa !11
  %1711 = load double, ptr %59, align 8, !tbaa !9
  %1712 = load double, ptr %12, align 8, !tbaa !9
  %1713 = fmul double %1711, %1712
  store double %1713, ptr %67, align 8, !tbaa !9
  %1714 = load double, ptr @splitter, align 8, !tbaa !9
  %1715 = load double, ptr %59, align 8, !tbaa !9
  %1716 = fmul double %1714, %1715
  store double %1716, ptr %135, align 8, !tbaa !9
  %1717 = load double, ptr %135, align 8, !tbaa !9
  %1718 = load double, ptr %59, align 8, !tbaa !9
  %1719 = fsub double %1717, %1718
  store double %1719, ptr %136, align 8, !tbaa !9
  %1720 = load double, ptr %135, align 8, !tbaa !9
  %1721 = load double, ptr %136, align 8, !tbaa !9
  %1722 = fsub double %1720, %1721
  store double %1722, ptr %137, align 8, !tbaa !9
  %1723 = load double, ptr %59, align 8, !tbaa !9
  %1724 = load double, ptr %137, align 8, !tbaa !9
  %1725 = fsub double %1723, %1724
  store double %1725, ptr %138, align 8, !tbaa !9
  %1726 = load double, ptr @splitter, align 8, !tbaa !9
  %1727 = load double, ptr %12, align 8, !tbaa !9
  %1728 = fmul double %1726, %1727
  store double %1728, ptr %135, align 8, !tbaa !9
  %1729 = load double, ptr %135, align 8, !tbaa !9
  %1730 = load double, ptr %12, align 8, !tbaa !9
  %1731 = fsub double %1729, %1730
  store double %1731, ptr %136, align 8, !tbaa !9
  %1732 = load double, ptr %135, align 8, !tbaa !9
  %1733 = load double, ptr %136, align 8, !tbaa !9
  %1734 = fsub double %1732, %1733
  store double %1734, ptr %139, align 8, !tbaa !9
  %1735 = load double, ptr %12, align 8, !tbaa !9
  %1736 = load double, ptr %139, align 8, !tbaa !9
  %1737 = fsub double %1735, %1736
  store double %1737, ptr %140, align 8, !tbaa !9
  %1738 = load double, ptr %67, align 8, !tbaa !9
  %1739 = load double, ptr %137, align 8, !tbaa !9
  %1740 = load double, ptr %139, align 8, !tbaa !9
  %1741 = fneg double %1739
  %1742 = call double @llvm.fmuladd.f64(double %1741, double %1740, double %1738)
  store double %1742, ptr %141, align 8, !tbaa !9
  %1743 = load double, ptr %141, align 8, !tbaa !9
  %1744 = load double, ptr %138, align 8, !tbaa !9
  %1745 = load double, ptr %139, align 8, !tbaa !9
  %1746 = fneg double %1744
  %1747 = call double @llvm.fmuladd.f64(double %1746, double %1745, double %1743)
  store double %1747, ptr %142, align 8, !tbaa !9
  %1748 = load double, ptr %142, align 8, !tbaa !9
  %1749 = load double, ptr %137, align 8, !tbaa !9
  %1750 = load double, ptr %140, align 8, !tbaa !9
  %1751 = fneg double %1749
  %1752 = call double @llvm.fmuladd.f64(double %1751, double %1750, double %1748)
  store double %1752, ptr %143, align 8, !tbaa !9
  %1753 = load double, ptr %138, align 8, !tbaa !9
  %1754 = load double, ptr %140, align 8, !tbaa !9
  %1755 = load double, ptr %143, align 8, !tbaa !9
  %1756 = fneg double %1755
  %1757 = call double @llvm.fmuladd.f64(double %1753, double %1754, double %1756)
  %1758 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 0
  store double %1757, ptr %1758, align 16, !tbaa !9
  %1759 = load double, ptr %67, align 8, !tbaa !9
  %1760 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 1
  store double %1759, ptr %1760, align 8, !tbaa !9
  store i32 2, ptr %79, align 4, !tbaa !11
  br label %1761

1761:                                             ; preds = %1658, %1655
  br label %2212

1762:                                             ; preds = %1649
  %1763 = load double, ptr %59, align 8, !tbaa !9
  %1764 = fcmp oeq double %1763, 0.000000e+00
  br i1 %1764, label %1765, label %1868

1765:                                             ; preds = %1762
  %1766 = load double, ptr %56, align 8, !tbaa !9
  %1767 = load double, ptr %17, align 8, !tbaa !9
  %1768 = fmul double %1766, %1767
  store double %1768, ptr %66, align 8, !tbaa !9
  %1769 = load double, ptr @splitter, align 8, !tbaa !9
  %1770 = load double, ptr %56, align 8, !tbaa !9
  %1771 = fmul double %1769, %1770
  store double %1771, ptr %135, align 8, !tbaa !9
  %1772 = load double, ptr %135, align 8, !tbaa !9
  %1773 = load double, ptr %56, align 8, !tbaa !9
  %1774 = fsub double %1772, %1773
  store double %1774, ptr %136, align 8, !tbaa !9
  %1775 = load double, ptr %135, align 8, !tbaa !9
  %1776 = load double, ptr %136, align 8, !tbaa !9
  %1777 = fsub double %1775, %1776
  store double %1777, ptr %137, align 8, !tbaa !9
  %1778 = load double, ptr %56, align 8, !tbaa !9
  %1779 = load double, ptr %137, align 8, !tbaa !9
  %1780 = fsub double %1778, %1779
  store double %1780, ptr %138, align 8, !tbaa !9
  %1781 = load double, ptr @splitter, align 8, !tbaa !9
  %1782 = load double, ptr %17, align 8, !tbaa !9
  %1783 = fmul double %1781, %1782
  store double %1783, ptr %135, align 8, !tbaa !9
  %1784 = load double, ptr %135, align 8, !tbaa !9
  %1785 = load double, ptr %17, align 8, !tbaa !9
  %1786 = fsub double %1784, %1785
  store double %1786, ptr %136, align 8, !tbaa !9
  %1787 = load double, ptr %135, align 8, !tbaa !9
  %1788 = load double, ptr %136, align 8, !tbaa !9
  %1789 = fsub double %1787, %1788
  store double %1789, ptr %139, align 8, !tbaa !9
  %1790 = load double, ptr %17, align 8, !tbaa !9
  %1791 = load double, ptr %139, align 8, !tbaa !9
  %1792 = fsub double %1790, %1791
  store double %1792, ptr %140, align 8, !tbaa !9
  %1793 = load double, ptr %66, align 8, !tbaa !9
  %1794 = load double, ptr %137, align 8, !tbaa !9
  %1795 = load double, ptr %139, align 8, !tbaa !9
  %1796 = fneg double %1794
  %1797 = call double @llvm.fmuladd.f64(double %1796, double %1795, double %1793)
  store double %1797, ptr %141, align 8, !tbaa !9
  %1798 = load double, ptr %141, align 8, !tbaa !9
  %1799 = load double, ptr %138, align 8, !tbaa !9
  %1800 = load double, ptr %139, align 8, !tbaa !9
  %1801 = fneg double %1799
  %1802 = call double @llvm.fmuladd.f64(double %1801, double %1800, double %1798)
  store double %1802, ptr %142, align 8, !tbaa !9
  %1803 = load double, ptr %142, align 8, !tbaa !9
  %1804 = load double, ptr %137, align 8, !tbaa !9
  %1805 = load double, ptr %140, align 8, !tbaa !9
  %1806 = fneg double %1804
  %1807 = call double @llvm.fmuladd.f64(double %1806, double %1805, double %1803)
  store double %1807, ptr %143, align 8, !tbaa !9
  %1808 = load double, ptr %138, align 8, !tbaa !9
  %1809 = load double, ptr %140, align 8, !tbaa !9
  %1810 = load double, ptr %143, align 8, !tbaa !9
  %1811 = fneg double %1810
  %1812 = call double @llvm.fmuladd.f64(double %1808, double %1809, double %1811)
  %1813 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 0
  store double %1812, ptr %1813, align 16, !tbaa !9
  %1814 = load double, ptr %66, align 8, !tbaa !9
  %1815 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 1
  store double %1814, ptr %1815, align 8, !tbaa !9
  store i32 2, ptr %78, align 4, !tbaa !11
  %1816 = load double, ptr %56, align 8, !tbaa !9
  %1817 = fneg double %1816
  store double %1817, ptr %130, align 8, !tbaa !9
  %1818 = load double, ptr %130, align 8, !tbaa !9
  %1819 = load double, ptr %15, align 8, !tbaa !9
  %1820 = fmul double %1818, %1819
  store double %1820, ptr %67, align 8, !tbaa !9
  %1821 = load double, ptr @splitter, align 8, !tbaa !9
  %1822 = load double, ptr %130, align 8, !tbaa !9
  %1823 = fmul double %1821, %1822
  store double %1823, ptr %135, align 8, !tbaa !9
  %1824 = load double, ptr %135, align 8, !tbaa !9
  %1825 = load double, ptr %130, align 8, !tbaa !9
  %1826 = fsub double %1824, %1825
  store double %1826, ptr %136, align 8, !tbaa !9
  %1827 = load double, ptr %135, align 8, !tbaa !9
  %1828 = load double, ptr %136, align 8, !tbaa !9
  %1829 = fsub double %1827, %1828
  store double %1829, ptr %137, align 8, !tbaa !9
  %1830 = load double, ptr %130, align 8, !tbaa !9
  %1831 = load double, ptr %137, align 8, !tbaa !9
  %1832 = fsub double %1830, %1831
  store double %1832, ptr %138, align 8, !tbaa !9
  %1833 = load double, ptr @splitter, align 8, !tbaa !9
  %1834 = load double, ptr %15, align 8, !tbaa !9
  %1835 = fmul double %1833, %1834
  store double %1835, ptr %135, align 8, !tbaa !9
  %1836 = load double, ptr %135, align 8, !tbaa !9
  %1837 = load double, ptr %15, align 8, !tbaa !9
  %1838 = fsub double %1836, %1837
  store double %1838, ptr %136, align 8, !tbaa !9
  %1839 = load double, ptr %135, align 8, !tbaa !9
  %1840 = load double, ptr %136, align 8, !tbaa !9
  %1841 = fsub double %1839, %1840
  store double %1841, ptr %139, align 8, !tbaa !9
  %1842 = load double, ptr %15, align 8, !tbaa !9
  %1843 = load double, ptr %139, align 8, !tbaa !9
  %1844 = fsub double %1842, %1843
  store double %1844, ptr %140, align 8, !tbaa !9
  %1845 = load double, ptr %67, align 8, !tbaa !9
  %1846 = load double, ptr %137, align 8, !tbaa !9
  %1847 = load double, ptr %139, align 8, !tbaa !9
  %1848 = fneg double %1846
  %1849 = call double @llvm.fmuladd.f64(double %1848, double %1847, double %1845)
  store double %1849, ptr %141, align 8, !tbaa !9
  %1850 = load double, ptr %141, align 8, !tbaa !9
  %1851 = load double, ptr %138, align 8, !tbaa !9
  %1852 = load double, ptr %139, align 8, !tbaa !9
  %1853 = fneg double %1851
  %1854 = call double @llvm.fmuladd.f64(double %1853, double %1852, double %1850)
  store double %1854, ptr %142, align 8, !tbaa !9
  %1855 = load double, ptr %142, align 8, !tbaa !9
  %1856 = load double, ptr %137, align 8, !tbaa !9
  %1857 = load double, ptr %140, align 8, !tbaa !9
  %1858 = fneg double %1856
  %1859 = call double @llvm.fmuladd.f64(double %1858, double %1857, double %1855)
  store double %1859, ptr %143, align 8, !tbaa !9
  %1860 = load double, ptr %138, align 8, !tbaa !9
  %1861 = load double, ptr %140, align 8, !tbaa !9
  %1862 = load double, ptr %143, align 8, !tbaa !9
  %1863 = fneg double %1862
  %1864 = call double @llvm.fmuladd.f64(double %1860, double %1861, double %1863)
  %1865 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 0
  store double %1864, ptr %1865, align 16, !tbaa !9
  %1866 = load double, ptr %67, align 8, !tbaa !9
  %1867 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 1
  store double %1866, ptr %1867, align 8, !tbaa !9
  store i32 2, ptr %79, align 4, !tbaa !11
  br label %2211

1868:                                             ; preds = %1762
  %1869 = load double, ptr %56, align 8, !tbaa !9
  %1870 = load double, ptr %17, align 8, !tbaa !9
  %1871 = fmul double %1869, %1870
  store double %1871, ptr %82, align 8, !tbaa !9
  %1872 = load double, ptr @splitter, align 8, !tbaa !9
  %1873 = load double, ptr %56, align 8, !tbaa !9
  %1874 = fmul double %1872, %1873
  store double %1874, ptr %135, align 8, !tbaa !9
  %1875 = load double, ptr %135, align 8, !tbaa !9
  %1876 = load double, ptr %56, align 8, !tbaa !9
  %1877 = fsub double %1875, %1876
  store double %1877, ptr %136, align 8, !tbaa !9
  %1878 = load double, ptr %135, align 8, !tbaa !9
  %1879 = load double, ptr %136, align 8, !tbaa !9
  %1880 = fsub double %1878, %1879
  store double %1880, ptr %137, align 8, !tbaa !9
  %1881 = load double, ptr %56, align 8, !tbaa !9
  %1882 = load double, ptr %137, align 8, !tbaa !9
  %1883 = fsub double %1881, %1882
  store double %1883, ptr %138, align 8, !tbaa !9
  %1884 = load double, ptr @splitter, align 8, !tbaa !9
  %1885 = load double, ptr %17, align 8, !tbaa !9
  %1886 = fmul double %1884, %1885
  store double %1886, ptr %135, align 8, !tbaa !9
  %1887 = load double, ptr %135, align 8, !tbaa !9
  %1888 = load double, ptr %17, align 8, !tbaa !9
  %1889 = fsub double %1887, %1888
  store double %1889, ptr %136, align 8, !tbaa !9
  %1890 = load double, ptr %135, align 8, !tbaa !9
  %1891 = load double, ptr %136, align 8, !tbaa !9
  %1892 = fsub double %1890, %1891
  store double %1892, ptr %139, align 8, !tbaa !9
  %1893 = load double, ptr %17, align 8, !tbaa !9
  %1894 = load double, ptr %139, align 8, !tbaa !9
  %1895 = fsub double %1893, %1894
  store double %1895, ptr %140, align 8, !tbaa !9
  %1896 = load double, ptr %82, align 8, !tbaa !9
  %1897 = load double, ptr %137, align 8, !tbaa !9
  %1898 = load double, ptr %139, align 8, !tbaa !9
  %1899 = fneg double %1897
  %1900 = call double @llvm.fmuladd.f64(double %1899, double %1898, double %1896)
  store double %1900, ptr %141, align 8, !tbaa !9
  %1901 = load double, ptr %141, align 8, !tbaa !9
  %1902 = load double, ptr %138, align 8, !tbaa !9
  %1903 = load double, ptr %139, align 8, !tbaa !9
  %1904 = fneg double %1902
  %1905 = call double @llvm.fmuladd.f64(double %1904, double %1903, double %1901)
  store double %1905, ptr %142, align 8, !tbaa !9
  %1906 = load double, ptr %142, align 8, !tbaa !9
  %1907 = load double, ptr %137, align 8, !tbaa !9
  %1908 = load double, ptr %140, align 8, !tbaa !9
  %1909 = fneg double %1907
  %1910 = call double @llvm.fmuladd.f64(double %1909, double %1908, double %1906)
  store double %1910, ptr %143, align 8, !tbaa !9
  %1911 = load double, ptr %138, align 8, !tbaa !9
  %1912 = load double, ptr %140, align 8, !tbaa !9
  %1913 = load double, ptr %143, align 8, !tbaa !9
  %1914 = fneg double %1913
  %1915 = call double @llvm.fmuladd.f64(double %1911, double %1912, double %1914)
  store double %1915, ptr %88, align 8, !tbaa !9
  %1916 = load double, ptr %59, align 8, !tbaa !9
  %1917 = load double, ptr %14, align 8, !tbaa !9
  %1918 = fmul double %1916, %1917
  store double %1918, ptr %94, align 8, !tbaa !9
  %1919 = load double, ptr @splitter, align 8, !tbaa !9
  %1920 = load double, ptr %59, align 8, !tbaa !9
  %1921 = fmul double %1919, %1920
  store double %1921, ptr %135, align 8, !tbaa !9
  %1922 = load double, ptr %135, align 8, !tbaa !9
  %1923 = load double, ptr %59, align 8, !tbaa !9
  %1924 = fsub double %1922, %1923
  store double %1924, ptr %136, align 8, !tbaa !9
  %1925 = load double, ptr %135, align 8, !tbaa !9
  %1926 = load double, ptr %136, align 8, !tbaa !9
  %1927 = fsub double %1925, %1926
  store double %1927, ptr %137, align 8, !tbaa !9
  %1928 = load double, ptr %59, align 8, !tbaa !9
  %1929 = load double, ptr %137, align 8, !tbaa !9
  %1930 = fsub double %1928, %1929
  store double %1930, ptr %138, align 8, !tbaa !9
  %1931 = load double, ptr @splitter, align 8, !tbaa !9
  %1932 = load double, ptr %14, align 8, !tbaa !9
  %1933 = fmul double %1931, %1932
  store double %1933, ptr %135, align 8, !tbaa !9
  %1934 = load double, ptr %135, align 8, !tbaa !9
  %1935 = load double, ptr %14, align 8, !tbaa !9
  %1936 = fsub double %1934, %1935
  store double %1936, ptr %136, align 8, !tbaa !9
  %1937 = load double, ptr %135, align 8, !tbaa !9
  %1938 = load double, ptr %136, align 8, !tbaa !9
  %1939 = fsub double %1937, %1938
  store double %1939, ptr %139, align 8, !tbaa !9
  %1940 = load double, ptr %14, align 8, !tbaa !9
  %1941 = load double, ptr %139, align 8, !tbaa !9
  %1942 = fsub double %1940, %1941
  store double %1942, ptr %140, align 8, !tbaa !9
  %1943 = load double, ptr %94, align 8, !tbaa !9
  %1944 = load double, ptr %137, align 8, !tbaa !9
  %1945 = load double, ptr %139, align 8, !tbaa !9
  %1946 = fneg double %1944
  %1947 = call double @llvm.fmuladd.f64(double %1946, double %1945, double %1943)
  store double %1947, ptr %141, align 8, !tbaa !9
  %1948 = load double, ptr %141, align 8, !tbaa !9
  %1949 = load double, ptr %138, align 8, !tbaa !9
  %1950 = load double, ptr %139, align 8, !tbaa !9
  %1951 = fneg double %1949
  %1952 = call double @llvm.fmuladd.f64(double %1951, double %1950, double %1948)
  store double %1952, ptr %142, align 8, !tbaa !9
  %1953 = load double, ptr %142, align 8, !tbaa !9
  %1954 = load double, ptr %137, align 8, !tbaa !9
  %1955 = load double, ptr %140, align 8, !tbaa !9
  %1956 = fneg double %1954
  %1957 = call double @llvm.fmuladd.f64(double %1956, double %1955, double %1953)
  store double %1957, ptr %143, align 8, !tbaa !9
  %1958 = load double, ptr %138, align 8, !tbaa !9
  %1959 = load double, ptr %140, align 8, !tbaa !9
  %1960 = load double, ptr %143, align 8, !tbaa !9
  %1961 = fneg double %1960
  %1962 = call double @llvm.fmuladd.f64(double %1958, double %1959, double %1961)
  store double %1962, ptr %100, align 8, !tbaa !9
  %1963 = load double, ptr %88, align 8, !tbaa !9
  %1964 = load double, ptr %100, align 8, !tbaa !9
  %1965 = fsub double %1963, %1964
  store double %1965, ptr %144, align 8, !tbaa !9
  %1966 = load double, ptr %88, align 8, !tbaa !9
  %1967 = load double, ptr %144, align 8, !tbaa !9
  %1968 = fsub double %1966, %1967
  store double %1968, ptr %131, align 8, !tbaa !9
  %1969 = load double, ptr %144, align 8, !tbaa !9
  %1970 = load double, ptr %131, align 8, !tbaa !9
  %1971 = fadd double %1969, %1970
  store double %1971, ptr %132, align 8, !tbaa !9
  %1972 = load double, ptr %131, align 8, !tbaa !9
  %1973 = load double, ptr %100, align 8, !tbaa !9
  %1974 = fsub double %1972, %1973
  store double %1974, ptr %133, align 8, !tbaa !9
  %1975 = load double, ptr %88, align 8, !tbaa !9
  %1976 = load double, ptr %132, align 8, !tbaa !9
  %1977 = fsub double %1975, %1976
  store double %1977, ptr %134, align 8, !tbaa !9
  %1978 = load double, ptr %134, align 8, !tbaa !9
  %1979 = load double, ptr %133, align 8, !tbaa !9
  %1980 = fadd double %1978, %1979
  %1981 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 0
  store double %1980, ptr %1981, align 16, !tbaa !9
  %1982 = load double, ptr %82, align 8, !tbaa !9
  %1983 = load double, ptr %144, align 8, !tbaa !9
  %1984 = fadd double %1982, %1983
  store double %1984, ptr %145, align 8, !tbaa !9
  %1985 = load double, ptr %145, align 8, !tbaa !9
  %1986 = load double, ptr %82, align 8, !tbaa !9
  %1987 = fsub double %1985, %1986
  store double %1987, ptr %131, align 8, !tbaa !9
  %1988 = load double, ptr %145, align 8, !tbaa !9
  %1989 = load double, ptr %131, align 8, !tbaa !9
  %1990 = fsub double %1988, %1989
  store double %1990, ptr %132, align 8, !tbaa !9
  %1991 = load double, ptr %144, align 8, !tbaa !9
  %1992 = load double, ptr %131, align 8, !tbaa !9
  %1993 = fsub double %1991, %1992
  store double %1993, ptr %133, align 8, !tbaa !9
  %1994 = load double, ptr %82, align 8, !tbaa !9
  %1995 = load double, ptr %132, align 8, !tbaa !9
  %1996 = fsub double %1994, %1995
  store double %1996, ptr %134, align 8, !tbaa !9
  %1997 = load double, ptr %134, align 8, !tbaa !9
  %1998 = load double, ptr %133, align 8, !tbaa !9
  %1999 = fadd double %1997, %1998
  store double %1999, ptr %147, align 8, !tbaa !9
  %2000 = load double, ptr %147, align 8, !tbaa !9
  %2001 = load double, ptr %94, align 8, !tbaa !9
  %2002 = fsub double %2000, %2001
  store double %2002, ptr %144, align 8, !tbaa !9
  %2003 = load double, ptr %147, align 8, !tbaa !9
  %2004 = load double, ptr %144, align 8, !tbaa !9
  %2005 = fsub double %2003, %2004
  store double %2005, ptr %131, align 8, !tbaa !9
  %2006 = load double, ptr %144, align 8, !tbaa !9
  %2007 = load double, ptr %131, align 8, !tbaa !9
  %2008 = fadd double %2006, %2007
  store double %2008, ptr %132, align 8, !tbaa !9
  %2009 = load double, ptr %131, align 8, !tbaa !9
  %2010 = load double, ptr %94, align 8, !tbaa !9
  %2011 = fsub double %2009, %2010
  store double %2011, ptr %133, align 8, !tbaa !9
  %2012 = load double, ptr %147, align 8, !tbaa !9
  %2013 = load double, ptr %132, align 8, !tbaa !9
  %2014 = fsub double %2012, %2013
  store double %2014, ptr %134, align 8, !tbaa !9
  %2015 = load double, ptr %134, align 8, !tbaa !9
  %2016 = load double, ptr %133, align 8, !tbaa !9
  %2017 = fadd double %2015, %2016
  %2018 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 1
  store double %2017, ptr %2018, align 8, !tbaa !9
  %2019 = load double, ptr %145, align 8, !tbaa !9
  %2020 = load double, ptr %144, align 8, !tbaa !9
  %2021 = fadd double %2019, %2020
  store double %2021, ptr %66, align 8, !tbaa !9
  %2022 = load double, ptr %66, align 8, !tbaa !9
  %2023 = load double, ptr %145, align 8, !tbaa !9
  %2024 = fsub double %2022, %2023
  store double %2024, ptr %131, align 8, !tbaa !9
  %2025 = load double, ptr %66, align 8, !tbaa !9
  %2026 = load double, ptr %131, align 8, !tbaa !9
  %2027 = fsub double %2025, %2026
  store double %2027, ptr %132, align 8, !tbaa !9
  %2028 = load double, ptr %144, align 8, !tbaa !9
  %2029 = load double, ptr %131, align 8, !tbaa !9
  %2030 = fsub double %2028, %2029
  store double %2030, ptr %133, align 8, !tbaa !9
  %2031 = load double, ptr %145, align 8, !tbaa !9
  %2032 = load double, ptr %132, align 8, !tbaa !9
  %2033 = fsub double %2031, %2032
  store double %2033, ptr %134, align 8, !tbaa !9
  %2034 = load double, ptr %134, align 8, !tbaa !9
  %2035 = load double, ptr %133, align 8, !tbaa !9
  %2036 = fadd double %2034, %2035
  %2037 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 2
  store double %2036, ptr %2037, align 16, !tbaa !9
  %2038 = load double, ptr %66, align 8, !tbaa !9
  %2039 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 3
  store double %2038, ptr %2039, align 8, !tbaa !9
  store i32 4, ptr %78, align 4, !tbaa !11
  %2040 = load double, ptr %59, align 8, !tbaa !9
  %2041 = load double, ptr %12, align 8, !tbaa !9
  %2042 = fmul double %2040, %2041
  store double %2042, ptr %99, align 8, !tbaa !9
  %2043 = load double, ptr @splitter, align 8, !tbaa !9
  %2044 = load double, ptr %59, align 8, !tbaa !9
  %2045 = fmul double %2043, %2044
  store double %2045, ptr %135, align 8, !tbaa !9
  %2046 = load double, ptr %135, align 8, !tbaa !9
  %2047 = load double, ptr %59, align 8, !tbaa !9
  %2048 = fsub double %2046, %2047
  store double %2048, ptr %136, align 8, !tbaa !9
  %2049 = load double, ptr %135, align 8, !tbaa !9
  %2050 = load double, ptr %136, align 8, !tbaa !9
  %2051 = fsub double %2049, %2050
  store double %2051, ptr %137, align 8, !tbaa !9
  %2052 = load double, ptr %59, align 8, !tbaa !9
  %2053 = load double, ptr %137, align 8, !tbaa !9
  %2054 = fsub double %2052, %2053
  store double %2054, ptr %138, align 8, !tbaa !9
  %2055 = load double, ptr @splitter, align 8, !tbaa !9
  %2056 = load double, ptr %12, align 8, !tbaa !9
  %2057 = fmul double %2055, %2056
  store double %2057, ptr %135, align 8, !tbaa !9
  %2058 = load double, ptr %135, align 8, !tbaa !9
  %2059 = load double, ptr %12, align 8, !tbaa !9
  %2060 = fsub double %2058, %2059
  store double %2060, ptr %136, align 8, !tbaa !9
  %2061 = load double, ptr %135, align 8, !tbaa !9
  %2062 = load double, ptr %136, align 8, !tbaa !9
  %2063 = fsub double %2061, %2062
  store double %2063, ptr %139, align 8, !tbaa !9
  %2064 = load double, ptr %12, align 8, !tbaa !9
  %2065 = load double, ptr %139, align 8, !tbaa !9
  %2066 = fsub double %2064, %2065
  store double %2066, ptr %140, align 8, !tbaa !9
  %2067 = load double, ptr %99, align 8, !tbaa !9
  %2068 = load double, ptr %137, align 8, !tbaa !9
  %2069 = load double, ptr %139, align 8, !tbaa !9
  %2070 = fneg double %2068
  %2071 = call double @llvm.fmuladd.f64(double %2070, double %2069, double %2067)
  store double %2071, ptr %141, align 8, !tbaa !9
  %2072 = load double, ptr %141, align 8, !tbaa !9
  %2073 = load double, ptr %138, align 8, !tbaa !9
  %2074 = load double, ptr %139, align 8, !tbaa !9
  %2075 = fneg double %2073
  %2076 = call double @llvm.fmuladd.f64(double %2075, double %2074, double %2072)
  store double %2076, ptr %142, align 8, !tbaa !9
  %2077 = load double, ptr %142, align 8, !tbaa !9
  %2078 = load double, ptr %137, align 8, !tbaa !9
  %2079 = load double, ptr %140, align 8, !tbaa !9
  %2080 = fneg double %2078
  %2081 = call double @llvm.fmuladd.f64(double %2080, double %2079, double %2077)
  store double %2081, ptr %143, align 8, !tbaa !9
  %2082 = load double, ptr %138, align 8, !tbaa !9
  %2083 = load double, ptr %140, align 8, !tbaa !9
  %2084 = load double, ptr %143, align 8, !tbaa !9
  %2085 = fneg double %2084
  %2086 = call double @llvm.fmuladd.f64(double %2082, double %2083, double %2085)
  store double %2086, ptr %105, align 8, !tbaa !9
  %2087 = load double, ptr %56, align 8, !tbaa !9
  %2088 = load double, ptr %15, align 8, !tbaa !9
  %2089 = fmul double %2087, %2088
  store double %2089, ptr %87, align 8, !tbaa !9
  %2090 = load double, ptr @splitter, align 8, !tbaa !9
  %2091 = load double, ptr %56, align 8, !tbaa !9
  %2092 = fmul double %2090, %2091
  store double %2092, ptr %135, align 8, !tbaa !9
  %2093 = load double, ptr %135, align 8, !tbaa !9
  %2094 = load double, ptr %56, align 8, !tbaa !9
  %2095 = fsub double %2093, %2094
  store double %2095, ptr %136, align 8, !tbaa !9
  %2096 = load double, ptr %135, align 8, !tbaa !9
  %2097 = load double, ptr %136, align 8, !tbaa !9
  %2098 = fsub double %2096, %2097
  store double %2098, ptr %137, align 8, !tbaa !9
  %2099 = load double, ptr %56, align 8, !tbaa !9
  %2100 = load double, ptr %137, align 8, !tbaa !9
  %2101 = fsub double %2099, %2100
  store double %2101, ptr %138, align 8, !tbaa !9
  %2102 = load double, ptr @splitter, align 8, !tbaa !9
  %2103 = load double, ptr %15, align 8, !tbaa !9
  %2104 = fmul double %2102, %2103
  store double %2104, ptr %135, align 8, !tbaa !9
  %2105 = load double, ptr %135, align 8, !tbaa !9
  %2106 = load double, ptr %15, align 8, !tbaa !9
  %2107 = fsub double %2105, %2106
  store double %2107, ptr %136, align 8, !tbaa !9
  %2108 = load double, ptr %135, align 8, !tbaa !9
  %2109 = load double, ptr %136, align 8, !tbaa !9
  %2110 = fsub double %2108, %2109
  store double %2110, ptr %139, align 8, !tbaa !9
  %2111 = load double, ptr %15, align 8, !tbaa !9
  %2112 = load double, ptr %139, align 8, !tbaa !9
  %2113 = fsub double %2111, %2112
  store double %2113, ptr %140, align 8, !tbaa !9
  %2114 = load double, ptr %87, align 8, !tbaa !9
  %2115 = load double, ptr %137, align 8, !tbaa !9
  %2116 = load double, ptr %139, align 8, !tbaa !9
  %2117 = fneg double %2115
  %2118 = call double @llvm.fmuladd.f64(double %2117, double %2116, double %2114)
  store double %2118, ptr %141, align 8, !tbaa !9
  %2119 = load double, ptr %141, align 8, !tbaa !9
  %2120 = load double, ptr %138, align 8, !tbaa !9
  %2121 = load double, ptr %139, align 8, !tbaa !9
  %2122 = fneg double %2120
  %2123 = call double @llvm.fmuladd.f64(double %2122, double %2121, double %2119)
  store double %2123, ptr %142, align 8, !tbaa !9
  %2124 = load double, ptr %142, align 8, !tbaa !9
  %2125 = load double, ptr %137, align 8, !tbaa !9
  %2126 = load double, ptr %140, align 8, !tbaa !9
  %2127 = fneg double %2125
  %2128 = call double @llvm.fmuladd.f64(double %2127, double %2126, double %2124)
  store double %2128, ptr %143, align 8, !tbaa !9
  %2129 = load double, ptr %138, align 8, !tbaa !9
  %2130 = load double, ptr %140, align 8, !tbaa !9
  %2131 = load double, ptr %143, align 8, !tbaa !9
  %2132 = fneg double %2131
  %2133 = call double @llvm.fmuladd.f64(double %2129, double %2130, double %2132)
  store double %2133, ptr %93, align 8, !tbaa !9
  %2134 = load double, ptr %105, align 8, !tbaa !9
  %2135 = load double, ptr %93, align 8, !tbaa !9
  %2136 = fsub double %2134, %2135
  store double %2136, ptr %144, align 8, !tbaa !9
  %2137 = load double, ptr %105, align 8, !tbaa !9
  %2138 = load double, ptr %144, align 8, !tbaa !9
  %2139 = fsub double %2137, %2138
  store double %2139, ptr %131, align 8, !tbaa !9
  %2140 = load double, ptr %144, align 8, !tbaa !9
  %2141 = load double, ptr %131, align 8, !tbaa !9
  %2142 = fadd double %2140, %2141
  store double %2142, ptr %132, align 8, !tbaa !9
  %2143 = load double, ptr %131, align 8, !tbaa !9
  %2144 = load double, ptr %93, align 8, !tbaa !9
  %2145 = fsub double %2143, %2144
  store double %2145, ptr %133, align 8, !tbaa !9
  %2146 = load double, ptr %105, align 8, !tbaa !9
  %2147 = load double, ptr %132, align 8, !tbaa !9
  %2148 = fsub double %2146, %2147
  store double %2148, ptr %134, align 8, !tbaa !9
  %2149 = load double, ptr %134, align 8, !tbaa !9
  %2150 = load double, ptr %133, align 8, !tbaa !9
  %2151 = fadd double %2149, %2150
  %2152 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 0
  store double %2151, ptr %2152, align 16, !tbaa !9
  %2153 = load double, ptr %99, align 8, !tbaa !9
  %2154 = load double, ptr %144, align 8, !tbaa !9
  %2155 = fadd double %2153, %2154
  store double %2155, ptr %145, align 8, !tbaa !9
  %2156 = load double, ptr %145, align 8, !tbaa !9
  %2157 = load double, ptr %99, align 8, !tbaa !9
  %2158 = fsub double %2156, %2157
  store double %2158, ptr %131, align 8, !tbaa !9
  %2159 = load double, ptr %145, align 8, !tbaa !9
  %2160 = load double, ptr %131, align 8, !tbaa !9
  %2161 = fsub double %2159, %2160
  store double %2161, ptr %132, align 8, !tbaa !9
  %2162 = load double, ptr %144, align 8, !tbaa !9
  %2163 = load double, ptr %131, align 8, !tbaa !9
  %2164 = fsub double %2162, %2163
  store double %2164, ptr %133, align 8, !tbaa !9
  %2165 = load double, ptr %99, align 8, !tbaa !9
  %2166 = load double, ptr %132, align 8, !tbaa !9
  %2167 = fsub double %2165, %2166
  store double %2167, ptr %134, align 8, !tbaa !9
  %2168 = load double, ptr %134, align 8, !tbaa !9
  %2169 = load double, ptr %133, align 8, !tbaa !9
  %2170 = fadd double %2168, %2169
  store double %2170, ptr %147, align 8, !tbaa !9
  %2171 = load double, ptr %147, align 8, !tbaa !9
  %2172 = load double, ptr %87, align 8, !tbaa !9
  %2173 = fsub double %2171, %2172
  store double %2173, ptr %144, align 8, !tbaa !9
  %2174 = load double, ptr %147, align 8, !tbaa !9
  %2175 = load double, ptr %144, align 8, !tbaa !9
  %2176 = fsub double %2174, %2175
  store double %2176, ptr %131, align 8, !tbaa !9
  %2177 = load double, ptr %144, align 8, !tbaa !9
  %2178 = load double, ptr %131, align 8, !tbaa !9
  %2179 = fadd double %2177, %2178
  store double %2179, ptr %132, align 8, !tbaa !9
  %2180 = load double, ptr %131, align 8, !tbaa !9
  %2181 = load double, ptr %87, align 8, !tbaa !9
  %2182 = fsub double %2180, %2181
  store double %2182, ptr %133, align 8, !tbaa !9
  %2183 = load double, ptr %147, align 8, !tbaa !9
  %2184 = load double, ptr %132, align 8, !tbaa !9
  %2185 = fsub double %2183, %2184
  store double %2185, ptr %134, align 8, !tbaa !9
  %2186 = load double, ptr %134, align 8, !tbaa !9
  %2187 = load double, ptr %133, align 8, !tbaa !9
  %2188 = fadd double %2186, %2187
  %2189 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 1
  store double %2188, ptr %2189, align 8, !tbaa !9
  %2190 = load double, ptr %145, align 8, !tbaa !9
  %2191 = load double, ptr %144, align 8, !tbaa !9
  %2192 = fadd double %2190, %2191
  store double %2192, ptr %67, align 8, !tbaa !9
  %2193 = load double, ptr %67, align 8, !tbaa !9
  %2194 = load double, ptr %145, align 8, !tbaa !9
  %2195 = fsub double %2193, %2194
  store double %2195, ptr %131, align 8, !tbaa !9
  %2196 = load double, ptr %67, align 8, !tbaa !9
  %2197 = load double, ptr %131, align 8, !tbaa !9
  %2198 = fsub double %2196, %2197
  store double %2198, ptr %132, align 8, !tbaa !9
  %2199 = load double, ptr %144, align 8, !tbaa !9
  %2200 = load double, ptr %131, align 8, !tbaa !9
  %2201 = fsub double %2199, %2200
  store double %2201, ptr %133, align 8, !tbaa !9
  %2202 = load double, ptr %145, align 8, !tbaa !9
  %2203 = load double, ptr %132, align 8, !tbaa !9
  %2204 = fsub double %2202, %2203
  store double %2204, ptr %134, align 8, !tbaa !9
  %2205 = load double, ptr %134, align 8, !tbaa !9
  %2206 = load double, ptr %133, align 8, !tbaa !9
  %2207 = fadd double %2205, %2206
  %2208 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 2
  store double %2207, ptr %2208, align 16, !tbaa !9
  %2209 = load double, ptr %67, align 8, !tbaa !9
  %2210 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 3
  store double %2209, ptr %2210, align 8, !tbaa !9
  store i32 4, ptr %79, align 4, !tbaa !11
  br label %2211

2211:                                             ; preds = %1868, %1765
  br label %2212

2212:                                             ; preds = %2211, %1761
  %2213 = load double, ptr %57, align 8, !tbaa !9
  %2214 = fcmp oeq double %2213, 0.000000e+00
  br i1 %2214, label %2215, label %2325

2215:                                             ; preds = %2212
  %2216 = load double, ptr %60, align 8, !tbaa !9
  %2217 = fcmp oeq double %2216, 0.000000e+00
  br i1 %2217, label %2218, label %2221

2218:                                             ; preds = %2215
  %2219 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 0
  store double 0.000000e+00, ptr %2219, align 16, !tbaa !9
  store i32 1, ptr %80, align 4, !tbaa !11
  %2220 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  store double 0.000000e+00, ptr %2220, align 16, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !11
  br label %2324

2221:                                             ; preds = %2215
  %2222 = load double, ptr %60, align 8, !tbaa !9
  %2223 = fneg double %2222
  store double %2223, ptr %130, align 8, !tbaa !9
  %2224 = load double, ptr %130, align 8, !tbaa !9
  %2225 = load double, ptr %12, align 8, !tbaa !9
  %2226 = fmul double %2224, %2225
  store double %2226, ptr %68, align 8, !tbaa !9
  %2227 = load double, ptr @splitter, align 8, !tbaa !9
  %2228 = load double, ptr %130, align 8, !tbaa !9
  %2229 = fmul double %2227, %2228
  store double %2229, ptr %135, align 8, !tbaa !9
  %2230 = load double, ptr %135, align 8, !tbaa !9
  %2231 = load double, ptr %130, align 8, !tbaa !9
  %2232 = fsub double %2230, %2231
  store double %2232, ptr %136, align 8, !tbaa !9
  %2233 = load double, ptr %135, align 8, !tbaa !9
  %2234 = load double, ptr %136, align 8, !tbaa !9
  %2235 = fsub double %2233, %2234
  store double %2235, ptr %137, align 8, !tbaa !9
  %2236 = load double, ptr %130, align 8, !tbaa !9
  %2237 = load double, ptr %137, align 8, !tbaa !9
  %2238 = fsub double %2236, %2237
  store double %2238, ptr %138, align 8, !tbaa !9
  %2239 = load double, ptr @splitter, align 8, !tbaa !9
  %2240 = load double, ptr %12, align 8, !tbaa !9
  %2241 = fmul double %2239, %2240
  store double %2241, ptr %135, align 8, !tbaa !9
  %2242 = load double, ptr %135, align 8, !tbaa !9
  %2243 = load double, ptr %12, align 8, !tbaa !9
  %2244 = fsub double %2242, %2243
  store double %2244, ptr %136, align 8, !tbaa !9
  %2245 = load double, ptr %135, align 8, !tbaa !9
  %2246 = load double, ptr %136, align 8, !tbaa !9
  %2247 = fsub double %2245, %2246
  store double %2247, ptr %139, align 8, !tbaa !9
  %2248 = load double, ptr %12, align 8, !tbaa !9
  %2249 = load double, ptr %139, align 8, !tbaa !9
  %2250 = fsub double %2248, %2249
  store double %2250, ptr %140, align 8, !tbaa !9
  %2251 = load double, ptr %68, align 8, !tbaa !9
  %2252 = load double, ptr %137, align 8, !tbaa !9
  %2253 = load double, ptr %139, align 8, !tbaa !9
  %2254 = fneg double %2252
  %2255 = call double @llvm.fmuladd.f64(double %2254, double %2253, double %2251)
  store double %2255, ptr %141, align 8, !tbaa !9
  %2256 = load double, ptr %141, align 8, !tbaa !9
  %2257 = load double, ptr %138, align 8, !tbaa !9
  %2258 = load double, ptr %139, align 8, !tbaa !9
  %2259 = fneg double %2257
  %2260 = call double @llvm.fmuladd.f64(double %2259, double %2258, double %2256)
  store double %2260, ptr %142, align 8, !tbaa !9
  %2261 = load double, ptr %142, align 8, !tbaa !9
  %2262 = load double, ptr %137, align 8, !tbaa !9
  %2263 = load double, ptr %140, align 8, !tbaa !9
  %2264 = fneg double %2262
  %2265 = call double @llvm.fmuladd.f64(double %2264, double %2263, double %2261)
  store double %2265, ptr %143, align 8, !tbaa !9
  %2266 = load double, ptr %138, align 8, !tbaa !9
  %2267 = load double, ptr %140, align 8, !tbaa !9
  %2268 = load double, ptr %143, align 8, !tbaa !9
  %2269 = fneg double %2268
  %2270 = call double @llvm.fmuladd.f64(double %2266, double %2267, double %2269)
  %2271 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 0
  store double %2270, ptr %2271, align 16, !tbaa !9
  %2272 = load double, ptr %68, align 8, !tbaa !9
  %2273 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 1
  store double %2272, ptr %2273, align 8, !tbaa !9
  store i32 2, ptr %80, align 4, !tbaa !11
  %2274 = load double, ptr %60, align 8, !tbaa !9
  %2275 = load double, ptr %13, align 8, !tbaa !9
  %2276 = fmul double %2274, %2275
  store double %2276, ptr %69, align 8, !tbaa !9
  %2277 = load double, ptr @splitter, align 8, !tbaa !9
  %2278 = load double, ptr %60, align 8, !tbaa !9
  %2279 = fmul double %2277, %2278
  store double %2279, ptr %135, align 8, !tbaa !9
  %2280 = load double, ptr %135, align 8, !tbaa !9
  %2281 = load double, ptr %60, align 8, !tbaa !9
  %2282 = fsub double %2280, %2281
  store double %2282, ptr %136, align 8, !tbaa !9
  %2283 = load double, ptr %135, align 8, !tbaa !9
  %2284 = load double, ptr %136, align 8, !tbaa !9
  %2285 = fsub double %2283, %2284
  store double %2285, ptr %137, align 8, !tbaa !9
  %2286 = load double, ptr %60, align 8, !tbaa !9
  %2287 = load double, ptr %137, align 8, !tbaa !9
  %2288 = fsub double %2286, %2287
  store double %2288, ptr %138, align 8, !tbaa !9
  %2289 = load double, ptr @splitter, align 8, !tbaa !9
  %2290 = load double, ptr %13, align 8, !tbaa !9
  %2291 = fmul double %2289, %2290
  store double %2291, ptr %135, align 8, !tbaa !9
  %2292 = load double, ptr %135, align 8, !tbaa !9
  %2293 = load double, ptr %13, align 8, !tbaa !9
  %2294 = fsub double %2292, %2293
  store double %2294, ptr %136, align 8, !tbaa !9
  %2295 = load double, ptr %135, align 8, !tbaa !9
  %2296 = load double, ptr %136, align 8, !tbaa !9
  %2297 = fsub double %2295, %2296
  store double %2297, ptr %139, align 8, !tbaa !9
  %2298 = load double, ptr %13, align 8, !tbaa !9
  %2299 = load double, ptr %139, align 8, !tbaa !9
  %2300 = fsub double %2298, %2299
  store double %2300, ptr %140, align 8, !tbaa !9
  %2301 = load double, ptr %69, align 8, !tbaa !9
  %2302 = load double, ptr %137, align 8, !tbaa !9
  %2303 = load double, ptr %139, align 8, !tbaa !9
  %2304 = fneg double %2302
  %2305 = call double @llvm.fmuladd.f64(double %2304, double %2303, double %2301)
  store double %2305, ptr %141, align 8, !tbaa !9
  %2306 = load double, ptr %141, align 8, !tbaa !9
  %2307 = load double, ptr %138, align 8, !tbaa !9
  %2308 = load double, ptr %139, align 8, !tbaa !9
  %2309 = fneg double %2307
  %2310 = call double @llvm.fmuladd.f64(double %2309, double %2308, double %2306)
  store double %2310, ptr %142, align 8, !tbaa !9
  %2311 = load double, ptr %142, align 8, !tbaa !9
  %2312 = load double, ptr %137, align 8, !tbaa !9
  %2313 = load double, ptr %140, align 8, !tbaa !9
  %2314 = fneg double %2312
  %2315 = call double @llvm.fmuladd.f64(double %2314, double %2313, double %2311)
  store double %2315, ptr %143, align 8, !tbaa !9
  %2316 = load double, ptr %138, align 8, !tbaa !9
  %2317 = load double, ptr %140, align 8, !tbaa !9
  %2318 = load double, ptr %143, align 8, !tbaa !9
  %2319 = fneg double %2318
  %2320 = call double @llvm.fmuladd.f64(double %2316, double %2317, double %2319)
  %2321 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  store double %2320, ptr %2321, align 16, !tbaa !9
  %2322 = load double, ptr %69, align 8, !tbaa !9
  %2323 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  store double %2322, ptr %2323, align 8, !tbaa !9
  store i32 2, ptr %81, align 4, !tbaa !11
  br label %2324

2324:                                             ; preds = %2221, %2218
  br label %2775

2325:                                             ; preds = %2212
  %2326 = load double, ptr %60, align 8, !tbaa !9
  %2327 = fcmp oeq double %2326, 0.000000e+00
  br i1 %2327, label %2328, label %2431

2328:                                             ; preds = %2325
  %2329 = load double, ptr %57, align 8, !tbaa !9
  %2330 = load double, ptr %15, align 8, !tbaa !9
  %2331 = fmul double %2329, %2330
  store double %2331, ptr %68, align 8, !tbaa !9
  %2332 = load double, ptr @splitter, align 8, !tbaa !9
  %2333 = load double, ptr %57, align 8, !tbaa !9
  %2334 = fmul double %2332, %2333
  store double %2334, ptr %135, align 8, !tbaa !9
  %2335 = load double, ptr %135, align 8, !tbaa !9
  %2336 = load double, ptr %57, align 8, !tbaa !9
  %2337 = fsub double %2335, %2336
  store double %2337, ptr %136, align 8, !tbaa !9
  %2338 = load double, ptr %135, align 8, !tbaa !9
  %2339 = load double, ptr %136, align 8, !tbaa !9
  %2340 = fsub double %2338, %2339
  store double %2340, ptr %137, align 8, !tbaa !9
  %2341 = load double, ptr %57, align 8, !tbaa !9
  %2342 = load double, ptr %137, align 8, !tbaa !9
  %2343 = fsub double %2341, %2342
  store double %2343, ptr %138, align 8, !tbaa !9
  %2344 = load double, ptr @splitter, align 8, !tbaa !9
  %2345 = load double, ptr %15, align 8, !tbaa !9
  %2346 = fmul double %2344, %2345
  store double %2346, ptr %135, align 8, !tbaa !9
  %2347 = load double, ptr %135, align 8, !tbaa !9
  %2348 = load double, ptr %15, align 8, !tbaa !9
  %2349 = fsub double %2347, %2348
  store double %2349, ptr %136, align 8, !tbaa !9
  %2350 = load double, ptr %135, align 8, !tbaa !9
  %2351 = load double, ptr %136, align 8, !tbaa !9
  %2352 = fsub double %2350, %2351
  store double %2352, ptr %139, align 8, !tbaa !9
  %2353 = load double, ptr %15, align 8, !tbaa !9
  %2354 = load double, ptr %139, align 8, !tbaa !9
  %2355 = fsub double %2353, %2354
  store double %2355, ptr %140, align 8, !tbaa !9
  %2356 = load double, ptr %68, align 8, !tbaa !9
  %2357 = load double, ptr %137, align 8, !tbaa !9
  %2358 = load double, ptr %139, align 8, !tbaa !9
  %2359 = fneg double %2357
  %2360 = call double @llvm.fmuladd.f64(double %2359, double %2358, double %2356)
  store double %2360, ptr %141, align 8, !tbaa !9
  %2361 = load double, ptr %141, align 8, !tbaa !9
  %2362 = load double, ptr %138, align 8, !tbaa !9
  %2363 = load double, ptr %139, align 8, !tbaa !9
  %2364 = fneg double %2362
  %2365 = call double @llvm.fmuladd.f64(double %2364, double %2363, double %2361)
  store double %2365, ptr %142, align 8, !tbaa !9
  %2366 = load double, ptr %142, align 8, !tbaa !9
  %2367 = load double, ptr %137, align 8, !tbaa !9
  %2368 = load double, ptr %140, align 8, !tbaa !9
  %2369 = fneg double %2367
  %2370 = call double @llvm.fmuladd.f64(double %2369, double %2368, double %2366)
  store double %2370, ptr %143, align 8, !tbaa !9
  %2371 = load double, ptr %138, align 8, !tbaa !9
  %2372 = load double, ptr %140, align 8, !tbaa !9
  %2373 = load double, ptr %143, align 8, !tbaa !9
  %2374 = fneg double %2373
  %2375 = call double @llvm.fmuladd.f64(double %2371, double %2372, double %2374)
  %2376 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 0
  store double %2375, ptr %2376, align 16, !tbaa !9
  %2377 = load double, ptr %68, align 8, !tbaa !9
  %2378 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 1
  store double %2377, ptr %2378, align 8, !tbaa !9
  store i32 2, ptr %80, align 4, !tbaa !11
  %2379 = load double, ptr %57, align 8, !tbaa !9
  %2380 = fneg double %2379
  store double %2380, ptr %130, align 8, !tbaa !9
  %2381 = load double, ptr %130, align 8, !tbaa !9
  %2382 = load double, ptr %16, align 8, !tbaa !9
  %2383 = fmul double %2381, %2382
  store double %2383, ptr %69, align 8, !tbaa !9
  %2384 = load double, ptr @splitter, align 8, !tbaa !9
  %2385 = load double, ptr %130, align 8, !tbaa !9
  %2386 = fmul double %2384, %2385
  store double %2386, ptr %135, align 8, !tbaa !9
  %2387 = load double, ptr %135, align 8, !tbaa !9
  %2388 = load double, ptr %130, align 8, !tbaa !9
  %2389 = fsub double %2387, %2388
  store double %2389, ptr %136, align 8, !tbaa !9
  %2390 = load double, ptr %135, align 8, !tbaa !9
  %2391 = load double, ptr %136, align 8, !tbaa !9
  %2392 = fsub double %2390, %2391
  store double %2392, ptr %137, align 8, !tbaa !9
  %2393 = load double, ptr %130, align 8, !tbaa !9
  %2394 = load double, ptr %137, align 8, !tbaa !9
  %2395 = fsub double %2393, %2394
  store double %2395, ptr %138, align 8, !tbaa !9
  %2396 = load double, ptr @splitter, align 8, !tbaa !9
  %2397 = load double, ptr %16, align 8, !tbaa !9
  %2398 = fmul double %2396, %2397
  store double %2398, ptr %135, align 8, !tbaa !9
  %2399 = load double, ptr %135, align 8, !tbaa !9
  %2400 = load double, ptr %16, align 8, !tbaa !9
  %2401 = fsub double %2399, %2400
  store double %2401, ptr %136, align 8, !tbaa !9
  %2402 = load double, ptr %135, align 8, !tbaa !9
  %2403 = load double, ptr %136, align 8, !tbaa !9
  %2404 = fsub double %2402, %2403
  store double %2404, ptr %139, align 8, !tbaa !9
  %2405 = load double, ptr %16, align 8, !tbaa !9
  %2406 = load double, ptr %139, align 8, !tbaa !9
  %2407 = fsub double %2405, %2406
  store double %2407, ptr %140, align 8, !tbaa !9
  %2408 = load double, ptr %69, align 8, !tbaa !9
  %2409 = load double, ptr %137, align 8, !tbaa !9
  %2410 = load double, ptr %139, align 8, !tbaa !9
  %2411 = fneg double %2409
  %2412 = call double @llvm.fmuladd.f64(double %2411, double %2410, double %2408)
  store double %2412, ptr %141, align 8, !tbaa !9
  %2413 = load double, ptr %141, align 8, !tbaa !9
  %2414 = load double, ptr %138, align 8, !tbaa !9
  %2415 = load double, ptr %139, align 8, !tbaa !9
  %2416 = fneg double %2414
  %2417 = call double @llvm.fmuladd.f64(double %2416, double %2415, double %2413)
  store double %2417, ptr %142, align 8, !tbaa !9
  %2418 = load double, ptr %142, align 8, !tbaa !9
  %2419 = load double, ptr %137, align 8, !tbaa !9
  %2420 = load double, ptr %140, align 8, !tbaa !9
  %2421 = fneg double %2419
  %2422 = call double @llvm.fmuladd.f64(double %2421, double %2420, double %2418)
  store double %2422, ptr %143, align 8, !tbaa !9
  %2423 = load double, ptr %138, align 8, !tbaa !9
  %2424 = load double, ptr %140, align 8, !tbaa !9
  %2425 = load double, ptr %143, align 8, !tbaa !9
  %2426 = fneg double %2425
  %2427 = call double @llvm.fmuladd.f64(double %2423, double %2424, double %2426)
  %2428 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  store double %2427, ptr %2428, align 16, !tbaa !9
  %2429 = load double, ptr %69, align 8, !tbaa !9
  %2430 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  store double %2429, ptr %2430, align 8, !tbaa !9
  store i32 2, ptr %81, align 4, !tbaa !11
  br label %2774

2431:                                             ; preds = %2325
  %2432 = load double, ptr %57, align 8, !tbaa !9
  %2433 = load double, ptr %15, align 8, !tbaa !9
  %2434 = fmul double %2432, %2433
  store double %2434, ptr %84, align 8, !tbaa !9
  %2435 = load double, ptr @splitter, align 8, !tbaa !9
  %2436 = load double, ptr %57, align 8, !tbaa !9
  %2437 = fmul double %2435, %2436
  store double %2437, ptr %135, align 8, !tbaa !9
  %2438 = load double, ptr %135, align 8, !tbaa !9
  %2439 = load double, ptr %57, align 8, !tbaa !9
  %2440 = fsub double %2438, %2439
  store double %2440, ptr %136, align 8, !tbaa !9
  %2441 = load double, ptr %135, align 8, !tbaa !9
  %2442 = load double, ptr %136, align 8, !tbaa !9
  %2443 = fsub double %2441, %2442
  store double %2443, ptr %137, align 8, !tbaa !9
  %2444 = load double, ptr %57, align 8, !tbaa !9
  %2445 = load double, ptr %137, align 8, !tbaa !9
  %2446 = fsub double %2444, %2445
  store double %2446, ptr %138, align 8, !tbaa !9
  %2447 = load double, ptr @splitter, align 8, !tbaa !9
  %2448 = load double, ptr %15, align 8, !tbaa !9
  %2449 = fmul double %2447, %2448
  store double %2449, ptr %135, align 8, !tbaa !9
  %2450 = load double, ptr %135, align 8, !tbaa !9
  %2451 = load double, ptr %15, align 8, !tbaa !9
  %2452 = fsub double %2450, %2451
  store double %2452, ptr %136, align 8, !tbaa !9
  %2453 = load double, ptr %135, align 8, !tbaa !9
  %2454 = load double, ptr %136, align 8, !tbaa !9
  %2455 = fsub double %2453, %2454
  store double %2455, ptr %139, align 8, !tbaa !9
  %2456 = load double, ptr %15, align 8, !tbaa !9
  %2457 = load double, ptr %139, align 8, !tbaa !9
  %2458 = fsub double %2456, %2457
  store double %2458, ptr %140, align 8, !tbaa !9
  %2459 = load double, ptr %84, align 8, !tbaa !9
  %2460 = load double, ptr %137, align 8, !tbaa !9
  %2461 = load double, ptr %139, align 8, !tbaa !9
  %2462 = fneg double %2460
  %2463 = call double @llvm.fmuladd.f64(double %2462, double %2461, double %2459)
  store double %2463, ptr %141, align 8, !tbaa !9
  %2464 = load double, ptr %141, align 8, !tbaa !9
  %2465 = load double, ptr %138, align 8, !tbaa !9
  %2466 = load double, ptr %139, align 8, !tbaa !9
  %2467 = fneg double %2465
  %2468 = call double @llvm.fmuladd.f64(double %2467, double %2466, double %2464)
  store double %2468, ptr %142, align 8, !tbaa !9
  %2469 = load double, ptr %142, align 8, !tbaa !9
  %2470 = load double, ptr %137, align 8, !tbaa !9
  %2471 = load double, ptr %140, align 8, !tbaa !9
  %2472 = fneg double %2470
  %2473 = call double @llvm.fmuladd.f64(double %2472, double %2471, double %2469)
  store double %2473, ptr %143, align 8, !tbaa !9
  %2474 = load double, ptr %138, align 8, !tbaa !9
  %2475 = load double, ptr %140, align 8, !tbaa !9
  %2476 = load double, ptr %143, align 8, !tbaa !9
  %2477 = fneg double %2476
  %2478 = call double @llvm.fmuladd.f64(double %2474, double %2475, double %2477)
  store double %2478, ptr %90, align 8, !tbaa !9
  %2479 = load double, ptr %60, align 8, !tbaa !9
  %2480 = load double, ptr %12, align 8, !tbaa !9
  %2481 = fmul double %2479, %2480
  store double %2481, ptr %96, align 8, !tbaa !9
  %2482 = load double, ptr @splitter, align 8, !tbaa !9
  %2483 = load double, ptr %60, align 8, !tbaa !9
  %2484 = fmul double %2482, %2483
  store double %2484, ptr %135, align 8, !tbaa !9
  %2485 = load double, ptr %135, align 8, !tbaa !9
  %2486 = load double, ptr %60, align 8, !tbaa !9
  %2487 = fsub double %2485, %2486
  store double %2487, ptr %136, align 8, !tbaa !9
  %2488 = load double, ptr %135, align 8, !tbaa !9
  %2489 = load double, ptr %136, align 8, !tbaa !9
  %2490 = fsub double %2488, %2489
  store double %2490, ptr %137, align 8, !tbaa !9
  %2491 = load double, ptr %60, align 8, !tbaa !9
  %2492 = load double, ptr %137, align 8, !tbaa !9
  %2493 = fsub double %2491, %2492
  store double %2493, ptr %138, align 8, !tbaa !9
  %2494 = load double, ptr @splitter, align 8, !tbaa !9
  %2495 = load double, ptr %12, align 8, !tbaa !9
  %2496 = fmul double %2494, %2495
  store double %2496, ptr %135, align 8, !tbaa !9
  %2497 = load double, ptr %135, align 8, !tbaa !9
  %2498 = load double, ptr %12, align 8, !tbaa !9
  %2499 = fsub double %2497, %2498
  store double %2499, ptr %136, align 8, !tbaa !9
  %2500 = load double, ptr %135, align 8, !tbaa !9
  %2501 = load double, ptr %136, align 8, !tbaa !9
  %2502 = fsub double %2500, %2501
  store double %2502, ptr %139, align 8, !tbaa !9
  %2503 = load double, ptr %12, align 8, !tbaa !9
  %2504 = load double, ptr %139, align 8, !tbaa !9
  %2505 = fsub double %2503, %2504
  store double %2505, ptr %140, align 8, !tbaa !9
  %2506 = load double, ptr %96, align 8, !tbaa !9
  %2507 = load double, ptr %137, align 8, !tbaa !9
  %2508 = load double, ptr %139, align 8, !tbaa !9
  %2509 = fneg double %2507
  %2510 = call double @llvm.fmuladd.f64(double %2509, double %2508, double %2506)
  store double %2510, ptr %141, align 8, !tbaa !9
  %2511 = load double, ptr %141, align 8, !tbaa !9
  %2512 = load double, ptr %138, align 8, !tbaa !9
  %2513 = load double, ptr %139, align 8, !tbaa !9
  %2514 = fneg double %2512
  %2515 = call double @llvm.fmuladd.f64(double %2514, double %2513, double %2511)
  store double %2515, ptr %142, align 8, !tbaa !9
  %2516 = load double, ptr %142, align 8, !tbaa !9
  %2517 = load double, ptr %137, align 8, !tbaa !9
  %2518 = load double, ptr %140, align 8, !tbaa !9
  %2519 = fneg double %2517
  %2520 = call double @llvm.fmuladd.f64(double %2519, double %2518, double %2516)
  store double %2520, ptr %143, align 8, !tbaa !9
  %2521 = load double, ptr %138, align 8, !tbaa !9
  %2522 = load double, ptr %140, align 8, !tbaa !9
  %2523 = load double, ptr %143, align 8, !tbaa !9
  %2524 = fneg double %2523
  %2525 = call double @llvm.fmuladd.f64(double %2521, double %2522, double %2524)
  store double %2525, ptr %102, align 8, !tbaa !9
  %2526 = load double, ptr %90, align 8, !tbaa !9
  %2527 = load double, ptr %102, align 8, !tbaa !9
  %2528 = fsub double %2526, %2527
  store double %2528, ptr %144, align 8, !tbaa !9
  %2529 = load double, ptr %90, align 8, !tbaa !9
  %2530 = load double, ptr %144, align 8, !tbaa !9
  %2531 = fsub double %2529, %2530
  store double %2531, ptr %131, align 8, !tbaa !9
  %2532 = load double, ptr %144, align 8, !tbaa !9
  %2533 = load double, ptr %131, align 8, !tbaa !9
  %2534 = fadd double %2532, %2533
  store double %2534, ptr %132, align 8, !tbaa !9
  %2535 = load double, ptr %131, align 8, !tbaa !9
  %2536 = load double, ptr %102, align 8, !tbaa !9
  %2537 = fsub double %2535, %2536
  store double %2537, ptr %133, align 8, !tbaa !9
  %2538 = load double, ptr %90, align 8, !tbaa !9
  %2539 = load double, ptr %132, align 8, !tbaa !9
  %2540 = fsub double %2538, %2539
  store double %2540, ptr %134, align 8, !tbaa !9
  %2541 = load double, ptr %134, align 8, !tbaa !9
  %2542 = load double, ptr %133, align 8, !tbaa !9
  %2543 = fadd double %2541, %2542
  %2544 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 0
  store double %2543, ptr %2544, align 16, !tbaa !9
  %2545 = load double, ptr %84, align 8, !tbaa !9
  %2546 = load double, ptr %144, align 8, !tbaa !9
  %2547 = fadd double %2545, %2546
  store double %2547, ptr %145, align 8, !tbaa !9
  %2548 = load double, ptr %145, align 8, !tbaa !9
  %2549 = load double, ptr %84, align 8, !tbaa !9
  %2550 = fsub double %2548, %2549
  store double %2550, ptr %131, align 8, !tbaa !9
  %2551 = load double, ptr %145, align 8, !tbaa !9
  %2552 = load double, ptr %131, align 8, !tbaa !9
  %2553 = fsub double %2551, %2552
  store double %2553, ptr %132, align 8, !tbaa !9
  %2554 = load double, ptr %144, align 8, !tbaa !9
  %2555 = load double, ptr %131, align 8, !tbaa !9
  %2556 = fsub double %2554, %2555
  store double %2556, ptr %133, align 8, !tbaa !9
  %2557 = load double, ptr %84, align 8, !tbaa !9
  %2558 = load double, ptr %132, align 8, !tbaa !9
  %2559 = fsub double %2557, %2558
  store double %2559, ptr %134, align 8, !tbaa !9
  %2560 = load double, ptr %134, align 8, !tbaa !9
  %2561 = load double, ptr %133, align 8, !tbaa !9
  %2562 = fadd double %2560, %2561
  store double %2562, ptr %147, align 8, !tbaa !9
  %2563 = load double, ptr %147, align 8, !tbaa !9
  %2564 = load double, ptr %96, align 8, !tbaa !9
  %2565 = fsub double %2563, %2564
  store double %2565, ptr %144, align 8, !tbaa !9
  %2566 = load double, ptr %147, align 8, !tbaa !9
  %2567 = load double, ptr %144, align 8, !tbaa !9
  %2568 = fsub double %2566, %2567
  store double %2568, ptr %131, align 8, !tbaa !9
  %2569 = load double, ptr %144, align 8, !tbaa !9
  %2570 = load double, ptr %131, align 8, !tbaa !9
  %2571 = fadd double %2569, %2570
  store double %2571, ptr %132, align 8, !tbaa !9
  %2572 = load double, ptr %131, align 8, !tbaa !9
  %2573 = load double, ptr %96, align 8, !tbaa !9
  %2574 = fsub double %2572, %2573
  store double %2574, ptr %133, align 8, !tbaa !9
  %2575 = load double, ptr %147, align 8, !tbaa !9
  %2576 = load double, ptr %132, align 8, !tbaa !9
  %2577 = fsub double %2575, %2576
  store double %2577, ptr %134, align 8, !tbaa !9
  %2578 = load double, ptr %134, align 8, !tbaa !9
  %2579 = load double, ptr %133, align 8, !tbaa !9
  %2580 = fadd double %2578, %2579
  %2581 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 1
  store double %2580, ptr %2581, align 8, !tbaa !9
  %2582 = load double, ptr %145, align 8, !tbaa !9
  %2583 = load double, ptr %144, align 8, !tbaa !9
  %2584 = fadd double %2582, %2583
  store double %2584, ptr %68, align 8, !tbaa !9
  %2585 = load double, ptr %68, align 8, !tbaa !9
  %2586 = load double, ptr %145, align 8, !tbaa !9
  %2587 = fsub double %2585, %2586
  store double %2587, ptr %131, align 8, !tbaa !9
  %2588 = load double, ptr %68, align 8, !tbaa !9
  %2589 = load double, ptr %131, align 8, !tbaa !9
  %2590 = fsub double %2588, %2589
  store double %2590, ptr %132, align 8, !tbaa !9
  %2591 = load double, ptr %144, align 8, !tbaa !9
  %2592 = load double, ptr %131, align 8, !tbaa !9
  %2593 = fsub double %2591, %2592
  store double %2593, ptr %133, align 8, !tbaa !9
  %2594 = load double, ptr %145, align 8, !tbaa !9
  %2595 = load double, ptr %132, align 8, !tbaa !9
  %2596 = fsub double %2594, %2595
  store double %2596, ptr %134, align 8, !tbaa !9
  %2597 = load double, ptr %134, align 8, !tbaa !9
  %2598 = load double, ptr %133, align 8, !tbaa !9
  %2599 = fadd double %2597, %2598
  %2600 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 2
  store double %2599, ptr %2600, align 16, !tbaa !9
  %2601 = load double, ptr %68, align 8, !tbaa !9
  %2602 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 3
  store double %2601, ptr %2602, align 8, !tbaa !9
  store i32 4, ptr %80, align 4, !tbaa !11
  %2603 = load double, ptr %60, align 8, !tbaa !9
  %2604 = load double, ptr %13, align 8, !tbaa !9
  %2605 = fmul double %2603, %2604
  store double %2605, ptr %95, align 8, !tbaa !9
  %2606 = load double, ptr @splitter, align 8, !tbaa !9
  %2607 = load double, ptr %60, align 8, !tbaa !9
  %2608 = fmul double %2606, %2607
  store double %2608, ptr %135, align 8, !tbaa !9
  %2609 = load double, ptr %135, align 8, !tbaa !9
  %2610 = load double, ptr %60, align 8, !tbaa !9
  %2611 = fsub double %2609, %2610
  store double %2611, ptr %136, align 8, !tbaa !9
  %2612 = load double, ptr %135, align 8, !tbaa !9
  %2613 = load double, ptr %136, align 8, !tbaa !9
  %2614 = fsub double %2612, %2613
  store double %2614, ptr %137, align 8, !tbaa !9
  %2615 = load double, ptr %60, align 8, !tbaa !9
  %2616 = load double, ptr %137, align 8, !tbaa !9
  %2617 = fsub double %2615, %2616
  store double %2617, ptr %138, align 8, !tbaa !9
  %2618 = load double, ptr @splitter, align 8, !tbaa !9
  %2619 = load double, ptr %13, align 8, !tbaa !9
  %2620 = fmul double %2618, %2619
  store double %2620, ptr %135, align 8, !tbaa !9
  %2621 = load double, ptr %135, align 8, !tbaa !9
  %2622 = load double, ptr %13, align 8, !tbaa !9
  %2623 = fsub double %2621, %2622
  store double %2623, ptr %136, align 8, !tbaa !9
  %2624 = load double, ptr %135, align 8, !tbaa !9
  %2625 = load double, ptr %136, align 8, !tbaa !9
  %2626 = fsub double %2624, %2625
  store double %2626, ptr %139, align 8, !tbaa !9
  %2627 = load double, ptr %13, align 8, !tbaa !9
  %2628 = load double, ptr %139, align 8, !tbaa !9
  %2629 = fsub double %2627, %2628
  store double %2629, ptr %140, align 8, !tbaa !9
  %2630 = load double, ptr %95, align 8, !tbaa !9
  %2631 = load double, ptr %137, align 8, !tbaa !9
  %2632 = load double, ptr %139, align 8, !tbaa !9
  %2633 = fneg double %2631
  %2634 = call double @llvm.fmuladd.f64(double %2633, double %2632, double %2630)
  store double %2634, ptr %141, align 8, !tbaa !9
  %2635 = load double, ptr %141, align 8, !tbaa !9
  %2636 = load double, ptr %138, align 8, !tbaa !9
  %2637 = load double, ptr %139, align 8, !tbaa !9
  %2638 = fneg double %2636
  %2639 = call double @llvm.fmuladd.f64(double %2638, double %2637, double %2635)
  store double %2639, ptr %142, align 8, !tbaa !9
  %2640 = load double, ptr %142, align 8, !tbaa !9
  %2641 = load double, ptr %137, align 8, !tbaa !9
  %2642 = load double, ptr %140, align 8, !tbaa !9
  %2643 = fneg double %2641
  %2644 = call double @llvm.fmuladd.f64(double %2643, double %2642, double %2640)
  store double %2644, ptr %143, align 8, !tbaa !9
  %2645 = load double, ptr %138, align 8, !tbaa !9
  %2646 = load double, ptr %140, align 8, !tbaa !9
  %2647 = load double, ptr %143, align 8, !tbaa !9
  %2648 = fneg double %2647
  %2649 = call double @llvm.fmuladd.f64(double %2645, double %2646, double %2648)
  store double %2649, ptr %101, align 8, !tbaa !9
  %2650 = load double, ptr %57, align 8, !tbaa !9
  %2651 = load double, ptr %16, align 8, !tbaa !9
  %2652 = fmul double %2650, %2651
  store double %2652, ptr %83, align 8, !tbaa !9
  %2653 = load double, ptr @splitter, align 8, !tbaa !9
  %2654 = load double, ptr %57, align 8, !tbaa !9
  %2655 = fmul double %2653, %2654
  store double %2655, ptr %135, align 8, !tbaa !9
  %2656 = load double, ptr %135, align 8, !tbaa !9
  %2657 = load double, ptr %57, align 8, !tbaa !9
  %2658 = fsub double %2656, %2657
  store double %2658, ptr %136, align 8, !tbaa !9
  %2659 = load double, ptr %135, align 8, !tbaa !9
  %2660 = load double, ptr %136, align 8, !tbaa !9
  %2661 = fsub double %2659, %2660
  store double %2661, ptr %137, align 8, !tbaa !9
  %2662 = load double, ptr %57, align 8, !tbaa !9
  %2663 = load double, ptr %137, align 8, !tbaa !9
  %2664 = fsub double %2662, %2663
  store double %2664, ptr %138, align 8, !tbaa !9
  %2665 = load double, ptr @splitter, align 8, !tbaa !9
  %2666 = load double, ptr %16, align 8, !tbaa !9
  %2667 = fmul double %2665, %2666
  store double %2667, ptr %135, align 8, !tbaa !9
  %2668 = load double, ptr %135, align 8, !tbaa !9
  %2669 = load double, ptr %16, align 8, !tbaa !9
  %2670 = fsub double %2668, %2669
  store double %2670, ptr %136, align 8, !tbaa !9
  %2671 = load double, ptr %135, align 8, !tbaa !9
  %2672 = load double, ptr %136, align 8, !tbaa !9
  %2673 = fsub double %2671, %2672
  store double %2673, ptr %139, align 8, !tbaa !9
  %2674 = load double, ptr %16, align 8, !tbaa !9
  %2675 = load double, ptr %139, align 8, !tbaa !9
  %2676 = fsub double %2674, %2675
  store double %2676, ptr %140, align 8, !tbaa !9
  %2677 = load double, ptr %83, align 8, !tbaa !9
  %2678 = load double, ptr %137, align 8, !tbaa !9
  %2679 = load double, ptr %139, align 8, !tbaa !9
  %2680 = fneg double %2678
  %2681 = call double @llvm.fmuladd.f64(double %2680, double %2679, double %2677)
  store double %2681, ptr %141, align 8, !tbaa !9
  %2682 = load double, ptr %141, align 8, !tbaa !9
  %2683 = load double, ptr %138, align 8, !tbaa !9
  %2684 = load double, ptr %139, align 8, !tbaa !9
  %2685 = fneg double %2683
  %2686 = call double @llvm.fmuladd.f64(double %2685, double %2684, double %2682)
  store double %2686, ptr %142, align 8, !tbaa !9
  %2687 = load double, ptr %142, align 8, !tbaa !9
  %2688 = load double, ptr %137, align 8, !tbaa !9
  %2689 = load double, ptr %140, align 8, !tbaa !9
  %2690 = fneg double %2688
  %2691 = call double @llvm.fmuladd.f64(double %2690, double %2689, double %2687)
  store double %2691, ptr %143, align 8, !tbaa !9
  %2692 = load double, ptr %138, align 8, !tbaa !9
  %2693 = load double, ptr %140, align 8, !tbaa !9
  %2694 = load double, ptr %143, align 8, !tbaa !9
  %2695 = fneg double %2694
  %2696 = call double @llvm.fmuladd.f64(double %2692, double %2693, double %2695)
  store double %2696, ptr %89, align 8, !tbaa !9
  %2697 = load double, ptr %101, align 8, !tbaa !9
  %2698 = load double, ptr %89, align 8, !tbaa !9
  %2699 = fsub double %2697, %2698
  store double %2699, ptr %144, align 8, !tbaa !9
  %2700 = load double, ptr %101, align 8, !tbaa !9
  %2701 = load double, ptr %144, align 8, !tbaa !9
  %2702 = fsub double %2700, %2701
  store double %2702, ptr %131, align 8, !tbaa !9
  %2703 = load double, ptr %144, align 8, !tbaa !9
  %2704 = load double, ptr %131, align 8, !tbaa !9
  %2705 = fadd double %2703, %2704
  store double %2705, ptr %132, align 8, !tbaa !9
  %2706 = load double, ptr %131, align 8, !tbaa !9
  %2707 = load double, ptr %89, align 8, !tbaa !9
  %2708 = fsub double %2706, %2707
  store double %2708, ptr %133, align 8, !tbaa !9
  %2709 = load double, ptr %101, align 8, !tbaa !9
  %2710 = load double, ptr %132, align 8, !tbaa !9
  %2711 = fsub double %2709, %2710
  store double %2711, ptr %134, align 8, !tbaa !9
  %2712 = load double, ptr %134, align 8, !tbaa !9
  %2713 = load double, ptr %133, align 8, !tbaa !9
  %2714 = fadd double %2712, %2713
  %2715 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  store double %2714, ptr %2715, align 16, !tbaa !9
  %2716 = load double, ptr %95, align 8, !tbaa !9
  %2717 = load double, ptr %144, align 8, !tbaa !9
  %2718 = fadd double %2716, %2717
  store double %2718, ptr %145, align 8, !tbaa !9
  %2719 = load double, ptr %145, align 8, !tbaa !9
  %2720 = load double, ptr %95, align 8, !tbaa !9
  %2721 = fsub double %2719, %2720
  store double %2721, ptr %131, align 8, !tbaa !9
  %2722 = load double, ptr %145, align 8, !tbaa !9
  %2723 = load double, ptr %131, align 8, !tbaa !9
  %2724 = fsub double %2722, %2723
  store double %2724, ptr %132, align 8, !tbaa !9
  %2725 = load double, ptr %144, align 8, !tbaa !9
  %2726 = load double, ptr %131, align 8, !tbaa !9
  %2727 = fsub double %2725, %2726
  store double %2727, ptr %133, align 8, !tbaa !9
  %2728 = load double, ptr %95, align 8, !tbaa !9
  %2729 = load double, ptr %132, align 8, !tbaa !9
  %2730 = fsub double %2728, %2729
  store double %2730, ptr %134, align 8, !tbaa !9
  %2731 = load double, ptr %134, align 8, !tbaa !9
  %2732 = load double, ptr %133, align 8, !tbaa !9
  %2733 = fadd double %2731, %2732
  store double %2733, ptr %147, align 8, !tbaa !9
  %2734 = load double, ptr %147, align 8, !tbaa !9
  %2735 = load double, ptr %83, align 8, !tbaa !9
  %2736 = fsub double %2734, %2735
  store double %2736, ptr %144, align 8, !tbaa !9
  %2737 = load double, ptr %147, align 8, !tbaa !9
  %2738 = load double, ptr %144, align 8, !tbaa !9
  %2739 = fsub double %2737, %2738
  store double %2739, ptr %131, align 8, !tbaa !9
  %2740 = load double, ptr %144, align 8, !tbaa !9
  %2741 = load double, ptr %131, align 8, !tbaa !9
  %2742 = fadd double %2740, %2741
  store double %2742, ptr %132, align 8, !tbaa !9
  %2743 = load double, ptr %131, align 8, !tbaa !9
  %2744 = load double, ptr %83, align 8, !tbaa !9
  %2745 = fsub double %2743, %2744
  store double %2745, ptr %133, align 8, !tbaa !9
  %2746 = load double, ptr %147, align 8, !tbaa !9
  %2747 = load double, ptr %132, align 8, !tbaa !9
  %2748 = fsub double %2746, %2747
  store double %2748, ptr %134, align 8, !tbaa !9
  %2749 = load double, ptr %134, align 8, !tbaa !9
  %2750 = load double, ptr %133, align 8, !tbaa !9
  %2751 = fadd double %2749, %2750
  %2752 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  store double %2751, ptr %2752, align 8, !tbaa !9
  %2753 = load double, ptr %145, align 8, !tbaa !9
  %2754 = load double, ptr %144, align 8, !tbaa !9
  %2755 = fadd double %2753, %2754
  store double %2755, ptr %69, align 8, !tbaa !9
  %2756 = load double, ptr %69, align 8, !tbaa !9
  %2757 = load double, ptr %145, align 8, !tbaa !9
  %2758 = fsub double %2756, %2757
  store double %2758, ptr %131, align 8, !tbaa !9
  %2759 = load double, ptr %69, align 8, !tbaa !9
  %2760 = load double, ptr %131, align 8, !tbaa !9
  %2761 = fsub double %2759, %2760
  store double %2761, ptr %132, align 8, !tbaa !9
  %2762 = load double, ptr %144, align 8, !tbaa !9
  %2763 = load double, ptr %131, align 8, !tbaa !9
  %2764 = fsub double %2762, %2763
  store double %2764, ptr %133, align 8, !tbaa !9
  %2765 = load double, ptr %145, align 8, !tbaa !9
  %2766 = load double, ptr %132, align 8, !tbaa !9
  %2767 = fsub double %2765, %2766
  store double %2767, ptr %134, align 8, !tbaa !9
  %2768 = load double, ptr %134, align 8, !tbaa !9
  %2769 = load double, ptr %133, align 8, !tbaa !9
  %2770 = fadd double %2768, %2769
  %2771 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  store double %2770, ptr %2771, align 16, !tbaa !9
  %2772 = load double, ptr %69, align 8, !tbaa !9
  %2773 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 3
  store double %2772, ptr %2773, align 8, !tbaa !9
  store i32 4, ptr %81, align 4, !tbaa !11
  br label %2774

2774:                                             ; preds = %2431, %2328
  br label %2775

2775:                                             ; preds = %2774, %2324
  %2776 = load i32, ptr %78, align 4, !tbaa !11
  %2777 = getelementptr inbounds [4 x double], ptr %72, i64 0, i64 0
  %2778 = load i32, ptr %81, align 4, !tbaa !11
  %2779 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  %2780 = getelementptr inbounds [8 x double], ptr %106, i64 0, i64 0
  %2781 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2776, ptr noundef %2777, i32 noundef %2778, ptr noundef %2779, ptr noundef %2780)
  store i32 %2781, ptr %109, align 4, !tbaa !11
  %2782 = load i32, ptr %109, align 4, !tbaa !11
  %2783 = getelementptr inbounds [8 x double], ptr %106, i64 0, i64 0
  %2784 = load double, ptr %18, align 8, !tbaa !9
  %2785 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %2786 = call i32 @scale_expansion_zeroelim(i32 noundef %2782, ptr noundef %2783, double noundef %2784, ptr noundef %2785)
  store i32 %2786, ptr %129, align 4, !tbaa !11
  %2787 = load i32, ptr %54, align 4, !tbaa !11
  %2788 = load ptr, ptr %49, align 8, !tbaa !5
  %2789 = load i32, ptr %129, align 4, !tbaa !11
  %2790 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %2791 = load ptr, ptr %50, align 8, !tbaa !5
  %2792 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2787, ptr noundef %2788, i32 noundef %2789, ptr noundef %2790, ptr noundef %2791)
  store i32 %2792, ptr %54, align 4, !tbaa !11
  %2793 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %2793, ptr %51, align 8, !tbaa !5
  %2794 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %2794, ptr %49, align 8, !tbaa !5
  %2795 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %2795, ptr %50, align 8, !tbaa !5
  %2796 = load i32, ptr %80, align 4, !tbaa !11
  %2797 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 0
  %2798 = load i32, ptr %77, align 4, !tbaa !11
  %2799 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 0
  %2800 = getelementptr inbounds [8 x double], ptr %107, i64 0, i64 0
  %2801 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2796, ptr noundef %2797, i32 noundef %2798, ptr noundef %2799, ptr noundef %2800)
  store i32 %2801, ptr %110, align 4, !tbaa !11
  %2802 = load i32, ptr %110, align 4, !tbaa !11
  %2803 = getelementptr inbounds [8 x double], ptr %107, i64 0, i64 0
  %2804 = load double, ptr %19, align 8, !tbaa !9
  %2805 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %2806 = call i32 @scale_expansion_zeroelim(i32 noundef %2802, ptr noundef %2803, double noundef %2804, ptr noundef %2805)
  store i32 %2806, ptr %129, align 4, !tbaa !11
  %2807 = load i32, ptr %54, align 4, !tbaa !11
  %2808 = load ptr, ptr %49, align 8, !tbaa !5
  %2809 = load i32, ptr %129, align 4, !tbaa !11
  %2810 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %2811 = load ptr, ptr %50, align 8, !tbaa !5
  %2812 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2807, ptr noundef %2808, i32 noundef %2809, ptr noundef %2810, ptr noundef %2811)
  store i32 %2812, ptr %54, align 4, !tbaa !11
  %2813 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %2813, ptr %51, align 8, !tbaa !5
  %2814 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %2814, ptr %49, align 8, !tbaa !5
  %2815 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %2815, ptr %50, align 8, !tbaa !5
  %2816 = load i32, ptr %76, align 4, !tbaa !11
  %2817 = getelementptr inbounds [4 x double], ptr %70, i64 0, i64 0
  %2818 = load i32, ptr %79, align 4, !tbaa !11
  %2819 = getelementptr inbounds [4 x double], ptr %73, i64 0, i64 0
  %2820 = getelementptr inbounds [8 x double], ptr %108, i64 0, i64 0
  %2821 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2816, ptr noundef %2817, i32 noundef %2818, ptr noundef %2819, ptr noundef %2820)
  store i32 %2821, ptr %111, align 4, !tbaa !11
  %2822 = load i32, ptr %111, align 4, !tbaa !11
  %2823 = getelementptr inbounds [8 x double], ptr %108, i64 0, i64 0
  %2824 = load double, ptr %20, align 8, !tbaa !9
  %2825 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %2826 = call i32 @scale_expansion_zeroelim(i32 noundef %2822, ptr noundef %2823, double noundef %2824, ptr noundef %2825)
  store i32 %2826, ptr %129, align 4, !tbaa !11
  %2827 = load i32, ptr %54, align 4, !tbaa !11
  %2828 = load ptr, ptr %49, align 8, !tbaa !5
  %2829 = load i32, ptr %129, align 4, !tbaa !11
  %2830 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %2831 = load ptr, ptr %50, align 8, !tbaa !5
  %2832 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2827, ptr noundef %2828, i32 noundef %2829, ptr noundef %2830, ptr noundef %2831)
  store i32 %2832, ptr %54, align 4, !tbaa !11
  %2833 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %2833, ptr %51, align 8, !tbaa !5
  %2834 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %2834, ptr %49, align 8, !tbaa !5
  %2835 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %2835, ptr %50, align 8, !tbaa !5
  %2836 = load double, ptr %61, align 8, !tbaa !9
  %2837 = fcmp une double %2836, 0.000000e+00
  br i1 %2837, label %2838, label %2852

2838:                                             ; preds = %2775
  %2839 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 0
  %2840 = load double, ptr %61, align 8, !tbaa !9
  %2841 = getelementptr inbounds [12 x double], ptr %125, i64 0, i64 0
  %2842 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef %2839, double noundef %2840, ptr noundef %2841)
  store i32 %2842, ptr %128, align 4, !tbaa !11
  %2843 = load i32, ptr %54, align 4, !tbaa !11
  %2844 = load ptr, ptr %49, align 8, !tbaa !5
  %2845 = load i32, ptr %128, align 4, !tbaa !11
  %2846 = getelementptr inbounds [12 x double], ptr %125, i64 0, i64 0
  %2847 = load ptr, ptr %50, align 8, !tbaa !5
  %2848 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2843, ptr noundef %2844, i32 noundef %2845, ptr noundef %2846, ptr noundef %2847)
  store i32 %2848, ptr %54, align 4, !tbaa !11
  %2849 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %2849, ptr %51, align 8, !tbaa !5
  %2850 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %2850, ptr %49, align 8, !tbaa !5
  %2851 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %2851, ptr %50, align 8, !tbaa !5
  br label %2852

2852:                                             ; preds = %2838, %2775
  %2853 = load double, ptr %62, align 8, !tbaa !9
  %2854 = fcmp une double %2853, 0.000000e+00
  br i1 %2854, label %2855, label %2869

2855:                                             ; preds = %2852
  %2856 = getelementptr inbounds [4 x double], ptr %36, i64 0, i64 0
  %2857 = load double, ptr %62, align 8, !tbaa !9
  %2858 = getelementptr inbounds [12 x double], ptr %125, i64 0, i64 0
  %2859 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef %2856, double noundef %2857, ptr noundef %2858)
  store i32 %2859, ptr %128, align 4, !tbaa !11
  %2860 = load i32, ptr %54, align 4, !tbaa !11
  %2861 = load ptr, ptr %49, align 8, !tbaa !5
  %2862 = load i32, ptr %128, align 4, !tbaa !11
  %2863 = getelementptr inbounds [12 x double], ptr %125, i64 0, i64 0
  %2864 = load ptr, ptr %50, align 8, !tbaa !5
  %2865 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2860, ptr noundef %2861, i32 noundef %2862, ptr noundef %2863, ptr noundef %2864)
  store i32 %2865, ptr %54, align 4, !tbaa !11
  %2866 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %2866, ptr %51, align 8, !tbaa !5
  %2867 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %2867, ptr %49, align 8, !tbaa !5
  %2868 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %2868, ptr %50, align 8, !tbaa !5
  br label %2869

2869:                                             ; preds = %2855, %2852
  %2870 = load double, ptr %63, align 8, !tbaa !9
  %2871 = fcmp une double %2870, 0.000000e+00
  br i1 %2871, label %2872, label %2886

2872:                                             ; preds = %2869
  %2873 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 0
  %2874 = load double, ptr %63, align 8, !tbaa !9
  %2875 = getelementptr inbounds [12 x double], ptr %125, i64 0, i64 0
  %2876 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef %2873, double noundef %2874, ptr noundef %2875)
  store i32 %2876, ptr %128, align 4, !tbaa !11
  %2877 = load i32, ptr %54, align 4, !tbaa !11
  %2878 = load ptr, ptr %49, align 8, !tbaa !5
  %2879 = load i32, ptr %128, align 4, !tbaa !11
  %2880 = getelementptr inbounds [12 x double], ptr %125, i64 0, i64 0
  %2881 = load ptr, ptr %50, align 8, !tbaa !5
  %2882 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %2877, ptr noundef %2878, i32 noundef %2879, ptr noundef %2880, ptr noundef %2881)
  store i32 %2882, ptr %54, align 4, !tbaa !11
  %2883 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %2883, ptr %51, align 8, !tbaa !5
  %2884 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %2884, ptr %49, align 8, !tbaa !5
  %2885 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %2885, ptr %50, align 8, !tbaa !5
  br label %2886

2886:                                             ; preds = %2872, %2869
  %2887 = load double, ptr %55, align 8, !tbaa !9
  %2888 = fcmp une double %2887, 0.000000e+00
  br i1 %2888, label %2889, label %3490

2889:                                             ; preds = %2886
  %2890 = load double, ptr %59, align 8, !tbaa !9
  %2891 = fcmp une double %2890, 0.000000e+00
  br i1 %2891, label %2892, label %3188

2892:                                             ; preds = %2889
  %2893 = load double, ptr %55, align 8, !tbaa !9
  %2894 = load double, ptr %59, align 8, !tbaa !9
  %2895 = fmul double %2893, %2894
  store double %2895, ptr %116, align 8, !tbaa !9
  %2896 = load double, ptr @splitter, align 8, !tbaa !9
  %2897 = load double, ptr %55, align 8, !tbaa !9
  %2898 = fmul double %2896, %2897
  store double %2898, ptr %135, align 8, !tbaa !9
  %2899 = load double, ptr %135, align 8, !tbaa !9
  %2900 = load double, ptr %55, align 8, !tbaa !9
  %2901 = fsub double %2899, %2900
  store double %2901, ptr %136, align 8, !tbaa !9
  %2902 = load double, ptr %135, align 8, !tbaa !9
  %2903 = load double, ptr %136, align 8, !tbaa !9
  %2904 = fsub double %2902, %2903
  store double %2904, ptr %137, align 8, !tbaa !9
  %2905 = load double, ptr %55, align 8, !tbaa !9
  %2906 = load double, ptr %137, align 8, !tbaa !9
  %2907 = fsub double %2905, %2906
  store double %2907, ptr %138, align 8, !tbaa !9
  %2908 = load double, ptr @splitter, align 8, !tbaa !9
  %2909 = load double, ptr %59, align 8, !tbaa !9
  %2910 = fmul double %2908, %2909
  store double %2910, ptr %135, align 8, !tbaa !9
  %2911 = load double, ptr %135, align 8, !tbaa !9
  %2912 = load double, ptr %59, align 8, !tbaa !9
  %2913 = fsub double %2911, %2912
  store double %2913, ptr %136, align 8, !tbaa !9
  %2914 = load double, ptr %135, align 8, !tbaa !9
  %2915 = load double, ptr %136, align 8, !tbaa !9
  %2916 = fsub double %2914, %2915
  store double %2916, ptr %139, align 8, !tbaa !9
  %2917 = load double, ptr %59, align 8, !tbaa !9
  %2918 = load double, ptr %139, align 8, !tbaa !9
  %2919 = fsub double %2917, %2918
  store double %2919, ptr %140, align 8, !tbaa !9
  %2920 = load double, ptr %116, align 8, !tbaa !9
  %2921 = load double, ptr %137, align 8, !tbaa !9
  %2922 = load double, ptr %139, align 8, !tbaa !9
  %2923 = fneg double %2921
  %2924 = call double @llvm.fmuladd.f64(double %2923, double %2922, double %2920)
  store double %2924, ptr %141, align 8, !tbaa !9
  %2925 = load double, ptr %141, align 8, !tbaa !9
  %2926 = load double, ptr %138, align 8, !tbaa !9
  %2927 = load double, ptr %139, align 8, !tbaa !9
  %2928 = fneg double %2926
  %2929 = call double @llvm.fmuladd.f64(double %2928, double %2927, double %2925)
  store double %2929, ptr %142, align 8, !tbaa !9
  %2930 = load double, ptr %142, align 8, !tbaa !9
  %2931 = load double, ptr %137, align 8, !tbaa !9
  %2932 = load double, ptr %140, align 8, !tbaa !9
  %2933 = fneg double %2931
  %2934 = call double @llvm.fmuladd.f64(double %2933, double %2932, double %2930)
  store double %2934, ptr %143, align 8, !tbaa !9
  %2935 = load double, ptr %138, align 8, !tbaa !9
  %2936 = load double, ptr %140, align 8, !tbaa !9
  %2937 = load double, ptr %143, align 8, !tbaa !9
  %2938 = fneg double %2937
  %2939 = call double @llvm.fmuladd.f64(double %2935, double %2936, double %2938)
  store double %2939, ptr %122, align 8, !tbaa !9
  %2940 = load double, ptr @splitter, align 8, !tbaa !9
  %2941 = load double, ptr %20, align 8, !tbaa !9
  %2942 = fmul double %2940, %2941
  store double %2942, ptr %135, align 8, !tbaa !9
  %2943 = load double, ptr %135, align 8, !tbaa !9
  %2944 = load double, ptr %20, align 8, !tbaa !9
  %2945 = fsub double %2943, %2944
  store double %2945, ptr %136, align 8, !tbaa !9
  %2946 = load double, ptr %135, align 8, !tbaa !9
  %2947 = load double, ptr %136, align 8, !tbaa !9
  %2948 = fsub double %2946, %2947
  store double %2948, ptr %139, align 8, !tbaa !9
  %2949 = load double, ptr %20, align 8, !tbaa !9
  %2950 = load double, ptr %139, align 8, !tbaa !9
  %2951 = fsub double %2949, %2950
  store double %2951, ptr %140, align 8, !tbaa !9
  %2952 = load double, ptr %122, align 8, !tbaa !9
  %2953 = load double, ptr %20, align 8, !tbaa !9
  %2954 = fmul double %2952, %2953
  store double %2954, ptr %144, align 8, !tbaa !9
  %2955 = load double, ptr @splitter, align 8, !tbaa !9
  %2956 = load double, ptr %122, align 8, !tbaa !9
  %2957 = fmul double %2955, %2956
  store double %2957, ptr %135, align 8, !tbaa !9
  %2958 = load double, ptr %135, align 8, !tbaa !9
  %2959 = load double, ptr %122, align 8, !tbaa !9
  %2960 = fsub double %2958, %2959
  store double %2960, ptr %136, align 8, !tbaa !9
  %2961 = load double, ptr %135, align 8, !tbaa !9
  %2962 = load double, ptr %136, align 8, !tbaa !9
  %2963 = fsub double %2961, %2962
  store double %2963, ptr %137, align 8, !tbaa !9
  %2964 = load double, ptr %122, align 8, !tbaa !9
  %2965 = load double, ptr %137, align 8, !tbaa !9
  %2966 = fsub double %2964, %2965
  store double %2966, ptr %138, align 8, !tbaa !9
  %2967 = load double, ptr %144, align 8, !tbaa !9
  %2968 = load double, ptr %137, align 8, !tbaa !9
  %2969 = load double, ptr %139, align 8, !tbaa !9
  %2970 = fneg double %2968
  %2971 = call double @llvm.fmuladd.f64(double %2970, double %2969, double %2967)
  store double %2971, ptr %141, align 8, !tbaa !9
  %2972 = load double, ptr %141, align 8, !tbaa !9
  %2973 = load double, ptr %138, align 8, !tbaa !9
  %2974 = load double, ptr %139, align 8, !tbaa !9
  %2975 = fneg double %2973
  %2976 = call double @llvm.fmuladd.f64(double %2975, double %2974, double %2972)
  store double %2976, ptr %142, align 8, !tbaa !9
  %2977 = load double, ptr %142, align 8, !tbaa !9
  %2978 = load double, ptr %137, align 8, !tbaa !9
  %2979 = load double, ptr %140, align 8, !tbaa !9
  %2980 = fneg double %2978
  %2981 = call double @llvm.fmuladd.f64(double %2980, double %2979, double %2977)
  store double %2981, ptr %143, align 8, !tbaa !9
  %2982 = load double, ptr %138, align 8, !tbaa !9
  %2983 = load double, ptr %140, align 8, !tbaa !9
  %2984 = load double, ptr %143, align 8, !tbaa !9
  %2985 = fneg double %2984
  %2986 = call double @llvm.fmuladd.f64(double %2982, double %2983, double %2985)
  %2987 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %2986, ptr %2987, align 16, !tbaa !9
  %2988 = load double, ptr %116, align 8, !tbaa !9
  %2989 = load double, ptr %20, align 8, !tbaa !9
  %2990 = fmul double %2988, %2989
  store double %2990, ptr %145, align 8, !tbaa !9
  %2991 = load double, ptr @splitter, align 8, !tbaa !9
  %2992 = load double, ptr %116, align 8, !tbaa !9
  %2993 = fmul double %2991, %2992
  store double %2993, ptr %135, align 8, !tbaa !9
  %2994 = load double, ptr %135, align 8, !tbaa !9
  %2995 = load double, ptr %116, align 8, !tbaa !9
  %2996 = fsub double %2994, %2995
  store double %2996, ptr %136, align 8, !tbaa !9
  %2997 = load double, ptr %135, align 8, !tbaa !9
  %2998 = load double, ptr %136, align 8, !tbaa !9
  %2999 = fsub double %2997, %2998
  store double %2999, ptr %137, align 8, !tbaa !9
  %3000 = load double, ptr %116, align 8, !tbaa !9
  %3001 = load double, ptr %137, align 8, !tbaa !9
  %3002 = fsub double %3000, %3001
  store double %3002, ptr %138, align 8, !tbaa !9
  %3003 = load double, ptr %145, align 8, !tbaa !9
  %3004 = load double, ptr %137, align 8, !tbaa !9
  %3005 = load double, ptr %139, align 8, !tbaa !9
  %3006 = fneg double %3004
  %3007 = call double @llvm.fmuladd.f64(double %3006, double %3005, double %3003)
  store double %3007, ptr %141, align 8, !tbaa !9
  %3008 = load double, ptr %141, align 8, !tbaa !9
  %3009 = load double, ptr %138, align 8, !tbaa !9
  %3010 = load double, ptr %139, align 8, !tbaa !9
  %3011 = fneg double %3009
  %3012 = call double @llvm.fmuladd.f64(double %3011, double %3010, double %3008)
  store double %3012, ptr %142, align 8, !tbaa !9
  %3013 = load double, ptr %142, align 8, !tbaa !9
  %3014 = load double, ptr %137, align 8, !tbaa !9
  %3015 = load double, ptr %140, align 8, !tbaa !9
  %3016 = fneg double %3014
  %3017 = call double @llvm.fmuladd.f64(double %3016, double %3015, double %3013)
  store double %3017, ptr %143, align 8, !tbaa !9
  %3018 = load double, ptr %138, align 8, !tbaa !9
  %3019 = load double, ptr %140, align 8, !tbaa !9
  %3020 = load double, ptr %143, align 8, !tbaa !9
  %3021 = fneg double %3020
  %3022 = call double @llvm.fmuladd.f64(double %3018, double %3019, double %3021)
  store double %3022, ptr %147, align 8, !tbaa !9
  %3023 = load double, ptr %144, align 8, !tbaa !9
  %3024 = load double, ptr %147, align 8, !tbaa !9
  %3025 = fadd double %3023, %3024
  store double %3025, ptr %146, align 8, !tbaa !9
  %3026 = load double, ptr %146, align 8, !tbaa !9
  %3027 = load double, ptr %144, align 8, !tbaa !9
  %3028 = fsub double %3026, %3027
  store double %3028, ptr %131, align 8, !tbaa !9
  %3029 = load double, ptr %146, align 8, !tbaa !9
  %3030 = load double, ptr %131, align 8, !tbaa !9
  %3031 = fsub double %3029, %3030
  store double %3031, ptr %132, align 8, !tbaa !9
  %3032 = load double, ptr %147, align 8, !tbaa !9
  %3033 = load double, ptr %131, align 8, !tbaa !9
  %3034 = fsub double %3032, %3033
  store double %3034, ptr %133, align 8, !tbaa !9
  %3035 = load double, ptr %144, align 8, !tbaa !9
  %3036 = load double, ptr %132, align 8, !tbaa !9
  %3037 = fsub double %3035, %3036
  store double %3037, ptr %134, align 8, !tbaa !9
  %3038 = load double, ptr %134, align 8, !tbaa !9
  %3039 = load double, ptr %133, align 8, !tbaa !9
  %3040 = fadd double %3038, %3039
  %3041 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %3040, ptr %3041, align 8, !tbaa !9
  %3042 = load double, ptr %145, align 8, !tbaa !9
  %3043 = load double, ptr %146, align 8, !tbaa !9
  %3044 = fadd double %3042, %3043
  store double %3044, ptr %127, align 8, !tbaa !9
  %3045 = load double, ptr %127, align 8, !tbaa !9
  %3046 = load double, ptr %145, align 8, !tbaa !9
  %3047 = fsub double %3045, %3046
  store double %3047, ptr %131, align 8, !tbaa !9
  %3048 = load double, ptr %146, align 8, !tbaa !9
  %3049 = load double, ptr %131, align 8, !tbaa !9
  %3050 = fsub double %3048, %3049
  %3051 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %3050, ptr %3051, align 16, !tbaa !9
  %3052 = load double, ptr %127, align 8, !tbaa !9
  %3053 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %3052, ptr %3053, align 8, !tbaa !9
  %3054 = load i32, ptr %54, align 4, !tbaa !11
  %3055 = load ptr, ptr %49, align 8, !tbaa !5
  %3056 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %3057 = load ptr, ptr %50, align 8, !tbaa !5
  %3058 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %3054, ptr noundef %3055, i32 noundef 4, ptr noundef %3056, ptr noundef %3057)
  store i32 %3058, ptr %54, align 4, !tbaa !11
  %3059 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %3059, ptr %51, align 8, !tbaa !5
  %3060 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %3060, ptr %49, align 8, !tbaa !5
  %3061 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %3061, ptr %50, align 8, !tbaa !5
  %3062 = load double, ptr %63, align 8, !tbaa !9
  %3063 = fcmp une double %3062, 0.000000e+00
  br i1 %3063, label %3064, label %3187

3064:                                             ; preds = %2892
  %3065 = load double, ptr @splitter, align 8, !tbaa !9
  %3066 = load double, ptr %63, align 8, !tbaa !9
  %3067 = fmul double %3065, %3066
  store double %3067, ptr %135, align 8, !tbaa !9
  %3068 = load double, ptr %135, align 8, !tbaa !9
  %3069 = load double, ptr %63, align 8, !tbaa !9
  %3070 = fsub double %3068, %3069
  store double %3070, ptr %136, align 8, !tbaa !9
  %3071 = load double, ptr %135, align 8, !tbaa !9
  %3072 = load double, ptr %136, align 8, !tbaa !9
  %3073 = fsub double %3071, %3072
  store double %3073, ptr %139, align 8, !tbaa !9
  %3074 = load double, ptr %63, align 8, !tbaa !9
  %3075 = load double, ptr %139, align 8, !tbaa !9
  %3076 = fsub double %3074, %3075
  store double %3076, ptr %140, align 8, !tbaa !9
  %3077 = load double, ptr %122, align 8, !tbaa !9
  %3078 = load double, ptr %63, align 8, !tbaa !9
  %3079 = fmul double %3077, %3078
  store double %3079, ptr %144, align 8, !tbaa !9
  %3080 = load double, ptr @splitter, align 8, !tbaa !9
  %3081 = load double, ptr %122, align 8, !tbaa !9
  %3082 = fmul double %3080, %3081
  store double %3082, ptr %135, align 8, !tbaa !9
  %3083 = load double, ptr %135, align 8, !tbaa !9
  %3084 = load double, ptr %122, align 8, !tbaa !9
  %3085 = fsub double %3083, %3084
  store double %3085, ptr %136, align 8, !tbaa !9
  %3086 = load double, ptr %135, align 8, !tbaa !9
  %3087 = load double, ptr %136, align 8, !tbaa !9
  %3088 = fsub double %3086, %3087
  store double %3088, ptr %137, align 8, !tbaa !9
  %3089 = load double, ptr %122, align 8, !tbaa !9
  %3090 = load double, ptr %137, align 8, !tbaa !9
  %3091 = fsub double %3089, %3090
  store double %3091, ptr %138, align 8, !tbaa !9
  %3092 = load double, ptr %144, align 8, !tbaa !9
  %3093 = load double, ptr %137, align 8, !tbaa !9
  %3094 = load double, ptr %139, align 8, !tbaa !9
  %3095 = fneg double %3093
  %3096 = call double @llvm.fmuladd.f64(double %3095, double %3094, double %3092)
  store double %3096, ptr %141, align 8, !tbaa !9
  %3097 = load double, ptr %141, align 8, !tbaa !9
  %3098 = load double, ptr %138, align 8, !tbaa !9
  %3099 = load double, ptr %139, align 8, !tbaa !9
  %3100 = fneg double %3098
  %3101 = call double @llvm.fmuladd.f64(double %3100, double %3099, double %3097)
  store double %3101, ptr %142, align 8, !tbaa !9
  %3102 = load double, ptr %142, align 8, !tbaa !9
  %3103 = load double, ptr %137, align 8, !tbaa !9
  %3104 = load double, ptr %140, align 8, !tbaa !9
  %3105 = fneg double %3103
  %3106 = call double @llvm.fmuladd.f64(double %3105, double %3104, double %3102)
  store double %3106, ptr %143, align 8, !tbaa !9
  %3107 = load double, ptr %138, align 8, !tbaa !9
  %3108 = load double, ptr %140, align 8, !tbaa !9
  %3109 = load double, ptr %143, align 8, !tbaa !9
  %3110 = fneg double %3109
  %3111 = call double @llvm.fmuladd.f64(double %3107, double %3108, double %3110)
  %3112 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %3111, ptr %3112, align 16, !tbaa !9
  %3113 = load double, ptr %116, align 8, !tbaa !9
  %3114 = load double, ptr %63, align 8, !tbaa !9
  %3115 = fmul double %3113, %3114
  store double %3115, ptr %145, align 8, !tbaa !9
  %3116 = load double, ptr @splitter, align 8, !tbaa !9
  %3117 = load double, ptr %116, align 8, !tbaa !9
  %3118 = fmul double %3116, %3117
  store double %3118, ptr %135, align 8, !tbaa !9
  %3119 = load double, ptr %135, align 8, !tbaa !9
  %3120 = load double, ptr %116, align 8, !tbaa !9
  %3121 = fsub double %3119, %3120
  store double %3121, ptr %136, align 8, !tbaa !9
  %3122 = load double, ptr %135, align 8, !tbaa !9
  %3123 = load double, ptr %136, align 8, !tbaa !9
  %3124 = fsub double %3122, %3123
  store double %3124, ptr %137, align 8, !tbaa !9
  %3125 = load double, ptr %116, align 8, !tbaa !9
  %3126 = load double, ptr %137, align 8, !tbaa !9
  %3127 = fsub double %3125, %3126
  store double %3127, ptr %138, align 8, !tbaa !9
  %3128 = load double, ptr %145, align 8, !tbaa !9
  %3129 = load double, ptr %137, align 8, !tbaa !9
  %3130 = load double, ptr %139, align 8, !tbaa !9
  %3131 = fneg double %3129
  %3132 = call double @llvm.fmuladd.f64(double %3131, double %3130, double %3128)
  store double %3132, ptr %141, align 8, !tbaa !9
  %3133 = load double, ptr %141, align 8, !tbaa !9
  %3134 = load double, ptr %138, align 8, !tbaa !9
  %3135 = load double, ptr %139, align 8, !tbaa !9
  %3136 = fneg double %3134
  %3137 = call double @llvm.fmuladd.f64(double %3136, double %3135, double %3133)
  store double %3137, ptr %142, align 8, !tbaa !9
  %3138 = load double, ptr %142, align 8, !tbaa !9
  %3139 = load double, ptr %137, align 8, !tbaa !9
  %3140 = load double, ptr %140, align 8, !tbaa !9
  %3141 = fneg double %3139
  %3142 = call double @llvm.fmuladd.f64(double %3141, double %3140, double %3138)
  store double %3142, ptr %143, align 8, !tbaa !9
  %3143 = load double, ptr %138, align 8, !tbaa !9
  %3144 = load double, ptr %140, align 8, !tbaa !9
  %3145 = load double, ptr %143, align 8, !tbaa !9
  %3146 = fneg double %3145
  %3147 = call double @llvm.fmuladd.f64(double %3143, double %3144, double %3146)
  store double %3147, ptr %147, align 8, !tbaa !9
  %3148 = load double, ptr %144, align 8, !tbaa !9
  %3149 = load double, ptr %147, align 8, !tbaa !9
  %3150 = fadd double %3148, %3149
  store double %3150, ptr %146, align 8, !tbaa !9
  %3151 = load double, ptr %146, align 8, !tbaa !9
  %3152 = load double, ptr %144, align 8, !tbaa !9
  %3153 = fsub double %3151, %3152
  store double %3153, ptr %131, align 8, !tbaa !9
  %3154 = load double, ptr %146, align 8, !tbaa !9
  %3155 = load double, ptr %131, align 8, !tbaa !9
  %3156 = fsub double %3154, %3155
  store double %3156, ptr %132, align 8, !tbaa !9
  %3157 = load double, ptr %147, align 8, !tbaa !9
  %3158 = load double, ptr %131, align 8, !tbaa !9
  %3159 = fsub double %3157, %3158
  store double %3159, ptr %133, align 8, !tbaa !9
  %3160 = load double, ptr %144, align 8, !tbaa !9
  %3161 = load double, ptr %132, align 8, !tbaa !9
  %3162 = fsub double %3160, %3161
  store double %3162, ptr %134, align 8, !tbaa !9
  %3163 = load double, ptr %134, align 8, !tbaa !9
  %3164 = load double, ptr %133, align 8, !tbaa !9
  %3165 = fadd double %3163, %3164
  %3166 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %3165, ptr %3166, align 8, !tbaa !9
  %3167 = load double, ptr %145, align 8, !tbaa !9
  %3168 = load double, ptr %146, align 8, !tbaa !9
  %3169 = fadd double %3167, %3168
  store double %3169, ptr %127, align 8, !tbaa !9
  %3170 = load double, ptr %127, align 8, !tbaa !9
  %3171 = load double, ptr %145, align 8, !tbaa !9
  %3172 = fsub double %3170, %3171
  store double %3172, ptr %131, align 8, !tbaa !9
  %3173 = load double, ptr %146, align 8, !tbaa !9
  %3174 = load double, ptr %131, align 8, !tbaa !9
  %3175 = fsub double %3173, %3174
  %3176 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %3175, ptr %3176, align 16, !tbaa !9
  %3177 = load double, ptr %127, align 8, !tbaa !9
  %3178 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %3177, ptr %3178, align 8, !tbaa !9
  %3179 = load i32, ptr %54, align 4, !tbaa !11
  %3180 = load ptr, ptr %49, align 8, !tbaa !5
  %3181 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %3182 = load ptr, ptr %50, align 8, !tbaa !5
  %3183 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %3179, ptr noundef %3180, i32 noundef 4, ptr noundef %3181, ptr noundef %3182)
  store i32 %3183, ptr %54, align 4, !tbaa !11
  %3184 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %3184, ptr %51, align 8, !tbaa !5
  %3185 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %3185, ptr %49, align 8, !tbaa !5
  %3186 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %3186, ptr %50, align 8, !tbaa !5
  br label %3187

3187:                                             ; preds = %3064, %2892
  br label %3188

3188:                                             ; preds = %3187, %2889
  %3189 = load double, ptr %60, align 8, !tbaa !9
  %3190 = fcmp une double %3189, 0.000000e+00
  br i1 %3190, label %3191, label %3489

3191:                                             ; preds = %3188
  %3192 = load double, ptr %55, align 8, !tbaa !9
  %3193 = fneg double %3192
  store double %3193, ptr %130, align 8, !tbaa !9
  %3194 = load double, ptr %130, align 8, !tbaa !9
  %3195 = load double, ptr %60, align 8, !tbaa !9
  %3196 = fmul double %3194, %3195
  store double %3196, ptr %115, align 8, !tbaa !9
  %3197 = load double, ptr @splitter, align 8, !tbaa !9
  %3198 = load double, ptr %130, align 8, !tbaa !9
  %3199 = fmul double %3197, %3198
  store double %3199, ptr %135, align 8, !tbaa !9
  %3200 = load double, ptr %135, align 8, !tbaa !9
  %3201 = load double, ptr %130, align 8, !tbaa !9
  %3202 = fsub double %3200, %3201
  store double %3202, ptr %136, align 8, !tbaa !9
  %3203 = load double, ptr %135, align 8, !tbaa !9
  %3204 = load double, ptr %136, align 8, !tbaa !9
  %3205 = fsub double %3203, %3204
  store double %3205, ptr %137, align 8, !tbaa !9
  %3206 = load double, ptr %130, align 8, !tbaa !9
  %3207 = load double, ptr %137, align 8, !tbaa !9
  %3208 = fsub double %3206, %3207
  store double %3208, ptr %138, align 8, !tbaa !9
  %3209 = load double, ptr @splitter, align 8, !tbaa !9
  %3210 = load double, ptr %60, align 8, !tbaa !9
  %3211 = fmul double %3209, %3210
  store double %3211, ptr %135, align 8, !tbaa !9
  %3212 = load double, ptr %135, align 8, !tbaa !9
  %3213 = load double, ptr %60, align 8, !tbaa !9
  %3214 = fsub double %3212, %3213
  store double %3214, ptr %136, align 8, !tbaa !9
  %3215 = load double, ptr %135, align 8, !tbaa !9
  %3216 = load double, ptr %136, align 8, !tbaa !9
  %3217 = fsub double %3215, %3216
  store double %3217, ptr %139, align 8, !tbaa !9
  %3218 = load double, ptr %60, align 8, !tbaa !9
  %3219 = load double, ptr %139, align 8, !tbaa !9
  %3220 = fsub double %3218, %3219
  store double %3220, ptr %140, align 8, !tbaa !9
  %3221 = load double, ptr %115, align 8, !tbaa !9
  %3222 = load double, ptr %137, align 8, !tbaa !9
  %3223 = load double, ptr %139, align 8, !tbaa !9
  %3224 = fneg double %3222
  %3225 = call double @llvm.fmuladd.f64(double %3224, double %3223, double %3221)
  store double %3225, ptr %141, align 8, !tbaa !9
  %3226 = load double, ptr %141, align 8, !tbaa !9
  %3227 = load double, ptr %138, align 8, !tbaa !9
  %3228 = load double, ptr %139, align 8, !tbaa !9
  %3229 = fneg double %3227
  %3230 = call double @llvm.fmuladd.f64(double %3229, double %3228, double %3226)
  store double %3230, ptr %142, align 8, !tbaa !9
  %3231 = load double, ptr %142, align 8, !tbaa !9
  %3232 = load double, ptr %137, align 8, !tbaa !9
  %3233 = load double, ptr %140, align 8, !tbaa !9
  %3234 = fneg double %3232
  %3235 = call double @llvm.fmuladd.f64(double %3234, double %3233, double %3231)
  store double %3235, ptr %143, align 8, !tbaa !9
  %3236 = load double, ptr %138, align 8, !tbaa !9
  %3237 = load double, ptr %140, align 8, !tbaa !9
  %3238 = load double, ptr %143, align 8, !tbaa !9
  %3239 = fneg double %3238
  %3240 = call double @llvm.fmuladd.f64(double %3236, double %3237, double %3239)
  store double %3240, ptr %121, align 8, !tbaa !9
  %3241 = load double, ptr @splitter, align 8, !tbaa !9
  %3242 = load double, ptr %19, align 8, !tbaa !9
  %3243 = fmul double %3241, %3242
  store double %3243, ptr %135, align 8, !tbaa !9
  %3244 = load double, ptr %135, align 8, !tbaa !9
  %3245 = load double, ptr %19, align 8, !tbaa !9
  %3246 = fsub double %3244, %3245
  store double %3246, ptr %136, align 8, !tbaa !9
  %3247 = load double, ptr %135, align 8, !tbaa !9
  %3248 = load double, ptr %136, align 8, !tbaa !9
  %3249 = fsub double %3247, %3248
  store double %3249, ptr %139, align 8, !tbaa !9
  %3250 = load double, ptr %19, align 8, !tbaa !9
  %3251 = load double, ptr %139, align 8, !tbaa !9
  %3252 = fsub double %3250, %3251
  store double %3252, ptr %140, align 8, !tbaa !9
  %3253 = load double, ptr %121, align 8, !tbaa !9
  %3254 = load double, ptr %19, align 8, !tbaa !9
  %3255 = fmul double %3253, %3254
  store double %3255, ptr %144, align 8, !tbaa !9
  %3256 = load double, ptr @splitter, align 8, !tbaa !9
  %3257 = load double, ptr %121, align 8, !tbaa !9
  %3258 = fmul double %3256, %3257
  store double %3258, ptr %135, align 8, !tbaa !9
  %3259 = load double, ptr %135, align 8, !tbaa !9
  %3260 = load double, ptr %121, align 8, !tbaa !9
  %3261 = fsub double %3259, %3260
  store double %3261, ptr %136, align 8, !tbaa !9
  %3262 = load double, ptr %135, align 8, !tbaa !9
  %3263 = load double, ptr %136, align 8, !tbaa !9
  %3264 = fsub double %3262, %3263
  store double %3264, ptr %137, align 8, !tbaa !9
  %3265 = load double, ptr %121, align 8, !tbaa !9
  %3266 = load double, ptr %137, align 8, !tbaa !9
  %3267 = fsub double %3265, %3266
  store double %3267, ptr %138, align 8, !tbaa !9
  %3268 = load double, ptr %144, align 8, !tbaa !9
  %3269 = load double, ptr %137, align 8, !tbaa !9
  %3270 = load double, ptr %139, align 8, !tbaa !9
  %3271 = fneg double %3269
  %3272 = call double @llvm.fmuladd.f64(double %3271, double %3270, double %3268)
  store double %3272, ptr %141, align 8, !tbaa !9
  %3273 = load double, ptr %141, align 8, !tbaa !9
  %3274 = load double, ptr %138, align 8, !tbaa !9
  %3275 = load double, ptr %139, align 8, !tbaa !9
  %3276 = fneg double %3274
  %3277 = call double @llvm.fmuladd.f64(double %3276, double %3275, double %3273)
  store double %3277, ptr %142, align 8, !tbaa !9
  %3278 = load double, ptr %142, align 8, !tbaa !9
  %3279 = load double, ptr %137, align 8, !tbaa !9
  %3280 = load double, ptr %140, align 8, !tbaa !9
  %3281 = fneg double %3279
  %3282 = call double @llvm.fmuladd.f64(double %3281, double %3280, double %3278)
  store double %3282, ptr %143, align 8, !tbaa !9
  %3283 = load double, ptr %138, align 8, !tbaa !9
  %3284 = load double, ptr %140, align 8, !tbaa !9
  %3285 = load double, ptr %143, align 8, !tbaa !9
  %3286 = fneg double %3285
  %3287 = call double @llvm.fmuladd.f64(double %3283, double %3284, double %3286)
  %3288 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %3287, ptr %3288, align 16, !tbaa !9
  %3289 = load double, ptr %115, align 8, !tbaa !9
  %3290 = load double, ptr %19, align 8, !tbaa !9
  %3291 = fmul double %3289, %3290
  store double %3291, ptr %145, align 8, !tbaa !9
  %3292 = load double, ptr @splitter, align 8, !tbaa !9
  %3293 = load double, ptr %115, align 8, !tbaa !9
  %3294 = fmul double %3292, %3293
  store double %3294, ptr %135, align 8, !tbaa !9
  %3295 = load double, ptr %135, align 8, !tbaa !9
  %3296 = load double, ptr %115, align 8, !tbaa !9
  %3297 = fsub double %3295, %3296
  store double %3297, ptr %136, align 8, !tbaa !9
  %3298 = load double, ptr %135, align 8, !tbaa !9
  %3299 = load double, ptr %136, align 8, !tbaa !9
  %3300 = fsub double %3298, %3299
  store double %3300, ptr %137, align 8, !tbaa !9
  %3301 = load double, ptr %115, align 8, !tbaa !9
  %3302 = load double, ptr %137, align 8, !tbaa !9
  %3303 = fsub double %3301, %3302
  store double %3303, ptr %138, align 8, !tbaa !9
  %3304 = load double, ptr %145, align 8, !tbaa !9
  %3305 = load double, ptr %137, align 8, !tbaa !9
  %3306 = load double, ptr %139, align 8, !tbaa !9
  %3307 = fneg double %3305
  %3308 = call double @llvm.fmuladd.f64(double %3307, double %3306, double %3304)
  store double %3308, ptr %141, align 8, !tbaa !9
  %3309 = load double, ptr %141, align 8, !tbaa !9
  %3310 = load double, ptr %138, align 8, !tbaa !9
  %3311 = load double, ptr %139, align 8, !tbaa !9
  %3312 = fneg double %3310
  %3313 = call double @llvm.fmuladd.f64(double %3312, double %3311, double %3309)
  store double %3313, ptr %142, align 8, !tbaa !9
  %3314 = load double, ptr %142, align 8, !tbaa !9
  %3315 = load double, ptr %137, align 8, !tbaa !9
  %3316 = load double, ptr %140, align 8, !tbaa !9
  %3317 = fneg double %3315
  %3318 = call double @llvm.fmuladd.f64(double %3317, double %3316, double %3314)
  store double %3318, ptr %143, align 8, !tbaa !9
  %3319 = load double, ptr %138, align 8, !tbaa !9
  %3320 = load double, ptr %140, align 8, !tbaa !9
  %3321 = load double, ptr %143, align 8, !tbaa !9
  %3322 = fneg double %3321
  %3323 = call double @llvm.fmuladd.f64(double %3319, double %3320, double %3322)
  store double %3323, ptr %147, align 8, !tbaa !9
  %3324 = load double, ptr %144, align 8, !tbaa !9
  %3325 = load double, ptr %147, align 8, !tbaa !9
  %3326 = fadd double %3324, %3325
  store double %3326, ptr %146, align 8, !tbaa !9
  %3327 = load double, ptr %146, align 8, !tbaa !9
  %3328 = load double, ptr %144, align 8, !tbaa !9
  %3329 = fsub double %3327, %3328
  store double %3329, ptr %131, align 8, !tbaa !9
  %3330 = load double, ptr %146, align 8, !tbaa !9
  %3331 = load double, ptr %131, align 8, !tbaa !9
  %3332 = fsub double %3330, %3331
  store double %3332, ptr %132, align 8, !tbaa !9
  %3333 = load double, ptr %147, align 8, !tbaa !9
  %3334 = load double, ptr %131, align 8, !tbaa !9
  %3335 = fsub double %3333, %3334
  store double %3335, ptr %133, align 8, !tbaa !9
  %3336 = load double, ptr %144, align 8, !tbaa !9
  %3337 = load double, ptr %132, align 8, !tbaa !9
  %3338 = fsub double %3336, %3337
  store double %3338, ptr %134, align 8, !tbaa !9
  %3339 = load double, ptr %134, align 8, !tbaa !9
  %3340 = load double, ptr %133, align 8, !tbaa !9
  %3341 = fadd double %3339, %3340
  %3342 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %3341, ptr %3342, align 8, !tbaa !9
  %3343 = load double, ptr %145, align 8, !tbaa !9
  %3344 = load double, ptr %146, align 8, !tbaa !9
  %3345 = fadd double %3343, %3344
  store double %3345, ptr %127, align 8, !tbaa !9
  %3346 = load double, ptr %127, align 8, !tbaa !9
  %3347 = load double, ptr %145, align 8, !tbaa !9
  %3348 = fsub double %3346, %3347
  store double %3348, ptr %131, align 8, !tbaa !9
  %3349 = load double, ptr %146, align 8, !tbaa !9
  %3350 = load double, ptr %131, align 8, !tbaa !9
  %3351 = fsub double %3349, %3350
  %3352 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %3351, ptr %3352, align 16, !tbaa !9
  %3353 = load double, ptr %127, align 8, !tbaa !9
  %3354 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %3353, ptr %3354, align 8, !tbaa !9
  %3355 = load i32, ptr %54, align 4, !tbaa !11
  %3356 = load ptr, ptr %49, align 8, !tbaa !5
  %3357 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %3358 = load ptr, ptr %50, align 8, !tbaa !5
  %3359 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %3355, ptr noundef %3356, i32 noundef 4, ptr noundef %3357, ptr noundef %3358)
  store i32 %3359, ptr %54, align 4, !tbaa !11
  %3360 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %3360, ptr %51, align 8, !tbaa !5
  %3361 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %3361, ptr %49, align 8, !tbaa !5
  %3362 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %3362, ptr %50, align 8, !tbaa !5
  %3363 = load double, ptr %62, align 8, !tbaa !9
  %3364 = fcmp une double %3363, 0.000000e+00
  br i1 %3364, label %3365, label %3488

3365:                                             ; preds = %3191
  %3366 = load double, ptr @splitter, align 8, !tbaa !9
  %3367 = load double, ptr %62, align 8, !tbaa !9
  %3368 = fmul double %3366, %3367
  store double %3368, ptr %135, align 8, !tbaa !9
  %3369 = load double, ptr %135, align 8, !tbaa !9
  %3370 = load double, ptr %62, align 8, !tbaa !9
  %3371 = fsub double %3369, %3370
  store double %3371, ptr %136, align 8, !tbaa !9
  %3372 = load double, ptr %135, align 8, !tbaa !9
  %3373 = load double, ptr %136, align 8, !tbaa !9
  %3374 = fsub double %3372, %3373
  store double %3374, ptr %139, align 8, !tbaa !9
  %3375 = load double, ptr %62, align 8, !tbaa !9
  %3376 = load double, ptr %139, align 8, !tbaa !9
  %3377 = fsub double %3375, %3376
  store double %3377, ptr %140, align 8, !tbaa !9
  %3378 = load double, ptr %121, align 8, !tbaa !9
  %3379 = load double, ptr %62, align 8, !tbaa !9
  %3380 = fmul double %3378, %3379
  store double %3380, ptr %144, align 8, !tbaa !9
  %3381 = load double, ptr @splitter, align 8, !tbaa !9
  %3382 = load double, ptr %121, align 8, !tbaa !9
  %3383 = fmul double %3381, %3382
  store double %3383, ptr %135, align 8, !tbaa !9
  %3384 = load double, ptr %135, align 8, !tbaa !9
  %3385 = load double, ptr %121, align 8, !tbaa !9
  %3386 = fsub double %3384, %3385
  store double %3386, ptr %136, align 8, !tbaa !9
  %3387 = load double, ptr %135, align 8, !tbaa !9
  %3388 = load double, ptr %136, align 8, !tbaa !9
  %3389 = fsub double %3387, %3388
  store double %3389, ptr %137, align 8, !tbaa !9
  %3390 = load double, ptr %121, align 8, !tbaa !9
  %3391 = load double, ptr %137, align 8, !tbaa !9
  %3392 = fsub double %3390, %3391
  store double %3392, ptr %138, align 8, !tbaa !9
  %3393 = load double, ptr %144, align 8, !tbaa !9
  %3394 = load double, ptr %137, align 8, !tbaa !9
  %3395 = load double, ptr %139, align 8, !tbaa !9
  %3396 = fneg double %3394
  %3397 = call double @llvm.fmuladd.f64(double %3396, double %3395, double %3393)
  store double %3397, ptr %141, align 8, !tbaa !9
  %3398 = load double, ptr %141, align 8, !tbaa !9
  %3399 = load double, ptr %138, align 8, !tbaa !9
  %3400 = load double, ptr %139, align 8, !tbaa !9
  %3401 = fneg double %3399
  %3402 = call double @llvm.fmuladd.f64(double %3401, double %3400, double %3398)
  store double %3402, ptr %142, align 8, !tbaa !9
  %3403 = load double, ptr %142, align 8, !tbaa !9
  %3404 = load double, ptr %137, align 8, !tbaa !9
  %3405 = load double, ptr %140, align 8, !tbaa !9
  %3406 = fneg double %3404
  %3407 = call double @llvm.fmuladd.f64(double %3406, double %3405, double %3403)
  store double %3407, ptr %143, align 8, !tbaa !9
  %3408 = load double, ptr %138, align 8, !tbaa !9
  %3409 = load double, ptr %140, align 8, !tbaa !9
  %3410 = load double, ptr %143, align 8, !tbaa !9
  %3411 = fneg double %3410
  %3412 = call double @llvm.fmuladd.f64(double %3408, double %3409, double %3411)
  %3413 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %3412, ptr %3413, align 16, !tbaa !9
  %3414 = load double, ptr %115, align 8, !tbaa !9
  %3415 = load double, ptr %62, align 8, !tbaa !9
  %3416 = fmul double %3414, %3415
  store double %3416, ptr %145, align 8, !tbaa !9
  %3417 = load double, ptr @splitter, align 8, !tbaa !9
  %3418 = load double, ptr %115, align 8, !tbaa !9
  %3419 = fmul double %3417, %3418
  store double %3419, ptr %135, align 8, !tbaa !9
  %3420 = load double, ptr %135, align 8, !tbaa !9
  %3421 = load double, ptr %115, align 8, !tbaa !9
  %3422 = fsub double %3420, %3421
  store double %3422, ptr %136, align 8, !tbaa !9
  %3423 = load double, ptr %135, align 8, !tbaa !9
  %3424 = load double, ptr %136, align 8, !tbaa !9
  %3425 = fsub double %3423, %3424
  store double %3425, ptr %137, align 8, !tbaa !9
  %3426 = load double, ptr %115, align 8, !tbaa !9
  %3427 = load double, ptr %137, align 8, !tbaa !9
  %3428 = fsub double %3426, %3427
  store double %3428, ptr %138, align 8, !tbaa !9
  %3429 = load double, ptr %145, align 8, !tbaa !9
  %3430 = load double, ptr %137, align 8, !tbaa !9
  %3431 = load double, ptr %139, align 8, !tbaa !9
  %3432 = fneg double %3430
  %3433 = call double @llvm.fmuladd.f64(double %3432, double %3431, double %3429)
  store double %3433, ptr %141, align 8, !tbaa !9
  %3434 = load double, ptr %141, align 8, !tbaa !9
  %3435 = load double, ptr %138, align 8, !tbaa !9
  %3436 = load double, ptr %139, align 8, !tbaa !9
  %3437 = fneg double %3435
  %3438 = call double @llvm.fmuladd.f64(double %3437, double %3436, double %3434)
  store double %3438, ptr %142, align 8, !tbaa !9
  %3439 = load double, ptr %142, align 8, !tbaa !9
  %3440 = load double, ptr %137, align 8, !tbaa !9
  %3441 = load double, ptr %140, align 8, !tbaa !9
  %3442 = fneg double %3440
  %3443 = call double @llvm.fmuladd.f64(double %3442, double %3441, double %3439)
  store double %3443, ptr %143, align 8, !tbaa !9
  %3444 = load double, ptr %138, align 8, !tbaa !9
  %3445 = load double, ptr %140, align 8, !tbaa !9
  %3446 = load double, ptr %143, align 8, !tbaa !9
  %3447 = fneg double %3446
  %3448 = call double @llvm.fmuladd.f64(double %3444, double %3445, double %3447)
  store double %3448, ptr %147, align 8, !tbaa !9
  %3449 = load double, ptr %144, align 8, !tbaa !9
  %3450 = load double, ptr %147, align 8, !tbaa !9
  %3451 = fadd double %3449, %3450
  store double %3451, ptr %146, align 8, !tbaa !9
  %3452 = load double, ptr %146, align 8, !tbaa !9
  %3453 = load double, ptr %144, align 8, !tbaa !9
  %3454 = fsub double %3452, %3453
  store double %3454, ptr %131, align 8, !tbaa !9
  %3455 = load double, ptr %146, align 8, !tbaa !9
  %3456 = load double, ptr %131, align 8, !tbaa !9
  %3457 = fsub double %3455, %3456
  store double %3457, ptr %132, align 8, !tbaa !9
  %3458 = load double, ptr %147, align 8, !tbaa !9
  %3459 = load double, ptr %131, align 8, !tbaa !9
  %3460 = fsub double %3458, %3459
  store double %3460, ptr %133, align 8, !tbaa !9
  %3461 = load double, ptr %144, align 8, !tbaa !9
  %3462 = load double, ptr %132, align 8, !tbaa !9
  %3463 = fsub double %3461, %3462
  store double %3463, ptr %134, align 8, !tbaa !9
  %3464 = load double, ptr %134, align 8, !tbaa !9
  %3465 = load double, ptr %133, align 8, !tbaa !9
  %3466 = fadd double %3464, %3465
  %3467 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %3466, ptr %3467, align 8, !tbaa !9
  %3468 = load double, ptr %145, align 8, !tbaa !9
  %3469 = load double, ptr %146, align 8, !tbaa !9
  %3470 = fadd double %3468, %3469
  store double %3470, ptr %127, align 8, !tbaa !9
  %3471 = load double, ptr %127, align 8, !tbaa !9
  %3472 = load double, ptr %145, align 8, !tbaa !9
  %3473 = fsub double %3471, %3472
  store double %3473, ptr %131, align 8, !tbaa !9
  %3474 = load double, ptr %146, align 8, !tbaa !9
  %3475 = load double, ptr %131, align 8, !tbaa !9
  %3476 = fsub double %3474, %3475
  %3477 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %3476, ptr %3477, align 16, !tbaa !9
  %3478 = load double, ptr %127, align 8, !tbaa !9
  %3479 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %3478, ptr %3479, align 8, !tbaa !9
  %3480 = load i32, ptr %54, align 4, !tbaa !11
  %3481 = load ptr, ptr %49, align 8, !tbaa !5
  %3482 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %3483 = load ptr, ptr %50, align 8, !tbaa !5
  %3484 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %3480, ptr noundef %3481, i32 noundef 4, ptr noundef %3482, ptr noundef %3483)
  store i32 %3484, ptr %54, align 4, !tbaa !11
  %3485 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %3485, ptr %51, align 8, !tbaa !5
  %3486 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %3486, ptr %49, align 8, !tbaa !5
  %3487 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %3487, ptr %50, align 8, !tbaa !5
  br label %3488

3488:                                             ; preds = %3365, %3191
  br label %3489

3489:                                             ; preds = %3488, %3188
  br label %3490

3490:                                             ; preds = %3489, %2886
  %3491 = load double, ptr %56, align 8, !tbaa !9
  %3492 = fcmp une double %3491, 0.000000e+00
  br i1 %3492, label %3493, label %4094

3493:                                             ; preds = %3490
  %3494 = load double, ptr %60, align 8, !tbaa !9
  %3495 = fcmp une double %3494, 0.000000e+00
  br i1 %3495, label %3496, label %3792

3496:                                             ; preds = %3493
  %3497 = load double, ptr %56, align 8, !tbaa !9
  %3498 = load double, ptr %60, align 8, !tbaa !9
  %3499 = fmul double %3497, %3498
  store double %3499, ptr %112, align 8, !tbaa !9
  %3500 = load double, ptr @splitter, align 8, !tbaa !9
  %3501 = load double, ptr %56, align 8, !tbaa !9
  %3502 = fmul double %3500, %3501
  store double %3502, ptr %135, align 8, !tbaa !9
  %3503 = load double, ptr %135, align 8, !tbaa !9
  %3504 = load double, ptr %56, align 8, !tbaa !9
  %3505 = fsub double %3503, %3504
  store double %3505, ptr %136, align 8, !tbaa !9
  %3506 = load double, ptr %135, align 8, !tbaa !9
  %3507 = load double, ptr %136, align 8, !tbaa !9
  %3508 = fsub double %3506, %3507
  store double %3508, ptr %137, align 8, !tbaa !9
  %3509 = load double, ptr %56, align 8, !tbaa !9
  %3510 = load double, ptr %137, align 8, !tbaa !9
  %3511 = fsub double %3509, %3510
  store double %3511, ptr %138, align 8, !tbaa !9
  %3512 = load double, ptr @splitter, align 8, !tbaa !9
  %3513 = load double, ptr %60, align 8, !tbaa !9
  %3514 = fmul double %3512, %3513
  store double %3514, ptr %135, align 8, !tbaa !9
  %3515 = load double, ptr %135, align 8, !tbaa !9
  %3516 = load double, ptr %60, align 8, !tbaa !9
  %3517 = fsub double %3515, %3516
  store double %3517, ptr %136, align 8, !tbaa !9
  %3518 = load double, ptr %135, align 8, !tbaa !9
  %3519 = load double, ptr %136, align 8, !tbaa !9
  %3520 = fsub double %3518, %3519
  store double %3520, ptr %139, align 8, !tbaa !9
  %3521 = load double, ptr %60, align 8, !tbaa !9
  %3522 = load double, ptr %139, align 8, !tbaa !9
  %3523 = fsub double %3521, %3522
  store double %3523, ptr %140, align 8, !tbaa !9
  %3524 = load double, ptr %112, align 8, !tbaa !9
  %3525 = load double, ptr %137, align 8, !tbaa !9
  %3526 = load double, ptr %139, align 8, !tbaa !9
  %3527 = fneg double %3525
  %3528 = call double @llvm.fmuladd.f64(double %3527, double %3526, double %3524)
  store double %3528, ptr %141, align 8, !tbaa !9
  %3529 = load double, ptr %141, align 8, !tbaa !9
  %3530 = load double, ptr %138, align 8, !tbaa !9
  %3531 = load double, ptr %139, align 8, !tbaa !9
  %3532 = fneg double %3530
  %3533 = call double @llvm.fmuladd.f64(double %3532, double %3531, double %3529)
  store double %3533, ptr %142, align 8, !tbaa !9
  %3534 = load double, ptr %142, align 8, !tbaa !9
  %3535 = load double, ptr %137, align 8, !tbaa !9
  %3536 = load double, ptr %140, align 8, !tbaa !9
  %3537 = fneg double %3535
  %3538 = call double @llvm.fmuladd.f64(double %3537, double %3536, double %3534)
  store double %3538, ptr %143, align 8, !tbaa !9
  %3539 = load double, ptr %138, align 8, !tbaa !9
  %3540 = load double, ptr %140, align 8, !tbaa !9
  %3541 = load double, ptr %143, align 8, !tbaa !9
  %3542 = fneg double %3541
  %3543 = call double @llvm.fmuladd.f64(double %3539, double %3540, double %3542)
  store double %3543, ptr %118, align 8, !tbaa !9
  %3544 = load double, ptr @splitter, align 8, !tbaa !9
  %3545 = load double, ptr %18, align 8, !tbaa !9
  %3546 = fmul double %3544, %3545
  store double %3546, ptr %135, align 8, !tbaa !9
  %3547 = load double, ptr %135, align 8, !tbaa !9
  %3548 = load double, ptr %18, align 8, !tbaa !9
  %3549 = fsub double %3547, %3548
  store double %3549, ptr %136, align 8, !tbaa !9
  %3550 = load double, ptr %135, align 8, !tbaa !9
  %3551 = load double, ptr %136, align 8, !tbaa !9
  %3552 = fsub double %3550, %3551
  store double %3552, ptr %139, align 8, !tbaa !9
  %3553 = load double, ptr %18, align 8, !tbaa !9
  %3554 = load double, ptr %139, align 8, !tbaa !9
  %3555 = fsub double %3553, %3554
  store double %3555, ptr %140, align 8, !tbaa !9
  %3556 = load double, ptr %118, align 8, !tbaa !9
  %3557 = load double, ptr %18, align 8, !tbaa !9
  %3558 = fmul double %3556, %3557
  store double %3558, ptr %144, align 8, !tbaa !9
  %3559 = load double, ptr @splitter, align 8, !tbaa !9
  %3560 = load double, ptr %118, align 8, !tbaa !9
  %3561 = fmul double %3559, %3560
  store double %3561, ptr %135, align 8, !tbaa !9
  %3562 = load double, ptr %135, align 8, !tbaa !9
  %3563 = load double, ptr %118, align 8, !tbaa !9
  %3564 = fsub double %3562, %3563
  store double %3564, ptr %136, align 8, !tbaa !9
  %3565 = load double, ptr %135, align 8, !tbaa !9
  %3566 = load double, ptr %136, align 8, !tbaa !9
  %3567 = fsub double %3565, %3566
  store double %3567, ptr %137, align 8, !tbaa !9
  %3568 = load double, ptr %118, align 8, !tbaa !9
  %3569 = load double, ptr %137, align 8, !tbaa !9
  %3570 = fsub double %3568, %3569
  store double %3570, ptr %138, align 8, !tbaa !9
  %3571 = load double, ptr %144, align 8, !tbaa !9
  %3572 = load double, ptr %137, align 8, !tbaa !9
  %3573 = load double, ptr %139, align 8, !tbaa !9
  %3574 = fneg double %3572
  %3575 = call double @llvm.fmuladd.f64(double %3574, double %3573, double %3571)
  store double %3575, ptr %141, align 8, !tbaa !9
  %3576 = load double, ptr %141, align 8, !tbaa !9
  %3577 = load double, ptr %138, align 8, !tbaa !9
  %3578 = load double, ptr %139, align 8, !tbaa !9
  %3579 = fneg double %3577
  %3580 = call double @llvm.fmuladd.f64(double %3579, double %3578, double %3576)
  store double %3580, ptr %142, align 8, !tbaa !9
  %3581 = load double, ptr %142, align 8, !tbaa !9
  %3582 = load double, ptr %137, align 8, !tbaa !9
  %3583 = load double, ptr %140, align 8, !tbaa !9
  %3584 = fneg double %3582
  %3585 = call double @llvm.fmuladd.f64(double %3584, double %3583, double %3581)
  store double %3585, ptr %143, align 8, !tbaa !9
  %3586 = load double, ptr %138, align 8, !tbaa !9
  %3587 = load double, ptr %140, align 8, !tbaa !9
  %3588 = load double, ptr %143, align 8, !tbaa !9
  %3589 = fneg double %3588
  %3590 = call double @llvm.fmuladd.f64(double %3586, double %3587, double %3589)
  %3591 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %3590, ptr %3591, align 16, !tbaa !9
  %3592 = load double, ptr %112, align 8, !tbaa !9
  %3593 = load double, ptr %18, align 8, !tbaa !9
  %3594 = fmul double %3592, %3593
  store double %3594, ptr %145, align 8, !tbaa !9
  %3595 = load double, ptr @splitter, align 8, !tbaa !9
  %3596 = load double, ptr %112, align 8, !tbaa !9
  %3597 = fmul double %3595, %3596
  store double %3597, ptr %135, align 8, !tbaa !9
  %3598 = load double, ptr %135, align 8, !tbaa !9
  %3599 = load double, ptr %112, align 8, !tbaa !9
  %3600 = fsub double %3598, %3599
  store double %3600, ptr %136, align 8, !tbaa !9
  %3601 = load double, ptr %135, align 8, !tbaa !9
  %3602 = load double, ptr %136, align 8, !tbaa !9
  %3603 = fsub double %3601, %3602
  store double %3603, ptr %137, align 8, !tbaa !9
  %3604 = load double, ptr %112, align 8, !tbaa !9
  %3605 = load double, ptr %137, align 8, !tbaa !9
  %3606 = fsub double %3604, %3605
  store double %3606, ptr %138, align 8, !tbaa !9
  %3607 = load double, ptr %145, align 8, !tbaa !9
  %3608 = load double, ptr %137, align 8, !tbaa !9
  %3609 = load double, ptr %139, align 8, !tbaa !9
  %3610 = fneg double %3608
  %3611 = call double @llvm.fmuladd.f64(double %3610, double %3609, double %3607)
  store double %3611, ptr %141, align 8, !tbaa !9
  %3612 = load double, ptr %141, align 8, !tbaa !9
  %3613 = load double, ptr %138, align 8, !tbaa !9
  %3614 = load double, ptr %139, align 8, !tbaa !9
  %3615 = fneg double %3613
  %3616 = call double @llvm.fmuladd.f64(double %3615, double %3614, double %3612)
  store double %3616, ptr %142, align 8, !tbaa !9
  %3617 = load double, ptr %142, align 8, !tbaa !9
  %3618 = load double, ptr %137, align 8, !tbaa !9
  %3619 = load double, ptr %140, align 8, !tbaa !9
  %3620 = fneg double %3618
  %3621 = call double @llvm.fmuladd.f64(double %3620, double %3619, double %3617)
  store double %3621, ptr %143, align 8, !tbaa !9
  %3622 = load double, ptr %138, align 8, !tbaa !9
  %3623 = load double, ptr %140, align 8, !tbaa !9
  %3624 = load double, ptr %143, align 8, !tbaa !9
  %3625 = fneg double %3624
  %3626 = call double @llvm.fmuladd.f64(double %3622, double %3623, double %3625)
  store double %3626, ptr %147, align 8, !tbaa !9
  %3627 = load double, ptr %144, align 8, !tbaa !9
  %3628 = load double, ptr %147, align 8, !tbaa !9
  %3629 = fadd double %3627, %3628
  store double %3629, ptr %146, align 8, !tbaa !9
  %3630 = load double, ptr %146, align 8, !tbaa !9
  %3631 = load double, ptr %144, align 8, !tbaa !9
  %3632 = fsub double %3630, %3631
  store double %3632, ptr %131, align 8, !tbaa !9
  %3633 = load double, ptr %146, align 8, !tbaa !9
  %3634 = load double, ptr %131, align 8, !tbaa !9
  %3635 = fsub double %3633, %3634
  store double %3635, ptr %132, align 8, !tbaa !9
  %3636 = load double, ptr %147, align 8, !tbaa !9
  %3637 = load double, ptr %131, align 8, !tbaa !9
  %3638 = fsub double %3636, %3637
  store double %3638, ptr %133, align 8, !tbaa !9
  %3639 = load double, ptr %144, align 8, !tbaa !9
  %3640 = load double, ptr %132, align 8, !tbaa !9
  %3641 = fsub double %3639, %3640
  store double %3641, ptr %134, align 8, !tbaa !9
  %3642 = load double, ptr %134, align 8, !tbaa !9
  %3643 = load double, ptr %133, align 8, !tbaa !9
  %3644 = fadd double %3642, %3643
  %3645 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %3644, ptr %3645, align 8, !tbaa !9
  %3646 = load double, ptr %145, align 8, !tbaa !9
  %3647 = load double, ptr %146, align 8, !tbaa !9
  %3648 = fadd double %3646, %3647
  store double %3648, ptr %127, align 8, !tbaa !9
  %3649 = load double, ptr %127, align 8, !tbaa !9
  %3650 = load double, ptr %145, align 8, !tbaa !9
  %3651 = fsub double %3649, %3650
  store double %3651, ptr %131, align 8, !tbaa !9
  %3652 = load double, ptr %146, align 8, !tbaa !9
  %3653 = load double, ptr %131, align 8, !tbaa !9
  %3654 = fsub double %3652, %3653
  %3655 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %3654, ptr %3655, align 16, !tbaa !9
  %3656 = load double, ptr %127, align 8, !tbaa !9
  %3657 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %3656, ptr %3657, align 8, !tbaa !9
  %3658 = load i32, ptr %54, align 4, !tbaa !11
  %3659 = load ptr, ptr %49, align 8, !tbaa !5
  %3660 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %3661 = load ptr, ptr %50, align 8, !tbaa !5
  %3662 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %3658, ptr noundef %3659, i32 noundef 4, ptr noundef %3660, ptr noundef %3661)
  store i32 %3662, ptr %54, align 4, !tbaa !11
  %3663 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %3663, ptr %51, align 8, !tbaa !5
  %3664 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %3664, ptr %49, align 8, !tbaa !5
  %3665 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %3665, ptr %50, align 8, !tbaa !5
  %3666 = load double, ptr %61, align 8, !tbaa !9
  %3667 = fcmp une double %3666, 0.000000e+00
  br i1 %3667, label %3668, label %3791

3668:                                             ; preds = %3496
  %3669 = load double, ptr @splitter, align 8, !tbaa !9
  %3670 = load double, ptr %61, align 8, !tbaa !9
  %3671 = fmul double %3669, %3670
  store double %3671, ptr %135, align 8, !tbaa !9
  %3672 = load double, ptr %135, align 8, !tbaa !9
  %3673 = load double, ptr %61, align 8, !tbaa !9
  %3674 = fsub double %3672, %3673
  store double %3674, ptr %136, align 8, !tbaa !9
  %3675 = load double, ptr %135, align 8, !tbaa !9
  %3676 = load double, ptr %136, align 8, !tbaa !9
  %3677 = fsub double %3675, %3676
  store double %3677, ptr %139, align 8, !tbaa !9
  %3678 = load double, ptr %61, align 8, !tbaa !9
  %3679 = load double, ptr %139, align 8, !tbaa !9
  %3680 = fsub double %3678, %3679
  store double %3680, ptr %140, align 8, !tbaa !9
  %3681 = load double, ptr %118, align 8, !tbaa !9
  %3682 = load double, ptr %61, align 8, !tbaa !9
  %3683 = fmul double %3681, %3682
  store double %3683, ptr %144, align 8, !tbaa !9
  %3684 = load double, ptr @splitter, align 8, !tbaa !9
  %3685 = load double, ptr %118, align 8, !tbaa !9
  %3686 = fmul double %3684, %3685
  store double %3686, ptr %135, align 8, !tbaa !9
  %3687 = load double, ptr %135, align 8, !tbaa !9
  %3688 = load double, ptr %118, align 8, !tbaa !9
  %3689 = fsub double %3687, %3688
  store double %3689, ptr %136, align 8, !tbaa !9
  %3690 = load double, ptr %135, align 8, !tbaa !9
  %3691 = load double, ptr %136, align 8, !tbaa !9
  %3692 = fsub double %3690, %3691
  store double %3692, ptr %137, align 8, !tbaa !9
  %3693 = load double, ptr %118, align 8, !tbaa !9
  %3694 = load double, ptr %137, align 8, !tbaa !9
  %3695 = fsub double %3693, %3694
  store double %3695, ptr %138, align 8, !tbaa !9
  %3696 = load double, ptr %144, align 8, !tbaa !9
  %3697 = load double, ptr %137, align 8, !tbaa !9
  %3698 = load double, ptr %139, align 8, !tbaa !9
  %3699 = fneg double %3697
  %3700 = call double @llvm.fmuladd.f64(double %3699, double %3698, double %3696)
  store double %3700, ptr %141, align 8, !tbaa !9
  %3701 = load double, ptr %141, align 8, !tbaa !9
  %3702 = load double, ptr %138, align 8, !tbaa !9
  %3703 = load double, ptr %139, align 8, !tbaa !9
  %3704 = fneg double %3702
  %3705 = call double @llvm.fmuladd.f64(double %3704, double %3703, double %3701)
  store double %3705, ptr %142, align 8, !tbaa !9
  %3706 = load double, ptr %142, align 8, !tbaa !9
  %3707 = load double, ptr %137, align 8, !tbaa !9
  %3708 = load double, ptr %140, align 8, !tbaa !9
  %3709 = fneg double %3707
  %3710 = call double @llvm.fmuladd.f64(double %3709, double %3708, double %3706)
  store double %3710, ptr %143, align 8, !tbaa !9
  %3711 = load double, ptr %138, align 8, !tbaa !9
  %3712 = load double, ptr %140, align 8, !tbaa !9
  %3713 = load double, ptr %143, align 8, !tbaa !9
  %3714 = fneg double %3713
  %3715 = call double @llvm.fmuladd.f64(double %3711, double %3712, double %3714)
  %3716 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %3715, ptr %3716, align 16, !tbaa !9
  %3717 = load double, ptr %112, align 8, !tbaa !9
  %3718 = load double, ptr %61, align 8, !tbaa !9
  %3719 = fmul double %3717, %3718
  store double %3719, ptr %145, align 8, !tbaa !9
  %3720 = load double, ptr @splitter, align 8, !tbaa !9
  %3721 = load double, ptr %112, align 8, !tbaa !9
  %3722 = fmul double %3720, %3721
  store double %3722, ptr %135, align 8, !tbaa !9
  %3723 = load double, ptr %135, align 8, !tbaa !9
  %3724 = load double, ptr %112, align 8, !tbaa !9
  %3725 = fsub double %3723, %3724
  store double %3725, ptr %136, align 8, !tbaa !9
  %3726 = load double, ptr %135, align 8, !tbaa !9
  %3727 = load double, ptr %136, align 8, !tbaa !9
  %3728 = fsub double %3726, %3727
  store double %3728, ptr %137, align 8, !tbaa !9
  %3729 = load double, ptr %112, align 8, !tbaa !9
  %3730 = load double, ptr %137, align 8, !tbaa !9
  %3731 = fsub double %3729, %3730
  store double %3731, ptr %138, align 8, !tbaa !9
  %3732 = load double, ptr %145, align 8, !tbaa !9
  %3733 = load double, ptr %137, align 8, !tbaa !9
  %3734 = load double, ptr %139, align 8, !tbaa !9
  %3735 = fneg double %3733
  %3736 = call double @llvm.fmuladd.f64(double %3735, double %3734, double %3732)
  store double %3736, ptr %141, align 8, !tbaa !9
  %3737 = load double, ptr %141, align 8, !tbaa !9
  %3738 = load double, ptr %138, align 8, !tbaa !9
  %3739 = load double, ptr %139, align 8, !tbaa !9
  %3740 = fneg double %3738
  %3741 = call double @llvm.fmuladd.f64(double %3740, double %3739, double %3737)
  store double %3741, ptr %142, align 8, !tbaa !9
  %3742 = load double, ptr %142, align 8, !tbaa !9
  %3743 = load double, ptr %137, align 8, !tbaa !9
  %3744 = load double, ptr %140, align 8, !tbaa !9
  %3745 = fneg double %3743
  %3746 = call double @llvm.fmuladd.f64(double %3745, double %3744, double %3742)
  store double %3746, ptr %143, align 8, !tbaa !9
  %3747 = load double, ptr %138, align 8, !tbaa !9
  %3748 = load double, ptr %140, align 8, !tbaa !9
  %3749 = load double, ptr %143, align 8, !tbaa !9
  %3750 = fneg double %3749
  %3751 = call double @llvm.fmuladd.f64(double %3747, double %3748, double %3750)
  store double %3751, ptr %147, align 8, !tbaa !9
  %3752 = load double, ptr %144, align 8, !tbaa !9
  %3753 = load double, ptr %147, align 8, !tbaa !9
  %3754 = fadd double %3752, %3753
  store double %3754, ptr %146, align 8, !tbaa !9
  %3755 = load double, ptr %146, align 8, !tbaa !9
  %3756 = load double, ptr %144, align 8, !tbaa !9
  %3757 = fsub double %3755, %3756
  store double %3757, ptr %131, align 8, !tbaa !9
  %3758 = load double, ptr %146, align 8, !tbaa !9
  %3759 = load double, ptr %131, align 8, !tbaa !9
  %3760 = fsub double %3758, %3759
  store double %3760, ptr %132, align 8, !tbaa !9
  %3761 = load double, ptr %147, align 8, !tbaa !9
  %3762 = load double, ptr %131, align 8, !tbaa !9
  %3763 = fsub double %3761, %3762
  store double %3763, ptr %133, align 8, !tbaa !9
  %3764 = load double, ptr %144, align 8, !tbaa !9
  %3765 = load double, ptr %132, align 8, !tbaa !9
  %3766 = fsub double %3764, %3765
  store double %3766, ptr %134, align 8, !tbaa !9
  %3767 = load double, ptr %134, align 8, !tbaa !9
  %3768 = load double, ptr %133, align 8, !tbaa !9
  %3769 = fadd double %3767, %3768
  %3770 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %3769, ptr %3770, align 8, !tbaa !9
  %3771 = load double, ptr %145, align 8, !tbaa !9
  %3772 = load double, ptr %146, align 8, !tbaa !9
  %3773 = fadd double %3771, %3772
  store double %3773, ptr %127, align 8, !tbaa !9
  %3774 = load double, ptr %127, align 8, !tbaa !9
  %3775 = load double, ptr %145, align 8, !tbaa !9
  %3776 = fsub double %3774, %3775
  store double %3776, ptr %131, align 8, !tbaa !9
  %3777 = load double, ptr %146, align 8, !tbaa !9
  %3778 = load double, ptr %131, align 8, !tbaa !9
  %3779 = fsub double %3777, %3778
  %3780 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %3779, ptr %3780, align 16, !tbaa !9
  %3781 = load double, ptr %127, align 8, !tbaa !9
  %3782 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %3781, ptr %3782, align 8, !tbaa !9
  %3783 = load i32, ptr %54, align 4, !tbaa !11
  %3784 = load ptr, ptr %49, align 8, !tbaa !5
  %3785 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %3786 = load ptr, ptr %50, align 8, !tbaa !5
  %3787 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %3783, ptr noundef %3784, i32 noundef 4, ptr noundef %3785, ptr noundef %3786)
  store i32 %3787, ptr %54, align 4, !tbaa !11
  %3788 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %3788, ptr %51, align 8, !tbaa !5
  %3789 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %3789, ptr %49, align 8, !tbaa !5
  %3790 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %3790, ptr %50, align 8, !tbaa !5
  br label %3791

3791:                                             ; preds = %3668, %3496
  br label %3792

3792:                                             ; preds = %3791, %3493
  %3793 = load double, ptr %58, align 8, !tbaa !9
  %3794 = fcmp une double %3793, 0.000000e+00
  br i1 %3794, label %3795, label %4093

3795:                                             ; preds = %3792
  %3796 = load double, ptr %56, align 8, !tbaa !9
  %3797 = fneg double %3796
  store double %3797, ptr %130, align 8, !tbaa !9
  %3798 = load double, ptr %130, align 8, !tbaa !9
  %3799 = load double, ptr %58, align 8, !tbaa !9
  %3800 = fmul double %3798, %3799
  store double %3800, ptr %117, align 8, !tbaa !9
  %3801 = load double, ptr @splitter, align 8, !tbaa !9
  %3802 = load double, ptr %130, align 8, !tbaa !9
  %3803 = fmul double %3801, %3802
  store double %3803, ptr %135, align 8, !tbaa !9
  %3804 = load double, ptr %135, align 8, !tbaa !9
  %3805 = load double, ptr %130, align 8, !tbaa !9
  %3806 = fsub double %3804, %3805
  store double %3806, ptr %136, align 8, !tbaa !9
  %3807 = load double, ptr %135, align 8, !tbaa !9
  %3808 = load double, ptr %136, align 8, !tbaa !9
  %3809 = fsub double %3807, %3808
  store double %3809, ptr %137, align 8, !tbaa !9
  %3810 = load double, ptr %130, align 8, !tbaa !9
  %3811 = load double, ptr %137, align 8, !tbaa !9
  %3812 = fsub double %3810, %3811
  store double %3812, ptr %138, align 8, !tbaa !9
  %3813 = load double, ptr @splitter, align 8, !tbaa !9
  %3814 = load double, ptr %58, align 8, !tbaa !9
  %3815 = fmul double %3813, %3814
  store double %3815, ptr %135, align 8, !tbaa !9
  %3816 = load double, ptr %135, align 8, !tbaa !9
  %3817 = load double, ptr %58, align 8, !tbaa !9
  %3818 = fsub double %3816, %3817
  store double %3818, ptr %136, align 8, !tbaa !9
  %3819 = load double, ptr %135, align 8, !tbaa !9
  %3820 = load double, ptr %136, align 8, !tbaa !9
  %3821 = fsub double %3819, %3820
  store double %3821, ptr %139, align 8, !tbaa !9
  %3822 = load double, ptr %58, align 8, !tbaa !9
  %3823 = load double, ptr %139, align 8, !tbaa !9
  %3824 = fsub double %3822, %3823
  store double %3824, ptr %140, align 8, !tbaa !9
  %3825 = load double, ptr %117, align 8, !tbaa !9
  %3826 = load double, ptr %137, align 8, !tbaa !9
  %3827 = load double, ptr %139, align 8, !tbaa !9
  %3828 = fneg double %3826
  %3829 = call double @llvm.fmuladd.f64(double %3828, double %3827, double %3825)
  store double %3829, ptr %141, align 8, !tbaa !9
  %3830 = load double, ptr %141, align 8, !tbaa !9
  %3831 = load double, ptr %138, align 8, !tbaa !9
  %3832 = load double, ptr %139, align 8, !tbaa !9
  %3833 = fneg double %3831
  %3834 = call double @llvm.fmuladd.f64(double %3833, double %3832, double %3830)
  store double %3834, ptr %142, align 8, !tbaa !9
  %3835 = load double, ptr %142, align 8, !tbaa !9
  %3836 = load double, ptr %137, align 8, !tbaa !9
  %3837 = load double, ptr %140, align 8, !tbaa !9
  %3838 = fneg double %3836
  %3839 = call double @llvm.fmuladd.f64(double %3838, double %3837, double %3835)
  store double %3839, ptr %143, align 8, !tbaa !9
  %3840 = load double, ptr %138, align 8, !tbaa !9
  %3841 = load double, ptr %140, align 8, !tbaa !9
  %3842 = load double, ptr %143, align 8, !tbaa !9
  %3843 = fneg double %3842
  %3844 = call double @llvm.fmuladd.f64(double %3840, double %3841, double %3843)
  store double %3844, ptr %123, align 8, !tbaa !9
  %3845 = load double, ptr @splitter, align 8, !tbaa !9
  %3846 = load double, ptr %20, align 8, !tbaa !9
  %3847 = fmul double %3845, %3846
  store double %3847, ptr %135, align 8, !tbaa !9
  %3848 = load double, ptr %135, align 8, !tbaa !9
  %3849 = load double, ptr %20, align 8, !tbaa !9
  %3850 = fsub double %3848, %3849
  store double %3850, ptr %136, align 8, !tbaa !9
  %3851 = load double, ptr %135, align 8, !tbaa !9
  %3852 = load double, ptr %136, align 8, !tbaa !9
  %3853 = fsub double %3851, %3852
  store double %3853, ptr %139, align 8, !tbaa !9
  %3854 = load double, ptr %20, align 8, !tbaa !9
  %3855 = load double, ptr %139, align 8, !tbaa !9
  %3856 = fsub double %3854, %3855
  store double %3856, ptr %140, align 8, !tbaa !9
  %3857 = load double, ptr %123, align 8, !tbaa !9
  %3858 = load double, ptr %20, align 8, !tbaa !9
  %3859 = fmul double %3857, %3858
  store double %3859, ptr %144, align 8, !tbaa !9
  %3860 = load double, ptr @splitter, align 8, !tbaa !9
  %3861 = load double, ptr %123, align 8, !tbaa !9
  %3862 = fmul double %3860, %3861
  store double %3862, ptr %135, align 8, !tbaa !9
  %3863 = load double, ptr %135, align 8, !tbaa !9
  %3864 = load double, ptr %123, align 8, !tbaa !9
  %3865 = fsub double %3863, %3864
  store double %3865, ptr %136, align 8, !tbaa !9
  %3866 = load double, ptr %135, align 8, !tbaa !9
  %3867 = load double, ptr %136, align 8, !tbaa !9
  %3868 = fsub double %3866, %3867
  store double %3868, ptr %137, align 8, !tbaa !9
  %3869 = load double, ptr %123, align 8, !tbaa !9
  %3870 = load double, ptr %137, align 8, !tbaa !9
  %3871 = fsub double %3869, %3870
  store double %3871, ptr %138, align 8, !tbaa !9
  %3872 = load double, ptr %144, align 8, !tbaa !9
  %3873 = load double, ptr %137, align 8, !tbaa !9
  %3874 = load double, ptr %139, align 8, !tbaa !9
  %3875 = fneg double %3873
  %3876 = call double @llvm.fmuladd.f64(double %3875, double %3874, double %3872)
  store double %3876, ptr %141, align 8, !tbaa !9
  %3877 = load double, ptr %141, align 8, !tbaa !9
  %3878 = load double, ptr %138, align 8, !tbaa !9
  %3879 = load double, ptr %139, align 8, !tbaa !9
  %3880 = fneg double %3878
  %3881 = call double @llvm.fmuladd.f64(double %3880, double %3879, double %3877)
  store double %3881, ptr %142, align 8, !tbaa !9
  %3882 = load double, ptr %142, align 8, !tbaa !9
  %3883 = load double, ptr %137, align 8, !tbaa !9
  %3884 = load double, ptr %140, align 8, !tbaa !9
  %3885 = fneg double %3883
  %3886 = call double @llvm.fmuladd.f64(double %3885, double %3884, double %3882)
  store double %3886, ptr %143, align 8, !tbaa !9
  %3887 = load double, ptr %138, align 8, !tbaa !9
  %3888 = load double, ptr %140, align 8, !tbaa !9
  %3889 = load double, ptr %143, align 8, !tbaa !9
  %3890 = fneg double %3889
  %3891 = call double @llvm.fmuladd.f64(double %3887, double %3888, double %3890)
  %3892 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %3891, ptr %3892, align 16, !tbaa !9
  %3893 = load double, ptr %117, align 8, !tbaa !9
  %3894 = load double, ptr %20, align 8, !tbaa !9
  %3895 = fmul double %3893, %3894
  store double %3895, ptr %145, align 8, !tbaa !9
  %3896 = load double, ptr @splitter, align 8, !tbaa !9
  %3897 = load double, ptr %117, align 8, !tbaa !9
  %3898 = fmul double %3896, %3897
  store double %3898, ptr %135, align 8, !tbaa !9
  %3899 = load double, ptr %135, align 8, !tbaa !9
  %3900 = load double, ptr %117, align 8, !tbaa !9
  %3901 = fsub double %3899, %3900
  store double %3901, ptr %136, align 8, !tbaa !9
  %3902 = load double, ptr %135, align 8, !tbaa !9
  %3903 = load double, ptr %136, align 8, !tbaa !9
  %3904 = fsub double %3902, %3903
  store double %3904, ptr %137, align 8, !tbaa !9
  %3905 = load double, ptr %117, align 8, !tbaa !9
  %3906 = load double, ptr %137, align 8, !tbaa !9
  %3907 = fsub double %3905, %3906
  store double %3907, ptr %138, align 8, !tbaa !9
  %3908 = load double, ptr %145, align 8, !tbaa !9
  %3909 = load double, ptr %137, align 8, !tbaa !9
  %3910 = load double, ptr %139, align 8, !tbaa !9
  %3911 = fneg double %3909
  %3912 = call double @llvm.fmuladd.f64(double %3911, double %3910, double %3908)
  store double %3912, ptr %141, align 8, !tbaa !9
  %3913 = load double, ptr %141, align 8, !tbaa !9
  %3914 = load double, ptr %138, align 8, !tbaa !9
  %3915 = load double, ptr %139, align 8, !tbaa !9
  %3916 = fneg double %3914
  %3917 = call double @llvm.fmuladd.f64(double %3916, double %3915, double %3913)
  store double %3917, ptr %142, align 8, !tbaa !9
  %3918 = load double, ptr %142, align 8, !tbaa !9
  %3919 = load double, ptr %137, align 8, !tbaa !9
  %3920 = load double, ptr %140, align 8, !tbaa !9
  %3921 = fneg double %3919
  %3922 = call double @llvm.fmuladd.f64(double %3921, double %3920, double %3918)
  store double %3922, ptr %143, align 8, !tbaa !9
  %3923 = load double, ptr %138, align 8, !tbaa !9
  %3924 = load double, ptr %140, align 8, !tbaa !9
  %3925 = load double, ptr %143, align 8, !tbaa !9
  %3926 = fneg double %3925
  %3927 = call double @llvm.fmuladd.f64(double %3923, double %3924, double %3926)
  store double %3927, ptr %147, align 8, !tbaa !9
  %3928 = load double, ptr %144, align 8, !tbaa !9
  %3929 = load double, ptr %147, align 8, !tbaa !9
  %3930 = fadd double %3928, %3929
  store double %3930, ptr %146, align 8, !tbaa !9
  %3931 = load double, ptr %146, align 8, !tbaa !9
  %3932 = load double, ptr %144, align 8, !tbaa !9
  %3933 = fsub double %3931, %3932
  store double %3933, ptr %131, align 8, !tbaa !9
  %3934 = load double, ptr %146, align 8, !tbaa !9
  %3935 = load double, ptr %131, align 8, !tbaa !9
  %3936 = fsub double %3934, %3935
  store double %3936, ptr %132, align 8, !tbaa !9
  %3937 = load double, ptr %147, align 8, !tbaa !9
  %3938 = load double, ptr %131, align 8, !tbaa !9
  %3939 = fsub double %3937, %3938
  store double %3939, ptr %133, align 8, !tbaa !9
  %3940 = load double, ptr %144, align 8, !tbaa !9
  %3941 = load double, ptr %132, align 8, !tbaa !9
  %3942 = fsub double %3940, %3941
  store double %3942, ptr %134, align 8, !tbaa !9
  %3943 = load double, ptr %134, align 8, !tbaa !9
  %3944 = load double, ptr %133, align 8, !tbaa !9
  %3945 = fadd double %3943, %3944
  %3946 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %3945, ptr %3946, align 8, !tbaa !9
  %3947 = load double, ptr %145, align 8, !tbaa !9
  %3948 = load double, ptr %146, align 8, !tbaa !9
  %3949 = fadd double %3947, %3948
  store double %3949, ptr %127, align 8, !tbaa !9
  %3950 = load double, ptr %127, align 8, !tbaa !9
  %3951 = load double, ptr %145, align 8, !tbaa !9
  %3952 = fsub double %3950, %3951
  store double %3952, ptr %131, align 8, !tbaa !9
  %3953 = load double, ptr %146, align 8, !tbaa !9
  %3954 = load double, ptr %131, align 8, !tbaa !9
  %3955 = fsub double %3953, %3954
  %3956 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %3955, ptr %3956, align 16, !tbaa !9
  %3957 = load double, ptr %127, align 8, !tbaa !9
  %3958 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %3957, ptr %3958, align 8, !tbaa !9
  %3959 = load i32, ptr %54, align 4, !tbaa !11
  %3960 = load ptr, ptr %49, align 8, !tbaa !5
  %3961 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %3962 = load ptr, ptr %50, align 8, !tbaa !5
  %3963 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %3959, ptr noundef %3960, i32 noundef 4, ptr noundef %3961, ptr noundef %3962)
  store i32 %3963, ptr %54, align 4, !tbaa !11
  %3964 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %3964, ptr %51, align 8, !tbaa !5
  %3965 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %3965, ptr %49, align 8, !tbaa !5
  %3966 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %3966, ptr %50, align 8, !tbaa !5
  %3967 = load double, ptr %63, align 8, !tbaa !9
  %3968 = fcmp une double %3967, 0.000000e+00
  br i1 %3968, label %3969, label %4092

3969:                                             ; preds = %3795
  %3970 = load double, ptr @splitter, align 8, !tbaa !9
  %3971 = load double, ptr %63, align 8, !tbaa !9
  %3972 = fmul double %3970, %3971
  store double %3972, ptr %135, align 8, !tbaa !9
  %3973 = load double, ptr %135, align 8, !tbaa !9
  %3974 = load double, ptr %63, align 8, !tbaa !9
  %3975 = fsub double %3973, %3974
  store double %3975, ptr %136, align 8, !tbaa !9
  %3976 = load double, ptr %135, align 8, !tbaa !9
  %3977 = load double, ptr %136, align 8, !tbaa !9
  %3978 = fsub double %3976, %3977
  store double %3978, ptr %139, align 8, !tbaa !9
  %3979 = load double, ptr %63, align 8, !tbaa !9
  %3980 = load double, ptr %139, align 8, !tbaa !9
  %3981 = fsub double %3979, %3980
  store double %3981, ptr %140, align 8, !tbaa !9
  %3982 = load double, ptr %123, align 8, !tbaa !9
  %3983 = load double, ptr %63, align 8, !tbaa !9
  %3984 = fmul double %3982, %3983
  store double %3984, ptr %144, align 8, !tbaa !9
  %3985 = load double, ptr @splitter, align 8, !tbaa !9
  %3986 = load double, ptr %123, align 8, !tbaa !9
  %3987 = fmul double %3985, %3986
  store double %3987, ptr %135, align 8, !tbaa !9
  %3988 = load double, ptr %135, align 8, !tbaa !9
  %3989 = load double, ptr %123, align 8, !tbaa !9
  %3990 = fsub double %3988, %3989
  store double %3990, ptr %136, align 8, !tbaa !9
  %3991 = load double, ptr %135, align 8, !tbaa !9
  %3992 = load double, ptr %136, align 8, !tbaa !9
  %3993 = fsub double %3991, %3992
  store double %3993, ptr %137, align 8, !tbaa !9
  %3994 = load double, ptr %123, align 8, !tbaa !9
  %3995 = load double, ptr %137, align 8, !tbaa !9
  %3996 = fsub double %3994, %3995
  store double %3996, ptr %138, align 8, !tbaa !9
  %3997 = load double, ptr %144, align 8, !tbaa !9
  %3998 = load double, ptr %137, align 8, !tbaa !9
  %3999 = load double, ptr %139, align 8, !tbaa !9
  %4000 = fneg double %3998
  %4001 = call double @llvm.fmuladd.f64(double %4000, double %3999, double %3997)
  store double %4001, ptr %141, align 8, !tbaa !9
  %4002 = load double, ptr %141, align 8, !tbaa !9
  %4003 = load double, ptr %138, align 8, !tbaa !9
  %4004 = load double, ptr %139, align 8, !tbaa !9
  %4005 = fneg double %4003
  %4006 = call double @llvm.fmuladd.f64(double %4005, double %4004, double %4002)
  store double %4006, ptr %142, align 8, !tbaa !9
  %4007 = load double, ptr %142, align 8, !tbaa !9
  %4008 = load double, ptr %137, align 8, !tbaa !9
  %4009 = load double, ptr %140, align 8, !tbaa !9
  %4010 = fneg double %4008
  %4011 = call double @llvm.fmuladd.f64(double %4010, double %4009, double %4007)
  store double %4011, ptr %143, align 8, !tbaa !9
  %4012 = load double, ptr %138, align 8, !tbaa !9
  %4013 = load double, ptr %140, align 8, !tbaa !9
  %4014 = load double, ptr %143, align 8, !tbaa !9
  %4015 = fneg double %4014
  %4016 = call double @llvm.fmuladd.f64(double %4012, double %4013, double %4015)
  %4017 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %4016, ptr %4017, align 16, !tbaa !9
  %4018 = load double, ptr %117, align 8, !tbaa !9
  %4019 = load double, ptr %63, align 8, !tbaa !9
  %4020 = fmul double %4018, %4019
  store double %4020, ptr %145, align 8, !tbaa !9
  %4021 = load double, ptr @splitter, align 8, !tbaa !9
  %4022 = load double, ptr %117, align 8, !tbaa !9
  %4023 = fmul double %4021, %4022
  store double %4023, ptr %135, align 8, !tbaa !9
  %4024 = load double, ptr %135, align 8, !tbaa !9
  %4025 = load double, ptr %117, align 8, !tbaa !9
  %4026 = fsub double %4024, %4025
  store double %4026, ptr %136, align 8, !tbaa !9
  %4027 = load double, ptr %135, align 8, !tbaa !9
  %4028 = load double, ptr %136, align 8, !tbaa !9
  %4029 = fsub double %4027, %4028
  store double %4029, ptr %137, align 8, !tbaa !9
  %4030 = load double, ptr %117, align 8, !tbaa !9
  %4031 = load double, ptr %137, align 8, !tbaa !9
  %4032 = fsub double %4030, %4031
  store double %4032, ptr %138, align 8, !tbaa !9
  %4033 = load double, ptr %145, align 8, !tbaa !9
  %4034 = load double, ptr %137, align 8, !tbaa !9
  %4035 = load double, ptr %139, align 8, !tbaa !9
  %4036 = fneg double %4034
  %4037 = call double @llvm.fmuladd.f64(double %4036, double %4035, double %4033)
  store double %4037, ptr %141, align 8, !tbaa !9
  %4038 = load double, ptr %141, align 8, !tbaa !9
  %4039 = load double, ptr %138, align 8, !tbaa !9
  %4040 = load double, ptr %139, align 8, !tbaa !9
  %4041 = fneg double %4039
  %4042 = call double @llvm.fmuladd.f64(double %4041, double %4040, double %4038)
  store double %4042, ptr %142, align 8, !tbaa !9
  %4043 = load double, ptr %142, align 8, !tbaa !9
  %4044 = load double, ptr %137, align 8, !tbaa !9
  %4045 = load double, ptr %140, align 8, !tbaa !9
  %4046 = fneg double %4044
  %4047 = call double @llvm.fmuladd.f64(double %4046, double %4045, double %4043)
  store double %4047, ptr %143, align 8, !tbaa !9
  %4048 = load double, ptr %138, align 8, !tbaa !9
  %4049 = load double, ptr %140, align 8, !tbaa !9
  %4050 = load double, ptr %143, align 8, !tbaa !9
  %4051 = fneg double %4050
  %4052 = call double @llvm.fmuladd.f64(double %4048, double %4049, double %4051)
  store double %4052, ptr %147, align 8, !tbaa !9
  %4053 = load double, ptr %144, align 8, !tbaa !9
  %4054 = load double, ptr %147, align 8, !tbaa !9
  %4055 = fadd double %4053, %4054
  store double %4055, ptr %146, align 8, !tbaa !9
  %4056 = load double, ptr %146, align 8, !tbaa !9
  %4057 = load double, ptr %144, align 8, !tbaa !9
  %4058 = fsub double %4056, %4057
  store double %4058, ptr %131, align 8, !tbaa !9
  %4059 = load double, ptr %146, align 8, !tbaa !9
  %4060 = load double, ptr %131, align 8, !tbaa !9
  %4061 = fsub double %4059, %4060
  store double %4061, ptr %132, align 8, !tbaa !9
  %4062 = load double, ptr %147, align 8, !tbaa !9
  %4063 = load double, ptr %131, align 8, !tbaa !9
  %4064 = fsub double %4062, %4063
  store double %4064, ptr %133, align 8, !tbaa !9
  %4065 = load double, ptr %144, align 8, !tbaa !9
  %4066 = load double, ptr %132, align 8, !tbaa !9
  %4067 = fsub double %4065, %4066
  store double %4067, ptr %134, align 8, !tbaa !9
  %4068 = load double, ptr %134, align 8, !tbaa !9
  %4069 = load double, ptr %133, align 8, !tbaa !9
  %4070 = fadd double %4068, %4069
  %4071 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %4070, ptr %4071, align 8, !tbaa !9
  %4072 = load double, ptr %145, align 8, !tbaa !9
  %4073 = load double, ptr %146, align 8, !tbaa !9
  %4074 = fadd double %4072, %4073
  store double %4074, ptr %127, align 8, !tbaa !9
  %4075 = load double, ptr %127, align 8, !tbaa !9
  %4076 = load double, ptr %145, align 8, !tbaa !9
  %4077 = fsub double %4075, %4076
  store double %4077, ptr %131, align 8, !tbaa !9
  %4078 = load double, ptr %146, align 8, !tbaa !9
  %4079 = load double, ptr %131, align 8, !tbaa !9
  %4080 = fsub double %4078, %4079
  %4081 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %4080, ptr %4081, align 16, !tbaa !9
  %4082 = load double, ptr %127, align 8, !tbaa !9
  %4083 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %4082, ptr %4083, align 8, !tbaa !9
  %4084 = load i32, ptr %54, align 4, !tbaa !11
  %4085 = load ptr, ptr %49, align 8, !tbaa !5
  %4086 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %4087 = load ptr, ptr %50, align 8, !tbaa !5
  %4088 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %4084, ptr noundef %4085, i32 noundef 4, ptr noundef %4086, ptr noundef %4087)
  store i32 %4088, ptr %54, align 4, !tbaa !11
  %4089 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %4089, ptr %51, align 8, !tbaa !5
  %4090 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %4090, ptr %49, align 8, !tbaa !5
  %4091 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %4091, ptr %50, align 8, !tbaa !5
  br label %4092

4092:                                             ; preds = %3969, %3795
  br label %4093

4093:                                             ; preds = %4092, %3792
  br label %4094

4094:                                             ; preds = %4093, %3490
  %4095 = load double, ptr %57, align 8, !tbaa !9
  %4096 = fcmp une double %4095, 0.000000e+00
  br i1 %4096, label %4097, label %4698

4097:                                             ; preds = %4094
  %4098 = load double, ptr %58, align 8, !tbaa !9
  %4099 = fcmp une double %4098, 0.000000e+00
  br i1 %4099, label %4100, label %4396

4100:                                             ; preds = %4097
  %4101 = load double, ptr %57, align 8, !tbaa !9
  %4102 = load double, ptr %58, align 8, !tbaa !9
  %4103 = fmul double %4101, %4102
  store double %4103, ptr %114, align 8, !tbaa !9
  %4104 = load double, ptr @splitter, align 8, !tbaa !9
  %4105 = load double, ptr %57, align 8, !tbaa !9
  %4106 = fmul double %4104, %4105
  store double %4106, ptr %135, align 8, !tbaa !9
  %4107 = load double, ptr %135, align 8, !tbaa !9
  %4108 = load double, ptr %57, align 8, !tbaa !9
  %4109 = fsub double %4107, %4108
  store double %4109, ptr %136, align 8, !tbaa !9
  %4110 = load double, ptr %135, align 8, !tbaa !9
  %4111 = load double, ptr %136, align 8, !tbaa !9
  %4112 = fsub double %4110, %4111
  store double %4112, ptr %137, align 8, !tbaa !9
  %4113 = load double, ptr %57, align 8, !tbaa !9
  %4114 = load double, ptr %137, align 8, !tbaa !9
  %4115 = fsub double %4113, %4114
  store double %4115, ptr %138, align 8, !tbaa !9
  %4116 = load double, ptr @splitter, align 8, !tbaa !9
  %4117 = load double, ptr %58, align 8, !tbaa !9
  %4118 = fmul double %4116, %4117
  store double %4118, ptr %135, align 8, !tbaa !9
  %4119 = load double, ptr %135, align 8, !tbaa !9
  %4120 = load double, ptr %58, align 8, !tbaa !9
  %4121 = fsub double %4119, %4120
  store double %4121, ptr %136, align 8, !tbaa !9
  %4122 = load double, ptr %135, align 8, !tbaa !9
  %4123 = load double, ptr %136, align 8, !tbaa !9
  %4124 = fsub double %4122, %4123
  store double %4124, ptr %139, align 8, !tbaa !9
  %4125 = load double, ptr %58, align 8, !tbaa !9
  %4126 = load double, ptr %139, align 8, !tbaa !9
  %4127 = fsub double %4125, %4126
  store double %4127, ptr %140, align 8, !tbaa !9
  %4128 = load double, ptr %114, align 8, !tbaa !9
  %4129 = load double, ptr %137, align 8, !tbaa !9
  %4130 = load double, ptr %139, align 8, !tbaa !9
  %4131 = fneg double %4129
  %4132 = call double @llvm.fmuladd.f64(double %4131, double %4130, double %4128)
  store double %4132, ptr %141, align 8, !tbaa !9
  %4133 = load double, ptr %141, align 8, !tbaa !9
  %4134 = load double, ptr %138, align 8, !tbaa !9
  %4135 = load double, ptr %139, align 8, !tbaa !9
  %4136 = fneg double %4134
  %4137 = call double @llvm.fmuladd.f64(double %4136, double %4135, double %4133)
  store double %4137, ptr %142, align 8, !tbaa !9
  %4138 = load double, ptr %142, align 8, !tbaa !9
  %4139 = load double, ptr %137, align 8, !tbaa !9
  %4140 = load double, ptr %140, align 8, !tbaa !9
  %4141 = fneg double %4139
  %4142 = call double @llvm.fmuladd.f64(double %4141, double %4140, double %4138)
  store double %4142, ptr %143, align 8, !tbaa !9
  %4143 = load double, ptr %138, align 8, !tbaa !9
  %4144 = load double, ptr %140, align 8, !tbaa !9
  %4145 = load double, ptr %143, align 8, !tbaa !9
  %4146 = fneg double %4145
  %4147 = call double @llvm.fmuladd.f64(double %4143, double %4144, double %4146)
  store double %4147, ptr %120, align 8, !tbaa !9
  %4148 = load double, ptr @splitter, align 8, !tbaa !9
  %4149 = load double, ptr %19, align 8, !tbaa !9
  %4150 = fmul double %4148, %4149
  store double %4150, ptr %135, align 8, !tbaa !9
  %4151 = load double, ptr %135, align 8, !tbaa !9
  %4152 = load double, ptr %19, align 8, !tbaa !9
  %4153 = fsub double %4151, %4152
  store double %4153, ptr %136, align 8, !tbaa !9
  %4154 = load double, ptr %135, align 8, !tbaa !9
  %4155 = load double, ptr %136, align 8, !tbaa !9
  %4156 = fsub double %4154, %4155
  store double %4156, ptr %139, align 8, !tbaa !9
  %4157 = load double, ptr %19, align 8, !tbaa !9
  %4158 = load double, ptr %139, align 8, !tbaa !9
  %4159 = fsub double %4157, %4158
  store double %4159, ptr %140, align 8, !tbaa !9
  %4160 = load double, ptr %120, align 8, !tbaa !9
  %4161 = load double, ptr %19, align 8, !tbaa !9
  %4162 = fmul double %4160, %4161
  store double %4162, ptr %144, align 8, !tbaa !9
  %4163 = load double, ptr @splitter, align 8, !tbaa !9
  %4164 = load double, ptr %120, align 8, !tbaa !9
  %4165 = fmul double %4163, %4164
  store double %4165, ptr %135, align 8, !tbaa !9
  %4166 = load double, ptr %135, align 8, !tbaa !9
  %4167 = load double, ptr %120, align 8, !tbaa !9
  %4168 = fsub double %4166, %4167
  store double %4168, ptr %136, align 8, !tbaa !9
  %4169 = load double, ptr %135, align 8, !tbaa !9
  %4170 = load double, ptr %136, align 8, !tbaa !9
  %4171 = fsub double %4169, %4170
  store double %4171, ptr %137, align 8, !tbaa !9
  %4172 = load double, ptr %120, align 8, !tbaa !9
  %4173 = load double, ptr %137, align 8, !tbaa !9
  %4174 = fsub double %4172, %4173
  store double %4174, ptr %138, align 8, !tbaa !9
  %4175 = load double, ptr %144, align 8, !tbaa !9
  %4176 = load double, ptr %137, align 8, !tbaa !9
  %4177 = load double, ptr %139, align 8, !tbaa !9
  %4178 = fneg double %4176
  %4179 = call double @llvm.fmuladd.f64(double %4178, double %4177, double %4175)
  store double %4179, ptr %141, align 8, !tbaa !9
  %4180 = load double, ptr %141, align 8, !tbaa !9
  %4181 = load double, ptr %138, align 8, !tbaa !9
  %4182 = load double, ptr %139, align 8, !tbaa !9
  %4183 = fneg double %4181
  %4184 = call double @llvm.fmuladd.f64(double %4183, double %4182, double %4180)
  store double %4184, ptr %142, align 8, !tbaa !9
  %4185 = load double, ptr %142, align 8, !tbaa !9
  %4186 = load double, ptr %137, align 8, !tbaa !9
  %4187 = load double, ptr %140, align 8, !tbaa !9
  %4188 = fneg double %4186
  %4189 = call double @llvm.fmuladd.f64(double %4188, double %4187, double %4185)
  store double %4189, ptr %143, align 8, !tbaa !9
  %4190 = load double, ptr %138, align 8, !tbaa !9
  %4191 = load double, ptr %140, align 8, !tbaa !9
  %4192 = load double, ptr %143, align 8, !tbaa !9
  %4193 = fneg double %4192
  %4194 = call double @llvm.fmuladd.f64(double %4190, double %4191, double %4193)
  %4195 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %4194, ptr %4195, align 16, !tbaa !9
  %4196 = load double, ptr %114, align 8, !tbaa !9
  %4197 = load double, ptr %19, align 8, !tbaa !9
  %4198 = fmul double %4196, %4197
  store double %4198, ptr %145, align 8, !tbaa !9
  %4199 = load double, ptr @splitter, align 8, !tbaa !9
  %4200 = load double, ptr %114, align 8, !tbaa !9
  %4201 = fmul double %4199, %4200
  store double %4201, ptr %135, align 8, !tbaa !9
  %4202 = load double, ptr %135, align 8, !tbaa !9
  %4203 = load double, ptr %114, align 8, !tbaa !9
  %4204 = fsub double %4202, %4203
  store double %4204, ptr %136, align 8, !tbaa !9
  %4205 = load double, ptr %135, align 8, !tbaa !9
  %4206 = load double, ptr %136, align 8, !tbaa !9
  %4207 = fsub double %4205, %4206
  store double %4207, ptr %137, align 8, !tbaa !9
  %4208 = load double, ptr %114, align 8, !tbaa !9
  %4209 = load double, ptr %137, align 8, !tbaa !9
  %4210 = fsub double %4208, %4209
  store double %4210, ptr %138, align 8, !tbaa !9
  %4211 = load double, ptr %145, align 8, !tbaa !9
  %4212 = load double, ptr %137, align 8, !tbaa !9
  %4213 = load double, ptr %139, align 8, !tbaa !9
  %4214 = fneg double %4212
  %4215 = call double @llvm.fmuladd.f64(double %4214, double %4213, double %4211)
  store double %4215, ptr %141, align 8, !tbaa !9
  %4216 = load double, ptr %141, align 8, !tbaa !9
  %4217 = load double, ptr %138, align 8, !tbaa !9
  %4218 = load double, ptr %139, align 8, !tbaa !9
  %4219 = fneg double %4217
  %4220 = call double @llvm.fmuladd.f64(double %4219, double %4218, double %4216)
  store double %4220, ptr %142, align 8, !tbaa !9
  %4221 = load double, ptr %142, align 8, !tbaa !9
  %4222 = load double, ptr %137, align 8, !tbaa !9
  %4223 = load double, ptr %140, align 8, !tbaa !9
  %4224 = fneg double %4222
  %4225 = call double @llvm.fmuladd.f64(double %4224, double %4223, double %4221)
  store double %4225, ptr %143, align 8, !tbaa !9
  %4226 = load double, ptr %138, align 8, !tbaa !9
  %4227 = load double, ptr %140, align 8, !tbaa !9
  %4228 = load double, ptr %143, align 8, !tbaa !9
  %4229 = fneg double %4228
  %4230 = call double @llvm.fmuladd.f64(double %4226, double %4227, double %4229)
  store double %4230, ptr %147, align 8, !tbaa !9
  %4231 = load double, ptr %144, align 8, !tbaa !9
  %4232 = load double, ptr %147, align 8, !tbaa !9
  %4233 = fadd double %4231, %4232
  store double %4233, ptr %146, align 8, !tbaa !9
  %4234 = load double, ptr %146, align 8, !tbaa !9
  %4235 = load double, ptr %144, align 8, !tbaa !9
  %4236 = fsub double %4234, %4235
  store double %4236, ptr %131, align 8, !tbaa !9
  %4237 = load double, ptr %146, align 8, !tbaa !9
  %4238 = load double, ptr %131, align 8, !tbaa !9
  %4239 = fsub double %4237, %4238
  store double %4239, ptr %132, align 8, !tbaa !9
  %4240 = load double, ptr %147, align 8, !tbaa !9
  %4241 = load double, ptr %131, align 8, !tbaa !9
  %4242 = fsub double %4240, %4241
  store double %4242, ptr %133, align 8, !tbaa !9
  %4243 = load double, ptr %144, align 8, !tbaa !9
  %4244 = load double, ptr %132, align 8, !tbaa !9
  %4245 = fsub double %4243, %4244
  store double %4245, ptr %134, align 8, !tbaa !9
  %4246 = load double, ptr %134, align 8, !tbaa !9
  %4247 = load double, ptr %133, align 8, !tbaa !9
  %4248 = fadd double %4246, %4247
  %4249 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %4248, ptr %4249, align 8, !tbaa !9
  %4250 = load double, ptr %145, align 8, !tbaa !9
  %4251 = load double, ptr %146, align 8, !tbaa !9
  %4252 = fadd double %4250, %4251
  store double %4252, ptr %127, align 8, !tbaa !9
  %4253 = load double, ptr %127, align 8, !tbaa !9
  %4254 = load double, ptr %145, align 8, !tbaa !9
  %4255 = fsub double %4253, %4254
  store double %4255, ptr %131, align 8, !tbaa !9
  %4256 = load double, ptr %146, align 8, !tbaa !9
  %4257 = load double, ptr %131, align 8, !tbaa !9
  %4258 = fsub double %4256, %4257
  %4259 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %4258, ptr %4259, align 16, !tbaa !9
  %4260 = load double, ptr %127, align 8, !tbaa !9
  %4261 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %4260, ptr %4261, align 8, !tbaa !9
  %4262 = load i32, ptr %54, align 4, !tbaa !11
  %4263 = load ptr, ptr %49, align 8, !tbaa !5
  %4264 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %4265 = load ptr, ptr %50, align 8, !tbaa !5
  %4266 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %4262, ptr noundef %4263, i32 noundef 4, ptr noundef %4264, ptr noundef %4265)
  store i32 %4266, ptr %54, align 4, !tbaa !11
  %4267 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %4267, ptr %51, align 8, !tbaa !5
  %4268 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %4268, ptr %49, align 8, !tbaa !5
  %4269 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %4269, ptr %50, align 8, !tbaa !5
  %4270 = load double, ptr %62, align 8, !tbaa !9
  %4271 = fcmp une double %4270, 0.000000e+00
  br i1 %4271, label %4272, label %4395

4272:                                             ; preds = %4100
  %4273 = load double, ptr @splitter, align 8, !tbaa !9
  %4274 = load double, ptr %62, align 8, !tbaa !9
  %4275 = fmul double %4273, %4274
  store double %4275, ptr %135, align 8, !tbaa !9
  %4276 = load double, ptr %135, align 8, !tbaa !9
  %4277 = load double, ptr %62, align 8, !tbaa !9
  %4278 = fsub double %4276, %4277
  store double %4278, ptr %136, align 8, !tbaa !9
  %4279 = load double, ptr %135, align 8, !tbaa !9
  %4280 = load double, ptr %136, align 8, !tbaa !9
  %4281 = fsub double %4279, %4280
  store double %4281, ptr %139, align 8, !tbaa !9
  %4282 = load double, ptr %62, align 8, !tbaa !9
  %4283 = load double, ptr %139, align 8, !tbaa !9
  %4284 = fsub double %4282, %4283
  store double %4284, ptr %140, align 8, !tbaa !9
  %4285 = load double, ptr %120, align 8, !tbaa !9
  %4286 = load double, ptr %62, align 8, !tbaa !9
  %4287 = fmul double %4285, %4286
  store double %4287, ptr %144, align 8, !tbaa !9
  %4288 = load double, ptr @splitter, align 8, !tbaa !9
  %4289 = load double, ptr %120, align 8, !tbaa !9
  %4290 = fmul double %4288, %4289
  store double %4290, ptr %135, align 8, !tbaa !9
  %4291 = load double, ptr %135, align 8, !tbaa !9
  %4292 = load double, ptr %120, align 8, !tbaa !9
  %4293 = fsub double %4291, %4292
  store double %4293, ptr %136, align 8, !tbaa !9
  %4294 = load double, ptr %135, align 8, !tbaa !9
  %4295 = load double, ptr %136, align 8, !tbaa !9
  %4296 = fsub double %4294, %4295
  store double %4296, ptr %137, align 8, !tbaa !9
  %4297 = load double, ptr %120, align 8, !tbaa !9
  %4298 = load double, ptr %137, align 8, !tbaa !9
  %4299 = fsub double %4297, %4298
  store double %4299, ptr %138, align 8, !tbaa !9
  %4300 = load double, ptr %144, align 8, !tbaa !9
  %4301 = load double, ptr %137, align 8, !tbaa !9
  %4302 = load double, ptr %139, align 8, !tbaa !9
  %4303 = fneg double %4301
  %4304 = call double @llvm.fmuladd.f64(double %4303, double %4302, double %4300)
  store double %4304, ptr %141, align 8, !tbaa !9
  %4305 = load double, ptr %141, align 8, !tbaa !9
  %4306 = load double, ptr %138, align 8, !tbaa !9
  %4307 = load double, ptr %139, align 8, !tbaa !9
  %4308 = fneg double %4306
  %4309 = call double @llvm.fmuladd.f64(double %4308, double %4307, double %4305)
  store double %4309, ptr %142, align 8, !tbaa !9
  %4310 = load double, ptr %142, align 8, !tbaa !9
  %4311 = load double, ptr %137, align 8, !tbaa !9
  %4312 = load double, ptr %140, align 8, !tbaa !9
  %4313 = fneg double %4311
  %4314 = call double @llvm.fmuladd.f64(double %4313, double %4312, double %4310)
  store double %4314, ptr %143, align 8, !tbaa !9
  %4315 = load double, ptr %138, align 8, !tbaa !9
  %4316 = load double, ptr %140, align 8, !tbaa !9
  %4317 = load double, ptr %143, align 8, !tbaa !9
  %4318 = fneg double %4317
  %4319 = call double @llvm.fmuladd.f64(double %4315, double %4316, double %4318)
  %4320 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %4319, ptr %4320, align 16, !tbaa !9
  %4321 = load double, ptr %114, align 8, !tbaa !9
  %4322 = load double, ptr %62, align 8, !tbaa !9
  %4323 = fmul double %4321, %4322
  store double %4323, ptr %145, align 8, !tbaa !9
  %4324 = load double, ptr @splitter, align 8, !tbaa !9
  %4325 = load double, ptr %114, align 8, !tbaa !9
  %4326 = fmul double %4324, %4325
  store double %4326, ptr %135, align 8, !tbaa !9
  %4327 = load double, ptr %135, align 8, !tbaa !9
  %4328 = load double, ptr %114, align 8, !tbaa !9
  %4329 = fsub double %4327, %4328
  store double %4329, ptr %136, align 8, !tbaa !9
  %4330 = load double, ptr %135, align 8, !tbaa !9
  %4331 = load double, ptr %136, align 8, !tbaa !9
  %4332 = fsub double %4330, %4331
  store double %4332, ptr %137, align 8, !tbaa !9
  %4333 = load double, ptr %114, align 8, !tbaa !9
  %4334 = load double, ptr %137, align 8, !tbaa !9
  %4335 = fsub double %4333, %4334
  store double %4335, ptr %138, align 8, !tbaa !9
  %4336 = load double, ptr %145, align 8, !tbaa !9
  %4337 = load double, ptr %137, align 8, !tbaa !9
  %4338 = load double, ptr %139, align 8, !tbaa !9
  %4339 = fneg double %4337
  %4340 = call double @llvm.fmuladd.f64(double %4339, double %4338, double %4336)
  store double %4340, ptr %141, align 8, !tbaa !9
  %4341 = load double, ptr %141, align 8, !tbaa !9
  %4342 = load double, ptr %138, align 8, !tbaa !9
  %4343 = load double, ptr %139, align 8, !tbaa !9
  %4344 = fneg double %4342
  %4345 = call double @llvm.fmuladd.f64(double %4344, double %4343, double %4341)
  store double %4345, ptr %142, align 8, !tbaa !9
  %4346 = load double, ptr %142, align 8, !tbaa !9
  %4347 = load double, ptr %137, align 8, !tbaa !9
  %4348 = load double, ptr %140, align 8, !tbaa !9
  %4349 = fneg double %4347
  %4350 = call double @llvm.fmuladd.f64(double %4349, double %4348, double %4346)
  store double %4350, ptr %143, align 8, !tbaa !9
  %4351 = load double, ptr %138, align 8, !tbaa !9
  %4352 = load double, ptr %140, align 8, !tbaa !9
  %4353 = load double, ptr %143, align 8, !tbaa !9
  %4354 = fneg double %4353
  %4355 = call double @llvm.fmuladd.f64(double %4351, double %4352, double %4354)
  store double %4355, ptr %147, align 8, !tbaa !9
  %4356 = load double, ptr %144, align 8, !tbaa !9
  %4357 = load double, ptr %147, align 8, !tbaa !9
  %4358 = fadd double %4356, %4357
  store double %4358, ptr %146, align 8, !tbaa !9
  %4359 = load double, ptr %146, align 8, !tbaa !9
  %4360 = load double, ptr %144, align 8, !tbaa !9
  %4361 = fsub double %4359, %4360
  store double %4361, ptr %131, align 8, !tbaa !9
  %4362 = load double, ptr %146, align 8, !tbaa !9
  %4363 = load double, ptr %131, align 8, !tbaa !9
  %4364 = fsub double %4362, %4363
  store double %4364, ptr %132, align 8, !tbaa !9
  %4365 = load double, ptr %147, align 8, !tbaa !9
  %4366 = load double, ptr %131, align 8, !tbaa !9
  %4367 = fsub double %4365, %4366
  store double %4367, ptr %133, align 8, !tbaa !9
  %4368 = load double, ptr %144, align 8, !tbaa !9
  %4369 = load double, ptr %132, align 8, !tbaa !9
  %4370 = fsub double %4368, %4369
  store double %4370, ptr %134, align 8, !tbaa !9
  %4371 = load double, ptr %134, align 8, !tbaa !9
  %4372 = load double, ptr %133, align 8, !tbaa !9
  %4373 = fadd double %4371, %4372
  %4374 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %4373, ptr %4374, align 8, !tbaa !9
  %4375 = load double, ptr %145, align 8, !tbaa !9
  %4376 = load double, ptr %146, align 8, !tbaa !9
  %4377 = fadd double %4375, %4376
  store double %4377, ptr %127, align 8, !tbaa !9
  %4378 = load double, ptr %127, align 8, !tbaa !9
  %4379 = load double, ptr %145, align 8, !tbaa !9
  %4380 = fsub double %4378, %4379
  store double %4380, ptr %131, align 8, !tbaa !9
  %4381 = load double, ptr %146, align 8, !tbaa !9
  %4382 = load double, ptr %131, align 8, !tbaa !9
  %4383 = fsub double %4381, %4382
  %4384 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %4383, ptr %4384, align 16, !tbaa !9
  %4385 = load double, ptr %127, align 8, !tbaa !9
  %4386 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %4385, ptr %4386, align 8, !tbaa !9
  %4387 = load i32, ptr %54, align 4, !tbaa !11
  %4388 = load ptr, ptr %49, align 8, !tbaa !5
  %4389 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %4390 = load ptr, ptr %50, align 8, !tbaa !5
  %4391 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %4387, ptr noundef %4388, i32 noundef 4, ptr noundef %4389, ptr noundef %4390)
  store i32 %4391, ptr %54, align 4, !tbaa !11
  %4392 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %4392, ptr %51, align 8, !tbaa !5
  %4393 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %4393, ptr %49, align 8, !tbaa !5
  %4394 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %4394, ptr %50, align 8, !tbaa !5
  br label %4395

4395:                                             ; preds = %4272, %4100
  br label %4396

4396:                                             ; preds = %4395, %4097
  %4397 = load double, ptr %59, align 8, !tbaa !9
  %4398 = fcmp une double %4397, 0.000000e+00
  br i1 %4398, label %4399, label %4697

4399:                                             ; preds = %4396
  %4400 = load double, ptr %57, align 8, !tbaa !9
  %4401 = fneg double %4400
  store double %4401, ptr %130, align 8, !tbaa !9
  %4402 = load double, ptr %130, align 8, !tbaa !9
  %4403 = load double, ptr %59, align 8, !tbaa !9
  %4404 = fmul double %4402, %4403
  store double %4404, ptr %113, align 8, !tbaa !9
  %4405 = load double, ptr @splitter, align 8, !tbaa !9
  %4406 = load double, ptr %130, align 8, !tbaa !9
  %4407 = fmul double %4405, %4406
  store double %4407, ptr %135, align 8, !tbaa !9
  %4408 = load double, ptr %135, align 8, !tbaa !9
  %4409 = load double, ptr %130, align 8, !tbaa !9
  %4410 = fsub double %4408, %4409
  store double %4410, ptr %136, align 8, !tbaa !9
  %4411 = load double, ptr %135, align 8, !tbaa !9
  %4412 = load double, ptr %136, align 8, !tbaa !9
  %4413 = fsub double %4411, %4412
  store double %4413, ptr %137, align 8, !tbaa !9
  %4414 = load double, ptr %130, align 8, !tbaa !9
  %4415 = load double, ptr %137, align 8, !tbaa !9
  %4416 = fsub double %4414, %4415
  store double %4416, ptr %138, align 8, !tbaa !9
  %4417 = load double, ptr @splitter, align 8, !tbaa !9
  %4418 = load double, ptr %59, align 8, !tbaa !9
  %4419 = fmul double %4417, %4418
  store double %4419, ptr %135, align 8, !tbaa !9
  %4420 = load double, ptr %135, align 8, !tbaa !9
  %4421 = load double, ptr %59, align 8, !tbaa !9
  %4422 = fsub double %4420, %4421
  store double %4422, ptr %136, align 8, !tbaa !9
  %4423 = load double, ptr %135, align 8, !tbaa !9
  %4424 = load double, ptr %136, align 8, !tbaa !9
  %4425 = fsub double %4423, %4424
  store double %4425, ptr %139, align 8, !tbaa !9
  %4426 = load double, ptr %59, align 8, !tbaa !9
  %4427 = load double, ptr %139, align 8, !tbaa !9
  %4428 = fsub double %4426, %4427
  store double %4428, ptr %140, align 8, !tbaa !9
  %4429 = load double, ptr %113, align 8, !tbaa !9
  %4430 = load double, ptr %137, align 8, !tbaa !9
  %4431 = load double, ptr %139, align 8, !tbaa !9
  %4432 = fneg double %4430
  %4433 = call double @llvm.fmuladd.f64(double %4432, double %4431, double %4429)
  store double %4433, ptr %141, align 8, !tbaa !9
  %4434 = load double, ptr %141, align 8, !tbaa !9
  %4435 = load double, ptr %138, align 8, !tbaa !9
  %4436 = load double, ptr %139, align 8, !tbaa !9
  %4437 = fneg double %4435
  %4438 = call double @llvm.fmuladd.f64(double %4437, double %4436, double %4434)
  store double %4438, ptr %142, align 8, !tbaa !9
  %4439 = load double, ptr %142, align 8, !tbaa !9
  %4440 = load double, ptr %137, align 8, !tbaa !9
  %4441 = load double, ptr %140, align 8, !tbaa !9
  %4442 = fneg double %4440
  %4443 = call double @llvm.fmuladd.f64(double %4442, double %4441, double %4439)
  store double %4443, ptr %143, align 8, !tbaa !9
  %4444 = load double, ptr %138, align 8, !tbaa !9
  %4445 = load double, ptr %140, align 8, !tbaa !9
  %4446 = load double, ptr %143, align 8, !tbaa !9
  %4447 = fneg double %4446
  %4448 = call double @llvm.fmuladd.f64(double %4444, double %4445, double %4447)
  store double %4448, ptr %119, align 8, !tbaa !9
  %4449 = load double, ptr @splitter, align 8, !tbaa !9
  %4450 = load double, ptr %18, align 8, !tbaa !9
  %4451 = fmul double %4449, %4450
  store double %4451, ptr %135, align 8, !tbaa !9
  %4452 = load double, ptr %135, align 8, !tbaa !9
  %4453 = load double, ptr %18, align 8, !tbaa !9
  %4454 = fsub double %4452, %4453
  store double %4454, ptr %136, align 8, !tbaa !9
  %4455 = load double, ptr %135, align 8, !tbaa !9
  %4456 = load double, ptr %136, align 8, !tbaa !9
  %4457 = fsub double %4455, %4456
  store double %4457, ptr %139, align 8, !tbaa !9
  %4458 = load double, ptr %18, align 8, !tbaa !9
  %4459 = load double, ptr %139, align 8, !tbaa !9
  %4460 = fsub double %4458, %4459
  store double %4460, ptr %140, align 8, !tbaa !9
  %4461 = load double, ptr %119, align 8, !tbaa !9
  %4462 = load double, ptr %18, align 8, !tbaa !9
  %4463 = fmul double %4461, %4462
  store double %4463, ptr %144, align 8, !tbaa !9
  %4464 = load double, ptr @splitter, align 8, !tbaa !9
  %4465 = load double, ptr %119, align 8, !tbaa !9
  %4466 = fmul double %4464, %4465
  store double %4466, ptr %135, align 8, !tbaa !9
  %4467 = load double, ptr %135, align 8, !tbaa !9
  %4468 = load double, ptr %119, align 8, !tbaa !9
  %4469 = fsub double %4467, %4468
  store double %4469, ptr %136, align 8, !tbaa !9
  %4470 = load double, ptr %135, align 8, !tbaa !9
  %4471 = load double, ptr %136, align 8, !tbaa !9
  %4472 = fsub double %4470, %4471
  store double %4472, ptr %137, align 8, !tbaa !9
  %4473 = load double, ptr %119, align 8, !tbaa !9
  %4474 = load double, ptr %137, align 8, !tbaa !9
  %4475 = fsub double %4473, %4474
  store double %4475, ptr %138, align 8, !tbaa !9
  %4476 = load double, ptr %144, align 8, !tbaa !9
  %4477 = load double, ptr %137, align 8, !tbaa !9
  %4478 = load double, ptr %139, align 8, !tbaa !9
  %4479 = fneg double %4477
  %4480 = call double @llvm.fmuladd.f64(double %4479, double %4478, double %4476)
  store double %4480, ptr %141, align 8, !tbaa !9
  %4481 = load double, ptr %141, align 8, !tbaa !9
  %4482 = load double, ptr %138, align 8, !tbaa !9
  %4483 = load double, ptr %139, align 8, !tbaa !9
  %4484 = fneg double %4482
  %4485 = call double @llvm.fmuladd.f64(double %4484, double %4483, double %4481)
  store double %4485, ptr %142, align 8, !tbaa !9
  %4486 = load double, ptr %142, align 8, !tbaa !9
  %4487 = load double, ptr %137, align 8, !tbaa !9
  %4488 = load double, ptr %140, align 8, !tbaa !9
  %4489 = fneg double %4487
  %4490 = call double @llvm.fmuladd.f64(double %4489, double %4488, double %4486)
  store double %4490, ptr %143, align 8, !tbaa !9
  %4491 = load double, ptr %138, align 8, !tbaa !9
  %4492 = load double, ptr %140, align 8, !tbaa !9
  %4493 = load double, ptr %143, align 8, !tbaa !9
  %4494 = fneg double %4493
  %4495 = call double @llvm.fmuladd.f64(double %4491, double %4492, double %4494)
  %4496 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %4495, ptr %4496, align 16, !tbaa !9
  %4497 = load double, ptr %113, align 8, !tbaa !9
  %4498 = load double, ptr %18, align 8, !tbaa !9
  %4499 = fmul double %4497, %4498
  store double %4499, ptr %145, align 8, !tbaa !9
  %4500 = load double, ptr @splitter, align 8, !tbaa !9
  %4501 = load double, ptr %113, align 8, !tbaa !9
  %4502 = fmul double %4500, %4501
  store double %4502, ptr %135, align 8, !tbaa !9
  %4503 = load double, ptr %135, align 8, !tbaa !9
  %4504 = load double, ptr %113, align 8, !tbaa !9
  %4505 = fsub double %4503, %4504
  store double %4505, ptr %136, align 8, !tbaa !9
  %4506 = load double, ptr %135, align 8, !tbaa !9
  %4507 = load double, ptr %136, align 8, !tbaa !9
  %4508 = fsub double %4506, %4507
  store double %4508, ptr %137, align 8, !tbaa !9
  %4509 = load double, ptr %113, align 8, !tbaa !9
  %4510 = load double, ptr %137, align 8, !tbaa !9
  %4511 = fsub double %4509, %4510
  store double %4511, ptr %138, align 8, !tbaa !9
  %4512 = load double, ptr %145, align 8, !tbaa !9
  %4513 = load double, ptr %137, align 8, !tbaa !9
  %4514 = load double, ptr %139, align 8, !tbaa !9
  %4515 = fneg double %4513
  %4516 = call double @llvm.fmuladd.f64(double %4515, double %4514, double %4512)
  store double %4516, ptr %141, align 8, !tbaa !9
  %4517 = load double, ptr %141, align 8, !tbaa !9
  %4518 = load double, ptr %138, align 8, !tbaa !9
  %4519 = load double, ptr %139, align 8, !tbaa !9
  %4520 = fneg double %4518
  %4521 = call double @llvm.fmuladd.f64(double %4520, double %4519, double %4517)
  store double %4521, ptr %142, align 8, !tbaa !9
  %4522 = load double, ptr %142, align 8, !tbaa !9
  %4523 = load double, ptr %137, align 8, !tbaa !9
  %4524 = load double, ptr %140, align 8, !tbaa !9
  %4525 = fneg double %4523
  %4526 = call double @llvm.fmuladd.f64(double %4525, double %4524, double %4522)
  store double %4526, ptr %143, align 8, !tbaa !9
  %4527 = load double, ptr %138, align 8, !tbaa !9
  %4528 = load double, ptr %140, align 8, !tbaa !9
  %4529 = load double, ptr %143, align 8, !tbaa !9
  %4530 = fneg double %4529
  %4531 = call double @llvm.fmuladd.f64(double %4527, double %4528, double %4530)
  store double %4531, ptr %147, align 8, !tbaa !9
  %4532 = load double, ptr %144, align 8, !tbaa !9
  %4533 = load double, ptr %147, align 8, !tbaa !9
  %4534 = fadd double %4532, %4533
  store double %4534, ptr %146, align 8, !tbaa !9
  %4535 = load double, ptr %146, align 8, !tbaa !9
  %4536 = load double, ptr %144, align 8, !tbaa !9
  %4537 = fsub double %4535, %4536
  store double %4537, ptr %131, align 8, !tbaa !9
  %4538 = load double, ptr %146, align 8, !tbaa !9
  %4539 = load double, ptr %131, align 8, !tbaa !9
  %4540 = fsub double %4538, %4539
  store double %4540, ptr %132, align 8, !tbaa !9
  %4541 = load double, ptr %147, align 8, !tbaa !9
  %4542 = load double, ptr %131, align 8, !tbaa !9
  %4543 = fsub double %4541, %4542
  store double %4543, ptr %133, align 8, !tbaa !9
  %4544 = load double, ptr %144, align 8, !tbaa !9
  %4545 = load double, ptr %132, align 8, !tbaa !9
  %4546 = fsub double %4544, %4545
  store double %4546, ptr %134, align 8, !tbaa !9
  %4547 = load double, ptr %134, align 8, !tbaa !9
  %4548 = load double, ptr %133, align 8, !tbaa !9
  %4549 = fadd double %4547, %4548
  %4550 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %4549, ptr %4550, align 8, !tbaa !9
  %4551 = load double, ptr %145, align 8, !tbaa !9
  %4552 = load double, ptr %146, align 8, !tbaa !9
  %4553 = fadd double %4551, %4552
  store double %4553, ptr %127, align 8, !tbaa !9
  %4554 = load double, ptr %127, align 8, !tbaa !9
  %4555 = load double, ptr %145, align 8, !tbaa !9
  %4556 = fsub double %4554, %4555
  store double %4556, ptr %131, align 8, !tbaa !9
  %4557 = load double, ptr %146, align 8, !tbaa !9
  %4558 = load double, ptr %131, align 8, !tbaa !9
  %4559 = fsub double %4557, %4558
  %4560 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %4559, ptr %4560, align 16, !tbaa !9
  %4561 = load double, ptr %127, align 8, !tbaa !9
  %4562 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %4561, ptr %4562, align 8, !tbaa !9
  %4563 = load i32, ptr %54, align 4, !tbaa !11
  %4564 = load ptr, ptr %49, align 8, !tbaa !5
  %4565 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %4566 = load ptr, ptr %50, align 8, !tbaa !5
  %4567 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %4563, ptr noundef %4564, i32 noundef 4, ptr noundef %4565, ptr noundef %4566)
  store i32 %4567, ptr %54, align 4, !tbaa !11
  %4568 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %4568, ptr %51, align 8, !tbaa !5
  %4569 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %4569, ptr %49, align 8, !tbaa !5
  %4570 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %4570, ptr %50, align 8, !tbaa !5
  %4571 = load double, ptr %61, align 8, !tbaa !9
  %4572 = fcmp une double %4571, 0.000000e+00
  br i1 %4572, label %4573, label %4696

4573:                                             ; preds = %4399
  %4574 = load double, ptr @splitter, align 8, !tbaa !9
  %4575 = load double, ptr %61, align 8, !tbaa !9
  %4576 = fmul double %4574, %4575
  store double %4576, ptr %135, align 8, !tbaa !9
  %4577 = load double, ptr %135, align 8, !tbaa !9
  %4578 = load double, ptr %61, align 8, !tbaa !9
  %4579 = fsub double %4577, %4578
  store double %4579, ptr %136, align 8, !tbaa !9
  %4580 = load double, ptr %135, align 8, !tbaa !9
  %4581 = load double, ptr %136, align 8, !tbaa !9
  %4582 = fsub double %4580, %4581
  store double %4582, ptr %139, align 8, !tbaa !9
  %4583 = load double, ptr %61, align 8, !tbaa !9
  %4584 = load double, ptr %139, align 8, !tbaa !9
  %4585 = fsub double %4583, %4584
  store double %4585, ptr %140, align 8, !tbaa !9
  %4586 = load double, ptr %119, align 8, !tbaa !9
  %4587 = load double, ptr %61, align 8, !tbaa !9
  %4588 = fmul double %4586, %4587
  store double %4588, ptr %144, align 8, !tbaa !9
  %4589 = load double, ptr @splitter, align 8, !tbaa !9
  %4590 = load double, ptr %119, align 8, !tbaa !9
  %4591 = fmul double %4589, %4590
  store double %4591, ptr %135, align 8, !tbaa !9
  %4592 = load double, ptr %135, align 8, !tbaa !9
  %4593 = load double, ptr %119, align 8, !tbaa !9
  %4594 = fsub double %4592, %4593
  store double %4594, ptr %136, align 8, !tbaa !9
  %4595 = load double, ptr %135, align 8, !tbaa !9
  %4596 = load double, ptr %136, align 8, !tbaa !9
  %4597 = fsub double %4595, %4596
  store double %4597, ptr %137, align 8, !tbaa !9
  %4598 = load double, ptr %119, align 8, !tbaa !9
  %4599 = load double, ptr %137, align 8, !tbaa !9
  %4600 = fsub double %4598, %4599
  store double %4600, ptr %138, align 8, !tbaa !9
  %4601 = load double, ptr %144, align 8, !tbaa !9
  %4602 = load double, ptr %137, align 8, !tbaa !9
  %4603 = load double, ptr %139, align 8, !tbaa !9
  %4604 = fneg double %4602
  %4605 = call double @llvm.fmuladd.f64(double %4604, double %4603, double %4601)
  store double %4605, ptr %141, align 8, !tbaa !9
  %4606 = load double, ptr %141, align 8, !tbaa !9
  %4607 = load double, ptr %138, align 8, !tbaa !9
  %4608 = load double, ptr %139, align 8, !tbaa !9
  %4609 = fneg double %4607
  %4610 = call double @llvm.fmuladd.f64(double %4609, double %4608, double %4606)
  store double %4610, ptr %142, align 8, !tbaa !9
  %4611 = load double, ptr %142, align 8, !tbaa !9
  %4612 = load double, ptr %137, align 8, !tbaa !9
  %4613 = load double, ptr %140, align 8, !tbaa !9
  %4614 = fneg double %4612
  %4615 = call double @llvm.fmuladd.f64(double %4614, double %4613, double %4611)
  store double %4615, ptr %143, align 8, !tbaa !9
  %4616 = load double, ptr %138, align 8, !tbaa !9
  %4617 = load double, ptr %140, align 8, !tbaa !9
  %4618 = load double, ptr %143, align 8, !tbaa !9
  %4619 = fneg double %4618
  %4620 = call double @llvm.fmuladd.f64(double %4616, double %4617, double %4619)
  %4621 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  store double %4620, ptr %4621, align 16, !tbaa !9
  %4622 = load double, ptr %113, align 8, !tbaa !9
  %4623 = load double, ptr %61, align 8, !tbaa !9
  %4624 = fmul double %4622, %4623
  store double %4624, ptr %145, align 8, !tbaa !9
  %4625 = load double, ptr @splitter, align 8, !tbaa !9
  %4626 = load double, ptr %113, align 8, !tbaa !9
  %4627 = fmul double %4625, %4626
  store double %4627, ptr %135, align 8, !tbaa !9
  %4628 = load double, ptr %135, align 8, !tbaa !9
  %4629 = load double, ptr %113, align 8, !tbaa !9
  %4630 = fsub double %4628, %4629
  store double %4630, ptr %136, align 8, !tbaa !9
  %4631 = load double, ptr %135, align 8, !tbaa !9
  %4632 = load double, ptr %136, align 8, !tbaa !9
  %4633 = fsub double %4631, %4632
  store double %4633, ptr %137, align 8, !tbaa !9
  %4634 = load double, ptr %113, align 8, !tbaa !9
  %4635 = load double, ptr %137, align 8, !tbaa !9
  %4636 = fsub double %4634, %4635
  store double %4636, ptr %138, align 8, !tbaa !9
  %4637 = load double, ptr %145, align 8, !tbaa !9
  %4638 = load double, ptr %137, align 8, !tbaa !9
  %4639 = load double, ptr %139, align 8, !tbaa !9
  %4640 = fneg double %4638
  %4641 = call double @llvm.fmuladd.f64(double %4640, double %4639, double %4637)
  store double %4641, ptr %141, align 8, !tbaa !9
  %4642 = load double, ptr %141, align 8, !tbaa !9
  %4643 = load double, ptr %138, align 8, !tbaa !9
  %4644 = load double, ptr %139, align 8, !tbaa !9
  %4645 = fneg double %4643
  %4646 = call double @llvm.fmuladd.f64(double %4645, double %4644, double %4642)
  store double %4646, ptr %142, align 8, !tbaa !9
  %4647 = load double, ptr %142, align 8, !tbaa !9
  %4648 = load double, ptr %137, align 8, !tbaa !9
  %4649 = load double, ptr %140, align 8, !tbaa !9
  %4650 = fneg double %4648
  %4651 = call double @llvm.fmuladd.f64(double %4650, double %4649, double %4647)
  store double %4651, ptr %143, align 8, !tbaa !9
  %4652 = load double, ptr %138, align 8, !tbaa !9
  %4653 = load double, ptr %140, align 8, !tbaa !9
  %4654 = load double, ptr %143, align 8, !tbaa !9
  %4655 = fneg double %4654
  %4656 = call double @llvm.fmuladd.f64(double %4652, double %4653, double %4655)
  store double %4656, ptr %147, align 8, !tbaa !9
  %4657 = load double, ptr %144, align 8, !tbaa !9
  %4658 = load double, ptr %147, align 8, !tbaa !9
  %4659 = fadd double %4657, %4658
  store double %4659, ptr %146, align 8, !tbaa !9
  %4660 = load double, ptr %146, align 8, !tbaa !9
  %4661 = load double, ptr %144, align 8, !tbaa !9
  %4662 = fsub double %4660, %4661
  store double %4662, ptr %131, align 8, !tbaa !9
  %4663 = load double, ptr %146, align 8, !tbaa !9
  %4664 = load double, ptr %131, align 8, !tbaa !9
  %4665 = fsub double %4663, %4664
  store double %4665, ptr %132, align 8, !tbaa !9
  %4666 = load double, ptr %147, align 8, !tbaa !9
  %4667 = load double, ptr %131, align 8, !tbaa !9
  %4668 = fsub double %4666, %4667
  store double %4668, ptr %133, align 8, !tbaa !9
  %4669 = load double, ptr %144, align 8, !tbaa !9
  %4670 = load double, ptr %132, align 8, !tbaa !9
  %4671 = fsub double %4669, %4670
  store double %4671, ptr %134, align 8, !tbaa !9
  %4672 = load double, ptr %134, align 8, !tbaa !9
  %4673 = load double, ptr %133, align 8, !tbaa !9
  %4674 = fadd double %4672, %4673
  %4675 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 1
  store double %4674, ptr %4675, align 8, !tbaa !9
  %4676 = load double, ptr %145, align 8, !tbaa !9
  %4677 = load double, ptr %146, align 8, !tbaa !9
  %4678 = fadd double %4676, %4677
  store double %4678, ptr %127, align 8, !tbaa !9
  %4679 = load double, ptr %127, align 8, !tbaa !9
  %4680 = load double, ptr %145, align 8, !tbaa !9
  %4681 = fsub double %4679, %4680
  store double %4681, ptr %131, align 8, !tbaa !9
  %4682 = load double, ptr %146, align 8, !tbaa !9
  %4683 = load double, ptr %131, align 8, !tbaa !9
  %4684 = fsub double %4682, %4683
  %4685 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 2
  store double %4684, ptr %4685, align 16, !tbaa !9
  %4686 = load double, ptr %127, align 8, !tbaa !9
  %4687 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 3
  store double %4686, ptr %4687, align 8, !tbaa !9
  %4688 = load i32, ptr %54, align 4, !tbaa !11
  %4689 = load ptr, ptr %49, align 8, !tbaa !5
  %4690 = getelementptr inbounds [4 x double], ptr %124, i64 0, i64 0
  %4691 = load ptr, ptr %50, align 8, !tbaa !5
  %4692 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %4688, ptr noundef %4689, i32 noundef 4, ptr noundef %4690, ptr noundef %4691)
  store i32 %4692, ptr %54, align 4, !tbaa !11
  %4693 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %4693, ptr %51, align 8, !tbaa !5
  %4694 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %4694, ptr %49, align 8, !tbaa !5
  %4695 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %4695, ptr %50, align 8, !tbaa !5
  br label %4696

4696:                                             ; preds = %4573, %4399
  br label %4697

4697:                                             ; preds = %4696, %4396
  br label %4698

4698:                                             ; preds = %4697, %4094
  %4699 = load double, ptr %61, align 8, !tbaa !9
  %4700 = fcmp une double %4699, 0.000000e+00
  br i1 %4700, label %4701, label %4716

4701:                                             ; preds = %4698
  %4702 = load i32, ptr %109, align 4, !tbaa !11
  %4703 = getelementptr inbounds [8 x double], ptr %106, i64 0, i64 0
  %4704 = load double, ptr %61, align 8, !tbaa !9
  %4705 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %4706 = call i32 @scale_expansion_zeroelim(i32 noundef %4702, ptr noundef %4703, double noundef %4704, ptr noundef %4705)
  store i32 %4706, ptr %129, align 4, !tbaa !11
  %4707 = load i32, ptr %54, align 4, !tbaa !11
  %4708 = load ptr, ptr %49, align 8, !tbaa !5
  %4709 = load i32, ptr %129, align 4, !tbaa !11
  %4710 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %4711 = load ptr, ptr %50, align 8, !tbaa !5
  %4712 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %4707, ptr noundef %4708, i32 noundef %4709, ptr noundef %4710, ptr noundef %4711)
  store i32 %4712, ptr %54, align 4, !tbaa !11
  %4713 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %4713, ptr %51, align 8, !tbaa !5
  %4714 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %4714, ptr %49, align 8, !tbaa !5
  %4715 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %4715, ptr %50, align 8, !tbaa !5
  br label %4716

4716:                                             ; preds = %4701, %4698
  %4717 = load double, ptr %62, align 8, !tbaa !9
  %4718 = fcmp une double %4717, 0.000000e+00
  br i1 %4718, label %4719, label %4734

4719:                                             ; preds = %4716
  %4720 = load i32, ptr %110, align 4, !tbaa !11
  %4721 = getelementptr inbounds [8 x double], ptr %107, i64 0, i64 0
  %4722 = load double, ptr %62, align 8, !tbaa !9
  %4723 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %4724 = call i32 @scale_expansion_zeroelim(i32 noundef %4720, ptr noundef %4721, double noundef %4722, ptr noundef %4723)
  store i32 %4724, ptr %129, align 4, !tbaa !11
  %4725 = load i32, ptr %54, align 4, !tbaa !11
  %4726 = load ptr, ptr %49, align 8, !tbaa !5
  %4727 = load i32, ptr %129, align 4, !tbaa !11
  %4728 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %4729 = load ptr, ptr %50, align 8, !tbaa !5
  %4730 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %4725, ptr noundef %4726, i32 noundef %4727, ptr noundef %4728, ptr noundef %4729)
  store i32 %4730, ptr %54, align 4, !tbaa !11
  %4731 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %4731, ptr %51, align 8, !tbaa !5
  %4732 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %4732, ptr %49, align 8, !tbaa !5
  %4733 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %4733, ptr %50, align 8, !tbaa !5
  br label %4734

4734:                                             ; preds = %4719, %4716
  %4735 = load double, ptr %63, align 8, !tbaa !9
  %4736 = fcmp une double %4735, 0.000000e+00
  br i1 %4736, label %4737, label %4752

4737:                                             ; preds = %4734
  %4738 = load i32, ptr %111, align 4, !tbaa !11
  %4739 = getelementptr inbounds [8 x double], ptr %108, i64 0, i64 0
  %4740 = load double, ptr %63, align 8, !tbaa !9
  %4741 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %4742 = call i32 @scale_expansion_zeroelim(i32 noundef %4738, ptr noundef %4739, double noundef %4740, ptr noundef %4741)
  store i32 %4742, ptr %129, align 4, !tbaa !11
  %4743 = load i32, ptr %54, align 4, !tbaa !11
  %4744 = load ptr, ptr %49, align 8, !tbaa !5
  %4745 = load i32, ptr %129, align 4, !tbaa !11
  %4746 = getelementptr inbounds [16 x double], ptr %126, i64 0, i64 0
  %4747 = load ptr, ptr %50, align 8, !tbaa !5
  %4748 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %4743, ptr noundef %4744, i32 noundef %4745, ptr noundef %4746, ptr noundef %4747)
  store i32 %4748, ptr %54, align 4, !tbaa !11
  %4749 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %4749, ptr %51, align 8, !tbaa !5
  %4750 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %4750, ptr %49, align 8, !tbaa !5
  %4751 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %4751, ptr %50, align 8, !tbaa !5
  br label %4752

4752:                                             ; preds = %4737, %4734
  %4753 = load ptr, ptr %49, align 8, !tbaa !5
  %4754 = load i32, ptr %54, align 4, !tbaa !11
  %4755 = sub nsw i32 %4754, 1
  %4756 = sext i32 %4755 to i64
  %4757 = getelementptr inbounds double, ptr %4753, i64 %4756
  %4758 = load double, ptr %4757, align 8, !tbaa !9
  store double %4758, ptr %6, align 8
  store i32 1, ptr %148, align 4
  br label %4759

4759:                                             ; preds = %4752, %1082, %981, %763
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #3
  call void @llvm.lifetime.end.p0(i64 128, ptr %126) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %125) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr %108) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr %107) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr %106) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 1536, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 1536, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 128, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  %4760 = load double, ptr %6, align 8
  ret double %4760
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { 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 #3 = { 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, !12, i64 0}
!12 = !{!"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"

@splitter = external dso_local local_unnamed_addr global double, align 8
@resulterrbound = external dso_local local_unnamed_addr global double, align 8
@o3derrboundB = external dso_local local_unnamed_addr global double, align 8
@o3derrboundC = external dso_local local_unnamed_addr global double, align 8

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @fast_expansion_sum_zeroelim(i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @scale_expansion_zeroelim(i32 noundef, ptr noundef, double noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @estimate(i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local double @orient3dadapt(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, double noundef %4) local_unnamed_addr #2 {
  %6 = alloca [4 x double], align 16
  %7 = alloca [4 x double], align 16
  %8 = alloca [4 x double], align 16
  %9 = alloca [8 x double], align 16
  %10 = alloca [8 x double], align 16
  %11 = alloca [8 x double], align 16
  %12 = alloca [16 x double], align 16
  %13 = alloca [192 x double], align 16
  %14 = alloca [192 x double], align 16
  %15 = alloca [4 x double], align 16
  %16 = alloca [4 x double], align 16
  %17 = alloca [4 x double], align 16
  %18 = alloca [4 x double], align 16
  %19 = alloca [4 x double], align 16
  %20 = alloca [4 x double], align 16
  %21 = alloca [8 x double], align 16
  %22 = alloca [8 x double], align 16
  %23 = alloca [8 x double], align 16
  %24 = alloca [4 x double], align 16
  %25 = alloca [12 x double], align 16
  %26 = alloca [16 x double], align 16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 1536, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 1536, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %26) #4
  %27 = load double, ptr %0, align 8, !tbaa !5
  %28 = load double, ptr %1, align 8, !tbaa !5
  %29 = load double, ptr %2, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %0, i64 8
  %31 = load double, ptr %30, align 8, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %3, i64 8
  %33 = getelementptr inbounds i8, ptr %1, i64 8
  %34 = load double, ptr %33, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %2, i64 8
  %36 = load double, ptr %35, align 8, !tbaa !5
  %37 = getelementptr inbounds i8, ptr %0, i64 16
  %38 = load double, ptr %37, align 8, !tbaa !5
  %39 = getelementptr inbounds i8, ptr %3, i64 16
  %40 = load double, ptr %39, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %1, i64 16
  %42 = load double, ptr %41, align 8, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %2, i64 16
  %44 = load double, ptr %43, align 8, !tbaa !5
  %45 = fsub double %44, %40
  %46 = load double, ptr @splitter, align 8, !tbaa !5
  %47 = getelementptr inbounds i8, ptr %6, i64 16
  %48 = getelementptr inbounds i8, ptr %6, i64 24
  %49 = load <2 x double>, ptr %3, align 8, !tbaa !5
  %50 = insertelement <2 x double> poison, double %28, i64 0
  %51 = insertelement <2 x double> %50, double %29, i64 1
  %52 = shufflevector <2 x double> %49, <2 x double> poison, <2 x i32> zeroinitializer
  %53 = fsub <2 x double> %51, %52
  %54 = insertelement <2 x double> poison, double %27, i64 0
  %55 = insertelement <2 x double> %54, double %34, i64 1
  %56 = fsub <2 x double> %55, %49
  %57 = insertelement <2 x double> poison, double %36, i64 0
  %58 = insertelement <2 x double> %57, double %31, i64 1
  %59 = shufflevector <2 x double> %49, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %60 = fsub <2 x double> %58, %59
  %61 = insertelement <2 x double> poison, double %38, i64 0
  %62 = insertelement <2 x double> %61, double %42, i64 1
  %63 = insertelement <2 x double> poison, double %40, i64 0
  %64 = shufflevector <2 x double> %63, <2 x double> poison, <2 x i32> zeroinitializer
  %65 = fsub <2 x double> %62, %64
  %66 = extractelement <2 x double> %53, i64 0
  %67 = extractelement <2 x double> %60, i64 0
  %68 = fmul <2 x double> %53, %60
  %69 = shufflevector <2 x double> %60, <2 x double> %53, <2 x i32> <i32 0, i32 3>
  %70 = fmul <2 x double> %56, %69
  %71 = insertelement <2 x double> poison, double %46, i64 0
  %72 = shufflevector <2 x double> %71, <2 x double> poison, <2 x i32> zeroinitializer
  %73 = fmul <2 x double> %53, %72
  %74 = fsub <2 x double> %73, %53
  %75 = fsub <2 x double> %73, %74
  %76 = fsub <2 x double> %53, %75
  %77 = shufflevector <2 x double> %60, <2 x double> %56, <2 x i32> <i32 0, i32 3>
  %78 = fmul <2 x double> %77, %72
  %79 = fsub <2 x double> %78, %77
  %80 = fsub <2 x double> %78, %79
  %81 = fsub <2 x double> %77, %80
  %82 = fneg <2 x double> %75
  %83 = shufflevector <2 x double> %68, <2 x double> %70, <2 x i32> <i32 0, i32 3>
  %84 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %82, <2 x double> %80, <2 x double> %83)
  %85 = fneg <2 x double> %76
  %86 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %85, <2 x double> %80, <2 x double> %84)
  %87 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %82, <2 x double> %81, <2 x double> %86)
  %88 = fneg <2 x double> %87
  %89 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %76, <2 x double> %81, <2 x double> %88)
  %shift = shufflevector <2 x double> %89, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %90 = fsub <2 x double> %89, %shift
  %91 = fadd <2 x double> %68, %90
  %92 = fsub <2 x double> %91, %68
  %93 = fsub <2 x double> %91, %92
  %94 = fsub <2 x double> %90, %92
  %95 = fsub <2 x double> %68, %93
  %96 = fadd <2 x double> %94, %95
  %shift2750 = shufflevector <2 x double> %70, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %97 = fsub <2 x double> %96, %shift2750
  %98 = shufflevector <2 x double> %89, <2 x double> %96, <2 x i32> <i32 0, i32 2>
  %99 = shufflevector <2 x double> %90, <2 x double> %97, <2 x i32> <i32 0, i32 2>
  %100 = fsub <2 x double> %98, %99
  %101 = fadd <2 x double> %100, %99
  %102 = shufflevector <2 x double> %70, <2 x double> %89, <2 x i32> <i32 3, i32 1>
  %103 = fsub <2 x double> %100, %102
  %104 = fsub <2 x double> %98, %101
  %105 = fadd <2 x double> %103, %104
  store <2 x double> %105, ptr %6, align 16, !tbaa !5
  %106 = fadd <2 x double> %91, %97
  %107 = extractelement <2 x double> %106, i64 0
  %108 = fsub <2 x double> %106, %91
  %109 = fsub <2 x double> %106, %108
  %110 = fsub <2 x double> %97, %108
  %111 = fsub <2 x double> %91, %109
  %112 = fadd <2 x double> %110, %111
  %113 = extractelement <2 x double> %112, i64 0
  store double %113, ptr %47, align 16, !tbaa !5
  store double %107, ptr %48, align 8, !tbaa !5
  %114 = extractelement <2 x double> %65, i64 0
  %115 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef nonnull %6, double noundef %114, ptr noundef nonnull %9)
  %116 = extractelement <2 x double> %53, i64 1
  %117 = extractelement <2 x double> %60, i64 1
  %118 = fmul double %116, %117
  %119 = load double, ptr @splitter, align 8, !tbaa !5
  %120 = extractelement <2 x double> %70, i64 0
  %121 = shufflevector <2 x double> %56, <2 x double> %53, <2 x i32> <i32 0, i32 3>
  %122 = insertelement <2 x double> poison, double %119, i64 0
  %123 = shufflevector <2 x double> %122, <2 x double> poison, <2 x i32> zeroinitializer
  %124 = fmul <2 x double> %121, %123
  %125 = fsub <2 x double> %124, %121
  %126 = fsub <2 x double> %124, %125
  %127 = fsub <2 x double> %121, %126
  %128 = fmul <2 x double> %60, %123
  %129 = fsub <2 x double> %128, %60
  %130 = fsub <2 x double> %128, %129
  %131 = fsub <2 x double> %60, %130
  %132 = fneg <2 x double> %126
  %133 = insertelement <2 x double> %70, double %118, i64 1
  %134 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %132, <2 x double> %130, <2 x double> %133)
  %135 = fneg <2 x double> %127
  %136 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %135, <2 x double> %130, <2 x double> %134)
  %137 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %132, <2 x double> %131, <2 x double> %136)
  %138 = fneg <2 x double> %137
  %139 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %127, <2 x double> %131, <2 x double> %138)
  %shift2751 = shufflevector <2 x double> %139, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %140 = fsub <2 x double> %shift2751, %139
  %141 = extractelement <2 x double> %140, i64 0
  %142 = fadd double %118, %141
  %143 = fsub double %142, %118
  %144 = fsub double %142, %143
  %145 = fsub double %141, %143
  %146 = fsub double %118, %144
  %147 = fadd double %145, %146
  %148 = fsub double %147, %120
  %149 = shufflevector <2 x double> %139, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %150 = insertelement <2 x double> %149, double %147, i64 1
  %151 = insertelement <2 x double> %140, double %148, i64 1
  %152 = fsub <2 x double> %150, %151
  %153 = insertelement <2 x double> %152, double %148, i64 1
  %154 = shufflevector <2 x double> %140, <2 x double> %152, <2 x i32> <i32 0, i32 3>
  %155 = fadd <2 x double> %153, %154
  %156 = shufflevector <2 x double> %70, <2 x double> poison, <2 x i32> <i32 poison, i32 0>
  %157 = shufflevector <2 x double> %139, <2 x double> %156, <2 x i32> <i32 0, i32 3>
  %158 = fsub <2 x double> %152, %157
  %159 = fsub <2 x double> %150, %155
  %160 = fadd <2 x double> %158, %159
  store <2 x double> %160, ptr %7, align 16, !tbaa !5
  %161 = fadd double %142, %148
  %162 = fsub double %161, %142
  %163 = fsub double %161, %162
  %164 = fsub double %148, %162
  %165 = fsub double %142, %163
  %166 = fadd double %164, %165
  %167 = getelementptr inbounds i8, ptr %7, i64 16
  store double %166, ptr %167, align 16, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %7, i64 24
  store double %161, ptr %168, align 8, !tbaa !5
  %169 = extractelement <2 x double> %65, i64 1
  %170 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef nonnull %7, double noundef %169, ptr noundef nonnull %10)
  %171 = load double, ptr @splitter, align 8, !tbaa !5
  %172 = shufflevector <2 x double> %56, <2 x double> %53, <2 x i32> <i32 0, i32 2>
  %173 = shufflevector <2 x double> %56, <2 x double> %60, <2 x i32> <i32 1, i32 3>
  %174 = fmul <2 x double> %172, %173
  %175 = insertelement <2 x double> poison, double %171, i64 0
  %176 = shufflevector <2 x double> %175, <2 x double> poison, <2 x i32> zeroinitializer
  %177 = fmul <2 x double> %172, %176
  %178 = fsub <2 x double> %177, %172
  %179 = fsub <2 x double> %177, %178
  %180 = fsub <2 x double> %172, %179
  %181 = fmul <2 x double> %173, %176
  %182 = fsub <2 x double> %181, %173
  %183 = fsub <2 x double> %181, %182
  %184 = fsub <2 x double> %173, %183
  %185 = fneg <2 x double> %179
  %186 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %185, <2 x double> %183, <2 x double> %174)
  %187 = fneg <2 x double> %180
  %188 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %187, <2 x double> %183, <2 x double> %186)
  %189 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %185, <2 x double> %184, <2 x double> %188)
  %190 = fneg <2 x double> %189
  %191 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %180, <2 x double> %184, <2 x double> %190)
  %shift2752 = shufflevector <2 x double> %191, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %192 = fsub <2 x double> %191, %shift2752
  %193 = fadd <2 x double> %174, %192
  %194 = extractelement <2 x double> %193, i64 0
  %195 = fsub <2 x double> %193, %174
  %196 = fsub <2 x double> %193, %195
  %197 = fsub <2 x double> %192, %195
  %198 = fsub <2 x double> %174, %196
  %199 = fadd <2 x double> %197, %198
  %200 = extractelement <2 x double> %199, i64 0
  %201 = extractelement <2 x double> %174, i64 1
  %202 = fsub double %200, %201
  %203 = shufflevector <2 x double> %191, <2 x double> %199, <2 x i32> <i32 0, i32 2>
  %204 = insertelement <2 x double> %192, double %202, i64 1
  %205 = fsub <2 x double> %203, %204
  %206 = insertelement <2 x double> %205, double %202, i64 1
  %207 = shufflevector <2 x double> %192, <2 x double> %205, <2 x i32> <i32 0, i32 3>
  %208 = fadd <2 x double> %206, %207
  %209 = shufflevector <2 x double> %191, <2 x double> %174, <2 x i32> <i32 1, i32 3>
  %210 = fsub <2 x double> %205, %209
  %211 = fsub <2 x double> %203, %208
  %212 = fadd <2 x double> %210, %211
  store <2 x double> %212, ptr %8, align 16, !tbaa !5
  %213 = fadd double %194, %202
  %214 = fsub double %213, %194
  %215 = fsub double %213, %214
  %216 = fsub double %202, %214
  %217 = fsub double %194, %215
  %218 = fadd double %216, %217
  %219 = getelementptr inbounds i8, ptr %8, i64 16
  store double %218, ptr %219, align 16, !tbaa !5
  %220 = getelementptr inbounds i8, ptr %8, i64 24
  store double %213, ptr %220, align 8, !tbaa !5
  %221 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef nonnull %8, double noundef %45, ptr noundef nonnull %11)
  %222 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %115, ptr noundef nonnull %9, i32 noundef %170, ptr noundef nonnull %10, ptr noundef nonnull %12)
  %223 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %222, ptr noundef nonnull %12, i32 noundef %221, ptr noundef nonnull %11, ptr noundef nonnull %13)
  %224 = call double @estimate(i32 noundef %223, ptr noundef nonnull %13)
  %225 = load double, ptr @o3derrboundB, align 8, !tbaa !5
  %226 = fmul double %225, %4
  %227 = fcmp ult double %224, %226
  br i1 %227, label %228, label %1514

228:                                              ; preds = %5
  %229 = fneg double %224
  %230 = fcmp ugt double %226, %229
  br i1 %230, label %231, label %1514

231:                                              ; preds = %228
  %232 = load double, ptr %0, align 8, !tbaa !5
  %233 = extractelement <2 x double> %56, i64 0
  %234 = fsub double %232, %233
  %235 = fadd double %233, %234
  %236 = load double, ptr %3, align 8, !tbaa !5
  %237 = fsub double %234, %236
  %238 = fsub double %232, %235
  %239 = fadd double %237, %238
  %240 = load double, ptr %1, align 8, !tbaa !5
  %241 = load double, ptr %2, align 8, !tbaa !5
  %242 = load double, ptr %30, align 8, !tbaa !5
  %243 = load double, ptr %33, align 8, !tbaa !5
  %244 = load double, ptr %35, align 8, !tbaa !5
  %245 = load double, ptr %37, align 8, !tbaa !5
  %246 = load double, ptr %41, align 8, !tbaa !5
  %247 = insertelement <2 x double> poison, double %240, i64 0
  %248 = insertelement <2 x double> %247, double %241, i64 1
  %249 = fsub <2 x double> %248, %53
  %250 = fadd <2 x double> %53, %249
  %251 = insertelement <2 x double> poison, double %236, i64 0
  %252 = shufflevector <2 x double> %251, <2 x double> poison, <2 x i32> zeroinitializer
  %253 = fsub <2 x double> %249, %252
  %254 = fsub <2 x double> %248, %250
  %255 = fadd <2 x double> %253, %254
  %256 = insertelement <2 x double> poison, double %244, i64 0
  %257 = insertelement <2 x double> %256, double %242, i64 1
  %258 = fsub <2 x double> %257, %60
  %259 = fadd <2 x double> %60, %258
  %260 = fsub <2 x double> %257, %259
  %261 = insertelement <2 x double> poison, double %245, i64 0
  %262 = insertelement <2 x double> %261, double %246, i64 1
  %263 = fsub <2 x double> %262, %65
  %264 = fadd <2 x double> %65, %263
  %265 = fsub <2 x double> %262, %264
  %266 = load double, ptr %43, align 8, !tbaa !5
  %267 = fcmp oeq double %239, 0.000000e+00
  %268 = extractelement <2 x double> %255, i64 0
  %269 = fcmp oeq double %268, 0.000000e+00
  %or.cond = select i1 %267, i1 %269, i1 false
  %270 = extractelement <2 x double> %255, i64 1
  %271 = fcmp oeq double %270, 0.000000e+00
  %or.cond3 = select i1 %or.cond, i1 %271, i1 false
  %272 = load <2 x double>, ptr %32, align 8, !tbaa !5
  %273 = shufflevector <2 x double> %272, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %274 = shufflevector <2 x double> %272, <2 x double> poison, <2 x i32> zeroinitializer
  %275 = fsub <2 x double> %258, %274
  %276 = fadd <2 x double> %275, %260
  %277 = shufflevector <2 x double> %272, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %278 = fsub <2 x double> %263, %277
  %279 = fadd <2 x double> %278, %265
  %280 = insertelement <2 x double> poison, double %266, i64 0
  %281 = insertelement <2 x double> %280, double %243, i64 1
  %282 = insertelement <2 x double> %56, double %45, i64 0
  %283 = fsub <2 x double> %281, %282
  %284 = fadd <2 x double> %282, %283
  %285 = fsub <2 x double> %283, %273
  %286 = fsub <2 x double> %281, %284
  %287 = fadd <2 x double> %285, %286
  %288 = extractelement <2 x double> %276, i64 1
  %289 = fcmp oeq double %288, 0.000000e+00
  %or.cond5 = select i1 %or.cond3, i1 %289, i1 false
  %290 = fcmp oeq <2 x double> %287, zeroinitializer
  %291 = extractelement <2 x i1> %290, i64 1
  %or.cond7 = select i1 %or.cond5, i1 %291, i1 false
  %292 = extractelement <2 x double> %276, i64 0
  %293 = fcmp oeq double %292, 0.000000e+00
  %or.cond9 = select i1 %or.cond7, i1 %293, i1 false
  %294 = extractelement <2 x double> %279, i64 0
  %295 = fcmp oeq double %294, 0.000000e+00
  %or.cond11 = select i1 %or.cond9, i1 %295, i1 false
  %296 = extractelement <2 x double> %279, i64 1
  %297 = fcmp oeq double %296, 0.000000e+00
  %or.cond13 = select i1 %or.cond11, i1 %297, i1 false
  %298 = extractelement <2 x i1> %290, i64 0
  %or.cond15 = select i1 %or.cond13, i1 %298, i1 false
  br i1 %or.cond15, label %1514, label %299

299:                                              ; preds = %231
  %300 = load double, ptr @o3derrboundC, align 8, !tbaa !5
  %301 = load double, ptr @resulterrbound, align 8, !tbaa !5
  %302 = fcmp oge double %224, 0.000000e+00
  %303 = select i1 %302, double %224, double %229
  %304 = fmul double %303, %301
  %305 = call double @llvm.fmuladd.f64(double %300, double %4, double %304)
  %306 = fmul <2 x double> %60, %255
  %307 = shufflevector <2 x double> %53, <2 x double> %56, <2 x i32> <i32 1, i32 2>
  %308 = shufflevector <2 x double> %276, <2 x double> poison, <2 x i32> <i32 poison, i32 0>
  %309 = shufflevector <2 x double> %308, <2 x double> %287, <2 x i32> <i32 3, i32 1>
  %310 = fmul <2 x double> %307, %309
  %311 = fneg <2 x double> %70
  %312 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %53, <2 x double> %276, <2 x double> %306)
  %313 = shufflevector <2 x double> %56, <2 x double> %60, <2 x i32> <i32 1, i32 2>
  %314 = shufflevector <2 x double> %255, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %315 = insertelement <2 x double> %314, double %239, i64 1
  %316 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %313, <2 x double> %315, <2 x double> %310)
  %317 = fsub <2 x double> %312, %316
  %318 = shufflevector <2 x double> %69, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %319 = shufflevector <2 x double> %60, <2 x double> %53, <2 x i32> <i32 1, i32 2>
  %320 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %318, <2 x double> %319, <2 x double> %311)
  %321 = shufflevector <2 x double> %320, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %322 = fmul <2 x double> %321, %279
  %323 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %65, <2 x double> %317, <2 x double> %322)
  %shift2753 = shufflevector <2 x double> %323, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %324 = fadd <2 x double> %323, %shift2753
  %325 = extractelement <2 x double> %324, i64 0
  %326 = extractelement <2 x double> %56, i64 1
  %327 = shufflevector <2 x double> %56, <2 x double> %53, <2 x i32> <i32 1, i32 2>
  %328 = insertelement <2 x double> %276, double %239, i64 0
  %329 = fmul <2 x double> %327, %328
  %330 = shufflevector <2 x double> %56, <2 x double> %60, <2 x i32> <i32 0, i32 3>
  %331 = shufflevector <2 x double> %314, <2 x double> %287, <2 x i32> <i32 3, i32 1>
  %332 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %330, <2 x double> %331, <2 x double> %329)
  %shift2754 = shufflevector <2 x double> %332, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %333 = fsub <2 x double> %332, %shift2754
  %334 = extractelement <2 x double> %333, i64 0
  %335 = fneg double %201
  %336 = call double @llvm.fmuladd.f64(double %233, double %326, double %335)
  %337 = extractelement <2 x double> %287, i64 0
  %338 = fmul double %336, %337
  %339 = call double @llvm.fmuladd.f64(double %45, double %334, double %338)
  %340 = fadd double %325, %339
  %341 = fadd double %224, %340
  %342 = fcmp ult double %341, %305
  %343 = fneg double %341
  %344 = fcmp ugt double %305, %343
  %or.cond2739 = and i1 %342, %344
  br i1 %or.cond2739, label %345, label %1514

345:                                              ; preds = %299
  br i1 %267, label %346, label %385

346:                                              ; preds = %345
  br i1 %289, label %347, label %348

347:                                              ; preds = %346
  store double 0.000000e+00, ptr %15, align 16, !tbaa !5
  store double 0.000000e+00, ptr %16, align 16, !tbaa !5
  br label %515

348:                                              ; preds = %346
  %349 = fneg double %288
  %350 = fmul double %66, %349
  %351 = load double, ptr @splitter, align 8, !tbaa !5
  %352 = fmul double %351, %349
  %353 = fadd double %288, %352
  %354 = fsub double %352, %353
  %355 = fsub double %349, %354
  %356 = fmul double %66, %351
  %357 = fsub double %356, %66
  %358 = fsub double %356, %357
  %359 = fsub double %66, %358
  %360 = fneg double %354
  %361 = call double @llvm.fmuladd.f64(double %360, double %358, double %350)
  %362 = fneg double %355
  %363 = call double @llvm.fmuladd.f64(double %362, double %358, double %361)
  %364 = call double @llvm.fmuladd.f64(double %360, double %359, double %363)
  %365 = fneg double %364
  %366 = call double @llvm.fmuladd.f64(double %355, double %359, double %365)
  store double %366, ptr %15, align 16, !tbaa !5
  %367 = getelementptr inbounds i8, ptr %15, i64 8
  store double %350, ptr %367, align 8, !tbaa !5
  %368 = fmul double %116, %288
  %369 = fmul double %288, %351
  %370 = fsub double %369, %288
  %371 = fsub double %369, %370
  %372 = fsub double %288, %371
  %373 = fmul double %116, %351
  %374 = fsub double %373, %116
  %375 = fsub double %373, %374
  %376 = fsub double %116, %375
  %377 = fneg double %371
  %378 = call double @llvm.fmuladd.f64(double %377, double %375, double %368)
  %379 = fneg double %372
  %380 = call double @llvm.fmuladd.f64(double %379, double %375, double %378)
  %381 = call double @llvm.fmuladd.f64(double %377, double %376, double %380)
  %382 = fneg double %381
  %383 = call double @llvm.fmuladd.f64(double %372, double %376, double %382)
  store double %383, ptr %16, align 16, !tbaa !5
  %384 = getelementptr inbounds i8, ptr %16, i64 8
  store double %368, ptr %384, align 8, !tbaa !5
  br label %515

385:                                              ; preds = %345
  %386 = load double, ptr @splitter, align 8, !tbaa !5
  %387 = fmul double %239, %386
  %388 = fsub double %387, %239
  %389 = fsub double %387, %388
  %390 = fsub double %239, %389
  %391 = fmul double %326, %386
  %392 = fsub double %391, %326
  %393 = fsub double %391, %392
  %394 = fsub double %326, %393
  %395 = fneg double %389
  %396 = extractelement <2 x double> %329, i64 0
  %397 = call double @llvm.fmuladd.f64(double %395, double %393, double %396)
  %398 = fneg double %390
  %399 = call double @llvm.fmuladd.f64(double %398, double %393, double %397)
  %400 = call double @llvm.fmuladd.f64(double %395, double %394, double %399)
  %401 = fneg double %400
  %402 = call double @llvm.fmuladd.f64(double %390, double %394, double %401)
  br i1 %289, label %403, label %423

403:                                              ; preds = %385
  store double %402, ptr %15, align 16, !tbaa !5
  %404 = getelementptr inbounds i8, ptr %15, i64 8
  store double %396, ptr %404, align 8, !tbaa !5
  %405 = fneg double %239
  %406 = fmul double %67, %405
  %407 = fmul double %386, %405
  %408 = fadd double %239, %407
  %409 = fsub double %407, %408
  %410 = fsub double %405, %409
  %411 = fmul double %67, %386
  %412 = fsub double %411, %67
  %413 = fsub double %411, %412
  %414 = fsub double %67, %413
  %415 = fneg double %409
  %416 = call double @llvm.fmuladd.f64(double %415, double %413, double %406)
  %417 = fneg double %410
  %418 = call double @llvm.fmuladd.f64(double %417, double %413, double %416)
  %419 = call double @llvm.fmuladd.f64(double %415, double %414, double %418)
  %420 = fneg double %419
  %421 = call double @llvm.fmuladd.f64(double %410, double %414, double %420)
  store double %421, ptr %16, align 16, !tbaa !5
  %422 = getelementptr inbounds i8, ptr %16, i64 8
  store double %406, ptr %422, align 8, !tbaa !5
  br label %515

423:                                              ; preds = %385
  %424 = fmul double %288, %386
  %425 = fsub double %424, %288
  %426 = fsub double %424, %425
  %427 = fsub double %288, %426
  %428 = fmul double %66, %386
  %429 = fsub double %428, %66
  %430 = fsub double %428, %429
  %431 = fsub double %66, %430
  %432 = fneg double %426
  %433 = extractelement <2 x double> %329, i64 1
  %434 = call double @llvm.fmuladd.f64(double %432, double %430, double %433)
  %435 = fneg double %427
  %436 = call double @llvm.fmuladd.f64(double %435, double %430, double %434)
  %437 = call double @llvm.fmuladd.f64(double %432, double %431, double %436)
  %438 = fneg double %437
  %439 = call double @llvm.fmuladd.f64(double %427, double %431, double %438)
  %440 = fsub double %402, %439
  %441 = fadd double %396, %440
  %442 = fsub double %441, %396
  %443 = fsub double %441, %442
  %444 = fsub double %440, %442
  %445 = fsub double %396, %443
  %446 = fadd double %444, %445
  %447 = fsub double %446, %433
  %448 = insertelement <2 x double> poison, double %402, i64 0
  %449 = insertelement <2 x double> %448, double %446, i64 1
  %450 = insertelement <2 x double> poison, double %440, i64 0
  %451 = insertelement <2 x double> %450, double %447, i64 1
  %452 = fsub <2 x double> %449, %451
  %453 = insertelement <2 x double> %452, double %447, i64 1
  %454 = insertelement <2 x double> %452, double %440, i64 0
  %455 = fadd <2 x double> %453, %454
  %456 = insertelement <2 x double> %329, double %439, i64 0
  %457 = fsub <2 x double> %452, %456
  %458 = fsub <2 x double> %449, %455
  %459 = fadd <2 x double> %457, %458
  store <2 x double> %459, ptr %15, align 16, !tbaa !5
  %460 = fadd double %441, %447
  %461 = fsub double %460, %441
  %462 = fsub double %460, %461
  %463 = fsub double %447, %461
  %464 = fsub double %441, %462
  %465 = fadd double %463, %464
  %466 = getelementptr inbounds i8, ptr %15, i64 16
  store double %465, ptr %466, align 16, !tbaa !5
  %467 = getelementptr inbounds i8, ptr %15, i64 24
  store double %460, ptr %467, align 8, !tbaa !5
  %468 = shufflevector <2 x double> %53, <2 x double> %60, <2 x i32> <i32 1, i32 2>
  %469 = shufflevector <2 x double> %276, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %470 = insertelement <2 x double> %469, double %239, i64 1
  %471 = fmul <2 x double> %468, %470
  %472 = insertelement <2 x double> poison, double %386, i64 0
  %473 = shufflevector <2 x double> %472, <2 x double> poison, <2 x i32> zeroinitializer
  %474 = fmul <2 x double> %468, %473
  %475 = fsub <2 x double> %474, %468
  %476 = fsub <2 x double> %474, %475
  %477 = fsub <2 x double> %468, %476
  %478 = insertelement <2 x double> poison, double %432, i64 0
  %479 = insertelement <2 x double> %478, double %395, i64 1
  %480 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %479, <2 x double> %476, <2 x double> %471)
  %481 = insertelement <2 x double> poison, double %435, i64 0
  %482 = insertelement <2 x double> %481, double %398, i64 1
  %483 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %482, <2 x double> %476, <2 x double> %480)
  %484 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %479, <2 x double> %477, <2 x double> %483)
  %485 = fneg <2 x double> %484
  %486 = insertelement <2 x double> poison, double %427, i64 0
  %487 = insertelement <2 x double> %486, double %390, i64 1
  %488 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %487, <2 x double> %477, <2 x double> %485)
  %shift2755 = shufflevector <2 x double> %488, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %489 = fsub <2 x double> %488, %shift2755
  %490 = fadd <2 x double> %471, %489
  %491 = fsub <2 x double> %490, %471
  %492 = fsub <2 x double> %490, %491
  %493 = fsub <2 x double> %489, %491
  %494 = fsub <2 x double> %471, %492
  %495 = fadd <2 x double> %493, %494
  %shift2756 = shufflevector <2 x double> %471, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %496 = fsub <2 x double> %495, %shift2756
  %497 = shufflevector <2 x double> %488, <2 x double> %495, <2 x i32> <i32 0, i32 2>
  %498 = shufflevector <2 x double> %489, <2 x double> %496, <2 x i32> <i32 0, i32 2>
  %499 = fsub <2 x double> %497, %498
  %500 = fadd <2 x double> %499, %498
  %501 = shufflevector <2 x double> %488, <2 x double> %471, <2 x i32> <i32 1, i32 3>
  %502 = fsub <2 x double> %499, %501
  %503 = fsub <2 x double> %497, %500
  %504 = fadd <2 x double> %502, %503
  store <2 x double> %504, ptr %16, align 16, !tbaa !5
  %505 = fadd <2 x double> %490, %496
  %506 = extractelement <2 x double> %505, i64 0
  %507 = fsub <2 x double> %505, %490
  %508 = fsub <2 x double> %505, %507
  %509 = fsub <2 x double> %496, %507
  %510 = fsub <2 x double> %490, %508
  %511 = fadd <2 x double> %509, %510
  %512 = extractelement <2 x double> %511, i64 0
  %513 = getelementptr inbounds i8, ptr %16, i64 16
  store double %512, ptr %513, align 16, !tbaa !5
  %514 = getelementptr inbounds i8, ptr %16, i64 24
  store double %506, ptr %514, align 8, !tbaa !5
  br label %515

515:                                              ; preds = %403, %423, %347, %348
  %.02697 = phi i32 [ 1, %347 ], [ 2, %348 ], [ 2, %403 ], [ 4, %423 ]
  br i1 %269, label %516, label %556

516:                                              ; preds = %515
  br i1 %291, label %517, label %518

517:                                              ; preds = %516
  store double 0.000000e+00, ptr %17, align 16, !tbaa !5
  store double 0.000000e+00, ptr %18, align 16, !tbaa !5
  br label %685

518:                                              ; preds = %516
  %519 = extractelement <2 x double> %287, i64 1
  %520 = fneg double %519
  %521 = fmul double %116, %520
  %522 = load double, ptr @splitter, align 8, !tbaa !5
  %523 = fmul double %522, %520
  %524 = fadd double %519, %523
  %525 = fsub double %523, %524
  %526 = fsub double %520, %525
  %527 = fmul double %116, %522
  %528 = fsub double %527, %116
  %529 = fsub double %527, %528
  %530 = fsub double %116, %529
  %531 = fneg double %525
  %532 = call double @llvm.fmuladd.f64(double %531, double %529, double %521)
  %533 = fneg double %526
  %534 = call double @llvm.fmuladd.f64(double %533, double %529, double %532)
  %535 = call double @llvm.fmuladd.f64(double %531, double %530, double %534)
  %536 = fneg double %535
  %537 = call double @llvm.fmuladd.f64(double %526, double %530, double %536)
  store double %537, ptr %17, align 16, !tbaa !5
  %538 = getelementptr inbounds i8, ptr %17, i64 8
  store double %521, ptr %538, align 8, !tbaa !5
  %539 = fmul double %233, %519
  %540 = fmul double %519, %522
  %541 = fsub double %540, %519
  %542 = fsub double %540, %541
  %543 = fsub double %519, %542
  %544 = fmul double %233, %522
  %545 = fsub double %544, %233
  %546 = fsub double %544, %545
  %547 = fsub double %233, %546
  %548 = fneg double %542
  %549 = call double @llvm.fmuladd.f64(double %548, double %546, double %539)
  %550 = fneg double %543
  %551 = call double @llvm.fmuladd.f64(double %550, double %546, double %549)
  %552 = call double @llvm.fmuladd.f64(double %548, double %547, double %551)
  %553 = fneg double %552
  %554 = call double @llvm.fmuladd.f64(double %543, double %547, double %553)
  store double %554, ptr %18, align 16, !tbaa !5
  %555 = getelementptr inbounds i8, ptr %18, i64 8
  store double %539, ptr %555, align 8, !tbaa !5
  br label %685

556:                                              ; preds = %515
  %557 = load double, ptr @splitter, align 8, !tbaa !5
  %558 = fmul double %268, %557
  %559 = fsub double %558, %268
  %560 = fsub double %558, %559
  %561 = fsub double %268, %560
  %562 = fmul double %67, %557
  %563 = fsub double %562, %67
  %564 = fsub double %562, %563
  %565 = fsub double %67, %564
  %566 = fneg double %560
  %567 = extractelement <2 x double> %306, i64 0
  %568 = call double @llvm.fmuladd.f64(double %566, double %564, double %567)
  %569 = fneg double %561
  %570 = call double @llvm.fmuladd.f64(double %569, double %564, double %568)
  %571 = call double @llvm.fmuladd.f64(double %566, double %565, double %570)
  %572 = fneg double %571
  %573 = call double @llvm.fmuladd.f64(double %561, double %565, double %572)
  br i1 %291, label %574, label %594

574:                                              ; preds = %556
  store double %573, ptr %17, align 16, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %17, i64 8
  store double %567, ptr %575, align 8, !tbaa !5
  %576 = fneg double %268
  %577 = fmul double %117, %576
  %578 = fmul double %557, %576
  %579 = fadd double %268, %578
  %580 = fsub double %578, %579
  %581 = fsub double %576, %580
  %582 = fmul double %117, %557
  %583 = fsub double %582, %117
  %584 = fsub double %582, %583
  %585 = fsub double %117, %584
  %586 = fneg double %580
  %587 = call double @llvm.fmuladd.f64(double %586, double %584, double %577)
  %588 = fneg double %581
  %589 = call double @llvm.fmuladd.f64(double %588, double %584, double %587)
  %590 = call double @llvm.fmuladd.f64(double %586, double %585, double %589)
  %591 = fneg double %590
  %592 = call double @llvm.fmuladd.f64(double %581, double %585, double %591)
  store double %592, ptr %18, align 16, !tbaa !5
  %593 = getelementptr inbounds i8, ptr %18, i64 8
  store double %577, ptr %593, align 8, !tbaa !5
  br label %685

594:                                              ; preds = %556
  %595 = extractelement <2 x double> %287, i64 1
  %596 = fmul double %595, %557
  %597 = fsub double %596, %595
  %598 = fsub double %596, %597
  %599 = fsub double %595, %598
  %600 = fmul double %116, %557
  %601 = fsub double %600, %116
  %602 = fsub double %600, %601
  %603 = fsub double %116, %602
  %604 = fneg double %598
  %605 = extractelement <2 x double> %310, i64 0
  %606 = call double @llvm.fmuladd.f64(double %604, double %602, double %605)
  %607 = fneg double %599
  %608 = call double @llvm.fmuladd.f64(double %607, double %602, double %606)
  %609 = call double @llvm.fmuladd.f64(double %604, double %603, double %608)
  %610 = fneg double %609
  %611 = call double @llvm.fmuladd.f64(double %599, double %603, double %610)
  %612 = fsub double %573, %611
  %613 = fadd double %567, %612
  %614 = fsub double %613, %567
  %615 = fsub double %613, %614
  %616 = fsub double %612, %614
  %617 = fsub double %567, %615
  %618 = fadd double %616, %617
  %619 = fsub double %618, %605
  %620 = insertelement <2 x double> poison, double %573, i64 0
  %621 = insertelement <2 x double> %620, double %618, i64 1
  %622 = insertelement <2 x double> poison, double %612, i64 0
  %623 = insertelement <2 x double> %622, double %619, i64 1
  %624 = fsub <2 x double> %621, %623
  %625 = insertelement <2 x double> %624, double %619, i64 1
  %626 = insertelement <2 x double> %624, double %612, i64 0
  %627 = fadd <2 x double> %625, %626
  %628 = shufflevector <2 x double> %310, <2 x double> poison, <2 x i32> <i32 poison, i32 0>
  %629 = insertelement <2 x double> %628, double %611, i64 0
  %630 = fsub <2 x double> %624, %629
  %631 = fsub <2 x double> %621, %627
  %632 = fadd <2 x double> %630, %631
  store <2 x double> %632, ptr %17, align 16, !tbaa !5
  %633 = fadd double %613, %619
  %634 = fsub double %633, %613
  %635 = fsub double %633, %634
  %636 = fsub double %619, %634
  %637 = fsub double %613, %635
  %638 = fadd double %636, %637
  %639 = getelementptr inbounds i8, ptr %17, i64 16
  store double %638, ptr %639, align 16, !tbaa !5
  %640 = getelementptr inbounds i8, ptr %17, i64 24
  store double %633, ptr %640, align 8, !tbaa !5
  %641 = fmul <2 x double> %330, %331
  %642 = insertelement <2 x double> poison, double %557, i64 0
  %643 = shufflevector <2 x double> %642, <2 x double> poison, <2 x i32> zeroinitializer
  %644 = fmul <2 x double> %330, %643
  %645 = fsub <2 x double> %644, %330
  %646 = fsub <2 x double> %644, %645
  %647 = fsub <2 x double> %330, %646
  %648 = insertelement <2 x double> poison, double %604, i64 0
  %649 = insertelement <2 x double> %648, double %566, i64 1
  %650 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %649, <2 x double> %646, <2 x double> %641)
  %651 = insertelement <2 x double> poison, double %607, i64 0
  %652 = insertelement <2 x double> %651, double %569, i64 1
  %653 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %652, <2 x double> %646, <2 x double> %650)
  %654 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %649, <2 x double> %647, <2 x double> %653)
  %655 = fneg <2 x double> %654
  %656 = insertelement <2 x double> poison, double %599, i64 0
  %657 = insertelement <2 x double> %656, double %561, i64 1
  %658 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %657, <2 x double> %647, <2 x double> %655)
  %shift2757 = shufflevector <2 x double> %658, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %659 = fsub <2 x double> %658, %shift2757
  %660 = fadd <2 x double> %641, %659
  %661 = fsub <2 x double> %660, %641
  %662 = fsub <2 x double> %660, %661
  %663 = fsub <2 x double> %659, %661
  %664 = fsub <2 x double> %641, %662
  %665 = fadd <2 x double> %663, %664
  %shift2758 = shufflevector <2 x double> %641, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %666 = fsub <2 x double> %665, %shift2758
  %667 = shufflevector <2 x double> %658, <2 x double> %665, <2 x i32> <i32 0, i32 2>
  %668 = shufflevector <2 x double> %659, <2 x double> %666, <2 x i32> <i32 0, i32 2>
  %669 = fsub <2 x double> %667, %668
  %670 = fadd <2 x double> %669, %668
  %671 = shufflevector <2 x double> %658, <2 x double> %641, <2 x i32> <i32 1, i32 3>
  %672 = fsub <2 x double> %669, %671
  %673 = fsub <2 x double> %667, %670
  %674 = fadd <2 x double> %672, %673
  store <2 x double> %674, ptr %18, align 16, !tbaa !5
  %675 = fadd <2 x double> %660, %666
  %676 = extractelement <2 x double> %675, i64 0
  %677 = fsub <2 x double> %675, %660
  %678 = fsub <2 x double> %675, %677
  %679 = fsub <2 x double> %666, %677
  %680 = fsub <2 x double> %660, %678
  %681 = fadd <2 x double> %679, %680
  %682 = extractelement <2 x double> %681, i64 0
  %683 = getelementptr inbounds i8, ptr %18, i64 16
  store double %682, ptr %683, align 16, !tbaa !5
  %684 = getelementptr inbounds i8, ptr %18, i64 24
  store double %676, ptr %684, align 8, !tbaa !5
  br label %685

685:                                              ; preds = %574, %594, %517, %518
  %.02699 = phi i32 [ 1, %517 ], [ 2, %518 ], [ 2, %574 ], [ 4, %594 ]
  br i1 %271, label %686, label %726

686:                                              ; preds = %685
  br i1 %293, label %687, label %688

687:                                              ; preds = %686
  store double 0.000000e+00, ptr %19, align 16, !tbaa !5
  store double 0.000000e+00, ptr %20, align 16, !tbaa !5
  br label %855

688:                                              ; preds = %686
  %689 = fneg double %292
  %690 = fmul double %233, %689
  %691 = load double, ptr @splitter, align 8, !tbaa !5
  %692 = fmul double %691, %689
  %693 = fadd double %292, %692
  %694 = fsub double %692, %693
  %695 = fsub double %689, %694
  %696 = fmul double %233, %691
  %697 = fsub double %696, %233
  %698 = fsub double %696, %697
  %699 = fsub double %233, %698
  %700 = fneg double %694
  %701 = call double @llvm.fmuladd.f64(double %700, double %698, double %690)
  %702 = fneg double %695
  %703 = call double @llvm.fmuladd.f64(double %702, double %698, double %701)
  %704 = call double @llvm.fmuladd.f64(double %700, double %699, double %703)
  %705 = fneg double %704
  %706 = call double @llvm.fmuladd.f64(double %695, double %699, double %705)
  store double %706, ptr %19, align 16, !tbaa !5
  %707 = getelementptr inbounds i8, ptr %19, i64 8
  store double %690, ptr %707, align 8, !tbaa !5
  %708 = fmul <2 x double> %53, %276
  %709 = extractelement <2 x double> %708, i64 0
  %710 = fmul double %292, %691
  %711 = fsub double %710, %292
  %712 = fsub double %710, %711
  %713 = fsub double %292, %712
  %714 = fmul double %66, %691
  %715 = fsub double %714, %66
  %716 = fsub double %714, %715
  %717 = fsub double %66, %716
  %718 = fneg double %712
  %719 = call double @llvm.fmuladd.f64(double %718, double %716, double %709)
  %720 = fneg double %713
  %721 = call double @llvm.fmuladd.f64(double %720, double %716, double %719)
  %722 = call double @llvm.fmuladd.f64(double %718, double %717, double %721)
  %723 = fneg double %722
  %724 = call double @llvm.fmuladd.f64(double %713, double %717, double %723)
  store double %724, ptr %20, align 16, !tbaa !5
  %725 = getelementptr inbounds i8, ptr %20, i64 8
  store double %709, ptr %725, align 8, !tbaa !5
  br label %855

726:                                              ; preds = %685
  %727 = load double, ptr @splitter, align 8, !tbaa !5
  %728 = fmul double %270, %727
  %729 = fsub double %728, %270
  %730 = fsub double %728, %729
  %731 = fsub double %270, %730
  %732 = fmul double %117, %727
  %733 = fsub double %732, %117
  %734 = fsub double %732, %733
  %735 = fsub double %117, %734
  %736 = fneg double %730
  %737 = extractelement <2 x double> %306, i64 1
  %738 = call double @llvm.fmuladd.f64(double %736, double %734, double %737)
  %739 = fneg double %731
  %740 = call double @llvm.fmuladd.f64(double %739, double %734, double %738)
  %741 = call double @llvm.fmuladd.f64(double %736, double %735, double %740)
  %742 = fneg double %741
  %743 = call double @llvm.fmuladd.f64(double %731, double %735, double %742)
  br i1 %293, label %744, label %764

744:                                              ; preds = %726
  store double %743, ptr %19, align 16, !tbaa !5
  %745 = getelementptr inbounds i8, ptr %19, i64 8
  store double %737, ptr %745, align 8, !tbaa !5
  %746 = fneg double %270
  %747 = fmul double %326, %746
  %748 = fmul double %727, %746
  %749 = fadd double %270, %748
  %750 = fsub double %748, %749
  %751 = fsub double %746, %750
  %752 = fmul double %326, %727
  %753 = fsub double %752, %326
  %754 = fsub double %752, %753
  %755 = fsub double %326, %754
  %756 = fneg double %750
  %757 = call double @llvm.fmuladd.f64(double %756, double %754, double %747)
  %758 = fneg double %751
  %759 = call double @llvm.fmuladd.f64(double %758, double %754, double %757)
  %760 = call double @llvm.fmuladd.f64(double %756, double %755, double %759)
  %761 = fneg double %760
  %762 = call double @llvm.fmuladd.f64(double %751, double %755, double %761)
  store double %762, ptr %20, align 16, !tbaa !5
  %763 = getelementptr inbounds i8, ptr %20, i64 8
  store double %747, ptr %763, align 8, !tbaa !5
  br label %855

764:                                              ; preds = %726
  %765 = fmul double %292, %727
  %766 = fsub double %765, %292
  %767 = fsub double %765, %766
  %768 = fsub double %292, %767
  %769 = fmul double %233, %727
  %770 = fsub double %769, %233
  %771 = fsub double %769, %770
  %772 = fsub double %233, %771
  %773 = fneg double %767
  %774 = extractelement <2 x double> %310, i64 1
  %775 = call double @llvm.fmuladd.f64(double %773, double %771, double %774)
  %776 = fneg double %768
  %777 = call double @llvm.fmuladd.f64(double %776, double %771, double %775)
  %778 = call double @llvm.fmuladd.f64(double %773, double %772, double %777)
  %779 = fneg double %778
  %780 = call double @llvm.fmuladd.f64(double %768, double %772, double %779)
  %781 = fsub double %743, %780
  %782 = fadd double %737, %781
  %783 = fsub double %782, %737
  %784 = fsub double %782, %783
  %785 = fsub double %781, %783
  %786 = fsub double %737, %784
  %787 = fadd double %785, %786
  %788 = fsub double %787, %774
  %789 = insertelement <2 x double> poison, double %743, i64 0
  %790 = insertelement <2 x double> %789, double %787, i64 1
  %791 = insertelement <2 x double> poison, double %781, i64 0
  %792 = insertelement <2 x double> %791, double %788, i64 1
  %793 = fsub <2 x double> %790, %792
  %794 = insertelement <2 x double> %793, double %788, i64 1
  %795 = insertelement <2 x double> %793, double %781, i64 0
  %796 = fadd <2 x double> %794, %795
  %797 = insertelement <2 x double> %310, double %780, i64 0
  %798 = fsub <2 x double> %793, %797
  %799 = fsub <2 x double> %790, %796
  %800 = fadd <2 x double> %798, %799
  store <2 x double> %800, ptr %19, align 16, !tbaa !5
  %801 = fadd double %782, %788
  %802 = fsub double %801, %782
  %803 = fsub double %801, %802
  %804 = fsub double %788, %802
  %805 = fsub double %782, %803
  %806 = fadd double %804, %805
  %807 = getelementptr inbounds i8, ptr %19, i64 16
  store double %806, ptr %807, align 16, !tbaa !5
  %808 = getelementptr inbounds i8, ptr %19, i64 24
  store double %801, ptr %808, align 8, !tbaa !5
  %809 = shufflevector <2 x double> %53, <2 x double> %56, <2 x i32> <i32 0, i32 3>
  %810 = shufflevector <2 x double> %276, <2 x double> %255, <2 x i32> <i32 0, i32 3>
  %811 = fmul <2 x double> %809, %810
  %812 = insertelement <2 x double> poison, double %727, i64 0
  %813 = shufflevector <2 x double> %812, <2 x double> poison, <2 x i32> zeroinitializer
  %814 = fmul <2 x double> %809, %813
  %815 = fsub <2 x double> %814, %809
  %816 = fsub <2 x double> %814, %815
  %817 = fsub <2 x double> %809, %816
  %818 = insertelement <2 x double> poison, double %773, i64 0
  %819 = insertelement <2 x double> %818, double %736, i64 1
  %820 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %819, <2 x double> %816, <2 x double> %811)
  %821 = insertelement <2 x double> poison, double %776, i64 0
  %822 = insertelement <2 x double> %821, double %739, i64 1
  %823 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %822, <2 x double> %816, <2 x double> %820)
  %824 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %819, <2 x double> %817, <2 x double> %823)
  %825 = fneg <2 x double> %824
  %826 = insertelement <2 x double> poison, double %768, i64 0
  %827 = insertelement <2 x double> %826, double %731, i64 1
  %828 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %827, <2 x double> %817, <2 x double> %825)
  %shift2759 = shufflevector <2 x double> %828, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %829 = fsub <2 x double> %828, %shift2759
  %830 = fadd <2 x double> %811, %829
  %831 = fsub <2 x double> %830, %811
  %832 = fsub <2 x double> %830, %831
  %833 = fsub <2 x double> %829, %831
  %834 = fsub <2 x double> %811, %832
  %835 = fadd <2 x double> %833, %834
  %shift2760 = shufflevector <2 x double> %811, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %836 = fsub <2 x double> %835, %shift2760
  %837 = shufflevector <2 x double> %828, <2 x double> %835, <2 x i32> <i32 0, i32 2>
  %838 = shufflevector <2 x double> %829, <2 x double> %836, <2 x i32> <i32 0, i32 2>
  %839 = fsub <2 x double> %837, %838
  %840 = fadd <2 x double> %839, %838
  %841 = shufflevector <2 x double> %828, <2 x double> %811, <2 x i32> <i32 1, i32 3>
  %842 = fsub <2 x double> %839, %841
  %843 = fsub <2 x double> %837, %840
  %844 = fadd <2 x double> %842, %843
  store <2 x double> %844, ptr %20, align 16, !tbaa !5
  %845 = fadd <2 x double> %830, %836
  %846 = extractelement <2 x double> %845, i64 0
  %847 = fsub <2 x double> %845, %830
  %848 = fsub <2 x double> %845, %847
  %849 = fsub <2 x double> %836, %847
  %850 = fsub <2 x double> %830, %848
  %851 = fadd <2 x double> %849, %850
  %852 = extractelement <2 x double> %851, i64 0
  %853 = getelementptr inbounds i8, ptr %20, i64 16
  store double %852, ptr %853, align 16, !tbaa !5
  %854 = getelementptr inbounds i8, ptr %20, i64 24
  store double %846, ptr %854, align 8, !tbaa !5
  br label %855

855:                                              ; preds = %744, %764, %687, %688
  %.02701 = phi i32 [ 1, %687 ], [ 2, %688 ], [ 2, %744 ], [ 4, %764 ]
  %856 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.02699, ptr noundef nonnull %17, i32 noundef %.02701, ptr noundef nonnull %20, ptr noundef nonnull %21)
  %857 = call i32 @scale_expansion_zeroelim(i32 noundef %856, ptr noundef nonnull %21, double noundef %114, ptr noundef nonnull %26)
  %858 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %223, ptr noundef nonnull %13, i32 noundef %857, ptr noundef nonnull %26, ptr noundef nonnull %14)
  %859 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.02701, ptr noundef nonnull %19, i32 noundef %.02697, ptr noundef nonnull %16, ptr noundef nonnull %22)
  %860 = call i32 @scale_expansion_zeroelim(i32 noundef %859, ptr noundef nonnull %22, double noundef %169, ptr noundef nonnull %26)
  %861 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %858, ptr noundef nonnull %14, i32 noundef %860, ptr noundef nonnull %26, ptr noundef nonnull %13)
  %862 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.02697, ptr noundef nonnull %15, i32 noundef %.02699, ptr noundef nonnull %18, ptr noundef nonnull %23)
  %863 = call i32 @scale_expansion_zeroelim(i32 noundef %862, ptr noundef nonnull %23, double noundef %45, ptr noundef nonnull %26)
  %864 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %861, ptr noundef nonnull %13, i32 noundef %863, ptr noundef nonnull %26, ptr noundef nonnull %14)
  %865 = fcmp une double %294, 0.000000e+00
  br i1 %865, label %866, label %869

866:                                              ; preds = %855
  %867 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef nonnull %6, double noundef %294, ptr noundef nonnull %25)
  %868 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %864, ptr noundef nonnull %14, i32 noundef %867, ptr noundef nonnull %25, ptr noundef nonnull %13)
  br label %869

869:                                              ; preds = %866, %855
  %.02685 = phi i32 [ %868, %866 ], [ %864, %855 ]
  %.02674 = phi ptr [ %14, %866 ], [ %13, %855 ]
  %.02673 = phi ptr [ %13, %866 ], [ %14, %855 ]
  %870 = fcmp une double %296, 0.000000e+00
  br i1 %870, label %871, label %874

871:                                              ; preds = %869
  %872 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef nonnull %7, double noundef %296, ptr noundef nonnull %25)
  %873 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.02685, ptr noundef nonnull %.02673, i32 noundef %872, ptr noundef nonnull %25, ptr noundef nonnull %.02674)
  br label %874

874:                                              ; preds = %871, %869
  %.12686 = phi i32 [ %873, %871 ], [ %.02685, %869 ]
  %.12675 = phi ptr [ %.02673, %871 ], [ %.02674, %869 ]
  %.1 = phi ptr [ %.02674, %871 ], [ %.02673, %869 ]
  %875 = fcmp une double %337, 0.000000e+00
  br i1 %875, label %876, label %879

876:                                              ; preds = %874
  %877 = call i32 @scale_expansion_zeroelim(i32 noundef 4, ptr noundef nonnull %8, double noundef %337, ptr noundef nonnull %25)
  %878 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.12686, ptr noundef nonnull %.1, i32 noundef %877, ptr noundef nonnull %25, ptr noundef nonnull %.12675)
  br label %879

879:                                              ; preds = %876, %874
  %.22687 = phi i32 [ %878, %876 ], [ %.12686, %874 ]
  %.22676 = phi ptr [ %.1, %876 ], [ %.12675, %874 ]
  %.2 = phi ptr [ %.12675, %876 ], [ %.1, %874 ]
  %880 = fcmp une double %239, 0.000000e+00
  br i1 %880, label %881, label %1085

881:                                              ; preds = %879
  %882 = extractelement <2 x double> %287, i64 1
  %883 = fcmp une double %882, 0.000000e+00
  br i1 %883, label %884, label %983

884:                                              ; preds = %881
  %885 = fmul double %239, %882
  %886 = load double, ptr @splitter, align 8, !tbaa !5
  %887 = fmul double %239, %886
  %888 = fsub double %887, %239
  %889 = fsub double %887, %888
  %890 = fsub double %239, %889
  %891 = fmul double %882, %886
  %892 = fsub double %891, %882
  %893 = fsub double %891, %892
  %894 = fsub double %882, %893
  %895 = fneg double %889
  %896 = call double @llvm.fmuladd.f64(double %895, double %893, double %885)
  %897 = fneg double %890
  %898 = call double @llvm.fmuladd.f64(double %897, double %893, double %896)
  %899 = call double @llvm.fmuladd.f64(double %895, double %894, double %898)
  %900 = fneg double %899
  %901 = call double @llvm.fmuladd.f64(double %890, double %894, double %900)
  %902 = fmul double %45, %886
  %903 = fsub double %902, %45
  %904 = fsub double %902, %903
  %905 = fsub double %45, %904
  %906 = fmul double %45, %901
  %907 = fmul double %886, %901
  %908 = fsub double %907, %901
  %909 = fsub double %907, %908
  %910 = fsub double %901, %909
  %911 = fneg double %909
  %912 = call double @llvm.fmuladd.f64(double %911, double %904, double %906)
  %913 = fneg double %910
  %914 = call double @llvm.fmuladd.f64(double %913, double %904, double %912)
  %915 = call double @llvm.fmuladd.f64(double %911, double %905, double %914)
  %916 = fneg double %915
  %917 = call double @llvm.fmuladd.f64(double %910, double %905, double %916)
  store double %917, ptr %24, align 16, !tbaa !5
  %918 = fmul double %45, %885
  %919 = fmul double %885, %886
  %920 = fsub double %919, %885
  %921 = fsub double %919, %920
  %922 = fsub double %885, %921
  %923 = fneg double %921
  %924 = call double @llvm.fmuladd.f64(double %923, double %904, double %918)
  %925 = fneg double %922
  %926 = call double @llvm.fmuladd.f64(double %925, double %904, double %924)
  %927 = call double @llvm.fmuladd.f64(double %923, double %905, double %926)
  %928 = fneg double %927
  %929 = call double @llvm.fmuladd.f64(double %922, double %905, double %928)
  %930 = fadd double %929, %906
  %931 = fsub double %930, %906
  %932 = fsub double %930, %931
  %933 = fsub double %929, %931
  %934 = fsub double %906, %932
  %935 = fadd double %933, %934
  %936 = getelementptr inbounds i8, ptr %24, i64 8
  store double %935, ptr %936, align 8, !tbaa !5
  %937 = fadd double %918, %930
  %938 = fsub double %937, %918
  %939 = fsub double %930, %938
  %940 = getelementptr inbounds i8, ptr %24, i64 16
  store double %939, ptr %940, align 16, !tbaa !5
  %941 = getelementptr inbounds i8, ptr %24, i64 24
  store double %937, ptr %941, align 8, !tbaa !5
  %942 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.22687, ptr noundef nonnull %.2, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.22676)
  br i1 %875, label %943, label %983

943:                                              ; preds = %884
  %944 = load double, ptr @splitter, align 8, !tbaa !5
  %945 = fmul double %337, %944
  %946 = fsub double %945, %337
  %947 = fsub double %945, %946
  %948 = fsub double %337, %947
  %949 = fmul double %337, %901
  %950 = fmul double %901, %944
  %951 = fsub double %950, %901
  %952 = fsub double %950, %951
  %953 = fsub double %901, %952
  %954 = fneg double %952
  %955 = call double @llvm.fmuladd.f64(double %954, double %947, double %949)
  %956 = fneg double %953
  %957 = call double @llvm.fmuladd.f64(double %956, double %947, double %955)
  %958 = call double @llvm.fmuladd.f64(double %954, double %948, double %957)
  %959 = fneg double %958
  %960 = call double @llvm.fmuladd.f64(double %953, double %948, double %959)
  store double %960, ptr %24, align 16, !tbaa !5
  %961 = fmul double %885, %337
  %962 = fmul double %885, %944
  %963 = fsub double %962, %885
  %964 = fsub double %962, %963
  %965 = fsub double %885, %964
  %966 = fneg double %964
  %967 = call double @llvm.fmuladd.f64(double %966, double %947, double %961)
  %968 = fneg double %965
  %969 = call double @llvm.fmuladd.f64(double %968, double %947, double %967)
  %970 = call double @llvm.fmuladd.f64(double %966, double %948, double %969)
  %971 = fneg double %970
  %972 = call double @llvm.fmuladd.f64(double %965, double %948, double %971)
  %973 = fadd double %949, %972
  %974 = fsub double %973, %949
  %975 = fsub double %973, %974
  %976 = fsub double %972, %974
  %977 = fsub double %949, %975
  %978 = fadd double %976, %977
  store double %978, ptr %936, align 8, !tbaa !5
  %979 = fadd double %961, %973
  %980 = fsub double %979, %961
  %981 = fsub double %973, %980
  store double %981, ptr %940, align 16, !tbaa !5
  store double %979, ptr %941, align 8, !tbaa !5
  %982 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %942, ptr noundef nonnull %.22676, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.2)
  br label %983

983:                                              ; preds = %884, %943, %881
  %.32688 = phi i32 [ %982, %943 ], [ %942, %884 ], [ %.22687, %881 ]
  %.32677 = phi ptr [ %.22676, %943 ], [ %.2, %884 ], [ %.22676, %881 ]
  %.3 = phi ptr [ %.2, %943 ], [ %.22676, %884 ], [ %.2, %881 ]
  %984 = fcmp une double %292, 0.000000e+00
  br i1 %984, label %985, label %1085

985:                                              ; preds = %983
  %986 = fneg double %239
  %987 = fmul double %292, %986
  %988 = load double, ptr @splitter, align 8, !tbaa !5
  %989 = fmul double %988, %986
  %990 = fadd double %239, %989
  %991 = fsub double %989, %990
  %992 = fsub double %986, %991
  %993 = fmul double %292, %988
  %994 = fsub double %993, %292
  %995 = fsub double %993, %994
  %996 = fsub double %292, %995
  %997 = fneg double %991
  %998 = call double @llvm.fmuladd.f64(double %997, double %995, double %987)
  %999 = fneg double %992
  %1000 = call double @llvm.fmuladd.f64(double %999, double %995, double %998)
  %1001 = call double @llvm.fmuladd.f64(double %997, double %996, double %1000)
  %1002 = fneg double %1001
  %1003 = call double @llvm.fmuladd.f64(double %992, double %996, double %1002)
  %1004 = fmul double %169, %988
  %1005 = fsub double %1004, %169
  %1006 = fsub double %1004, %1005
  %1007 = fsub double %169, %1006
  %1008 = fmul double %169, %1003
  %1009 = fmul double %988, %1003
  %1010 = fsub double %1009, %1003
  %1011 = fsub double %1009, %1010
  %1012 = fsub double %1003, %1011
  %1013 = fneg double %1011
  %1014 = call double @llvm.fmuladd.f64(double %1013, double %1006, double %1008)
  %1015 = fneg double %1012
  %1016 = call double @llvm.fmuladd.f64(double %1015, double %1006, double %1014)
  %1017 = call double @llvm.fmuladd.f64(double %1013, double %1007, double %1016)
  %1018 = fneg double %1017
  %1019 = call double @llvm.fmuladd.f64(double %1012, double %1007, double %1018)
  store double %1019, ptr %24, align 16, !tbaa !5
  %1020 = fmul double %169, %987
  %1021 = fmul double %987, %988
  %1022 = fsub double %1021, %987
  %1023 = fsub double %1021, %1022
  %1024 = fsub double %987, %1023
  %1025 = fneg double %1023
  %1026 = call double @llvm.fmuladd.f64(double %1025, double %1006, double %1020)
  %1027 = fneg double %1024
  %1028 = call double @llvm.fmuladd.f64(double %1027, double %1006, double %1026)
  %1029 = call double @llvm.fmuladd.f64(double %1025, double %1007, double %1028)
  %1030 = fneg double %1029
  %1031 = call double @llvm.fmuladd.f64(double %1024, double %1007, double %1030)
  %1032 = fadd double %1031, %1008
  %1033 = fsub double %1032, %1008
  %1034 = fsub double %1032, %1033
  %1035 = fsub double %1031, %1033
  %1036 = fsub double %1008, %1034
  %1037 = fadd double %1035, %1036
  %1038 = getelementptr inbounds i8, ptr %24, i64 8
  store double %1037, ptr %1038, align 8, !tbaa !5
  %1039 = fadd double %1020, %1032
  %1040 = fsub double %1039, %1020
  %1041 = fsub double %1032, %1040
  %1042 = getelementptr inbounds i8, ptr %24, i64 16
  store double %1041, ptr %1042, align 16, !tbaa !5
  %1043 = getelementptr inbounds i8, ptr %24, i64 24
  store double %1039, ptr %1043, align 8, !tbaa !5
  %1044 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.32688, ptr noundef nonnull %.3, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.32677)
  br i1 %870, label %1045, label %1085

1045:                                             ; preds = %985
  %1046 = load double, ptr @splitter, align 8, !tbaa !5
  %1047 = fmul double %296, %1046
  %1048 = fsub double %1047, %296
  %1049 = fsub double %1047, %1048
  %1050 = fsub double %296, %1049
  %1051 = fmul double %296, %1003
  %1052 = fmul double %1003, %1046
  %1053 = fsub double %1052, %1003
  %1054 = fsub double %1052, %1053
  %1055 = fsub double %1003, %1054
  %1056 = fneg double %1054
  %1057 = call double @llvm.fmuladd.f64(double %1056, double %1049, double %1051)
  %1058 = fneg double %1055
  %1059 = call double @llvm.fmuladd.f64(double %1058, double %1049, double %1057)
  %1060 = call double @llvm.fmuladd.f64(double %1056, double %1050, double %1059)
  %1061 = fneg double %1060
  %1062 = call double @llvm.fmuladd.f64(double %1055, double %1050, double %1061)
  store double %1062, ptr %24, align 16, !tbaa !5
  %1063 = fmul double %987, %296
  %1064 = fmul double %987, %1046
  %1065 = fsub double %1064, %987
  %1066 = fsub double %1064, %1065
  %1067 = fsub double %987, %1066
  %1068 = fneg double %1066
  %1069 = call double @llvm.fmuladd.f64(double %1068, double %1049, double %1063)
  %1070 = fneg double %1067
  %1071 = call double @llvm.fmuladd.f64(double %1070, double %1049, double %1069)
  %1072 = call double @llvm.fmuladd.f64(double %1068, double %1050, double %1071)
  %1073 = fneg double %1072
  %1074 = call double @llvm.fmuladd.f64(double %1067, double %1050, double %1073)
  %1075 = fadd double %1051, %1074
  %1076 = fsub double %1075, %1051
  %1077 = fsub double %1075, %1076
  %1078 = fsub double %1074, %1076
  %1079 = fsub double %1051, %1077
  %1080 = fadd double %1078, %1079
  store double %1080, ptr %1038, align 8, !tbaa !5
  %1081 = fadd double %1063, %1075
  %1082 = fsub double %1081, %1063
  %1083 = fsub double %1075, %1082
  store double %1083, ptr %1042, align 16, !tbaa !5
  store double %1081, ptr %1043, align 8, !tbaa !5
  %1084 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %1044, ptr noundef nonnull %.32677, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.3)
  br label %1085

1085:                                             ; preds = %983, %1045, %985, %879
  %.42689 = phi i32 [ %1084, %1045 ], [ %1044, %985 ], [ %.32688, %983 ], [ %.22687, %879 ]
  %.42678 = phi ptr [ %.32677, %1045 ], [ %.3, %985 ], [ %.32677, %983 ], [ %.22676, %879 ]
  %.4 = phi ptr [ %.3, %1045 ], [ %.32677, %985 ], [ %.3, %983 ], [ %.2, %879 ]
  %1086 = fcmp une double %268, 0.000000e+00
  br i1 %1086, label %1087, label %1293

1087:                                             ; preds = %1085
  %1088 = fcmp une double %292, 0.000000e+00
  br i1 %1088, label %1089, label %1191

1089:                                             ; preds = %1087
  %1090 = fmul <2 x double> %255, %276
  %1091 = extractelement <2 x double> %1090, i64 0
  %1092 = load double, ptr @splitter, align 8, !tbaa !5
  %1093 = fmul double %268, %1092
  %1094 = fsub double %1093, %268
  %1095 = fsub double %1093, %1094
  %1096 = fsub double %268, %1095
  %1097 = fmul double %292, %1092
  %1098 = fsub double %1097, %292
  %1099 = fsub double %1097, %1098
  %1100 = fsub double %292, %1099
  %1101 = fneg double %1095
  %1102 = call double @llvm.fmuladd.f64(double %1101, double %1099, double %1091)
  %1103 = fneg double %1096
  %1104 = call double @llvm.fmuladd.f64(double %1103, double %1099, double %1102)
  %1105 = call double @llvm.fmuladd.f64(double %1101, double %1100, double %1104)
  %1106 = fneg double %1105
  %1107 = call double @llvm.fmuladd.f64(double %1096, double %1100, double %1106)
  %1108 = fmul double %114, %1092
  %1109 = fsub double %1108, %114
  %1110 = fsub double %1108, %1109
  %1111 = fsub double %114, %1110
  %1112 = fmul double %114, %1107
  %1113 = fmul double %1092, %1107
  %1114 = fsub double %1113, %1107
  %1115 = fsub double %1113, %1114
  %1116 = fsub double %1107, %1115
  %1117 = fneg double %1115
  %1118 = call double @llvm.fmuladd.f64(double %1117, double %1110, double %1112)
  %1119 = fneg double %1116
  %1120 = call double @llvm.fmuladd.f64(double %1119, double %1110, double %1118)
  %1121 = call double @llvm.fmuladd.f64(double %1117, double %1111, double %1120)
  %1122 = fneg double %1121
  %1123 = call double @llvm.fmuladd.f64(double %1116, double %1111, double %1122)
  store double %1123, ptr %24, align 16, !tbaa !5
  %1124 = fmul <2 x double> %65, %1090
  %1125 = extractelement <2 x double> %1124, i64 0
  %1126 = fmul double %1091, %1092
  %1127 = fsub double %1126, %1091
  %1128 = fsub double %1126, %1127
  %1129 = fsub double %1091, %1128
  %1130 = fneg double %1128
  %1131 = call double @llvm.fmuladd.f64(double %1130, double %1110, double %1125)
  %1132 = fneg double %1129
  %1133 = call double @llvm.fmuladd.f64(double %1132, double %1110, double %1131)
  %1134 = call double @llvm.fmuladd.f64(double %1130, double %1111, double %1133)
  %1135 = fneg double %1134
  %1136 = call double @llvm.fmuladd.f64(double %1129, double %1111, double %1135)
  %1137 = fadd double %1136, %1112
  %1138 = fsub double %1137, %1112
  %1139 = fsub double %1137, %1138
  %1140 = fsub double %1136, %1138
  %1141 = fsub double %1112, %1139
  %1142 = fadd double %1140, %1141
  %1143 = getelementptr inbounds i8, ptr %24, i64 8
  store double %1142, ptr %1143, align 8, !tbaa !5
  %1144 = fadd double %1125, %1137
  %1145 = fsub double %1144, %1125
  %1146 = fsub double %1137, %1145
  %1147 = getelementptr inbounds i8, ptr %24, i64 16
  store double %1146, ptr %1147, align 16, !tbaa !5
  %1148 = getelementptr inbounds i8, ptr %24, i64 24
  store double %1144, ptr %1148, align 8, !tbaa !5
  %1149 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.42689, ptr noundef nonnull %.4, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.42678)
  br i1 %865, label %1150, label %1191

1150:                                             ; preds = %1089
  %1151 = load double, ptr @splitter, align 8, !tbaa !5
  %1152 = fmul double %294, %1151
  %1153 = fsub double %1152, %294
  %1154 = fsub double %1152, %1153
  %1155 = fsub double %294, %1154
  %1156 = fmul double %294, %1107
  %1157 = fmul double %1107, %1151
  %1158 = fsub double %1157, %1107
  %1159 = fsub double %1157, %1158
  %1160 = fsub double %1107, %1159
  %1161 = fneg double %1159
  %1162 = call double @llvm.fmuladd.f64(double %1161, double %1154, double %1156)
  %1163 = fneg double %1160
  %1164 = call double @llvm.fmuladd.f64(double %1163, double %1154, double %1162)
  %1165 = call double @llvm.fmuladd.f64(double %1161, double %1155, double %1164)
  %1166 = fneg double %1165
  %1167 = call double @llvm.fmuladd.f64(double %1160, double %1155, double %1166)
  store double %1167, ptr %24, align 16, !tbaa !5
  %1168 = fmul <2 x double> %1090, %279
  %1169 = extractelement <2 x double> %1168, i64 0
  %1170 = fmul double %1091, %1151
  %1171 = fsub double %1170, %1091
  %1172 = fsub double %1170, %1171
  %1173 = fsub double %1091, %1172
  %1174 = fneg double %1172
  %1175 = call double @llvm.fmuladd.f64(double %1174, double %1154, double %1169)
  %1176 = fneg double %1173
  %1177 = call double @llvm.fmuladd.f64(double %1176, double %1154, double %1175)
  %1178 = call double @llvm.fmuladd.f64(double %1174, double %1155, double %1177)
  %1179 = fneg double %1178
  %1180 = call double @llvm.fmuladd.f64(double %1173, double %1155, double %1179)
  %1181 = fadd double %1156, %1180
  %1182 = fsub double %1181, %1156
  %1183 = fsub double %1181, %1182
  %1184 = fsub double %1180, %1182
  %1185 = fsub double %1156, %1183
  %1186 = fadd double %1184, %1185
  store double %1186, ptr %1143, align 8, !tbaa !5
  %1187 = fadd double %1169, %1181
  %1188 = fsub double %1187, %1169
  %1189 = fsub double %1181, %1188
  store double %1189, ptr %1147, align 16, !tbaa !5
  store double %1187, ptr %1148, align 8, !tbaa !5
  %1190 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %1149, ptr noundef nonnull %.42678, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.4)
  br label %1191

1191:                                             ; preds = %1089, %1150, %1087
  %.52690 = phi i32 [ %1190, %1150 ], [ %1149, %1089 ], [ %.42689, %1087 ]
  %.52679 = phi ptr [ %.42678, %1150 ], [ %.4, %1089 ], [ %.42678, %1087 ]
  %.5 = phi ptr [ %.4, %1150 ], [ %.42678, %1089 ], [ %.4, %1087 ]
  %1192 = fcmp une double %288, 0.000000e+00
  br i1 %1192, label %1193, label %1293

1193:                                             ; preds = %1191
  %1194 = fneg double %268
  %1195 = fmul double %288, %1194
  %1196 = load double, ptr @splitter, align 8, !tbaa !5
  %1197 = fmul double %1196, %1194
  %1198 = fadd double %268, %1197
  %1199 = fsub double %1197, %1198
  %1200 = fsub double %1194, %1199
  %1201 = fmul double %288, %1196
  %1202 = fsub double %1201, %288
  %1203 = fsub double %1201, %1202
  %1204 = fsub double %288, %1203
  %1205 = fneg double %1199
  %1206 = call double @llvm.fmuladd.f64(double %1205, double %1203, double %1195)
  %1207 = fneg double %1200
  %1208 = call double @llvm.fmuladd.f64(double %1207, double %1203, double %1206)
  %1209 = call double @llvm.fmuladd.f64(double %1205, double %1204, double %1208)
  %1210 = fneg double %1209
  %1211 = call double @llvm.fmuladd.f64(double %1200, double %1204, double %1210)
  %1212 = fmul double %45, %1196
  %1213 = fsub double %1212, %45
  %1214 = fsub double %1212, %1213
  %1215 = fsub double %45, %1214
  %1216 = fmul double %45, %1211
  %1217 = fmul double %1196, %1211
  %1218 = fsub double %1217, %1211
  %1219 = fsub double %1217, %1218
  %1220 = fsub double %1211, %1219
  %1221 = fneg double %1219
  %1222 = call double @llvm.fmuladd.f64(double %1221, double %1214, double %1216)
  %1223 = fneg double %1220
  %1224 = call double @llvm.fmuladd.f64(double %1223, double %1214, double %1222)
  %1225 = call double @llvm.fmuladd.f64(double %1221, double %1215, double %1224)
  %1226 = fneg double %1225
  %1227 = call double @llvm.fmuladd.f64(double %1220, double %1215, double %1226)
  store double %1227, ptr %24, align 16, !tbaa !5
  %1228 = fmul double %45, %1195
  %1229 = fmul double %1195, %1196
  %1230 = fsub double %1229, %1195
  %1231 = fsub double %1229, %1230
  %1232 = fsub double %1195, %1231
  %1233 = fneg double %1231
  %1234 = call double @llvm.fmuladd.f64(double %1233, double %1214, double %1228)
  %1235 = fneg double %1232
  %1236 = call double @llvm.fmuladd.f64(double %1235, double %1214, double %1234)
  %1237 = call double @llvm.fmuladd.f64(double %1233, double %1215, double %1236)
  %1238 = fneg double %1237
  %1239 = call double @llvm.fmuladd.f64(double %1232, double %1215, double %1238)
  %1240 = fadd double %1239, %1216
  %1241 = fsub double %1240, %1216
  %1242 = fsub double %1240, %1241
  %1243 = fsub double %1239, %1241
  %1244 = fsub double %1216, %1242
  %1245 = fadd double %1243, %1244
  %1246 = getelementptr inbounds i8, ptr %24, i64 8
  store double %1245, ptr %1246, align 8, !tbaa !5
  %1247 = fadd double %1228, %1240
  %1248 = fsub double %1247, %1228
  %1249 = fsub double %1240, %1248
  %1250 = getelementptr inbounds i8, ptr %24, i64 16
  store double %1249, ptr %1250, align 16, !tbaa !5
  %1251 = getelementptr inbounds i8, ptr %24, i64 24
  store double %1247, ptr %1251, align 8, !tbaa !5
  %1252 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.52690, ptr noundef nonnull %.5, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.52679)
  br i1 %875, label %1253, label %1293

1253:                                             ; preds = %1193
  %1254 = load double, ptr @splitter, align 8, !tbaa !5
  %1255 = fmul double %337, %1254
  %1256 = fsub double %1255, %337
  %1257 = fsub double %1255, %1256
  %1258 = fsub double %337, %1257
  %1259 = fmul double %337, %1211
  %1260 = fmul double %1211, %1254
  %1261 = fsub double %1260, %1211
  %1262 = fsub double %1260, %1261
  %1263 = fsub double %1211, %1262
  %1264 = fneg double %1262
  %1265 = call double @llvm.fmuladd.f64(double %1264, double %1257, double %1259)
  %1266 = fneg double %1263
  %1267 = call double @llvm.fmuladd.f64(double %1266, double %1257, double %1265)
  %1268 = call double @llvm.fmuladd.f64(double %1264, double %1258, double %1267)
  %1269 = fneg double %1268
  %1270 = call double @llvm.fmuladd.f64(double %1263, double %1258, double %1269)
  store double %1270, ptr %24, align 16, !tbaa !5
  %1271 = fmul double %1195, %337
  %1272 = fmul double %1195, %1254
  %1273 = fsub double %1272, %1195
  %1274 = fsub double %1272, %1273
  %1275 = fsub double %1195, %1274
  %1276 = fneg double %1274
  %1277 = call double @llvm.fmuladd.f64(double %1276, double %1257, double %1271)
  %1278 = fneg double %1275
  %1279 = call double @llvm.fmuladd.f64(double %1278, double %1257, double %1277)
  %1280 = call double @llvm.fmuladd.f64(double %1276, double %1258, double %1279)
  %1281 = fneg double %1280
  %1282 = call double @llvm.fmuladd.f64(double %1275, double %1258, double %1281)
  %1283 = fadd double %1259, %1282
  %1284 = fsub double %1283, %1259
  %1285 = fsub double %1283, %1284
  %1286 = fsub double %1282, %1284
  %1287 = fsub double %1259, %1285
  %1288 = fadd double %1286, %1287
  store double %1288, ptr %1246, align 8, !tbaa !5
  %1289 = fadd double %1271, %1283
  %1290 = fsub double %1289, %1271
  %1291 = fsub double %1283, %1290
  store double %1291, ptr %1250, align 16, !tbaa !5
  store double %1289, ptr %1251, align 8, !tbaa !5
  %1292 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %1252, ptr noundef nonnull %.52679, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.5)
  br label %1293

1293:                                             ; preds = %1191, %1253, %1193, %1085
  %.62691 = phi i32 [ %1292, %1253 ], [ %1252, %1193 ], [ %.52690, %1191 ], [ %.42689, %1085 ]
  %.62680 = phi ptr [ %.52679, %1253 ], [ %.5, %1193 ], [ %.52679, %1191 ], [ %.42678, %1085 ]
  %.6 = phi ptr [ %.5, %1253 ], [ %.52679, %1193 ], [ %.5, %1191 ], [ %.4, %1085 ]
  %1294 = fcmp une double %270, 0.000000e+00
  br i1 %1294, label %1295, label %1498

1295:                                             ; preds = %1293
  %1296 = fcmp une double %288, 0.000000e+00
  br i1 %1296, label %1297, label %1396

1297:                                             ; preds = %1295
  %1298 = fmul double %270, %288
  %1299 = load double, ptr @splitter, align 8, !tbaa !5
  %1300 = fmul double %270, %1299
  %1301 = fsub double %1300, %270
  %1302 = fsub double %1300, %1301
  %1303 = fsub double %270, %1302
  %1304 = fmul double %288, %1299
  %1305 = fsub double %1304, %288
  %1306 = fsub double %1304, %1305
  %1307 = fsub double %288, %1306
  %1308 = fneg double %1302
  %1309 = call double @llvm.fmuladd.f64(double %1308, double %1306, double %1298)
  %1310 = fneg double %1303
  %1311 = call double @llvm.fmuladd.f64(double %1310, double %1306, double %1309)
  %1312 = call double @llvm.fmuladd.f64(double %1308, double %1307, double %1311)
  %1313 = fneg double %1312
  %1314 = call double @llvm.fmuladd.f64(double %1303, double %1307, double %1313)
  %1315 = fmul double %169, %1299
  %1316 = fsub double %1315, %169
  %1317 = fsub double %1315, %1316
  %1318 = fsub double %169, %1317
  %1319 = fmul double %169, %1314
  %1320 = fmul double %1299, %1314
  %1321 = fsub double %1320, %1314
  %1322 = fsub double %1320, %1321
  %1323 = fsub double %1314, %1322
  %1324 = fneg double %1322
  %1325 = call double @llvm.fmuladd.f64(double %1324, double %1317, double %1319)
  %1326 = fneg double %1323
  %1327 = call double @llvm.fmuladd.f64(double %1326, double %1317, double %1325)
  %1328 = call double @llvm.fmuladd.f64(double %1324, double %1318, double %1327)
  %1329 = fneg double %1328
  %1330 = call double @llvm.fmuladd.f64(double %1323, double %1318, double %1329)
  store double %1330, ptr %24, align 16, !tbaa !5
  %1331 = fmul double %169, %1298
  %1332 = fmul double %1298, %1299
  %1333 = fsub double %1332, %1298
  %1334 = fsub double %1332, %1333
  %1335 = fsub double %1298, %1334
  %1336 = fneg double %1334
  %1337 = call double @llvm.fmuladd.f64(double %1336, double %1317, double %1331)
  %1338 = fneg double %1335
  %1339 = call double @llvm.fmuladd.f64(double %1338, double %1317, double %1337)
  %1340 = call double @llvm.fmuladd.f64(double %1336, double %1318, double %1339)
  %1341 = fneg double %1340
  %1342 = call double @llvm.fmuladd.f64(double %1335, double %1318, double %1341)
  %1343 = fadd double %1342, %1319
  %1344 = fsub double %1343, %1319
  %1345 = fsub double %1343, %1344
  %1346 = fsub double %1342, %1344
  %1347 = fsub double %1319, %1345
  %1348 = fadd double %1346, %1347
  %1349 = getelementptr inbounds i8, ptr %24, i64 8
  store double %1348, ptr %1349, align 8, !tbaa !5
  %1350 = fadd double %1331, %1343
  %1351 = fsub double %1350, %1331
  %1352 = fsub double %1343, %1351
  %1353 = getelementptr inbounds i8, ptr %24, i64 16
  store double %1352, ptr %1353, align 16, !tbaa !5
  %1354 = getelementptr inbounds i8, ptr %24, i64 24
  store double %1350, ptr %1354, align 8, !tbaa !5
  %1355 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.62691, ptr noundef nonnull %.6, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.62680)
  br i1 %870, label %1356, label %1396

1356:                                             ; preds = %1297
  %1357 = load double, ptr @splitter, align 8, !tbaa !5
  %1358 = fmul double %296, %1357
  %1359 = fsub double %1358, %296
  %1360 = fsub double %1358, %1359
  %1361 = fsub double %296, %1360
  %1362 = fmul double %296, %1314
  %1363 = fmul double %1314, %1357
  %1364 = fsub double %1363, %1314
  %1365 = fsub double %1363, %1364
  %1366 = fsub double %1314, %1365
  %1367 = fneg double %1365
  %1368 = call double @llvm.fmuladd.f64(double %1367, double %1360, double %1362)
  %1369 = fneg double %1366
  %1370 = call double @llvm.fmuladd.f64(double %1369, double %1360, double %1368)
  %1371 = call double @llvm.fmuladd.f64(double %1367, double %1361, double %1370)
  %1372 = fneg double %1371
  %1373 = call double @llvm.fmuladd.f64(double %1366, double %1361, double %1372)
  store double %1373, ptr %24, align 16, !tbaa !5
  %1374 = fmul double %1298, %296
  %1375 = fmul double %1298, %1357
  %1376 = fsub double %1375, %1298
  %1377 = fsub double %1375, %1376
  %1378 = fsub double %1298, %1377
  %1379 = fneg double %1377
  %1380 = call double @llvm.fmuladd.f64(double %1379, double %1360, double %1374)
  %1381 = fneg double %1378
  %1382 = call double @llvm.fmuladd.f64(double %1381, double %1360, double %1380)
  %1383 = call double @llvm.fmuladd.f64(double %1379, double %1361, double %1382)
  %1384 = fneg double %1383
  %1385 = call double @llvm.fmuladd.f64(double %1378, double %1361, double %1384)
  %1386 = fadd double %1362, %1385
  %1387 = fsub double %1386, %1362
  %1388 = fsub double %1386, %1387
  %1389 = fsub double %1385, %1387
  %1390 = fsub double %1362, %1388
  %1391 = fadd double %1389, %1390
  store double %1391, ptr %1349, align 8, !tbaa !5
  %1392 = fadd double %1374, %1386
  %1393 = fsub double %1392, %1374
  %1394 = fsub double %1386, %1393
  store double %1394, ptr %1353, align 16, !tbaa !5
  store double %1392, ptr %1354, align 8, !tbaa !5
  %1395 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %1355, ptr noundef nonnull %.62680, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.6)
  br label %1396

1396:                                             ; preds = %1297, %1356, %1295
  %.72692 = phi i32 [ %1395, %1356 ], [ %1355, %1297 ], [ %.62691, %1295 ]
  %.72681 = phi ptr [ %.62680, %1356 ], [ %.6, %1297 ], [ %.62680, %1295 ]
  %.7 = phi ptr [ %.6, %1356 ], [ %.62680, %1297 ], [ %.6, %1295 ]
  %1397 = extractelement <2 x double> %287, i64 1
  %1398 = fcmp une double %1397, 0.000000e+00
  br i1 %1398, label %1399, label %1498

1399:                                             ; preds = %1396
  %1400 = fneg double %270
  %1401 = fmul double %1397, %1400
  %1402 = load double, ptr @splitter, align 8, !tbaa !5
  %1403 = fmul double %1402, %1400
  %1404 = fadd double %270, %1403
  %1405 = fsub double %1403, %1404
  %1406 = fsub double %1400, %1405
  %1407 = fmul double %1397, %1402
  %1408 = fsub double %1407, %1397
  %1409 = fsub double %1407, %1408
  %1410 = fsub double %1397, %1409
  %1411 = fneg double %1405
  %1412 = call double @llvm.fmuladd.f64(double %1411, double %1409, double %1401)
  %1413 = fneg double %1406
  %1414 = call double @llvm.fmuladd.f64(double %1413, double %1409, double %1412)
  %1415 = call double @llvm.fmuladd.f64(double %1411, double %1410, double %1414)
  %1416 = fneg double %1415
  %1417 = call double @llvm.fmuladd.f64(double %1406, double %1410, double %1416)
  %1418 = fmul double %114, %1402
  %1419 = fsub double %1418, %114
  %1420 = fsub double %1418, %1419
  %1421 = fsub double %114, %1420
  %1422 = fmul double %114, %1417
  %1423 = fmul double %1402, %1417
  %1424 = fsub double %1423, %1417
  %1425 = fsub double %1423, %1424
  %1426 = fsub double %1417, %1425
  %1427 = fneg double %1425
  %1428 = call double @llvm.fmuladd.f64(double %1427, double %1420, double %1422)
  %1429 = fneg double %1426
  %1430 = call double @llvm.fmuladd.f64(double %1429, double %1420, double %1428)
  %1431 = call double @llvm.fmuladd.f64(double %1427, double %1421, double %1430)
  %1432 = fneg double %1431
  %1433 = call double @llvm.fmuladd.f64(double %1426, double %1421, double %1432)
  store double %1433, ptr %24, align 16, !tbaa !5
  %1434 = fmul double %114, %1401
  %1435 = fmul double %1401, %1402
  %1436 = fsub double %1435, %1401
  %1437 = fsub double %1435, %1436
  %1438 = fsub double %1401, %1437
  %1439 = fneg double %1437
  %1440 = call double @llvm.fmuladd.f64(double %1439, double %1420, double %1434)
  %1441 = fneg double %1438
  %1442 = call double @llvm.fmuladd.f64(double %1441, double %1420, double %1440)
  %1443 = call double @llvm.fmuladd.f64(double %1439, double %1421, double %1442)
  %1444 = fneg double %1443
  %1445 = call double @llvm.fmuladd.f64(double %1438, double %1421, double %1444)
  %1446 = fadd double %1445, %1422
  %1447 = fsub double %1446, %1422
  %1448 = fsub double %1446, %1447
  %1449 = fsub double %1445, %1447
  %1450 = fsub double %1422, %1448
  %1451 = fadd double %1449, %1450
  %1452 = getelementptr inbounds i8, ptr %24, i64 8
  store double %1451, ptr %1452, align 8, !tbaa !5
  %1453 = fadd double %1434, %1446
  %1454 = fsub double %1453, %1434
  %1455 = fsub double %1446, %1454
  %1456 = getelementptr inbounds i8, ptr %24, i64 16
  store double %1455, ptr %1456, align 16, !tbaa !5
  %1457 = getelementptr inbounds i8, ptr %24, i64 24
  store double %1453, ptr %1457, align 8, !tbaa !5
  %1458 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.72692, ptr noundef nonnull %.7, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.72681)
  br i1 %865, label %.thread, label %.thread2746

.thread:                                          ; preds = %1399
  %1459 = load double, ptr @splitter, align 8, !tbaa !5
  %1460 = fmul double %294, %1459
  %1461 = fsub double %1460, %294
  %1462 = fsub double %1460, %1461
  %1463 = fsub double %294, %1462
  %1464 = fmul double %294, %1417
  %1465 = fmul double %1417, %1459
  %1466 = fsub double %1465, %1417
  %1467 = fsub double %1465, %1466
  %1468 = fsub double %1417, %1467
  %1469 = fneg double %1467
  %1470 = call double @llvm.fmuladd.f64(double %1469, double %1462, double %1464)
  %1471 = fneg double %1468
  %1472 = call double @llvm.fmuladd.f64(double %1471, double %1462, double %1470)
  %1473 = call double @llvm.fmuladd.f64(double %1469, double %1463, double %1472)
  %1474 = fneg double %1473
  %1475 = call double @llvm.fmuladd.f64(double %1468, double %1463, double %1474)
  store double %1475, ptr %24, align 16, !tbaa !5
  %1476 = fmul double %1401, %294
  %1477 = fmul double %1401, %1459
  %1478 = fsub double %1477, %1401
  %1479 = fsub double %1477, %1478
  %1480 = fsub double %1401, %1479
  %1481 = fneg double %1479
  %1482 = call double @llvm.fmuladd.f64(double %1481, double %1462, double %1476)
  %1483 = fneg double %1480
  %1484 = call double @llvm.fmuladd.f64(double %1483, double %1462, double %1482)
  %1485 = call double @llvm.fmuladd.f64(double %1481, double %1463, double %1484)
  %1486 = fneg double %1485
  %1487 = call double @llvm.fmuladd.f64(double %1480, double %1463, double %1486)
  %1488 = fadd double %1464, %1487
  %1489 = fsub double %1488, %1464
  %1490 = fsub double %1488, %1489
  %1491 = fsub double %1487, %1489
  %1492 = fsub double %1464, %1490
  %1493 = fadd double %1491, %1492
  store double %1493, ptr %1452, align 8, !tbaa !5
  %1494 = fadd double %1476, %1488
  %1495 = fsub double %1494, %1476
  %1496 = fsub double %1488, %1495
  store double %1496, ptr %1456, align 16, !tbaa !5
  store double %1494, ptr %1457, align 8, !tbaa !5
  %1497 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %1458, ptr noundef nonnull %.72681, i32 noundef 4, ptr noundef nonnull %24, ptr noundef nonnull %.7)
  br label %1499

1498:                                             ; preds = %1396, %1293
  %.82693 = phi i32 [ %.72692, %1396 ], [ %.62691, %1293 ]
  %.82682 = phi ptr [ %.72681, %1396 ], [ %.62680, %1293 ]
  %.8 = phi ptr [ %.7, %1396 ], [ %.6, %1293 ]
  br i1 %865, label %1499, label %.thread2746

1499:                                             ; preds = %.thread, %1498
  %.82745 = phi ptr [ %.7, %.thread ], [ %.8, %1498 ]
  %.826822744 = phi ptr [ %.72681, %.thread ], [ %.82682, %1498 ]
  %.826932743 = phi i32 [ %1497, %.thread ], [ %.82693, %1498 ]
  %1500 = call i32 @scale_expansion_zeroelim(i32 noundef %856, ptr noundef nonnull %21, double noundef %294, ptr noundef nonnull %26)
  %1501 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.826932743, ptr noundef nonnull %.82745, i32 noundef %1500, ptr noundef nonnull %26, ptr noundef nonnull %.826822744)
  br label %.thread2746

.thread2746:                                      ; preds = %1399, %1499, %1498
  %.92694 = phi i32 [ %1501, %1499 ], [ %.82693, %1498 ], [ %1458, %1399 ]
  %.92683 = phi ptr [ %.82745, %1499 ], [ %.82682, %1498 ], [ %.7, %1399 ]
  %.9 = phi ptr [ %.826822744, %1499 ], [ %.8, %1498 ], [ %.72681, %1399 ]
  br i1 %870, label %1502, label %1505

1502:                                             ; preds = %.thread2746
  %1503 = call i32 @scale_expansion_zeroelim(i32 noundef %859, ptr noundef nonnull %22, double noundef %296, ptr noundef nonnull %26)
  %1504 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.92694, ptr noundef nonnull %.9, i32 noundef %1503, ptr noundef nonnull %26, ptr noundef nonnull %.92683)
  br label %1505

1505:                                             ; preds = %1502, %.thread2746
  %.102695 = phi i32 [ %1504, %1502 ], [ %.92694, %.thread2746 ]
  %.102684 = phi ptr [ %.9, %1502 ], [ %.92683, %.thread2746 ]
  %.10 = phi ptr [ %.92683, %1502 ], [ %.9, %.thread2746 ]
  br i1 %875, label %1506, label %1509

1506:                                             ; preds = %1505
  %1507 = call i32 @scale_expansion_zeroelim(i32 noundef %862, ptr noundef nonnull %23, double noundef %337, ptr noundef nonnull %26)
  %1508 = call i32 @fast_expansion_sum_zeroelim(i32 noundef %.102695, ptr noundef nonnull %.10, i32 noundef %1507, ptr noundef nonnull %26, ptr noundef nonnull %.102684)
  br label %1509

1509:                                             ; preds = %1506, %1505
  %.112696 = phi i32 [ %1508, %1506 ], [ %.102695, %1505 ]
  %.11 = phi ptr [ %.102684, %1506 ], [ %.10, %1505 ]
  %1510 = add nsw i32 %.112696, -1
  %1511 = sext i32 %1510 to i64
  %1512 = getelementptr inbounds double, ptr %.11, i64 %1511
  %1513 = load double, ptr %1512, align 8, !tbaa !5
  br label %1514

1514:                                             ; preds = %299, %231, %5, %228, %1509
  %.0 = phi double [ %1513, %1509 ], [ %224, %228 ], [ %224, %5 ], [ %224, %231 ], [ %341, %299 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 1536, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 1536, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #4
  ret double %.0
}

; 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>) #3

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass