; LLVM IR from siconos/siconos :: numerics/src/FrictionContact/Generated (fc3d_NaturalMapABGenerated)

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

; Function Attrs: nounwind uwtable
define dso_local void @fc3d_NaturalMapABGenerated(double noundef %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, ptr noundef %10) #0 {
  %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 ptr, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %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 double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %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 double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca i32, align 4
  %86 = alloca double, align 8
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca double, align 8
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %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 double, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca double, align 8
  %110 = alloca double, align 8
  %111 = alloca double, align 8
  %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 double, align 8
  %125 = alloca double, align 8
  %126 = alloca double, align 8
  %127 = alloca double, align 8
  %128 = alloca double, align 8
  %129 = alloca double, align 8
  %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 i32, align 4
  %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
  store double %0, ptr %12, align 8, !tbaa !5
  store double %1, ptr %13, align 8, !tbaa !5
  store double %2, ptr %14, align 8, !tbaa !5
  store double %3, ptr %15, align 8, !tbaa !5
  store double %4, ptr %16, align 8, !tbaa !5
  store double %5, ptr %17, align 8, !tbaa !5
  store double %6, ptr %18, align 8, !tbaa !5
  store double %7, ptr %19, align 8, !tbaa !5
  store double %8, ptr %20, align 8, !tbaa !5
  store double %9, ptr %21, align 8, !tbaa !5
  store ptr %10, ptr %22, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  store double 0.000000e+00, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  store double 0.000000e+00, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  store i32 0, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  store i32 0, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  store i32 0, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  store double 0.000000e+00, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  store double 0.000000e+00, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  store double 0.000000e+00, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  store double 0.000000e+00, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  store double 0.000000e+00, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  store double 0.000000e+00, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  store double 0.000000e+00, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  store double 0.000000e+00, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  store double 0.000000e+00, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  store double 0.000000e+00, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  store double 0.000000e+00, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  store double 0.000000e+00, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  store double 0.000000e+00, ptr %42, align 8, !tbaa !5
  %147 = load double, ptr %13, align 8, !tbaa !5
  %148 = load double, ptr %13, align 8, !tbaa !5
  %149 = load double, ptr %14, align 8, !tbaa !5
  %150 = load double, ptr %14, align 8, !tbaa !5
  %151 = fmul double %149, %150
  %152 = call double @llvm.fmuladd.f64(double %147, double %148, double %151)
  store double %152, ptr %23, align 8, !tbaa !5
  %153 = load double, ptr %16, align 8, !tbaa !5
  %154 = load double, ptr %16, align 8, !tbaa !5
  %155 = load double, ptr %17, align 8, !tbaa !5
  %156 = load double, ptr %17, align 8, !tbaa !5
  %157 = fmul double %155, %156
  %158 = call double @llvm.fmuladd.f64(double %153, double %154, double %157)
  store double %158, ptr %24, align 8, !tbaa !5
  %159 = load double, ptr %23, align 8, !tbaa !5
  %160 = fcmp ole double %159, 0x3CB0000000000000
  %161 = zext i1 %160 to i32
  store i32 %161, ptr %25, align 4, !tbaa !11
  %162 = load double, ptr %24, align 8, !tbaa !5
  %163 = fcmp ole double %162, 0x3CB0000000000000
  %164 = zext i1 %163 to i32
  store i32 %164, ptr %26, align 4, !tbaa !11
  %165 = load i32, ptr %25, align 4, !tbaa !11
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %167, label %170

167:                                              ; preds = %11
  %168 = load i32, ptr %26, align 4, !tbaa !11
  %169 = icmp ne i32 %168, 0
  br label %170

170:                                              ; preds = %167, %11
  %171 = phi i1 [ false, %11 ], [ %169, %167 ]
  %172 = zext i1 %171 to i32
  store i32 %172, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  store i32 0, ptr %43, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  store i32 0, ptr %44, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  store double 0.000000e+00, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  store double 0.000000e+00, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  store double 0.000000e+00, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  store double 0.000000e+00, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  store double 0.000000e+00, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  store double 0.000000e+00, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  store double 0.000000e+00, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  store double 0.000000e+00, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  store double 0.000000e+00, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  store double 0.000000e+00, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  store double 0.000000e+00, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  store double 0.000000e+00, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  store double 0.000000e+00, ptr %57, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  store double 0.000000e+00, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  store double 0.000000e+00, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  store double 0.000000e+00, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  store double 0.000000e+00, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #4
  store double 0.000000e+00, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #4
  store double 0.000000e+00, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  store double 0.000000e+00, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #4
  store double 0.000000e+00, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #4
  store double 0.000000e+00, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #4
  store double 0.000000e+00, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #4
  store double 0.000000e+00, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #4
  store double 0.000000e+00, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  store double 0.000000e+00, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #4
  store double 0.000000e+00, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #4
  store double 0.000000e+00, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #4
  store double 0.000000e+00, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #4
  store double 0.000000e+00, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  store double 0.000000e+00, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #4
  store double 0.000000e+00, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #4
  store double 0.000000e+00, ptr %77, align 8, !tbaa !5
  %173 = load double, ptr %23, align 8, !tbaa !5
  %174 = fcmp ogt double %173, 0x3CB0000000000000
  %175 = zext i1 %174 to i32
  store i32 %175, ptr %43, align 4, !tbaa !11
  %176 = load i32, ptr %26, align 4, !tbaa !11
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %181

178:                                              ; preds = %170
  %179 = load i32, ptr %43, align 4, !tbaa !11
  %180 = icmp ne i32 %179, 0
  br label %181

181:                                              ; preds = %178, %170
  %182 = phi i1 [ false, %170 ], [ %180, %178 ]
  %183 = zext i1 %182 to i32
  store i32 %183, ptr %44, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #4
  store double 0.000000e+00, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #4
  store double 0.000000e+00, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #4
  store double 0.000000e+00, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #4
  store double 0.000000e+00, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #4
  store double 0.000000e+00, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #4
  store double 0.000000e+00, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #4
  store double 0.000000e+00, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #4
  store i32 0, ptr %85, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #4
  store double 0.000000e+00, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #4
  store i32 0, ptr %87, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #4
  store i32 0, ptr %88, align 4, !tbaa !11
  %184 = load double, ptr %18, align 8, !tbaa !5
  %185 = load double, ptr %16, align 8, !tbaa !5
  %186 = fmul double %184, %185
  store double %186, ptr %78, align 8, !tbaa !5
  %187 = load double, ptr %13, align 8, !tbaa !5
  %188 = load double, ptr %78, align 8, !tbaa !5
  %189 = fsub double %187, %188
  store double %189, ptr %79, align 8, !tbaa !5
  %190 = load double, ptr %79, align 8, !tbaa !5
  %191 = load double, ptr %79, align 8, !tbaa !5
  %192 = fmul double %190, %191
  store double %192, ptr %80, align 8, !tbaa !5
  %193 = load double, ptr %18, align 8, !tbaa !5
  %194 = load double, ptr %17, align 8, !tbaa !5
  %195 = fmul double %193, %194
  store double %195, ptr %81, align 8, !tbaa !5
  %196 = load double, ptr %14, align 8, !tbaa !5
  %197 = load double, ptr %81, align 8, !tbaa !5
  %198 = fsub double %196, %197
  store double %198, ptr %82, align 8, !tbaa !5
  %199 = load double, ptr %82, align 8, !tbaa !5
  %200 = load double, ptr %82, align 8, !tbaa !5
  %201 = fmul double %199, %200
  store double %201, ptr %83, align 8, !tbaa !5
  %202 = load double, ptr %80, align 8, !tbaa !5
  %203 = load double, ptr %83, align 8, !tbaa !5
  %204 = fadd double %202, %203
  store double %204, ptr %84, align 8, !tbaa !5
  %205 = load double, ptr %24, align 8, !tbaa !5
  %206 = fcmp oge double %205, 0x3CB0000000000000
  %207 = zext i1 %206 to i32
  store i32 %207, ptr %85, align 4, !tbaa !11
  %208 = load double, ptr %18, align 8, !tbaa !5
  %209 = fadd double %208, 1.000000e+00
  %210 = fmul double 0x3CB0000000000000, %209
  store double %210, ptr %86, align 8, !tbaa !5
  %211 = load double, ptr %84, align 8, !tbaa !5
  %212 = load double, ptr %86, align 8, !tbaa !5
  %213 = fcmp ole double %211, %212
  %214 = zext i1 %213 to i32
  store i32 %214, ptr %87, align 4, !tbaa !11
  %215 = load i32, ptr %25, align 4, !tbaa !11
  %216 = icmp ne i32 %215, 0
  br i1 %216, label %217, label %223

217:                                              ; preds = %181
  %218 = load i32, ptr %85, align 4, !tbaa !11
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %223

220:                                              ; preds = %217
  %221 = load i32, ptr %87, align 4, !tbaa !11
  %222 = icmp ne i32 %221, 0
  br label %223

223:                                              ; preds = %220, %217, %181
  %224 = phi i1 [ false, %217 ], [ false, %181 ], [ %222, %220 ]
  %225 = zext i1 %224 to i32
  store i32 %225, ptr %88, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #4
  store i32 0, ptr %89, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #4
  store double 0.000000e+00, ptr %90, align 8, !tbaa !5
  %226 = load i32, ptr %43, align 4, !tbaa !11
  %227 = icmp ne i32 %226, 0
  br i1 %227, label %228, label %234

228:                                              ; preds = %223
  %229 = load i32, ptr %85, align 4, !tbaa !11
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %231, label %234

231:                                              ; preds = %228
  %232 = load i32, ptr %87, align 4, !tbaa !11
  %233 = icmp ne i32 %232, 0
  br label %234

234:                                              ; preds = %231, %228, %223
  %235 = phi i1 [ false, %228 ], [ false, %223 ], [ %233, %231 ]
  %236 = zext i1 %235 to i32
  store i32 %236, ptr %89, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #4
  store i32 0, ptr %91, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #4
  store i32 0, ptr %92, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #4
  store i32 0, ptr %93, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #4
  store double 0.000000e+00, ptr %94, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #4
  store double 0.000000e+00, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #4
  store double 0.000000e+00, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #4
  store double 0.000000e+00, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #4
  store double 0.000000e+00, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #4
  store double 0.000000e+00, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #4
  store double 0.000000e+00, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #4
  store double 0.000000e+00, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #4
  store double 0.000000e+00, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #4
  store double 0.000000e+00, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #4
  store double 0.000000e+00, ptr %104, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #4
  store double 0.000000e+00, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #4
  store double 0.000000e+00, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #4
  store double 0.000000e+00, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #4
  store double 0.000000e+00, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #4
  store double 0.000000e+00, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #4
  store double 0.000000e+00, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #4
  store double 0.000000e+00, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #4
  store double 0.000000e+00, ptr %112, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #4
  store double 0.000000e+00, ptr %113, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #4
  store double 0.000000e+00, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #4
  store double 0.000000e+00, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #4
  store double 0.000000e+00, ptr %116, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #4
  store double 0.000000e+00, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #4
  store double 0.000000e+00, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #4
  store double 0.000000e+00, ptr %119, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #4
  store double 0.000000e+00, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #4
  store double 0.000000e+00, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #4
  store double 0.000000e+00, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #4
  store double 0.000000e+00, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #4
  store double 0.000000e+00, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #4
  store double 0.000000e+00, ptr %125, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #4
  store double 0.000000e+00, ptr %126, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #4
  store double 0.000000e+00, ptr %127, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #4
  store double 0.000000e+00, ptr %128, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #4
  store double 0.000000e+00, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #4
  store double 0.000000e+00, ptr %130, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #4
  store double 0.000000e+00, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #4
  store double 0.000000e+00, ptr %132, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #4
  store double 0.000000e+00, ptr %133, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #4
  store double 0.000000e+00, ptr %134, align 8, !tbaa !5
  %237 = load i32, ptr %85, align 4, !tbaa !11
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %242

239:                                              ; preds = %234
  %240 = load i32, ptr %87, align 4, !tbaa !11
  %241 = icmp ne i32 %240, 0
  br label %242

242:                                              ; preds = %239, %234
  %243 = phi i1 [ false, %234 ], [ %241, %239 ]
  %244 = zext i1 %243 to i32
  store i32 %244, ptr %91, align 4, !tbaa !11
  %245 = load i32, ptr %26, align 4, !tbaa !11
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %250, label %247

247:                                              ; preds = %242
  %248 = load i32, ptr %91, align 4, !tbaa !11
  %249 = icmp ne i32 %248, 0
  br label %250

250:                                              ; preds = %247, %242
  %251 = phi i1 [ true, %242 ], [ %249, %247 ]
  %252 = zext i1 %251 to i32
  store i32 %252, ptr %92, align 4, !tbaa !11
  %253 = load i32, ptr %92, align 4, !tbaa !11
  %254 = icmp ne i32 %253, 0
  %255 = xor i1 %254, true
  %256 = zext i1 %255 to i32
  store i32 %256, ptr %93, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #4
  store double 0.000000e+00, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #4
  store double 0.000000e+00, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #4
  store i32 0, ptr %137, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #4
  store double 0.000000e+00, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #4
  store double 0.000000e+00, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #4
  store double 0.000000e+00, ptr %140, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #4
  store double 0.000000e+00, ptr %141, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #4
  store double 0.000000e+00, ptr %142, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #4
  store double 0.000000e+00, ptr %143, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #4
  store double 0.000000e+00, ptr %144, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #4
  store double 0.000000e+00, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #4
  store double 0.000000e+00, ptr %146, align 8, !tbaa !5
  %257 = load double, ptr %84, align 8, !tbaa !5
  %258 = load double, ptr %86, align 8, !tbaa !5
  %259 = fcmp ogt double %257, %258
  %260 = zext i1 %259 to i32
  store i32 %260, ptr %137, align 4, !tbaa !11
  %261 = load i32, ptr %27, align 4, !tbaa !11
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %263, label %321

263:                                              ; preds = %250
  %264 = load double, ptr %18, align 8, !tbaa !5
  %265 = fmul double 2.000000e+00, %264
  %266 = load double, ptr %18, align 8, !tbaa !5
  %267 = load double, ptr %18, align 8, !tbaa !5
  %268 = fmul double 2.000000e+00, %267
  %269 = fneg double %268
  %270 = call double @llvm.fmuladd.f64(double %265, double %266, double %269)
  %271 = fadd double %270, 1.000000e+00
  store double %271, ptr %28, align 8, !tbaa !5
  %272 = load double, ptr %18, align 8, !tbaa !5
  %273 = load double, ptr %12, align 8, !tbaa !5
  %274 = fmul double %272, %273
  store double %274, ptr %29, align 8, !tbaa !5
  %275 = call double @sqrt(double noundef 2.000000e+00) #4
  store double %275, ptr %30, align 8, !tbaa !5
  %276 = load double, ptr %15, align 8, !tbaa !5
  %277 = load double, ptr %29, align 8, !tbaa !5
  %278 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %276, double %277)
  store double %278, ptr %31, align 8, !tbaa !5
  %279 = load double, ptr %31, align 8, !tbaa !5
  %280 = fcmp olt double %279, 0.000000e+00
  br i1 %280, label %281, label %282

281:                                              ; preds = %263
  br label %287

282:                                              ; preds = %263
  %283 = load double, ptr %31, align 8, !tbaa !5
  %284 = fcmp ogt double %283, 0.000000e+00
  %285 = zext i1 %284 to i64
  %286 = select i1 %284, double 1.000000e+00, double 0.000000e+00
  br label %287

287:                                              ; preds = %282, %281
  %288 = phi double [ 0.000000e+00, %281 ], [ %286, %282 ]
  store double %288, ptr %32, align 8, !tbaa !5
  %289 = load double, ptr %18, align 8, !tbaa !5
  %290 = load double, ptr %32, align 8, !tbaa !5
  %291 = fmul double %289, %290
  store double %291, ptr %33, align 8, !tbaa !5
  %292 = load double, ptr %30, align 8, !tbaa !5
  %293 = fmul double 5.000000e-01, %292
  %294 = load double, ptr %33, align 8, !tbaa !5
  %295 = fmul double %293, %294
  store double %295, ptr %34, align 8, !tbaa !5
  %296 = load double, ptr %28, align 8, !tbaa !5
  %297 = fdiv double 1.000000e+00, %296
  store double %297, ptr %35, align 8, !tbaa !5
  %298 = load double, ptr %18, align 8, !tbaa !5
  %299 = fsub double %298, 1.000000e+00
  store double %299, ptr %36, align 8, !tbaa !5
  %300 = load double, ptr %36, align 8, !tbaa !5
  %301 = load double, ptr %36, align 8, !tbaa !5
  %302 = fmul double %300, %301
  store double %302, ptr %37, align 8, !tbaa !5
  %303 = load double, ptr %18, align 8, !tbaa !5
  %304 = load double, ptr %18, align 8, !tbaa !5
  %305 = fmul double %303, %304
  store double %305, ptr %38, align 8, !tbaa !5
  %306 = load double, ptr %32, align 8, !tbaa !5
  %307 = load double, ptr %35, align 8, !tbaa !5
  %308 = fmul double %306, %307
  store double %308, ptr %39, align 8, !tbaa !5
  %309 = load double, ptr %18, align 8, !tbaa !5
  %310 = load double, ptr %38, align 8, !tbaa !5
  %311 = fmul double 2.000000e+00, %310
  %312 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %309, double %311)
  %313 = fadd double %312, 1.000000e+00
  store double %313, ptr %40, align 8, !tbaa !5
  %314 = load double, ptr %40, align 8, !tbaa !5
  %315 = fdiv double 1.000000e+00, %314
  store double %315, ptr %41, align 8, !tbaa !5
  %316 = load double, ptr %18, align 8, !tbaa !5
  %317 = load double, ptr %18, align 8, !tbaa !5
  %318 = fmul double %316, %317
  %319 = load double, ptr %18, align 8, !tbaa !5
  %320 = fmul double %318, %319
  store double %320, ptr %42, align 8, !tbaa !5
  br label %321

321:                                              ; preds = %287, %250
  %322 = load i32, ptr %44, align 4, !tbaa !11
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %469

324:                                              ; preds = %321
  %325 = load double, ptr %15, align 8, !tbaa !5
  %326 = fneg double %325
  store double %326, ptr %45, align 8, !tbaa !5
  %327 = load double, ptr %18, align 8, !tbaa !5
  %328 = load double, ptr %12, align 8, !tbaa !5
  %329 = fmul double %327, %328
  store double %329, ptr %29, align 8, !tbaa !5
  %330 = call double @sqrt(double noundef 2.000000e+00) #4
  store double %330, ptr %30, align 8, !tbaa !5
  %331 = load double, ptr %15, align 8, !tbaa !5
  %332 = load double, ptr %29, align 8, !tbaa !5
  %333 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %331, double %332)
  store double %333, ptr %31, align 8, !tbaa !5
  %334 = load double, ptr %23, align 8, !tbaa !5
  %335 = call double @sqrt(double noundef %334) #4
  store double %335, ptr %46, align 8, !tbaa !5
  %336 = load double, ptr %46, align 8, !tbaa !5
  %337 = fdiv double 1.000000e+00, %336
  store double %337, ptr %47, align 8, !tbaa !5
  %338 = load double, ptr %18, align 8, !tbaa !5
  %339 = fmul double 2.500000e-01, %338
  %340 = load double, ptr %47, align 8, !tbaa !5
  %341 = fmul double %339, %340
  store double %341, ptr %48, align 8, !tbaa !5
  %342 = load double, ptr %31, align 8, !tbaa !5
  %343 = load double, ptr %46, align 8, !tbaa !5
  %344 = fadd double %342, %343
  %345 = fcmp olt double %344, 0.000000e+00
  br i1 %345, label %346, label %347

346:                                              ; preds = %324
  br label %354

347:                                              ; preds = %324
  %348 = load double, ptr %31, align 8, !tbaa !5
  %349 = load double, ptr %46, align 8, !tbaa !5
  %350 = fadd double %348, %349
  %351 = fcmp ogt double %350, 0.000000e+00
  %352 = zext i1 %351 to i64
  %353 = select i1 %351, double 1.000000e+00, double 0.000000e+00
  br label %354

354:                                              ; preds = %347, %346
  %355 = phi double [ 0.000000e+00, %346 ], [ %353, %347 ]
  store double %355, ptr %49, align 8, !tbaa !5
  %356 = load double, ptr %49, align 8, !tbaa !5
  %357 = fmul double 2.000000e+00, %356
  store double %357, ptr %50, align 8, !tbaa !5
  %358 = load double, ptr %13, align 8, !tbaa !5
  %359 = load double, ptr %50, align 8, !tbaa !5
  %360 = fmul double %358, %359
  store double %360, ptr %51, align 8, !tbaa !5
  %361 = load double, ptr %31, align 8, !tbaa !5
  %362 = load double, ptr %46, align 8, !tbaa !5
  %363 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %362, double %361)
  %364 = fcmp olt double %363, 0.000000e+00
  br i1 %364, label %365, label %366

365:                                              ; preds = %354
  br label %373

366:                                              ; preds = %354
  %367 = load double, ptr %31, align 8, !tbaa !5
  %368 = load double, ptr %46, align 8, !tbaa !5
  %369 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %368, double %367)
  %370 = fcmp ogt double %369, 0.000000e+00
  %371 = zext i1 %370 to i64
  %372 = select i1 %370, double 1.000000e+00, double 0.000000e+00
  br label %373

373:                                              ; preds = %366, %365
  %374 = phi double [ 0.000000e+00, %365 ], [ %372, %366 ]
  store double %374, ptr %52, align 8, !tbaa !5
  %375 = load double, ptr %52, align 8, !tbaa !5
  %376 = fmul double 2.000000e+00, %375
  store double %376, ptr %53, align 8, !tbaa !5
  %377 = load double, ptr %30, align 8, !tbaa !5
  %378 = load double, ptr %46, align 8, !tbaa !5
  %379 = fmul double %377, %378
  store double %379, ptr %54, align 8, !tbaa !5
  %380 = load double, ptr %49, align 8, !tbaa !5
  %381 = load double, ptr %54, align 8, !tbaa !5
  %382 = load double, ptr %52, align 8, !tbaa !5
  %383 = load double, ptr %54, align 8, !tbaa !5
  %384 = fmul double %382, %383
  %385 = call double @llvm.fmuladd.f64(double %380, double %381, double %384)
  store double %385, ptr %55, align 8, !tbaa !5
  %386 = load double, ptr %14, align 8, !tbaa !5
  %387 = load double, ptr %50, align 8, !tbaa !5
  %388 = fmul double %386, %387
  store double %388, ptr %56, align 8, !tbaa !5
  %389 = load double, ptr %23, align 8, !tbaa !5
  %390 = call double @sqrt(double noundef %389) #4
  %391 = load double, ptr %23, align 8, !tbaa !5
  %392 = call double @sqrt(double noundef %391) #4
  %393 = fmul double %390, %392
  %394 = load double, ptr %23, align 8, !tbaa !5
  %395 = call double @sqrt(double noundef %394) #4
  %396 = fmul double %393, %395
  %397 = fdiv double 1.000000e+00, %396
  store double %397, ptr %57, align 8, !tbaa !5
  %398 = load double, ptr %18, align 8, !tbaa !5
  %399 = fmul double 2.500000e-01, %398
  %400 = load double, ptr %57, align 8, !tbaa !5
  %401 = fmul double %399, %400
  store double %401, ptr %58, align 8, !tbaa !5
  %402 = load double, ptr %14, align 8, !tbaa !5
  %403 = load double, ptr %14, align 8, !tbaa !5
  %404 = fmul double %402, %403
  store double %404, ptr %59, align 8, !tbaa !5
  %405 = load double, ptr %45, align 8, !tbaa !5
  %406 = load double, ptr %29, align 8, !tbaa !5
  %407 = fadd double %405, %406
  store double %407, ptr %60, align 8, !tbaa !5
  %408 = load double, ptr %46, align 8, !tbaa !5
  %409 = load double, ptr %60, align 8, !tbaa !5
  %410 = fadd double %408, %409
  %411 = call double @llvm.maxnum.f64(double 0.000000e+00, double %410)
  store double %411, ptr %61, align 8, !tbaa !5
  %412 = load double, ptr %61, align 8, !tbaa !5
  %413 = fmul double 2.000000e+00, %412
  store double %413, ptr %62, align 8, !tbaa !5
  %414 = load double, ptr %46, align 8, !tbaa !5
  %415 = fneg double %414
  %416 = load double, ptr %60, align 8, !tbaa !5
  %417 = fadd double %415, %416
  %418 = call double @llvm.maxnum.f64(double 0.000000e+00, double %417)
  store double %418, ptr %63, align 8, !tbaa !5
  %419 = load double, ptr %63, align 8, !tbaa !5
  %420 = fmul double 2.000000e+00, %419
  store double %420, ptr %64, align 8, !tbaa !5
  %421 = load double, ptr %13, align 8, !tbaa !5
  %422 = load double, ptr %13, align 8, !tbaa !5
  %423 = fmul double %421, %422
  store double %423, ptr %65, align 8, !tbaa !5
  %424 = load double, ptr %46, align 8, !tbaa !5
  %425 = fmul double 2.000000e+00, %424
  %426 = load double, ptr %49, align 8, !tbaa !5
  %427 = fmul double %425, %426
  store double %427, ptr %66, align 8, !tbaa !5
  %428 = load double, ptr %46, align 8, !tbaa !5
  %429 = fmul double 2.000000e+00, %428
  store double %429, ptr %67, align 8, !tbaa !5
  %430 = load double, ptr %52, align 8, !tbaa !5
  %431 = load double, ptr %65, align 8, !tbaa !5
  %432 = fmul double %430, %431
  store double %432, ptr %68, align 8, !tbaa !5
  %433 = load double, ptr %13, align 8, !tbaa !5
  %434 = load double, ptr %13, align 8, !tbaa !5
  %435 = fmul double %433, %434
  %436 = load double, ptr %13, align 8, !tbaa !5
  %437 = fmul double %435, %436
  store double %437, ptr %69, align 8, !tbaa !5
  %438 = load double, ptr %49, align 8, !tbaa !5
  %439 = load double, ptr %59, align 8, !tbaa !5
  %440 = fmul double %438, %439
  store double %440, ptr %70, align 8, !tbaa !5
  %441 = load double, ptr %52, align 8, !tbaa !5
  %442 = load double, ptr %59, align 8, !tbaa !5
  %443 = fmul double %441, %442
  store double %443, ptr %71, align 8, !tbaa !5
  %444 = load double, ptr %61, align 8, !tbaa !5
  %445 = fmul double 2.000000e+00, %444
  store double %445, ptr %72, align 8, !tbaa !5
  %446 = load double, ptr %63, align 8, !tbaa !5
  %447 = fmul double 2.000000e+00, %446
  store double %447, ptr %73, align 8, !tbaa !5
  %448 = load double, ptr %46, align 8, !tbaa !5
  %449 = fmul double 2.000000e+00, %448
  %450 = load double, ptr %52, align 8, !tbaa !5
  %451 = fmul double %449, %450
  store double %451, ptr %74, align 8, !tbaa !5
  %452 = load double, ptr %49, align 8, !tbaa !5
  %453 = load double, ptr %65, align 8, !tbaa !5
  %454 = fmul double %452, %453
  store double %454, ptr %75, align 8, !tbaa !5
  %455 = load double, ptr %30, align 8, !tbaa !5
  %456 = load double, ptr %75, align 8, !tbaa !5
  %457 = load double, ptr %68, align 8, !tbaa !5
  %458 = fsub double %456, %457
  %459 = load double, ptr %70, align 8, !tbaa !5
  %460 = fadd double %458, %459
  %461 = load double, ptr %71, align 8, !tbaa !5
  %462 = fsub double %460, %461
  %463 = fmul double %455, %462
  store double %463, ptr %76, align 8, !tbaa !5
  %464 = load double, ptr %14, align 8, !tbaa !5
  %465 = load double, ptr %14, align 8, !tbaa !5
  %466 = fmul double %464, %465
  %467 = load double, ptr %14, align 8, !tbaa !5
  %468 = fmul double %466, %467
  store double %468, ptr %77, align 8, !tbaa !5
  br label %469

469:                                              ; preds = %373, %321
  %470 = load i32, ptr %88, align 4, !tbaa !11
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %472, label %497

472:                                              ; preds = %469
  %473 = load double, ptr %18, align 8, !tbaa !5
  %474 = load double, ptr %12, align 8, !tbaa !5
  %475 = fmul double %473, %474
  store double %475, ptr %29, align 8, !tbaa !5
  %476 = call double @sqrt(double noundef 2.000000e+00) #4
  store double %476, ptr %30, align 8, !tbaa !5
  %477 = load double, ptr %15, align 8, !tbaa !5
  %478 = load double, ptr %29, align 8, !tbaa !5
  %479 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %477, double %478)
  store double %479, ptr %31, align 8, !tbaa !5
  %480 = load double, ptr %31, align 8, !tbaa !5
  %481 = fcmp olt double %480, 0.000000e+00
  br i1 %481, label %482, label %483

482:                                              ; preds = %472
  br label %488

483:                                              ; preds = %472
  %484 = load double, ptr %31, align 8, !tbaa !5
  %485 = fcmp ogt double %484, 0.000000e+00
  %486 = zext i1 %485 to i64
  %487 = select i1 %485, double 1.000000e+00, double 0.000000e+00
  br label %488

488:                                              ; preds = %483, %482
  %489 = phi double [ 0.000000e+00, %482 ], [ %487, %483 ]
  store double %489, ptr %32, align 8, !tbaa !5
  %490 = load double, ptr %18, align 8, !tbaa !5
  %491 = load double, ptr %32, align 8, !tbaa !5
  %492 = fmul double %490, %491
  store double %492, ptr %33, align 8, !tbaa !5
  %493 = load double, ptr %30, align 8, !tbaa !5
  %494 = fmul double 5.000000e-01, %493
  %495 = load double, ptr %33, align 8, !tbaa !5
  %496 = fmul double %494, %495
  store double %496, ptr %34, align 8, !tbaa !5
  br label %497

497:                                              ; preds = %488, %469
  %498 = load i32, ptr %89, align 4, !tbaa !11
  %499 = icmp ne i32 %498, 0
  br i1 %499, label %500, label %530

500:                                              ; preds = %497
  %501 = load double, ptr %18, align 8, !tbaa !5
  %502 = load double, ptr %12, align 8, !tbaa !5
  %503 = fmul double %501, %502
  store double %503, ptr %29, align 8, !tbaa !5
  %504 = load double, ptr %15, align 8, !tbaa !5
  %505 = load double, ptr %29, align 8, !tbaa !5
  %506 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %504, double %505)
  store double %506, ptr %31, align 8, !tbaa !5
  %507 = load double, ptr %23, align 8, !tbaa !5
  %508 = call double @sqrt(double noundef %507) #4
  store double %508, ptr %46, align 8, !tbaa !5
  %509 = load double, ptr %46, align 8, !tbaa !5
  %510 = fdiv double 1.000000e+00, %509
  store double %510, ptr %47, align 8, !tbaa !5
  %511 = load double, ptr %31, align 8, !tbaa !5
  %512 = load double, ptr %46, align 8, !tbaa !5
  %513 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %512, double %511)
  %514 = fcmp olt double %513, 0.000000e+00
  br i1 %514, label %515, label %516

515:                                              ; preds = %500
  br label %523

516:                                              ; preds = %500
  %517 = load double, ptr %31, align 8, !tbaa !5
  %518 = load double, ptr %46, align 8, !tbaa !5
  %519 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %518, double %517)
  %520 = fcmp ogt double %519, 0.000000e+00
  %521 = zext i1 %520 to i64
  %522 = select i1 %520, double 1.000000e+00, double 0.000000e+00
  br label %523

523:                                              ; preds = %516, %515
  %524 = phi double [ 0.000000e+00, %515 ], [ %522, %516 ]
  store double %524, ptr %52, align 8, !tbaa !5
  %525 = load double, ptr %18, align 8, !tbaa !5
  %526 = load double, ptr %47, align 8, !tbaa !5
  %527 = fmul double %525, %526
  %528 = load double, ptr %52, align 8, !tbaa !5
  %529 = fmul double %527, %528
  store double %529, ptr %90, align 8, !tbaa !5
  br label %530

530:                                              ; preds = %523, %497
  %531 = load i32, ptr %93, align 4, !tbaa !11
  %532 = icmp ne i32 %531, 0
  br i1 %532, label %533, label %692

533:                                              ; preds = %530
  %534 = load double, ptr %15, align 8, !tbaa !5
  %535 = fneg double %534
  store double %535, ptr %45, align 8, !tbaa !5
  %536 = load double, ptr %18, align 8, !tbaa !5
  %537 = load double, ptr %12, align 8, !tbaa !5
  %538 = fmul double %536, %537
  store double %538, ptr %29, align 8, !tbaa !5
  %539 = load double, ptr %24, align 8, !tbaa !5
  %540 = call double @sqrt(double noundef %539) #4
  store double %540, ptr %94, align 8, !tbaa !5
  %541 = load double, ptr %18, align 8, !tbaa !5
  %542 = fneg double %541
  %543 = load double, ptr %94, align 8, !tbaa !5
  %544 = load double, ptr %45, align 8, !tbaa !5
  %545 = call double @llvm.fmuladd.f64(double %542, double %543, double %544)
  %546 = load double, ptr %29, align 8, !tbaa !5
  %547 = fadd double %545, %546
  store double %547, ptr %95, align 8, !tbaa !5
  %548 = load double, ptr %84, align 8, !tbaa !5
  %549 = call double @sqrt(double noundef %548) #4
  store double %549, ptr %96, align 8, !tbaa !5
  %550 = load double, ptr %96, align 8, !tbaa !5
  %551 = load double, ptr %95, align 8, !tbaa !5
  %552 = fadd double %550, %551
  store double %552, ptr %97, align 8, !tbaa !5
  %553 = load double, ptr %97, align 8, !tbaa !5
  %554 = fcmp olt double %553, 0.000000e+00
  br i1 %554, label %555, label %556

555:                                              ; preds = %533
  br label %561

556:                                              ; preds = %533
  %557 = load double, ptr %97, align 8, !tbaa !5
  %558 = fcmp ogt double %557, 0.000000e+00
  %559 = zext i1 %558 to i64
  %560 = select i1 %558, double 1.000000e+00, double 0.000000e+00
  br label %561

561:                                              ; preds = %556, %555
  %562 = phi double [ 0.000000e+00, %555 ], [ %560, %556 ]
  store double %562, ptr %98, align 8, !tbaa !5
  %563 = load double, ptr %98, align 8, !tbaa !5
  %564 = fmul double 5.000000e-01, %563
  store double %564, ptr %99, align 8, !tbaa !5
  %565 = load double, ptr %96, align 8, !tbaa !5
  %566 = fneg double %565
  %567 = load double, ptr %95, align 8, !tbaa !5
  %568 = fadd double %566, %567
  store double %568, ptr %100, align 8, !tbaa !5
  %569 = load double, ptr %100, align 8, !tbaa !5
  %570 = fcmp olt double %569, 0.000000e+00
  br i1 %570, label %571, label %572

571:                                              ; preds = %561
  br label %577

572:                                              ; preds = %561
  %573 = load double, ptr %100, align 8, !tbaa !5
  %574 = fcmp ogt double %573, 0.000000e+00
  %575 = zext i1 %574 to i64
  %576 = select i1 %574, double 1.000000e+00, double 0.000000e+00
  br label %577

577:                                              ; preds = %572, %571
  %578 = phi double [ 0.000000e+00, %571 ], [ %576, %572 ]
  store double %578, ptr %101, align 8, !tbaa !5
  %579 = load double, ptr %101, align 8, !tbaa !5
  %580 = fmul double 5.000000e-01, %579
  store double %580, ptr %102, align 8, !tbaa !5
  %581 = load double, ptr %94, align 8, !tbaa !5
  %582 = fdiv double 1.000000e+00, %581
  store double %582, ptr %103, align 8, !tbaa !5
  %583 = load double, ptr %78, align 8, !tbaa !5
  %584 = fneg double %583
  %585 = load double, ptr %103, align 8, !tbaa !5
  %586 = fmul double %584, %585
  store double %586, ptr %104, align 8, !tbaa !5
  %587 = load double, ptr %96, align 8, !tbaa !5
  %588 = fdiv double 1.000000e+00, %587
  store double %588, ptr %105, align 8, !tbaa !5
  %589 = load double, ptr %18, align 8, !tbaa !5
  %590 = load double, ptr %105, align 8, !tbaa !5
  %591 = fmul double %589, %590
  store double %591, ptr %106, align 8, !tbaa !5
  %592 = load double, ptr %79, align 8, !tbaa !5
  %593 = load double, ptr %106, align 8, !tbaa !5
  %594 = fmul double %592, %593
  store double %594, ptr %107, align 8, !tbaa !5
  %595 = load double, ptr %104, align 8, !tbaa !5
  %596 = load double, ptr %107, align 8, !tbaa !5
  %597 = fsub double %595, %596
  store double %597, ptr %108, align 8, !tbaa !5
  %598 = load double, ptr %104, align 8, !tbaa !5
  %599 = load double, ptr %107, align 8, !tbaa !5
  %600 = fadd double %598, %599
  store double %600, ptr %109, align 8, !tbaa !5
  %601 = load double, ptr %81, align 8, !tbaa !5
  %602 = fneg double %601
  %603 = load double, ptr %103, align 8, !tbaa !5
  %604 = fmul double %602, %603
  store double %604, ptr %110, align 8, !tbaa !5
  %605 = load double, ptr %82, align 8, !tbaa !5
  %606 = load double, ptr %106, align 8, !tbaa !5
  %607 = fmul double %605, %606
  store double %607, ptr %111, align 8, !tbaa !5
  %608 = load double, ptr %110, align 8, !tbaa !5
  %609 = load double, ptr %111, align 8, !tbaa !5
  %610 = fsub double %608, %609
  store double %610, ptr %112, align 8, !tbaa !5
  %611 = load double, ptr %110, align 8, !tbaa !5
  %612 = load double, ptr %111, align 8, !tbaa !5
  %613 = fadd double %611, %612
  store double %613, ptr %113, align 8, !tbaa !5
  %614 = load double, ptr %98, align 8, !tbaa !5
  %615 = fmul double 5.000000e-01, %614
  %616 = load double, ptr %105, align 8, !tbaa !5
  %617 = fmul double %615, %616
  store double %617, ptr %114, align 8, !tbaa !5
  %618 = load double, ptr %79, align 8, !tbaa !5
  %619 = load double, ptr %114, align 8, !tbaa !5
  %620 = fmul double %618, %619
  store double %620, ptr %115, align 8, !tbaa !5
  %621 = load double, ptr %101, align 8, !tbaa !5
  %622 = fmul double 5.000000e-01, %621
  %623 = load double, ptr %105, align 8, !tbaa !5
  %624 = fmul double %622, %623
  store double %624, ptr %116, align 8, !tbaa !5
  %625 = load double, ptr %82, align 8, !tbaa !5
  %626 = load double, ptr %114, align 8, !tbaa !5
  %627 = fmul double %625, %626
  store double %627, ptr %117, align 8, !tbaa !5
  %628 = load double, ptr %13, align 8, !tbaa !5
  %629 = fneg double %628
  %630 = load double, ptr %78, align 8, !tbaa !5
  %631 = fadd double %629, %630
  store double %631, ptr %118, align 8, !tbaa !5
  %632 = load double, ptr %116, align 8, !tbaa !5
  %633 = load double, ptr %118, align 8, !tbaa !5
  %634 = fmul double %632, %633
  store double %634, ptr %119, align 8, !tbaa !5
  %635 = load double, ptr %97, align 8, !tbaa !5
  %636 = call double @llvm.maxnum.f64(double 0.000000e+00, double %635)
  store double %636, ptr %120, align 8, !tbaa !5
  %637 = load double, ptr %120, align 8, !tbaa !5
  %638 = fmul double 5.000000e-01, %637
  store double %638, ptr %121, align 8, !tbaa !5
  %639 = load double, ptr %106, align 8, !tbaa !5
  %640 = fneg double %639
  store double %640, ptr %122, align 8, !tbaa !5
  %641 = load double, ptr %84, align 8, !tbaa !5
  %642 = call double @sqrt(double noundef %641) #4
  %643 = load double, ptr %84, align 8, !tbaa !5
  %644 = call double @sqrt(double noundef %643) #4
  %645 = fmul double %642, %644
  %646 = load double, ptr %84, align 8, !tbaa !5
  %647 = call double @sqrt(double noundef %646) #4
  %648 = fmul double %645, %647
  %649 = fdiv double 1.000000e+00, %648
  store double %649, ptr %123, align 8, !tbaa !5
  %650 = load double, ptr %18, align 8, !tbaa !5
  %651 = load double, ptr %123, align 8, !tbaa !5
  %652 = fmul double %650, %651
  store double %652, ptr %124, align 8, !tbaa !5
  %653 = load double, ptr %100, align 8, !tbaa !5
  %654 = call double @llvm.maxnum.f64(double 0.000000e+00, double %653)
  store double %654, ptr %125, align 8, !tbaa !5
  %655 = load double, ptr %125, align 8, !tbaa !5
  %656 = fmul double 5.000000e-01, %655
  store double %656, ptr %126, align 8, !tbaa !5
  %657 = load double, ptr %79, align 8, !tbaa !5
  %658 = load double, ptr %118, align 8, !tbaa !5
  %659 = fmul double %657, %658
  store double %659, ptr %127, align 8, !tbaa !5
  %660 = load double, ptr %18, align 8, !tbaa !5
  %661 = fmul double -5.000000e-01, %660
  %662 = load double, ptr %79, align 8, !tbaa !5
  %663 = fmul double %661, %662
  %664 = load double, ptr %82, align 8, !tbaa !5
  %665 = fmul double %663, %664
  %666 = load double, ptr %120, align 8, !tbaa !5
  %667 = fmul double %665, %666
  %668 = load double, ptr %123, align 8, !tbaa !5
  %669 = fmul double %667, %668
  store double %669, ptr %128, align 8, !tbaa !5
  %670 = load double, ptr %82, align 8, !tbaa !5
  %671 = load double, ptr %118, align 8, !tbaa !5
  %672 = fmul double %670, %671
  store double %672, ptr %129, align 8, !tbaa !5
  %673 = load double, ptr %18, align 8, !tbaa !5
  %674 = fmul double 5.000000e-01, %673
  %675 = load double, ptr %123, align 8, !tbaa !5
  %676 = fmul double %674, %675
  %677 = load double, ptr %125, align 8, !tbaa !5
  %678 = fmul double %676, %677
  store double %678, ptr %130, align 8, !tbaa !5
  %679 = load double, ptr %14, align 8, !tbaa !5
  %680 = fneg double %679
  %681 = load double, ptr %81, align 8, !tbaa !5
  %682 = fadd double %680, %681
  store double %682, ptr %131, align 8, !tbaa !5
  %683 = load double, ptr %79, align 8, !tbaa !5
  %684 = load double, ptr %131, align 8, !tbaa !5
  %685 = fmul double %683, %684
  store double %685, ptr %132, align 8, !tbaa !5
  %686 = load double, ptr %131, align 8, !tbaa !5
  %687 = load double, ptr %116, align 8, !tbaa !5
  %688 = fmul double %686, %687
  store double %688, ptr %133, align 8, !tbaa !5
  %689 = load double, ptr %131, align 8, !tbaa !5
  %690 = load double, ptr %82, align 8, !tbaa !5
  %691 = fmul double %689, %690
  store double %691, ptr %134, align 8, !tbaa !5
  br label %692

692:                                              ; preds = %577, %530
  %693 = load i32, ptr %87, align 4, !tbaa !11
  %694 = icmp ne i32 %693, 0
  br i1 %694, label %695, label %769

695:                                              ; preds = %692
  %696 = load double, ptr %15, align 8, !tbaa !5
  %697 = fneg double %696
  store double %697, ptr %45, align 8, !tbaa !5
  %698 = load double, ptr %18, align 8, !tbaa !5
  %699 = load double, ptr %12, align 8, !tbaa !5
  %700 = fmul double %698, %699
  store double %700, ptr %29, align 8, !tbaa !5
  %701 = load double, ptr %24, align 8, !tbaa !5
  %702 = call double @sqrt(double noundef %701) #4
  store double %702, ptr %94, align 8, !tbaa !5
  %703 = load double, ptr %18, align 8, !tbaa !5
  %704 = fneg double %703
  %705 = load double, ptr %94, align 8, !tbaa !5
  %706 = load double, ptr %45, align 8, !tbaa !5
  %707 = call double @llvm.fmuladd.f64(double %704, double %705, double %706)
  %708 = load double, ptr %29, align 8, !tbaa !5
  %709 = fadd double %707, %708
  store double %709, ptr %95, align 8, !tbaa !5
  %710 = load double, ptr %84, align 8, !tbaa !5
  %711 = call double @sqrt(double noundef %710) #4
  store double %711, ptr %96, align 8, !tbaa !5
  %712 = load double, ptr %96, align 8, !tbaa !5
  %713 = load double, ptr %95, align 8, !tbaa !5
  %714 = fadd double %712, %713
  store double %714, ptr %97, align 8, !tbaa !5
  %715 = load double, ptr %97, align 8, !tbaa !5
  %716 = fcmp olt double %715, 0.000000e+00
  br i1 %716, label %717, label %718

717:                                              ; preds = %695
  br label %723

718:                                              ; preds = %695
  %719 = load double, ptr %97, align 8, !tbaa !5
  %720 = fcmp ogt double %719, 0.000000e+00
  %721 = zext i1 %720 to i64
  %722 = select i1 %720, double 1.000000e+00, double 0.000000e+00
  br label %723

723:                                              ; preds = %718, %717
  %724 = phi double [ 0.000000e+00, %717 ], [ %722, %718 ]
  store double %724, ptr %98, align 8, !tbaa !5
  %725 = load double, ptr %98, align 8, !tbaa !5
  %726 = fmul double 5.000000e-01, %725
  store double %726, ptr %99, align 8, !tbaa !5
  %727 = load double, ptr %96, align 8, !tbaa !5
  %728 = fneg double %727
  %729 = load double, ptr %95, align 8, !tbaa !5
  %730 = fadd double %728, %729
  store double %730, ptr %100, align 8, !tbaa !5
  %731 = load double, ptr %100, align 8, !tbaa !5
  %732 = fcmp olt double %731, 0.000000e+00
  br i1 %732, label %733, label %734

733:                                              ; preds = %723
  br label %739

734:                                              ; preds = %723
  %735 = load double, ptr %100, align 8, !tbaa !5
  %736 = fcmp ogt double %735, 0.000000e+00
  %737 = zext i1 %736 to i64
  %738 = select i1 %736, double 1.000000e+00, double 0.000000e+00
  br label %739

739:                                              ; preds = %734, %733
  %740 = phi double [ 0.000000e+00, %733 ], [ %738, %734 ]
  store double %740, ptr %101, align 8, !tbaa !5
  %741 = load double, ptr %101, align 8, !tbaa !5
  %742 = fmul double 5.000000e-01, %741
  store double %742, ptr %102, align 8, !tbaa !5
  %743 = load double, ptr %15, align 8, !tbaa !5
  %744 = load double, ptr %29, align 8, !tbaa !5
  %745 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %743, double %744)
  store double %745, ptr %31, align 8, !tbaa !5
  %746 = load double, ptr %23, align 8, !tbaa !5
  %747 = call double @sqrt(double noundef %746) #4
  store double %747, ptr %46, align 8, !tbaa !5
  %748 = load double, ptr %31, align 8, !tbaa !5
  %749 = load double, ptr %46, align 8, !tbaa !5
  %750 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %749, double %748)
  %751 = fcmp olt double %750, 0.000000e+00
  br i1 %751, label %752, label %753

752:                                              ; preds = %739
  br label %760

753:                                              ; preds = %739
  %754 = load double, ptr %31, align 8, !tbaa !5
  %755 = load double, ptr %46, align 8, !tbaa !5
  %756 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %755, double %754)
  %757 = fcmp ogt double %756, 0.000000e+00
  %758 = zext i1 %757 to i64
  %759 = select i1 %757, double 1.000000e+00, double 0.000000e+00
  br label %760

760:                                              ; preds = %753, %752
  %761 = phi double [ 0.000000e+00, %752 ], [ %759, %753 ]
  store double %761, ptr %52, align 8, !tbaa !5
  %762 = load double, ptr %18, align 8, !tbaa !5
  %763 = fneg double %762
  %764 = load double, ptr %99, align 8, !tbaa !5
  %765 = fmul double %763, %764
  store double %765, ptr %135, align 8, !tbaa !5
  %766 = load double, ptr %18, align 8, !tbaa !5
  %767 = load double, ptr %102, align 8, !tbaa !5
  %768 = fmul double %766, %767
  store double %768, ptr %136, align 8, !tbaa !5
  br label %769

769:                                              ; preds = %760, %692
  %770 = load i32, ptr %137, align 4, !tbaa !11
  %771 = icmp ne i32 %770, 0
  br i1 %771, label %772, label %928

772:                                              ; preds = %769
  %773 = load double, ptr %15, align 8, !tbaa !5
  %774 = fneg double %773
  store double %774, ptr %45, align 8, !tbaa !5
  %775 = load double, ptr %18, align 8, !tbaa !5
  %776 = load double, ptr %12, align 8, !tbaa !5
  %777 = fmul double %775, %776
  store double %777, ptr %29, align 8, !tbaa !5
  %778 = load double, ptr %24, align 8, !tbaa !5
  %779 = call double @sqrt(double noundef %778) #4
  store double %779, ptr %94, align 8, !tbaa !5
  %780 = load double, ptr %18, align 8, !tbaa !5
  %781 = fneg double %780
  %782 = load double, ptr %94, align 8, !tbaa !5
  %783 = load double, ptr %45, align 8, !tbaa !5
  %784 = call double @llvm.fmuladd.f64(double %781, double %782, double %783)
  %785 = load double, ptr %29, align 8, !tbaa !5
  %786 = fadd double %784, %785
  store double %786, ptr %95, align 8, !tbaa !5
  %787 = load double, ptr %84, align 8, !tbaa !5
  %788 = call double @sqrt(double noundef %787) #4
  store double %788, ptr %96, align 8, !tbaa !5
  %789 = load double, ptr %96, align 8, !tbaa !5
  %790 = load double, ptr %95, align 8, !tbaa !5
  %791 = fadd double %789, %790
  store double %791, ptr %97, align 8, !tbaa !5
  %792 = load double, ptr %97, align 8, !tbaa !5
  %793 = fcmp olt double %792, 0.000000e+00
  br i1 %793, label %794, label %795

794:                                              ; preds = %772
  br label %800

795:                                              ; preds = %772
  %796 = load double, ptr %97, align 8, !tbaa !5
  %797 = fcmp ogt double %796, 0.000000e+00
  %798 = zext i1 %797 to i64
  %799 = select i1 %797, double 1.000000e+00, double 0.000000e+00
  br label %800

800:                                              ; preds = %795, %794
  %801 = phi double [ 0.000000e+00, %794 ], [ %799, %795 ]
  store double %801, ptr %98, align 8, !tbaa !5
  %802 = load double, ptr %98, align 8, !tbaa !5
  %803 = fmul double 5.000000e-01, %802
  store double %803, ptr %99, align 8, !tbaa !5
  %804 = load double, ptr %96, align 8, !tbaa !5
  %805 = fneg double %804
  %806 = load double, ptr %95, align 8, !tbaa !5
  %807 = fadd double %805, %806
  store double %807, ptr %100, align 8, !tbaa !5
  %808 = load double, ptr %100, align 8, !tbaa !5
  %809 = fcmp olt double %808, 0.000000e+00
  br i1 %809, label %810, label %811

810:                                              ; preds = %800
  br label %816

811:                                              ; preds = %800
  %812 = load double, ptr %100, align 8, !tbaa !5
  %813 = fcmp ogt double %812, 0.000000e+00
  %814 = zext i1 %813 to i64
  %815 = select i1 %813, double 1.000000e+00, double 0.000000e+00
  br label %816

816:                                              ; preds = %811, %810
  %817 = phi double [ 0.000000e+00, %810 ], [ %815, %811 ]
  store double %817, ptr %101, align 8, !tbaa !5
  %818 = load double, ptr %96, align 8, !tbaa !5
  %819 = fdiv double 1.000000e+00, %818
  store double %819, ptr %105, align 8, !tbaa !5
  %820 = load double, ptr %18, align 8, !tbaa !5
  %821 = load double, ptr %105, align 8, !tbaa !5
  %822 = fmul double %820, %821
  store double %822, ptr %106, align 8, !tbaa !5
  %823 = load double, ptr %79, align 8, !tbaa !5
  %824 = load double, ptr %106, align 8, !tbaa !5
  %825 = fmul double %823, %824
  store double %825, ptr %107, align 8, !tbaa !5
  %826 = load double, ptr %82, align 8, !tbaa !5
  %827 = load double, ptr %106, align 8, !tbaa !5
  %828 = fmul double %826, %827
  store double %828, ptr %111, align 8, !tbaa !5
  %829 = load double, ptr %98, align 8, !tbaa !5
  %830 = fmul double 5.000000e-01, %829
  %831 = load double, ptr %105, align 8, !tbaa !5
  %832 = fmul double %830, %831
  store double %832, ptr %114, align 8, !tbaa !5
  %833 = load double, ptr %79, align 8, !tbaa !5
  %834 = load double, ptr %114, align 8, !tbaa !5
  %835 = fmul double %833, %834
  store double %835, ptr %115, align 8, !tbaa !5
  %836 = load double, ptr %101, align 8, !tbaa !5
  %837 = fmul double 5.000000e-01, %836
  %838 = load double, ptr %105, align 8, !tbaa !5
  %839 = fmul double %837, %838
  store double %839, ptr %116, align 8, !tbaa !5
  %840 = load double, ptr %82, align 8, !tbaa !5
  %841 = load double, ptr %114, align 8, !tbaa !5
  %842 = fmul double %840, %841
  store double %842, ptr %117, align 8, !tbaa !5
  %843 = load double, ptr %13, align 8, !tbaa !5
  %844 = fneg double %843
  %845 = load double, ptr %78, align 8, !tbaa !5
  %846 = fadd double %844, %845
  store double %846, ptr %118, align 8, !tbaa !5
  %847 = load double, ptr %116, align 8, !tbaa !5
  %848 = load double, ptr %118, align 8, !tbaa !5
  %849 = fmul double %847, %848
  store double %849, ptr %119, align 8, !tbaa !5
  %850 = load double, ptr %97, align 8, !tbaa !5
  %851 = call double @llvm.maxnum.f64(double 0.000000e+00, double %850)
  store double %851, ptr %120, align 8, !tbaa !5
  %852 = load double, ptr %120, align 8, !tbaa !5
  %853 = fmul double 5.000000e-01, %852
  store double %853, ptr %121, align 8, !tbaa !5
  %854 = load double, ptr %84, align 8, !tbaa !5
  %855 = call double @sqrt(double noundef %854) #4
  %856 = load double, ptr %84, align 8, !tbaa !5
  %857 = call double @sqrt(double noundef %856) #4
  %858 = fmul double %855, %857
  %859 = load double, ptr %84, align 8, !tbaa !5
  %860 = call double @sqrt(double noundef %859) #4
  %861 = fmul double %858, %860
  %862 = fdiv double 1.000000e+00, %861
  store double %862, ptr %123, align 8, !tbaa !5
  %863 = load double, ptr %100, align 8, !tbaa !5
  %864 = call double @llvm.maxnum.f64(double 0.000000e+00, double %863)
  store double %864, ptr %125, align 8, !tbaa !5
  %865 = load double, ptr %125, align 8, !tbaa !5
  %866 = fmul double 5.000000e-01, %865
  store double %866, ptr %126, align 8, !tbaa !5
  %867 = load double, ptr %79, align 8, !tbaa !5
  %868 = load double, ptr %118, align 8, !tbaa !5
  %869 = fmul double %867, %868
  store double %869, ptr %127, align 8, !tbaa !5
  %870 = load double, ptr %82, align 8, !tbaa !5
  %871 = load double, ptr %118, align 8, !tbaa !5
  %872 = fmul double %870, %871
  store double %872, ptr %129, align 8, !tbaa !5
  %873 = load double, ptr %18, align 8, !tbaa !5
  %874 = fmul double 5.000000e-01, %873
  %875 = load double, ptr %101, align 8, !tbaa !5
  %876 = fmul double %874, %875
  %877 = load double, ptr %105, align 8, !tbaa !5
  %878 = fmul double %876, %877
  store double %878, ptr %138, align 8, !tbaa !5
  %879 = load double, ptr %84, align 8, !tbaa !5
  %880 = fdiv double 1.000000e+00, %879
  store double %880, ptr %139, align 8, !tbaa !5
  %881 = load double, ptr %139, align 8, !tbaa !5
  %882 = fmul double 5.000000e-01, %881
  %883 = load double, ptr %98, align 8, !tbaa !5
  %884 = fmul double %882, %883
  store double %884, ptr %140, align 8, !tbaa !5
  %885 = load double, ptr %139, align 8, !tbaa !5
  %886 = fmul double 5.000000e-01, %885
  %887 = load double, ptr %101, align 8, !tbaa !5
  %888 = fmul double %886, %887
  store double %888, ptr %141, align 8, !tbaa !5
  %889 = load double, ptr %105, align 8, !tbaa !5
  %890 = fneg double %889
  store double %890, ptr %142, align 8, !tbaa !5
  %891 = load double, ptr %118, align 8, !tbaa !5
  %892 = load double, ptr %118, align 8, !tbaa !5
  %893 = fmul double %891, %892
  store double %893, ptr %143, align 8, !tbaa !5
  %894 = load double, ptr %14, align 8, !tbaa !5
  %895 = fneg double %894
  %896 = load double, ptr %81, align 8, !tbaa !5
  %897 = fadd double %895, %896
  store double %897, ptr %131, align 8, !tbaa !5
  %898 = load double, ptr %79, align 8, !tbaa !5
  %899 = fneg double %898
  %900 = load double, ptr %140, align 8, !tbaa !5
  %901 = fmul double %899, %900
  %902 = load double, ptr %82, align 8, !tbaa !5
  %903 = load double, ptr %131, align 8, !tbaa !5
  %904 = load double, ptr %118, align 8, !tbaa !5
  %905 = fmul double %903, %904
  %906 = load double, ptr %123, align 8, !tbaa !5
  %907 = fmul double %905, %906
  %908 = load double, ptr %126, align 8, !tbaa !5
  %909 = fmul double %907, %908
  %910 = fneg double %909
  %911 = call double @llvm.fmuladd.f64(double %901, double %902, double %910)
  store double %911, ptr %144, align 8, !tbaa !5
  %912 = load double, ptr %79, align 8, !tbaa !5
  %913 = load double, ptr %131, align 8, !tbaa !5
  %914 = fmul double %912, %913
  store double %914, ptr %132, align 8, !tbaa !5
  %915 = load double, ptr %120, align 8, !tbaa !5
  %916 = fmul double 5.000000e-01, %915
  %917 = load double, ptr %123, align 8, !tbaa !5
  %918 = fmul double %916, %917
  store double %918, ptr %145, align 8, !tbaa !5
  %919 = load double, ptr %131, align 8, !tbaa !5
  %920 = load double, ptr %116, align 8, !tbaa !5
  %921 = fmul double %919, %920
  store double %921, ptr %133, align 8, !tbaa !5
  %922 = load double, ptr %131, align 8, !tbaa !5
  %923 = load double, ptr %82, align 8, !tbaa !5
  %924 = fmul double %922, %923
  store double %924, ptr %134, align 8, !tbaa !5
  %925 = load double, ptr %131, align 8, !tbaa !5
  %926 = load double, ptr %131, align 8, !tbaa !5
  %927 = fmul double %925, %926
  store double %927, ptr %146, align 8, !tbaa !5
  br label %928

928:                                              ; preds = %816, %769
  %929 = load i32, ptr %91, align 4, !tbaa !11
  %930 = icmp ne i32 %929, 0
  br i1 %930, label %931, label %954

931:                                              ; preds = %928
  %932 = load double, ptr %18, align 8, !tbaa !5
  %933 = load double, ptr %12, align 8, !tbaa !5
  %934 = fmul double %932, %933
  store double %934, ptr %29, align 8, !tbaa !5
  %935 = load double, ptr %15, align 8, !tbaa !5
  %936 = load double, ptr %29, align 8, !tbaa !5
  %937 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %935, double %936)
  store double %937, ptr %31, align 8, !tbaa !5
  %938 = load double, ptr %23, align 8, !tbaa !5
  %939 = call double @sqrt(double noundef %938) #4
  store double %939, ptr %46, align 8, !tbaa !5
  %940 = load double, ptr %31, align 8, !tbaa !5
  %941 = load double, ptr %46, align 8, !tbaa !5
  %942 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %941, double %940)
  %943 = fcmp olt double %942, 0.000000e+00
  br i1 %943, label %944, label %945

944:                                              ; preds = %931
  br label %952

945:                                              ; preds = %931
  %946 = load double, ptr %31, align 8, !tbaa !5
  %947 = load double, ptr %46, align 8, !tbaa !5
  %948 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %947, double %946)
  %949 = fcmp ogt double %948, 0.000000e+00
  %950 = zext i1 %949 to i64
  %951 = select i1 %949, double 1.000000e+00, double 0.000000e+00
  br label %952

952:                                              ; preds = %945, %944
  %953 = phi double [ 0.000000e+00, %944 ], [ %951, %945 ]
  store double %953, ptr %52, align 8, !tbaa !5
  br label %954

954:                                              ; preds = %952, %928
  %955 = load double, ptr %15, align 8, !tbaa !5
  %956 = fneg double %955
  store double %956, ptr %45, align 8, !tbaa !5
  %957 = load double, ptr %18, align 8, !tbaa !5
  %958 = load double, ptr %12, align 8, !tbaa !5
  %959 = fmul double %957, %958
  store double %959, ptr %29, align 8, !tbaa !5
  %960 = load double, ptr %24, align 8, !tbaa !5
  %961 = call double @sqrt(double noundef %960) #4
  store double %961, ptr %94, align 8, !tbaa !5
  %962 = load double, ptr %18, align 8, !tbaa !5
  %963 = fneg double %962
  %964 = load double, ptr %94, align 8, !tbaa !5
  %965 = load double, ptr %45, align 8, !tbaa !5
  %966 = call double @llvm.fmuladd.f64(double %963, double %964, double %965)
  %967 = load double, ptr %29, align 8, !tbaa !5
  %968 = fadd double %966, %967
  store double %968, ptr %95, align 8, !tbaa !5
  %969 = load double, ptr %84, align 8, !tbaa !5
  %970 = call double @sqrt(double noundef %969) #4
  store double %970, ptr %96, align 8, !tbaa !5
  %971 = load double, ptr %96, align 8, !tbaa !5
  %972 = load double, ptr %95, align 8, !tbaa !5
  %973 = fadd double %971, %972
  store double %973, ptr %97, align 8, !tbaa !5
  %974 = load double, ptr %97, align 8, !tbaa !5
  %975 = fcmp olt double %974, 0.000000e+00
  br i1 %975, label %976, label %977

976:                                              ; preds = %954
  br label %982

977:                                              ; preds = %954
  %978 = load double, ptr %97, align 8, !tbaa !5
  %979 = fcmp ogt double %978, 0.000000e+00
  %980 = zext i1 %979 to i64
  %981 = select i1 %979, double 1.000000e+00, double 0.000000e+00
  br label %982

982:                                              ; preds = %977, %976
  %983 = phi double [ 0.000000e+00, %976 ], [ %981, %977 ]
  store double %983, ptr %98, align 8, !tbaa !5
  %984 = load double, ptr %98, align 8, !tbaa !5
  %985 = fmul double 5.000000e-01, %984
  store double %985, ptr %99, align 8, !tbaa !5
  %986 = load double, ptr %96, align 8, !tbaa !5
  %987 = fneg double %986
  %988 = load double, ptr %95, align 8, !tbaa !5
  %989 = fadd double %987, %988
  store double %989, ptr %100, align 8, !tbaa !5
  %990 = load double, ptr %100, align 8, !tbaa !5
  %991 = fcmp olt double %990, 0.000000e+00
  br i1 %991, label %992, label %993

992:                                              ; preds = %982
  br label %998

993:                                              ; preds = %982
  %994 = load double, ptr %100, align 8, !tbaa !5
  %995 = fcmp ogt double %994, 0.000000e+00
  %996 = zext i1 %995 to i64
  %997 = select i1 %995, double 1.000000e+00, double 0.000000e+00
  br label %998

998:                                              ; preds = %993, %992
  %999 = phi double [ 0.000000e+00, %992 ], [ %997, %993 ]
  store double %999, ptr %101, align 8, !tbaa !5
  %1000 = load double, ptr %101, align 8, !tbaa !5
  %1001 = fmul double 5.000000e-01, %1000
  store double %1001, ptr %102, align 8, !tbaa !5
  %1002 = load double, ptr %99, align 8, !tbaa !5
  %1003 = load double, ptr %102, align 8, !tbaa !5
  %1004 = fadd double %1002, %1003
  %1005 = load ptr, ptr %22, align 8, !tbaa !9
  %1006 = getelementptr inbounds double, ptr %1005, i64 0
  store double %1004, ptr %1006, align 8, !tbaa !5
  %1007 = load i32, ptr %137, align 4, !tbaa !11
  %1008 = icmp ne i32 %1007, 0
  br i1 %1008, label %1009, label %1015

1009:                                             ; preds = %998
  %1010 = load double, ptr %115, align 8, !tbaa !5
  %1011 = load double, ptr %119, align 8, !tbaa !5
  %1012 = fadd double %1010, %1011
  %1013 = load ptr, ptr %22, align 8, !tbaa !9
  %1014 = getelementptr inbounds double, ptr %1013, i64 1
  store double %1012, ptr %1014, align 8, !tbaa !5
  br label %1022

1015:                                             ; preds = %998
  %1016 = load i32, ptr %87, align 4, !tbaa !11
  %1017 = icmp ne i32 %1016, 0
  br i1 %1017, label %1018, label %1021

1018:                                             ; preds = %1015
  %1019 = load ptr, ptr %22, align 8, !tbaa !9
  %1020 = getelementptr inbounds double, ptr %1019, i64 1
  store double 0.000000e+00, ptr %1020, align 8, !tbaa !5
  br label %1021

1021:                                             ; preds = %1018, %1015
  br label %1022

1022:                                             ; preds = %1021, %1009
  %1023 = load i32, ptr %137, align 4, !tbaa !11
  %1024 = icmp ne i32 %1023, 0
  br i1 %1024, label %1025, label %1031

1025:                                             ; preds = %1022
  %1026 = load double, ptr %133, align 8, !tbaa !5
  %1027 = load double, ptr %117, align 8, !tbaa !5
  %1028 = fadd double %1026, %1027
  %1029 = load ptr, ptr %22, align 8, !tbaa !9
  %1030 = getelementptr inbounds double, ptr %1029, i64 2
  store double %1028, ptr %1030, align 8, !tbaa !5
  br label %1041

1031:                                             ; preds = %1022
  %1032 = load i32, ptr %87, align 4, !tbaa !11
  %1033 = icmp ne i32 %1032, 0
  br i1 %1033, label %1034, label %1040

1034:                                             ; preds = %1031
  %1035 = load double, ptr %99, align 8, !tbaa !5
  %1036 = load double, ptr %102, align 8, !tbaa !5
  %1037 = fsub double %1035, %1036
  %1038 = load ptr, ptr %22, align 8, !tbaa !9
  %1039 = getelementptr inbounds double, ptr %1038, i64 2
  store double %1037, ptr %1039, align 8, !tbaa !5
  br label %1040

1040:                                             ; preds = %1034, %1031
  br label %1041

1041:                                             ; preds = %1040, %1025
  %1042 = load i32, ptr %27, align 4, !tbaa !11
  %1043 = icmp ne i32 %1042, 0
  br i1 %1043, label %1044, label %1048

1044:                                             ; preds = %1041
  %1045 = load double, ptr %34, align 8, !tbaa !5
  %1046 = load ptr, ptr %22, align 8, !tbaa !9
  %1047 = getelementptr inbounds double, ptr %1046, i64 3
  store double %1045, ptr %1047, align 8, !tbaa !5
  br label %1097

1048:                                             ; preds = %1041
  %1049 = load i32, ptr %44, align 4, !tbaa !11
  %1050 = icmp ne i32 %1049, 0
  br i1 %1050, label %1051, label %1063

1051:                                             ; preds = %1048
  %1052 = load double, ptr %48, align 8, !tbaa !5
  %1053 = load double, ptr %13, align 8, !tbaa !5
  %1054 = fneg double %1053
  %1055 = load double, ptr %53, align 8, !tbaa !5
  %1056 = load double, ptr %51, align 8, !tbaa !5
  %1057 = call double @llvm.fmuladd.f64(double %1054, double %1055, double %1056)
  %1058 = load double, ptr %55, align 8, !tbaa !5
  %1059 = fadd double %1057, %1058
  %1060 = fmul double %1052, %1059
  %1061 = load ptr, ptr %22, align 8, !tbaa !9
  %1062 = getelementptr inbounds double, ptr %1061, i64 3
  store double %1060, ptr %1062, align 8, !tbaa !5
  br label %1096

1063:                                             ; preds = %1048
  %1064 = load i32, ptr %88, align 4, !tbaa !11
  %1065 = icmp ne i32 %1064, 0
  br i1 %1065, label %1066, label %1070

1066:                                             ; preds = %1063
  %1067 = load double, ptr %34, align 8, !tbaa !5
  %1068 = load ptr, ptr %22, align 8, !tbaa !9
  %1069 = getelementptr inbounds double, ptr %1068, i64 3
  store double %1067, ptr %1069, align 8, !tbaa !5
  br label %1095

1070:                                             ; preds = %1063
  %1071 = load i32, ptr %89, align 4, !tbaa !11
  %1072 = icmp ne i32 %1071, 0
  br i1 %1072, label %1073, label %1079

1073:                                             ; preds = %1070
  %1074 = load double, ptr %13, align 8, !tbaa !5
  %1075 = load double, ptr %90, align 8, !tbaa !5
  %1076 = fmul double %1074, %1075
  %1077 = load ptr, ptr %22, align 8, !tbaa !9
  %1078 = getelementptr inbounds double, ptr %1077, i64 3
  store double %1076, ptr %1078, align 8, !tbaa !5
  br label %1094

1079:                                             ; preds = %1070
  %1080 = load i32, ptr %93, align 4, !tbaa !11
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1082, label %1093

1082:                                             ; preds = %1079
  %1083 = load double, ptr %99, align 8, !tbaa !5
  %1084 = fneg double %1083
  %1085 = load double, ptr %108, align 8, !tbaa !5
  %1086 = load double, ptr %102, align 8, !tbaa !5
  %1087 = load double, ptr %109, align 8, !tbaa !5
  %1088 = fmul double %1086, %1087
  %1089 = fneg double %1088
  %1090 = call double @llvm.fmuladd.f64(double %1084, double %1085, double %1089)
  %1091 = load ptr, ptr %22, align 8, !tbaa !9
  %1092 = getelementptr inbounds double, ptr %1091, i64 3
  store double %1090, ptr %1092, align 8, !tbaa !5
  br label %1093

1093:                                             ; preds = %1082, %1079
  br label %1094

1094:                                             ; preds = %1093, %1073
  br label %1095

1095:                                             ; preds = %1094, %1066
  br label %1096

1096:                                             ; preds = %1095, %1051
  br label %1097

1097:                                             ; preds = %1096, %1044
  %1098 = load i32, ptr %27, align 4, !tbaa !11
  %1099 = icmp ne i32 %1098, 0
  br i1 %1099, label %1100, label %1109

1100:                                             ; preds = %1097
  %1101 = load double, ptr %33, align 8, !tbaa !5
  %1102 = fmul double 1.000000e+00, %1101
  %1103 = load double, ptr %35, align 8, !tbaa !5
  %1104 = fmul double %1102, %1103
  %1105 = load double, ptr %37, align 8, !tbaa !5
  %1106 = fmul double %1104, %1105
  %1107 = load ptr, ptr %22, align 8, !tbaa !9
  %1108 = getelementptr inbounds double, ptr %1107, i64 4
  store double %1106, ptr %1108, align 8, !tbaa !5
  br label %1184

1109:                                             ; preds = %1097
  %1110 = load i32, ptr %44, align 4, !tbaa !11
  %1111 = icmp ne i32 %1110, 0
  br i1 %1111, label %1112, label %1146

1112:                                             ; preds = %1109
  %1113 = load double, ptr %58, align 8, !tbaa !5
  %1114 = load double, ptr %30, align 8, !tbaa !5
  %1115 = load double, ptr %13, align 8, !tbaa !5
  %1116 = load double, ptr %70, align 8, !tbaa !5
  %1117 = load double, ptr %13, align 8, !tbaa !5
  %1118 = load double, ptr %71, align 8, !tbaa !5
  %1119 = fmul double %1117, %1118
  %1120 = fneg double %1119
  %1121 = call double @llvm.fmuladd.f64(double %1115, double %1116, double %1120)
  %1122 = load double, ptr %49, align 8, !tbaa !5
  %1123 = load double, ptr %69, align 8, !tbaa !5
  %1124 = call double @llvm.fmuladd.f64(double %1122, double %1123, double %1121)
  %1125 = load double, ptr %52, align 8, !tbaa !5
  %1126 = load double, ptr %69, align 8, !tbaa !5
  %1127 = fneg double %1125
  %1128 = call double @llvm.fmuladd.f64(double %1127, double %1126, double %1124)
  %1129 = load double, ptr %59, align 8, !tbaa !5
  %1130 = load double, ptr %62, align 8, !tbaa !5
  %1131 = fmul double %1129, %1130
  %1132 = call double @llvm.fmuladd.f64(double %1114, double %1128, double %1131)
  %1133 = load double, ptr %59, align 8, !tbaa !5
  %1134 = load double, ptr %64, align 8, !tbaa !5
  %1135 = fneg double %1133
  %1136 = call double @llvm.fmuladd.f64(double %1135, double %1134, double %1132)
  %1137 = load double, ptr %65, align 8, !tbaa !5
  %1138 = load double, ptr %66, align 8, !tbaa !5
  %1139 = call double @llvm.fmuladd.f64(double %1137, double %1138, double %1136)
  %1140 = load double, ptr %67, align 8, !tbaa !5
  %1141 = load double, ptr %68, align 8, !tbaa !5
  %1142 = call double @llvm.fmuladd.f64(double %1140, double %1141, double %1139)
  %1143 = fmul double %1113, %1142
  %1144 = load ptr, ptr %22, align 8, !tbaa !9
  %1145 = getelementptr inbounds double, ptr %1144, i64 4
  store double %1143, ptr %1145, align 8, !tbaa !5
  br label %1183

1146:                                             ; preds = %1109
  %1147 = load i32, ptr %91, align 4, !tbaa !11
  %1148 = icmp ne i32 %1147, 0
  br i1 %1148, label %1149, label %1152

1149:                                             ; preds = %1146
  %1150 = load ptr, ptr %22, align 8, !tbaa !9
  %1151 = getelementptr inbounds double, ptr %1150, i64 4
  store double 0.000000e+00, ptr %1151, align 8, !tbaa !5
  br label %1182

1152:                                             ; preds = %1146
  %1153 = load i32, ptr %93, align 4, !tbaa !11
  %1154 = icmp ne i32 %1153, 0
  br i1 %1154, label %1155, label %1181

1155:                                             ; preds = %1152
  %1156 = load double, ptr %108, align 8, !tbaa !5
  %1157 = fneg double %1156
  %1158 = load double, ptr %115, align 8, !tbaa !5
  %1159 = load double, ptr %109, align 8, !tbaa !5
  %1160 = load double, ptr %119, align 8, !tbaa !5
  %1161 = fmul double %1159, %1160
  %1162 = fneg double %1161
  %1163 = call double @llvm.fmuladd.f64(double %1157, double %1158, double %1162)
  %1164 = load double, ptr %121, align 8, !tbaa !5
  %1165 = load double, ptr %80, align 8, !tbaa !5
  %1166 = load double, ptr %124, align 8, !tbaa !5
  %1167 = load double, ptr %122, align 8, !tbaa !5
  %1168 = call double @llvm.fmuladd.f64(double %1165, double %1166, double %1167)
  %1169 = fneg double %1164
  %1170 = call double @llvm.fmuladd.f64(double %1169, double %1168, double %1163)
  %1171 = load double, ptr %126, align 8, !tbaa !5
  %1172 = load double, ptr %122, align 8, !tbaa !5
  %1173 = fneg double %1172
  %1174 = load double, ptr %124, align 8, !tbaa !5
  %1175 = load double, ptr %127, align 8, !tbaa !5
  %1176 = call double @llvm.fmuladd.f64(double %1174, double %1175, double %1173)
  %1177 = fneg double %1171
  %1178 = call double @llvm.fmuladd.f64(double %1177, double %1176, double %1170)
  %1179 = load ptr, ptr %22, align 8, !tbaa !9
  %1180 = getelementptr inbounds double, ptr %1179, i64 4
  store double %1178, ptr %1180, align 8, !tbaa !5
  br label %1181

1181:                                             ; preds = %1155, %1152
  br label %1182

1182:                                             ; preds = %1181, %1149
  br label %1183

1183:                                             ; preds = %1182, %1112
  br label %1184

1184:                                             ; preds = %1183, %1100
  %1185 = load i32, ptr %27, align 4, !tbaa !11
  %1186 = icmp ne i32 %1185, 0
  br i1 %1186, label %1187, label %1198

1187:                                             ; preds = %1184
  %1188 = load double, ptr %38, align 8, !tbaa !5
  %1189 = fmul double 1.000000e+00, %1188
  %1190 = load double, ptr %41, align 8, !tbaa !5
  %1191 = fmul double %1189, %1190
  %1192 = load double, ptr %32, align 8, !tbaa !5
  %1193 = fmul double %1191, %1192
  %1194 = load double, ptr %36, align 8, !tbaa !5
  %1195 = fmul double %1193, %1194
  %1196 = load ptr, ptr %22, align 8, !tbaa !9
  %1197 = getelementptr inbounds double, ptr %1196, i64 5
  store double %1195, ptr %1197, align 8, !tbaa !5
  br label %1251

1198:                                             ; preds = %1184
  %1199 = load i32, ptr %44, align 4, !tbaa !11
  %1200 = icmp ne i32 %1199, 0
  br i1 %1200, label %1201, label %1223

1201:                                             ; preds = %1198
  %1202 = load double, ptr %14, align 8, !tbaa !5
  %1203 = load double, ptr %58, align 8, !tbaa !5
  %1204 = fmul double %1202, %1203
  %1205 = load double, ptr %13, align 8, !tbaa !5
  %1206 = fneg double %1205
  %1207 = load double, ptr %72, align 8, !tbaa !5
  %1208 = load double, ptr %13, align 8, !tbaa !5
  %1209 = load double, ptr %73, align 8, !tbaa !5
  %1210 = fmul double %1208, %1209
  %1211 = call double @llvm.fmuladd.f64(double %1206, double %1207, double %1210)
  %1212 = load double, ptr %13, align 8, !tbaa !5
  %1213 = load double, ptr %74, align 8, !tbaa !5
  %1214 = call double @llvm.fmuladd.f64(double %1212, double %1213, double %1211)
  %1215 = load double, ptr %76, align 8, !tbaa !5
  %1216 = fadd double %1214, %1215
  %1217 = load double, ptr %46, align 8, !tbaa !5
  %1218 = load double, ptr %51, align 8, !tbaa !5
  %1219 = call double @llvm.fmuladd.f64(double %1217, double %1218, double %1216)
  %1220 = fmul double %1204, %1219
  %1221 = load ptr, ptr %22, align 8, !tbaa !9
  %1222 = getelementptr inbounds double, ptr %1221, i64 5
  store double %1220, ptr %1222, align 8, !tbaa !5
  br label %1250

1223:                                             ; preds = %1198
  %1224 = load i32, ptr %91, align 4, !tbaa !11
  %1225 = icmp ne i32 %1224, 0
  br i1 %1225, label %1226, label %1229

1226:                                             ; preds = %1223
  %1227 = load ptr, ptr %22, align 8, !tbaa !9
  %1228 = getelementptr inbounds double, ptr %1227, i64 5
  store double 0.000000e+00, ptr %1228, align 8, !tbaa !5
  br label %1249

1229:                                             ; preds = %1223
  %1230 = load i32, ptr %93, align 4, !tbaa !11
  %1231 = icmp ne i32 %1230, 0
  br i1 %1231, label %1232, label %1248

1232:                                             ; preds = %1229
  %1233 = load double, ptr %128, align 8, !tbaa !5
  %1234 = load double, ptr %130, align 8, !tbaa !5
  %1235 = load double, ptr %132, align 8, !tbaa !5
  %1236 = fneg double %1234
  %1237 = call double @llvm.fmuladd.f64(double %1236, double %1235, double %1233)
  %1238 = load double, ptr %133, align 8, !tbaa !5
  %1239 = load double, ptr %109, align 8, !tbaa !5
  %1240 = fneg double %1238
  %1241 = call double @llvm.fmuladd.f64(double %1240, double %1239, double %1237)
  %1242 = load double, ptr %108, align 8, !tbaa !5
  %1243 = load double, ptr %117, align 8, !tbaa !5
  %1244 = fneg double %1242
  %1245 = call double @llvm.fmuladd.f64(double %1244, double %1243, double %1241)
  %1246 = load ptr, ptr %22, align 8, !tbaa !9
  %1247 = getelementptr inbounds double, ptr %1246, i64 5
  store double %1245, ptr %1247, align 8, !tbaa !5
  br label %1248

1248:                                             ; preds = %1232, %1229
  br label %1249

1249:                                             ; preds = %1248, %1226
  br label %1250

1250:                                             ; preds = %1249, %1201
  br label %1251

1251:                                             ; preds = %1250, %1187
  %1252 = load i32, ptr %27, align 4, !tbaa !11
  %1253 = icmp ne i32 %1252, 0
  br i1 %1253, label %1254, label %1258

1254:                                             ; preds = %1251
  %1255 = load double, ptr %34, align 8, !tbaa !5
  %1256 = load ptr, ptr %22, align 8, !tbaa !9
  %1257 = getelementptr inbounds double, ptr %1256, i64 6
  store double %1255, ptr %1257, align 8, !tbaa !5
  br label %1307

1258:                                             ; preds = %1251
  %1259 = load i32, ptr %44, align 4, !tbaa !11
  %1260 = icmp ne i32 %1259, 0
  br i1 %1260, label %1261, label %1273

1261:                                             ; preds = %1258
  %1262 = load double, ptr %48, align 8, !tbaa !5
  %1263 = load double, ptr %14, align 8, !tbaa !5
  %1264 = fneg double %1263
  %1265 = load double, ptr %53, align 8, !tbaa !5
  %1266 = load double, ptr %55, align 8, !tbaa !5
  %1267 = call double @llvm.fmuladd.f64(double %1264, double %1265, double %1266)
  %1268 = load double, ptr %56, align 8, !tbaa !5
  %1269 = fadd double %1267, %1268
  %1270 = fmul double %1262, %1269
  %1271 = load ptr, ptr %22, align 8, !tbaa !9
  %1272 = getelementptr inbounds double, ptr %1271, i64 6
  store double %1270, ptr %1272, align 8, !tbaa !5
  br label %1306

1273:                                             ; preds = %1258
  %1274 = load i32, ptr %88, align 4, !tbaa !11
  %1275 = icmp ne i32 %1274, 0
  br i1 %1275, label %1276, label %1280

1276:                                             ; preds = %1273
  %1277 = load double, ptr %34, align 8, !tbaa !5
  %1278 = load ptr, ptr %22, align 8, !tbaa !9
  %1279 = getelementptr inbounds double, ptr %1278, i64 6
  store double %1277, ptr %1279, align 8, !tbaa !5
  br label %1305

1280:                                             ; preds = %1273
  %1281 = load i32, ptr %89, align 4, !tbaa !11
  %1282 = icmp ne i32 %1281, 0
  br i1 %1282, label %1283, label %1289

1283:                                             ; preds = %1280
  %1284 = load double, ptr %14, align 8, !tbaa !5
  %1285 = load double, ptr %90, align 8, !tbaa !5
  %1286 = fmul double %1284, %1285
  %1287 = load ptr, ptr %22, align 8, !tbaa !9
  %1288 = getelementptr inbounds double, ptr %1287, i64 6
  store double %1286, ptr %1288, align 8, !tbaa !5
  br label %1304

1289:                                             ; preds = %1280
  %1290 = load i32, ptr %93, align 4, !tbaa !11
  %1291 = icmp ne i32 %1290, 0
  br i1 %1291, label %1292, label %1303

1292:                                             ; preds = %1289
  %1293 = load double, ptr %99, align 8, !tbaa !5
  %1294 = fneg double %1293
  %1295 = load double, ptr %112, align 8, !tbaa !5
  %1296 = load double, ptr %102, align 8, !tbaa !5
  %1297 = load double, ptr %113, align 8, !tbaa !5
  %1298 = fmul double %1296, %1297
  %1299 = fneg double %1298
  %1300 = call double @llvm.fmuladd.f64(double %1294, double %1295, double %1299)
  %1301 = load ptr, ptr %22, align 8, !tbaa !9
  %1302 = getelementptr inbounds double, ptr %1301, i64 6
  store double %1300, ptr %1302, align 8, !tbaa !5
  br label %1303

1303:                                             ; preds = %1292, %1289
  br label %1304

1304:                                             ; preds = %1303, %1283
  br label %1305

1305:                                             ; preds = %1304, %1276
  br label %1306

1306:                                             ; preds = %1305, %1261
  br label %1307

1307:                                             ; preds = %1306, %1254
  %1308 = load i32, ptr %27, align 4, !tbaa !11
  %1309 = icmp ne i32 %1308, 0
  br i1 %1309, label %1310, label %1319

1310:                                             ; preds = %1307
  %1311 = load double, ptr %38, align 8, !tbaa !5
  %1312 = load double, ptr %39, align 8, !tbaa !5
  %1313 = fmul double %1311, %1312
  %1314 = load double, ptr %18, align 8, !tbaa !5
  %1315 = fsub double %1314, 1.000000e+00
  %1316 = fmul double %1313, %1315
  %1317 = load ptr, ptr %22, align 8, !tbaa !9
  %1318 = getelementptr inbounds double, ptr %1317, i64 7
  store double %1316, ptr %1318, align 8, !tbaa !5
  br label %1372

1319:                                             ; preds = %1307
  %1320 = load i32, ptr %44, align 4, !tbaa !11
  %1321 = icmp ne i32 %1320, 0
  br i1 %1321, label %1322, label %1344

1322:                                             ; preds = %1319
  %1323 = load double, ptr %13, align 8, !tbaa !5
  %1324 = load double, ptr %58, align 8, !tbaa !5
  %1325 = fmul double %1323, %1324
  %1326 = load double, ptr %14, align 8, !tbaa !5
  %1327 = fneg double %1326
  %1328 = load double, ptr %72, align 8, !tbaa !5
  %1329 = load double, ptr %14, align 8, !tbaa !5
  %1330 = load double, ptr %73, align 8, !tbaa !5
  %1331 = fmul double %1329, %1330
  %1332 = call double @llvm.fmuladd.f64(double %1327, double %1328, double %1331)
  %1333 = load double, ptr %14, align 8, !tbaa !5
  %1334 = load double, ptr %74, align 8, !tbaa !5
  %1335 = call double @llvm.fmuladd.f64(double %1333, double %1334, double %1332)
  %1336 = load double, ptr %76, align 8, !tbaa !5
  %1337 = fadd double %1335, %1336
  %1338 = load double, ptr %46, align 8, !tbaa !5
  %1339 = load double, ptr %56, align 8, !tbaa !5
  %1340 = call double @llvm.fmuladd.f64(double %1338, double %1339, double %1337)
  %1341 = fmul double %1325, %1340
  %1342 = load ptr, ptr %22, align 8, !tbaa !9
  %1343 = getelementptr inbounds double, ptr %1342, i64 7
  store double %1341, ptr %1343, align 8, !tbaa !5
  br label %1371

1344:                                             ; preds = %1319
  %1345 = load i32, ptr %91, align 4, !tbaa !11
  %1346 = icmp ne i32 %1345, 0
  br i1 %1346, label %1347, label %1350

1347:                                             ; preds = %1344
  %1348 = load ptr, ptr %22, align 8, !tbaa !9
  %1349 = getelementptr inbounds double, ptr %1348, i64 7
  store double 0.000000e+00, ptr %1349, align 8, !tbaa !5
  br label %1370

1350:                                             ; preds = %1344
  %1351 = load i32, ptr %93, align 4, !tbaa !11
  %1352 = icmp ne i32 %1351, 0
  br i1 %1352, label %1353, label %1369

1353:                                             ; preds = %1350
  %1354 = load double, ptr %128, align 8, !tbaa !5
  %1355 = load double, ptr %129, align 8, !tbaa !5
  %1356 = load double, ptr %130, align 8, !tbaa !5
  %1357 = fneg double %1355
  %1358 = call double @llvm.fmuladd.f64(double %1357, double %1356, double %1354)
  %1359 = load double, ptr %112, align 8, !tbaa !5
  %1360 = load double, ptr %115, align 8, !tbaa !5
  %1361 = fneg double %1359
  %1362 = call double @llvm.fmuladd.f64(double %1361, double %1360, double %1358)
  %1363 = load double, ptr %113, align 8, !tbaa !5
  %1364 = load double, ptr %119, align 8, !tbaa !5
  %1365 = fneg double %1363
  %1366 = call double @llvm.fmuladd.f64(double %1365, double %1364, double %1362)
  %1367 = load ptr, ptr %22, align 8, !tbaa !9
  %1368 = getelementptr inbounds double, ptr %1367, i64 7
  store double %1366, ptr %1368, align 8, !tbaa !5
  br label %1369

1369:                                             ; preds = %1353, %1350
  br label %1370

1370:                                             ; preds = %1369, %1347
  br label %1371

1371:                                             ; preds = %1370, %1322
  br label %1372

1372:                                             ; preds = %1371, %1310
  %1373 = load i32, ptr %27, align 4, !tbaa !11
  %1374 = icmp ne i32 %1373, 0
  br i1 %1374, label %1375, label %1381

1375:                                             ; preds = %1372
  %1376 = load double, ptr %39, align 8, !tbaa !5
  %1377 = load double, ptr %42, align 8, !tbaa !5
  %1378 = fmul double %1376, %1377
  %1379 = load ptr, ptr %22, align 8, !tbaa !9
  %1380 = getelementptr inbounds double, ptr %1379, i64 8
  store double %1378, ptr %1380, align 8, !tbaa !5
  br label %1459

1381:                                             ; preds = %1372
  %1382 = load i32, ptr %44, align 4, !tbaa !11
  %1383 = icmp ne i32 %1382, 0
  br i1 %1383, label %1384, label %1418

1384:                                             ; preds = %1381
  %1385 = load double, ptr %58, align 8, !tbaa !5
  %1386 = load double, ptr %30, align 8, !tbaa !5
  %1387 = load double, ptr %14, align 8, !tbaa !5
  %1388 = load double, ptr %75, align 8, !tbaa !5
  %1389 = load double, ptr %14, align 8, !tbaa !5
  %1390 = load double, ptr %68, align 8, !tbaa !5
  %1391 = fmul double %1389, %1390
  %1392 = fneg double %1391
  %1393 = call double @llvm.fmuladd.f64(double %1387, double %1388, double %1392)
  %1394 = load double, ptr %77, align 8, !tbaa !5
  %1395 = load double, ptr %49, align 8, !tbaa !5
  %1396 = call double @llvm.fmuladd.f64(double %1394, double %1395, double %1393)
  %1397 = load double, ptr %77, align 8, !tbaa !5
  %1398 = load double, ptr %52, align 8, !tbaa !5
  %1399 = fneg double %1397
  %1400 = call double @llvm.fmuladd.f64(double %1399, double %1398, double %1396)
  %1401 = load double, ptr %59, align 8, !tbaa !5
  %1402 = load double, ptr %66, align 8, !tbaa !5
  %1403 = fmul double %1401, %1402
  %1404 = call double @llvm.fmuladd.f64(double %1386, double %1400, double %1403)
  %1405 = load double, ptr %62, align 8, !tbaa !5
  %1406 = load double, ptr %65, align 8, !tbaa !5
  %1407 = call double @llvm.fmuladd.f64(double %1405, double %1406, double %1404)
  %1408 = load double, ptr %64, align 8, !tbaa !5
  %1409 = load double, ptr %65, align 8, !tbaa !5
  %1410 = fneg double %1408
  %1411 = call double @llvm.fmuladd.f64(double %1410, double %1409, double %1407)
  %1412 = load double, ptr %67, align 8, !tbaa !5
  %1413 = load double, ptr %71, align 8, !tbaa !5
  %1414 = call double @llvm.fmuladd.f64(double %1412, double %1413, double %1411)
  %1415 = fmul double %1385, %1414
  %1416 = load ptr, ptr %22, align 8, !tbaa !9
  %1417 = getelementptr inbounds double, ptr %1416, i64 8
  store double %1415, ptr %1417, align 8, !tbaa !5
  br label %1458

1418:                                             ; preds = %1381
  %1419 = load i32, ptr %91, align 4, !tbaa !11
  %1420 = icmp ne i32 %1419, 0
  br i1 %1420, label %1421, label %1427

1421:                                             ; preds = %1418
  %1422 = load double, ptr %18, align 8, !tbaa !5
  %1423 = load double, ptr %52, align 8, !tbaa !5
  %1424 = fmul double %1422, %1423
  %1425 = load ptr, ptr %22, align 8, !tbaa !9
  %1426 = getelementptr inbounds double, ptr %1425, i64 8
  store double %1424, ptr %1426, align 8, !tbaa !5
  br label %1457

1427:                                             ; preds = %1418
  %1428 = load i32, ptr %93, align 4, !tbaa !11
  %1429 = icmp ne i32 %1428, 0
  br i1 %1429, label %1430, label %1456

1430:                                             ; preds = %1427
  %1431 = load double, ptr %133, align 8, !tbaa !5
  %1432 = fneg double %1431
  %1433 = load double, ptr %113, align 8, !tbaa !5
  %1434 = load double, ptr %112, align 8, !tbaa !5
  %1435 = load double, ptr %117, align 8, !tbaa !5
  %1436 = fmul double %1434, %1435
  %1437 = fneg double %1436
  %1438 = call double @llvm.fmuladd.f64(double %1432, double %1433, double %1437)
  %1439 = load double, ptr %121, align 8, !tbaa !5
  %1440 = load double, ptr %83, align 8, !tbaa !5
  %1441 = load double, ptr %124, align 8, !tbaa !5
  %1442 = load double, ptr %122, align 8, !tbaa !5
  %1443 = call double @llvm.fmuladd.f64(double %1440, double %1441, double %1442)
  %1444 = fneg double %1439
  %1445 = call double @llvm.fmuladd.f64(double %1444, double %1443, double %1438)
  %1446 = load double, ptr %126, align 8, !tbaa !5
  %1447 = load double, ptr %134, align 8, !tbaa !5
  %1448 = load double, ptr %124, align 8, !tbaa !5
  %1449 = load double, ptr %122, align 8, !tbaa !5
  %1450 = fneg double %1449
  %1451 = call double @llvm.fmuladd.f64(double %1447, double %1448, double %1450)
  %1452 = fneg double %1446
  %1453 = call double @llvm.fmuladd.f64(double %1452, double %1451, double %1445)
  %1454 = load ptr, ptr %22, align 8, !tbaa !9
  %1455 = getelementptr inbounds double, ptr %1454, i64 8
  store double %1453, ptr %1455, align 8, !tbaa !5
  br label %1456

1456:                                             ; preds = %1430, %1427
  br label %1457

1457:                                             ; preds = %1456, %1421
  br label %1458

1458:                                             ; preds = %1457, %1384
  br label %1459

1459:                                             ; preds = %1458, %1375
  %1460 = load double, ptr %18, align 8, !tbaa !5
  %1461 = fneg double %1460
  %1462 = load double, ptr %99, align 8, !tbaa !5
  %1463 = fmul double %1461, %1462
  store double %1463, ptr %135, align 8, !tbaa !5
  %1464 = load double, ptr %18, align 8, !tbaa !5
  %1465 = load double, ptr %102, align 8, !tbaa !5
  %1466 = fmul double %1464, %1465
  store double %1466, ptr %136, align 8, !tbaa !5
  %1467 = load double, ptr %18, align 8, !tbaa !5
  %1468 = fsub double %1467, 1.000000e+00
  store double %1468, ptr %36, align 8, !tbaa !5
  %1469 = load double, ptr %135, align 8, !tbaa !5
  %1470 = load double, ptr %136, align 8, !tbaa !5
  %1471 = fsub double %1469, %1470
  %1472 = load double, ptr %36, align 8, !tbaa !5
  %1473 = fadd double %1471, %1472
  %1474 = fadd double %1473, 1.000000e+00
  %1475 = load ptr, ptr %22, align 8, !tbaa !9
  %1476 = getelementptr inbounds double, ptr %1475, i64 9
  store double %1474, ptr %1476, align 8, !tbaa !5
  %1477 = load i32, ptr %137, align 4, !tbaa !11
  %1478 = icmp ne i32 %1477, 0
  br i1 %1478, label %1479, label %1490

1479:                                             ; preds = %1459
  %1480 = load double, ptr %138, align 8, !tbaa !5
  %1481 = fneg double %1480
  %1482 = load double, ptr %118, align 8, !tbaa !5
  %1483 = load double, ptr %99, align 8, !tbaa !5
  %1484 = load double, ptr %107, align 8, !tbaa !5
  %1485 = fmul double %1483, %1484
  %1486 = fneg double %1485
  %1487 = call double @llvm.fmuladd.f64(double %1481, double %1482, double %1486)
  %1488 = load ptr, ptr %22, align 8, !tbaa !9
  %1489 = getelementptr inbounds double, ptr %1488, i64 10
  store double %1487, ptr %1489, align 8, !tbaa !5
  br label %1497

1490:                                             ; preds = %1459
  %1491 = load i32, ptr %87, align 4, !tbaa !11
  %1492 = icmp ne i32 %1491, 0
  br i1 %1492, label %1493, label %1496

1493:                                             ; preds = %1490
  %1494 = load ptr, ptr %22, align 8, !tbaa !9
  %1495 = getelementptr inbounds double, ptr %1494, i64 10
  store double 0.000000e+00, ptr %1495, align 8, !tbaa !5
  br label %1496

1496:                                             ; preds = %1493, %1490
  br label %1497

1497:                                             ; preds = %1496, %1479
  %1498 = load i32, ptr %137, align 4, !tbaa !11
  %1499 = icmp ne i32 %1498, 0
  br i1 %1499, label %1500, label %1511

1500:                                             ; preds = %1497
  %1501 = load double, ptr %138, align 8, !tbaa !5
  %1502 = fneg double %1501
  %1503 = load double, ptr %131, align 8, !tbaa !5
  %1504 = load double, ptr %99, align 8, !tbaa !5
  %1505 = load double, ptr %111, align 8, !tbaa !5
  %1506 = fmul double %1504, %1505
  %1507 = fneg double %1506
  %1508 = call double @llvm.fmuladd.f64(double %1502, double %1503, double %1507)
  %1509 = load ptr, ptr %22, align 8, !tbaa !9
  %1510 = getelementptr inbounds double, ptr %1509, i64 11
  store double %1508, ptr %1510, align 8, !tbaa !5
  br label %1521

1511:                                             ; preds = %1497
  %1512 = load i32, ptr %87, align 4, !tbaa !11
  %1513 = icmp ne i32 %1512, 0
  br i1 %1513, label %1514, label %1520

1514:                                             ; preds = %1511
  %1515 = load double, ptr %135, align 8, !tbaa !5
  %1516 = load double, ptr %136, align 8, !tbaa !5
  %1517 = fadd double %1515, %1516
  %1518 = load ptr, ptr %22, align 8, !tbaa !9
  %1519 = getelementptr inbounds double, ptr %1518, i64 11
  store double %1517, ptr %1519, align 8, !tbaa !5
  br label %1520

1520:                                             ; preds = %1514, %1511
  br label %1521

1521:                                             ; preds = %1520, %1500
  %1522 = load i32, ptr %87, align 4, !tbaa !11
  %1523 = icmp ne i32 %1522, 0
  br i1 %1523, label %1524, label %1527

1524:                                             ; preds = %1521
  %1525 = load ptr, ptr %22, align 8, !tbaa !9
  %1526 = getelementptr inbounds double, ptr %1525, i64 12
  store double 0.000000e+00, ptr %1526, align 8, !tbaa !5
  br label %1539

1527:                                             ; preds = %1521
  %1528 = load i32, ptr %137, align 4, !tbaa !11
  %1529 = icmp ne i32 %1528, 0
  br i1 %1529, label %1530, label %1538

1530:                                             ; preds = %1527
  %1531 = load double, ptr %79, align 8, !tbaa !5
  %1532 = load double, ptr %116, align 8, !tbaa !5
  %1533 = load double, ptr %115, align 8, !tbaa !5
  %1534 = fneg double %1533
  %1535 = call double @llvm.fmuladd.f64(double %1531, double %1532, double %1534)
  %1536 = load ptr, ptr %22, align 8, !tbaa !9
  %1537 = getelementptr inbounds double, ptr %1536, i64 12
  store double %1535, ptr %1537, align 8, !tbaa !5
  br label %1538

1538:                                             ; preds = %1530, %1527
  br label %1539

1539:                                             ; preds = %1538, %1524
  %1540 = load i32, ptr %137, align 4, !tbaa !11
  %1541 = icmp ne i32 %1540, 0
  br i1 %1541, label %1542, label %1568

1542:                                             ; preds = %1539
  %1543 = load double, ptr %140, align 8, !tbaa !5
  %1544 = fneg double %1543
  %1545 = load double, ptr %80, align 8, !tbaa !5
  %1546 = load double, ptr %141, align 8, !tbaa !5
  %1547 = load double, ptr %127, align 8, !tbaa !5
  %1548 = fmul double %1546, %1547
  %1549 = call double @llvm.fmuladd.f64(double %1544, double %1545, double %1548)
  %1550 = load double, ptr %121, align 8, !tbaa !5
  %1551 = load double, ptr %142, align 8, !tbaa !5
  %1552 = fneg double %1551
  %1553 = load double, ptr %123, align 8, !tbaa !5
  %1554 = load double, ptr %127, align 8, !tbaa !5
  %1555 = call double @llvm.fmuladd.f64(double %1553, double %1554, double %1552)
  %1556 = fneg double %1550
  %1557 = call double @llvm.fmuladd.f64(double %1556, double %1555, double %1549)
  %1558 = load double, ptr %126, align 8, !tbaa !5
  %1559 = load double, ptr %142, align 8, !tbaa !5
  %1560 = load double, ptr %143, align 8, !tbaa !5
  %1561 = load double, ptr %123, align 8, !tbaa !5
  %1562 = call double @llvm.fmuladd.f64(double %1560, double %1561, double %1559)
  %1563 = fneg double %1558
  %1564 = call double @llvm.fmuladd.f64(double %1563, double %1562, double %1557)
  %1565 = fadd double %1564, 1.000000e+00
  %1566 = load ptr, ptr %22, align 8, !tbaa !9
  %1567 = getelementptr inbounds double, ptr %1566, i64 13
  store double %1565, ptr %1567, align 8, !tbaa !5
  br label %1575

1568:                                             ; preds = %1539
  %1569 = load i32, ptr %87, align 4, !tbaa !11
  %1570 = icmp ne i32 %1569, 0
  br i1 %1570, label %1571, label %1574

1571:                                             ; preds = %1568
  %1572 = load ptr, ptr %22, align 8, !tbaa !9
  %1573 = getelementptr inbounds double, ptr %1572, i64 13
  store double 1.000000e+00, ptr %1573, align 8, !tbaa !5
  br label %1574

1574:                                             ; preds = %1571, %1568
  br label %1575

1575:                                             ; preds = %1574, %1542
  %1576 = load i32, ptr %87, align 4, !tbaa !11
  %1577 = icmp ne i32 %1576, 0
  br i1 %1577, label %1578, label %1581

1578:                                             ; preds = %1575
  %1579 = load ptr, ptr %22, align 8, !tbaa !9
  %1580 = getelementptr inbounds double, ptr %1579, i64 14
  store double 0.000000e+00, ptr %1580, align 8, !tbaa !5
  br label %1597

1581:                                             ; preds = %1575
  %1582 = load i32, ptr %137, align 4, !tbaa !11
  %1583 = icmp ne i32 %1582, 0
  br i1 %1583, label %1584, label %1596

1584:                                             ; preds = %1581
  %1585 = load double, ptr %129, align 8, !tbaa !5
  %1586 = fneg double %1585
  %1587 = load double, ptr %145, align 8, !tbaa !5
  %1588 = load double, ptr %141, align 8, !tbaa !5
  %1589 = load double, ptr %132, align 8, !tbaa !5
  %1590 = fmul double %1588, %1589
  %1591 = call double @llvm.fmuladd.f64(double %1586, double %1587, double %1590)
  %1592 = load double, ptr %144, align 8, !tbaa !5
  %1593 = fadd double %1591, %1592
  %1594 = load ptr, ptr %22, align 8, !tbaa !9
  %1595 = getelementptr inbounds double, ptr %1594, i64 14
  store double %1593, ptr %1595, align 8, !tbaa !5
  br label %1596

1596:                                             ; preds = %1584, %1581
  br label %1597

1597:                                             ; preds = %1596, %1578
  %1598 = load i32, ptr %87, align 4, !tbaa !11
  %1599 = icmp ne i32 %1598, 0
  br i1 %1599, label %1600, label %1603

1600:                                             ; preds = %1597
  %1601 = load ptr, ptr %22, align 8, !tbaa !9
  %1602 = getelementptr inbounds double, ptr %1601, i64 15
  store double 0.000000e+00, ptr %1602, align 8, !tbaa !5
  br label %1615

1603:                                             ; preds = %1597
  %1604 = load i32, ptr %137, align 4, !tbaa !11
  %1605 = icmp ne i32 %1604, 0
  br i1 %1605, label %1606, label %1614

1606:                                             ; preds = %1603
  %1607 = load double, ptr %82, align 8, !tbaa !5
  %1608 = load double, ptr %116, align 8, !tbaa !5
  %1609 = load double, ptr %117, align 8, !tbaa !5
  %1610 = fneg double %1609
  %1611 = call double @llvm.fmuladd.f64(double %1607, double %1608, double %1610)
  %1612 = load ptr, ptr %22, align 8, !tbaa !9
  %1613 = getelementptr inbounds double, ptr %1612, i64 15
  store double %1611, ptr %1613, align 8, !tbaa !5
  br label %1614

1614:                                             ; preds = %1606, %1603
  br label %1615

1615:                                             ; preds = %1614, %1600
  %1616 = load i32, ptr %137, align 4, !tbaa !11
  %1617 = icmp ne i32 %1616, 0
  br i1 %1617, label %1618, label %1629

1618:                                             ; preds = %1615
  %1619 = load double, ptr %129, align 8, !tbaa !5
  %1620 = load double, ptr %141, align 8, !tbaa !5
  %1621 = load double, ptr %144, align 8, !tbaa !5
  %1622 = call double @llvm.fmuladd.f64(double %1619, double %1620, double %1621)
  %1623 = load double, ptr %132, align 8, !tbaa !5
  %1624 = load double, ptr %145, align 8, !tbaa !5
  %1625 = fneg double %1623
  %1626 = call double @llvm.fmuladd.f64(double %1625, double %1624, double %1622)
  %1627 = load ptr, ptr %22, align 8, !tbaa !9
  %1628 = getelementptr inbounds double, ptr %1627, i64 16
  store double %1626, ptr %1628, align 8, !tbaa !5
  br label %1636

1629:                                             ; preds = %1615
  %1630 = load i32, ptr %87, align 4, !tbaa !11
  %1631 = icmp ne i32 %1630, 0
  br i1 %1631, label %1632, label %1635

1632:                                             ; preds = %1629
  %1633 = load ptr, ptr %22, align 8, !tbaa !9
  %1634 = getelementptr inbounds double, ptr %1633, i64 16
  store double 0.000000e+00, ptr %1634, align 8, !tbaa !5
  br label %1635

1635:                                             ; preds = %1632, %1629
  br label %1636

1636:                                             ; preds = %1635, %1618
  %1637 = load i32, ptr %87, align 4, !tbaa !11
  %1638 = icmp ne i32 %1637, 0
  br i1 %1638, label %1639, label %1644

1639:                                             ; preds = %1636
  %1640 = load double, ptr %52, align 8, !tbaa !5
  %1641 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %1640, double 1.000000e+00)
  %1642 = load ptr, ptr %22, align 8, !tbaa !9
  %1643 = getelementptr inbounds double, ptr %1642, i64 17
  store double %1641, ptr %1643, align 8, !tbaa !5
  br label %1674

1644:                                             ; preds = %1636
  %1645 = load i32, ptr %137, align 4, !tbaa !11
  %1646 = icmp ne i32 %1645, 0
  br i1 %1646, label %1647, label %1673

1647:                                             ; preds = %1644
  %1648 = load double, ptr %140, align 8, !tbaa !5
  %1649 = fneg double %1648
  %1650 = load double, ptr %83, align 8, !tbaa !5
  %1651 = load double, ptr %141, align 8, !tbaa !5
  %1652 = load double, ptr %134, align 8, !tbaa !5
  %1653 = fmul double %1651, %1652
  %1654 = call double @llvm.fmuladd.f64(double %1649, double %1650, double %1653)
  %1655 = load double, ptr %121, align 8, !tbaa !5
  %1656 = load double, ptr %142, align 8, !tbaa !5
  %1657 = fneg double %1656
  %1658 = load double, ptr %134, align 8, !tbaa !5
  %1659 = load double, ptr %123, align 8, !tbaa !5
  %1660 = call double @llvm.fmuladd.f64(double %1658, double %1659, double %1657)
  %1661 = fneg double %1655
  %1662 = call double @llvm.fmuladd.f64(double %1661, double %1660, double %1654)
  %1663 = load double, ptr %126, align 8, !tbaa !5
  %1664 = load double, ptr %142, align 8, !tbaa !5
  %1665 = load double, ptr %146, align 8, !tbaa !5
  %1666 = load double, ptr %123, align 8, !tbaa !5
  %1667 = call double @llvm.fmuladd.f64(double %1665, double %1666, double %1664)
  %1668 = fneg double %1663
  %1669 = call double @llvm.fmuladd.f64(double %1668, double %1667, double %1662)
  %1670 = fadd double %1669, 1.000000e+00
  %1671 = load ptr, ptr %22, align 8, !tbaa !9
  %1672 = getelementptr inbounds double, ptr %1671, i64 17
  store double %1670, ptr %1672, align 8, !tbaa !5
  br label %1673

1673:                                             ; preds = %1647, %1644
  br label %1674

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable
define dso_local void @fc3d_NaturalMapABGenerated(double noundef %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, ptr nocapture noundef writeonly %10) local_unnamed_addr #0 {
  %12 = insertelement <2 x double> poison, double %2, i64 0
  %13 = insertelement <2 x double> %12, double %5, i64 1
  %14 = fmul <2 x double> %13, %13
  %15 = insertelement <2 x double> poison, double %1, i64 0
  %16 = insertelement <2 x double> %15, double %4, i64 1
  %17 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %16, <2 x double> %16, <2 x double> %14)
  %18 = fcmp ole <2 x double> %17, <double 0x3CB0000000000000, double 0x3CB0000000000000>
  %19 = extractelement <2 x i1> %18, i64 0
  %20 = extractelement <2 x i1> %18, i64 1
  %21 = and i1 %19, %20
  %22 = extractelement <2 x double> %17, i64 0
  %23 = fcmp ogt double %22, 0x3CB0000000000000
  %24 = and i1 %23, %20
  %25 = insertelement <2 x double> poison, double %4, i64 0
  %26 = insertelement <2 x double> %25, double %5, i64 1
  %27 = insertelement <2 x double> poison, double %6, i64 0
  %28 = shufflevector <2 x double> %27, <2 x double> poison, <2 x i32> zeroinitializer
  %29 = fmul <2 x double> %26, %28
  %30 = insertelement <2 x double> %15, double %2, i64 1
  %31 = fsub <2 x double> %30, %29
  %32 = fmul <2 x double> %31, %31
  %33 = extractelement <2 x double> %32, i64 0
  %34 = extractelement <2 x double> %32, i64 1
  %35 = fadd double %33, %34
  %36 = extractelement <2 x double> %17, i64 1
  %37 = fcmp oge double %36, 0x3CB0000000000000
  %38 = fadd double %6, 1.000000e+00
  %39 = fmul double %38, 0x3CB0000000000000
  %40 = fcmp ole double %35, %39
  %or.cond = and i1 %19, %37
  %spec.select = and i1 %or.cond, %40
  %or.cond3 = and i1 %23, %37
  %spec.select810 = and i1 %or.cond3, %40
  %41 = and i1 %37, %40
  %42 = or i1 %20, %41
  %43 = fcmp ogt double %35, %39
  br i1 %21, label %44, label %71

44:                                               ; preds = %11
  %45 = fmul double %6, 2.000000e+00
  %46 = fneg double %45
  %47 = tail call double @llvm.fmuladd.f64(double %45, double %6, double %46)
  %48 = fadd double %47, 1.000000e+00
  %49 = fmul double %0, %6
  %50 = tail call double @llvm.fmuladd.f64(double %3, double -1.000000e+00, double %49)
  %51 = fcmp olt double %50, 0.000000e+00
  %52 = fcmp ogt double %50, 0.000000e+00
  %53 = select i1 %52, double 1.000000e+00, double 0.000000e+00
  %54 = select i1 %51, double 0.000000e+00, double %53
  %55 = fmul double %54, %6
  %56 = fmul double %55, 0x3FE6A09E667F3BCD
  %57 = fdiv double 1.000000e+00, %48
  %58 = fadd double %6, -1.000000e+00
  %59 = fmul double %58, %58
  %60 = fmul double %6, %6
  %61 = fmul double %57, %54
  %62 = fmul double %60, 2.000000e+00
  %63 = tail call double @llvm.fmuladd.f64(double %6, double -2.000000e+00, double %62)
  %64 = fadd double %63, 1.000000e+00
  %65 = fdiv double 1.000000e+00, %64
  %66 = fmul double %60, %6
  %67 = insertelement <2 x double> poison, double %59, i64 0
  %68 = insertelement <2 x double> %67, double %58, i64 1
  %69 = insertelement <2 x double> poison, double %55, i64 0
  %70 = insertelement <2 x double> %69, double %54, i64 1
  br label %71

71:                                               ; preds = %44, %11
  %.0781 = phi double [ 0x3FF6A09E667F3BCD, %44 ], [ 0.000000e+00, %11 ]
  %.0775 = phi double [ %56, %44 ], [ 0.000000e+00, %11 ]
  %.0774 = phi double [ %57, %44 ], [ 0.000000e+00, %11 ]
  %.0771 = phi double [ %60, %44 ], [ 0.000000e+00, %11 ]
  %.0770 = phi double [ %61, %44 ], [ 0.000000e+00, %11 ]
  %.0769 = phi double [ %65, %44 ], [ 0.000000e+00, %11 ]
  %.0768 = phi double [ %66, %44 ], [ 0.000000e+00, %11 ]
  %72 = phi <2 x double> [ %68, %44 ], [ zeroinitializer, %11 ]
  %73 = phi <2 x double> [ %70, %44 ], [ zeroinitializer, %11 ]
  br i1 %24, label %74, label %128

74:                                               ; preds = %71
  %75 = fmul double %0, %6
  %76 = tail call double @llvm.fmuladd.f64(double %3, double -1.000000e+00, double %75)
  %sqrt865 = tail call double @llvm.sqrt.f64(double %22)
  %77 = fdiv double 1.000000e+00, %sqrt865
  %78 = fmul double %6, 2.500000e-01
  %79 = fmul double %77, %78
  %80 = fadd double %sqrt865, %76
  %81 = tail call double @llvm.fmuladd.f64(double %sqrt865, double -1.000000e+00, double %76)
  %82 = insertelement <2 x double> poison, double %81, i64 0
  %83 = insertelement <2 x double> %82, double %80, i64 1
  %84 = fcmp olt <2 x double> %83, zeroinitializer
  %85 = fcmp ogt <2 x double> %83, zeroinitializer
  %86 = select <2 x i1> %85, <2 x double> <double 1.000000e+00, double 1.000000e+00>, <2 x double> zeroinitializer
  %87 = select <2 x i1> %84, <2 x double> zeroinitializer, <2 x double> %86
  %88 = extractelement <2 x double> %87, i64 0
  %89 = fmul double %88, 2.000000e+00
  %90 = fmul double %sqrt865, 0x3FF6A09E667F3BCD
  %91 = fmul double %90, %88
  %92 = extractelement <2 x double> %87, i64 1
  %93 = tail call double @llvm.fmuladd.f64(double %92, double %90, double %91)
  %94 = fmul double %sqrt865, %sqrt865
  %95 = fmul double %sqrt865, %94
  %96 = fdiv double 1.000000e+00, %95
  %97 = fmul double %78, %96
  %98 = fsub double %75, %3
  %99 = fadd double %sqrt865, %98
  %100 = tail call double @llvm.maxnum.f64(double %99, double 0.000000e+00)
  %101 = fmul double %100, 2.000000e+00
  %102 = fsub double %98, %sqrt865
  %103 = tail call double @llvm.maxnum.f64(double %102, double 0.000000e+00)
  %104 = fmul double %103, 2.000000e+00
  %105 = fmul double %sqrt865, 2.000000e+00
  %106 = fmul double %105, %92
  %107 = insertelement <2 x double> %87, double %1, i64 0
  %108 = insertelement <2 x double> %107, double 2.000000e+00, i64 1
  %109 = fmul <2 x double> %107, %108
  %110 = extractelement <2 x double> %109, i64 1
  %111 = fmul double %110, %2
  %112 = insertelement <2 x double> %87, double %1, i64 1
  %113 = fmul <2 x double> %109, %112
  %114 = extractelement <2 x double> %109, i64 0
  %115 = fmul double %114, %1
  %116 = extractelement <2 x double> %14, i64 0
  %117 = fmul double %116, %92
  %118 = fmul <2 x double> %14, %87
  %119 = extractelement <2 x double> %118, i64 0
  %120 = fmul double %105, %88
  %121 = fmul double %114, %92
  %122 = extractelement <2 x double> %113, i64 0
  %123 = fsub double %121, %122
  %124 = fadd double %117, %123
  %125 = fsub double %124, %119
  %126 = fmul double %125, 0x3FF6A09E667F3BCD
  %127 = fmul double %116, %2
  br label %128

128:                                              ; preds = %74, %71
  %.1782 = phi double [ 0x3FF6A09E667F3BCD, %74 ], [ %.0781, %71 ]
  %.0764 = phi double [ %sqrt865, %74 ], [ 0.000000e+00, %71 ]
  %.0763 = phi double [ %79, %74 ], [ 0.000000e+00, %71 ]
  %.0758 = phi double [ %89, %74 ], [ 0.000000e+00, %71 ]
  %.0757 = phi double [ %93, %74 ], [ 0.000000e+00, %71 ]
  %.0756 = phi double [ %111, %74 ], [ 0.000000e+00, %71 ]
  %.0755 = phi double [ %97, %74 ], [ 0.000000e+00, %71 ]
  %.0754 = phi double [ %116, %74 ], [ 0.000000e+00, %71 ]
  %.0751 = phi double [ %114, %74 ], [ 0.000000e+00, %71 ]
  %.0750 = phi double [ %106, %74 ], [ 0.000000e+00, %71 ]
  %.0749 = phi double [ %105, %74 ], [ 0.000000e+00, %71 ]
  %.0747 = phi double [ %115, %74 ], [ 0.000000e+00, %71 ]
  %.0746 = phi double [ %117, %74 ], [ 0.000000e+00, %71 ]
  %.0745 = phi double [ %119, %74 ], [ 0.000000e+00, %71 ]
  %.0744 = phi double [ %101, %74 ], [ 0.000000e+00, %71 ]
  %.0743 = phi double [ %104, %74 ], [ 0.000000e+00, %71 ]
  %.0742 = phi double [ %120, %74 ], [ 0.000000e+00, %71 ]
  %.0741 = phi double [ %121, %74 ], [ 0.000000e+00, %71 ]
  %.0740 = phi double [ %126, %74 ], [ 0.000000e+00, %71 ]
  %.0739 = phi double [ %127, %74 ], [ 0.000000e+00, %71 ]
  %129 = phi <2 x double> [ %113, %74 ], [ zeroinitializer, %71 ]
  %130 = phi <2 x double> [ %87, %74 ], [ zeroinitializer, %71 ]
  br i1 %spec.select, label %131, label %142

131:                                              ; preds = %128
  %132 = fmul double %0, %6
  %133 = tail call double @llvm.fmuladd.f64(double %3, double -1.000000e+00, double %132)
  %134 = fcmp olt double %133, 0.000000e+00
  %135 = fcmp ogt double %133, 0.000000e+00
  %136 = select i1 %135, double 1.000000e+00, double 0.000000e+00
  %137 = select i1 %134, double 0.000000e+00, double %136
  %138 = fmul double %137, %6
  %139 = fmul double %138, 0x3FE6A09E667F3BCD
  %140 = insertelement <2 x double> poison, double %138, i64 0
  %141 = insertelement <2 x double> %140, double %137, i64 1
  br label %142

142:                                              ; preds = %131, %128
  %.2783 = phi double [ 0x3FF6A09E667F3BCD, %131 ], [ %.1782, %128 ]
  %.1776 = phi double [ %139, %131 ], [ %.0775, %128 ]
  %143 = phi <2 x double> [ %141, %131 ], [ %73, %128 ]
  %144 = extractelement <2 x double> %130, i64 0
  br i1 %spec.select810, label %145, label %156

145:                                              ; preds = %142
  %146 = fmul double %0, %6
  %147 = tail call double @llvm.fmuladd.f64(double %3, double -1.000000e+00, double %146)
  %sqrt866 = tail call double @llvm.sqrt.f64(double %22)
  %148 = fdiv double 1.000000e+00, %sqrt866
  %149 = tail call double @llvm.fmuladd.f64(double %sqrt866, double -1.000000e+00, double %147)
  %150 = fcmp olt double %149, 0.000000e+00
  %151 = fcmp ogt double %149, 0.000000e+00
  %152 = select i1 %151, double 1.000000e+00, double 0.000000e+00
  %153 = select i1 %150, double 0.000000e+00, double %152
  %154 = fmul double %148, %6
  %155 = fmul double %154, %153
  br label %156

156:                                              ; preds = %145, %142
  %.1765 = phi double [ %sqrt866, %145 ], [ %.0764, %142 ]
  %.1760 = phi double [ %153, %145 ], [ %144, %142 ]
  %.0738 = phi double [ %155, %145 ], [ 0.000000e+00, %142 ]
  br i1 %42, label %226, label %157

157:                                              ; preds = %156
  %158 = fneg double %3
  %159 = fmul double %0, %6
  %sqrt871 = tail call double @llvm.sqrt.f64(double %36)
  %160 = fneg double %6
  %161 = tail call double @llvm.fmuladd.f64(double %160, double %sqrt871, double %158)
  %162 = fadd double %159, %161
  %sqrt870 = tail call double @llvm.sqrt.f64(double %35)
  %163 = fadd double %162, %sqrt870
  %164 = fcmp olt double %163, 0.000000e+00
  %165 = fcmp ogt double %163, 0.000000e+00
  %166 = select i1 %165, double 5.000000e-01, double 0.000000e+00
  %167 = fsub double %162, %sqrt870
  %168 = fcmp olt double %167, 0.000000e+00
  %169 = fcmp ogt double %167, 0.000000e+00
  %170 = select i1 %169, double 5.000000e-01, double 0.000000e+00
  %171 = fdiv double 1.000000e+00, %sqrt871
  %172 = extractelement <2 x double> %29, i64 0
  %173 = fneg double %172
  %174 = fmul double %171, %173
  %175 = fdiv double 1.000000e+00, %sqrt870
  %176 = fmul double %175, %6
  %177 = extractelement <2 x double> %29, i64 1
  %178 = fneg double %177
  %179 = fmul double %171, %178
  %180 = insertelement <2 x double> poison, double %176, i64 0
  %181 = shufflevector <2 x double> %180, <2 x double> poison, <2 x i32> zeroinitializer
  %182 = fmul <2 x double> %31, %181
  %183 = extractelement <2 x double> %182, i64 0
  %184 = fsub double %174, %183
  %185 = fadd double %174, %183
  %186 = extractelement <2 x double> %182, i64 1
  %187 = fsub double %179, %186
  %188 = fadd double %179, %186
  %189 = select i1 %164, double 0.000000e+00, double %166
  %190 = fmul double %175, %189
  %191 = extractelement <2 x double> %31, i64 0
  %192 = select i1 %168, double 0.000000e+00, double %170
  %193 = fmul double %175, %192
  %194 = extractelement <2 x double> %31, i64 1
  %195 = fmul double %194, %190
  %196 = fsub <2 x double> %29, %30
  %197 = extractelement <2 x double> %196, i64 0
  %198 = fmul double %197, %193
  %199 = tail call double @llvm.maxnum.f64(double %163, double 0.000000e+00)
  %200 = fneg double %176
  %201 = fmul double %sqrt870, %sqrt870
  %202 = fmul double %sqrt870, %201
  %203 = fdiv double 1.000000e+00, %202
  %204 = fmul double %203, %6
  %205 = tail call double @llvm.maxnum.f64(double %167, double 0.000000e+00)
  %206 = fmul double %205, 5.000000e-01
  %207 = fmul <2 x double> %31, %196
  %208 = extractelement <2 x double> %207, i64 0
  %209 = fmul double %6, -5.000000e-01
  %210 = fmul double %209, %191
  %211 = fmul double %194, %210
  %212 = fmul double %211, %199
  %213 = fmul double %212, %203
  %214 = fmul double %194, %197
  %215 = fmul double %6, 5.000000e-01
  %216 = fmul double %215, %203
  %217 = fmul double %205, %216
  %218 = shufflevector <2 x double> %31, <2 x double> poison, <2 x i32> zeroinitializer
  %219 = insertelement <2 x double> %196, double %190, i64 0
  %220 = fmul <2 x double> %218, %219
  %221 = insertelement <2 x double> %196, double %199, i64 0
  %222 = insertelement <2 x double> <double 5.000000e-01, double poison>, double %193, i64 1
  %223 = fmul <2 x double> %221, %222
  %224 = fmul <2 x double> %196, %31
  %225 = extractelement <2 x double> %224, i64 1
  br label %226

226:                                              ; preds = %157, %156
  %.0735 = phi double [ %184, %157 ], [ 0.000000e+00, %156 ]
  %.0734 = phi double [ %185, %157 ], [ 0.000000e+00, %156 ]
  %.0731 = phi double [ %187, %157 ], [ 0.000000e+00, %156 ]
  %.0730 = phi double [ %188, %157 ], [ 0.000000e+00, %156 ]
  %.0726 = phi double [ %193, %157 ], [ 0.000000e+00, %156 ]
  %.0724 = phi double [ %195, %157 ], [ 0.000000e+00, %156 ]
  %.0720 = phi double [ %198, %157 ], [ 0.000000e+00, %156 ]
  %.0717 = phi double [ %200, %157 ], [ 0.000000e+00, %156 ]
  %.0715 = phi double [ %203, %157 ], [ 0.000000e+00, %156 ]
  %.0714 = phi double [ %204, %157 ], [ 0.000000e+00, %156 ]
  %.0712 = phi double [ %206, %157 ], [ 0.000000e+00, %156 ]
  %.0710 = phi double [ %208, %157 ], [ 0.000000e+00, %156 ]
  %.0709 = phi double [ %213, %157 ], [ 0.000000e+00, %156 ]
  %.0707 = phi double [ %214, %157 ], [ 0.000000e+00, %156 ]
  %.0706 = phi double [ %217, %157 ], [ 0.000000e+00, %156 ]
  %.0699 = phi double [ %225, %157 ], [ 0.000000e+00, %156 ]
  %227 = phi <2 x double> [ %196, %157 ], [ zeroinitializer, %156 ]
  %228 = phi <2 x double> [ %182, %157 ], [ zeroinitializer, %156 ]
  %229 = phi <2 x double> [ %223, %157 ], [ zeroinitializer, %156 ]
  %230 = phi <2 x double> [ %220, %157 ], [ zeroinitializer, %156 ]
  br i1 %40, label %231, label %239

231:                                              ; preds = %226
  %232 = fmul double %0, %6
  %233 = tail call double @llvm.fmuladd.f64(double %3, double -1.000000e+00, double %232)
  %sqrt872 = tail call double @llvm.sqrt.f64(double %22)
  %234 = tail call double @llvm.fmuladd.f64(double %sqrt872, double -1.000000e+00, double %233)
  %235 = fcmp olt double %234, 0.000000e+00
  %236 = fcmp ogt double %234, 0.000000e+00
  %237 = select i1 %236, double 1.000000e+00, double 0.000000e+00
  %238 = select i1 %235, double 0.000000e+00, double %237
  br label %239

239:                                              ; preds = %231, %226
  %.2766 = phi double [ %sqrt872, %231 ], [ %.1765, %226 ]
  %.2 = phi double [ %238, %231 ], [ %.1760, %226 ]
  br i1 %43, label %240, label %308

240:                                              ; preds = %239
  %241 = fneg double %3
  %242 = fmul double %0, %6
  %sqrt879 = tail call double @llvm.sqrt.f64(double %36)
  %243 = fneg double %6
  %244 = tail call double @llvm.fmuladd.f64(double %243, double %sqrt879, double %241)
  %245 = fadd double %242, %244
  %sqrt878 = tail call double @llvm.sqrt.f64(double %35)
  %246 = fadd double %245, %sqrt878
  %247 = fcmp olt double %246, 0.000000e+00
  %248 = fcmp ogt double %246, 0.000000e+00
  %249 = select i1 %248, double 1.000000e+00, double 0.000000e+00
  %250 = select i1 %247, double 0.000000e+00, double %249
  %251 = fsub double %245, %sqrt878
  %252 = fcmp olt double %251, 0.000000e+00
  %253 = fcmp ogt double %251, 0.000000e+00
  %254 = select i1 %253, double 1.000000e+00, double 0.000000e+00
  %255 = select i1 %252, double 0.000000e+00, double %254
  %256 = fdiv double 1.000000e+00, %sqrt878
  %257 = fmul double %256, %6
  %258 = insertelement <2 x double> poison, double %257, i64 0
  %259 = shufflevector <2 x double> %258, <2 x double> poison, <2 x i32> zeroinitializer
  %260 = fmul <2 x double> %31, %259
  %261 = fmul double %250, 5.000000e-01
  %262 = fmul double %256, %261
  %263 = extractelement <2 x double> %31, i64 0
  %264 = fmul double %255, 5.000000e-01
  %265 = fmul double %256, %264
  %266 = extractelement <2 x double> %31, i64 1
  %267 = fmul double %266, %262
  %268 = fsub <2 x double> %29, %30
  %269 = extractelement <2 x double> %268, i64 0
  %270 = fmul double %269, %265
  %271 = tail call double @llvm.maxnum.f64(double %246, double 0.000000e+00)
  %272 = fmul double %sqrt878, %sqrt878
  %273 = fmul double %sqrt878, %272
  %274 = fdiv double 1.000000e+00, %273
  %275 = tail call double @llvm.maxnum.f64(double %251, double 0.000000e+00)
  %276 = fmul double %275, 5.000000e-01
  %277 = fmul <2 x double> %31, %268
  %278 = extractelement <2 x double> %277, i64 0
  %279 = fmul double %266, %269
  %280 = fmul double %6, 5.000000e-01
  %281 = fmul double %280, %255
  %282 = fmul double %256, %281
  %283 = fdiv double 1.000000e+00, %35
  %284 = fmul double %283, 5.000000e-01
  %285 = fmul double %284, %250
  %286 = fmul double %284, %255
  %287 = fneg double %256
  %288 = fmul <2 x double> %268, %268
  %289 = extractelement <2 x double> %288, i64 0
  %290 = fneg double %263
  %291 = fmul double %285, %290
  %292 = extractelement <2 x double> %268, i64 1
  %293 = fneg double %292
  %294 = fmul double %269, %293
  %295 = fmul double %294, %274
  %296 = fmul double %276, %295
  %297 = tail call double @llvm.fmuladd.f64(double %291, double %266, double %296)
  %298 = shufflevector <2 x double> %31, <2 x double> poison, <2 x i32> zeroinitializer
  %299 = insertelement <2 x double> %268, double %262, i64 0
  %300 = fmul <2 x double> %298, %299
  %301 = insertelement <2 x double> %268, double %271, i64 0
  %302 = insertelement <2 x double> <double 5.000000e-01, double poison>, double %265, i64 1
  %303 = fmul <2 x double> %301, %302
  %304 = extractelement <2 x double> %303, i64 0
  %305 = fmul double %304, %274
  %306 = fmul double %292, %266
  %307 = fmul double %292, %292
  br label %308

308:                                              ; preds = %240, %239
  %.1727 = phi double [ %265, %240 ], [ %.0726, %239 ]
  %.1725 = phi double [ %267, %240 ], [ %.0724, %239 ]
  %.1721 = phi double [ %270, %240 ], [ %.0720, %239 ]
  %.1716 = phi double [ %274, %240 ], [ %.0715, %239 ]
  %.1713 = phi double [ %276, %240 ], [ %.0712, %239 ]
  %.1711 = phi double [ %278, %240 ], [ %.0710, %239 ]
  %.1708 = phi double [ %279, %240 ], [ %.0707, %239 ]
  %.1 = phi double [ %306, %240 ], [ %.0699, %239 ]
  %.0698 = phi double [ %282, %240 ], [ 0.000000e+00, %239 ]
  %.0697 = phi double [ %285, %240 ], [ 0.000000e+00, %239 ]
  %.0696 = phi double [ %286, %240 ], [ 0.000000e+00, %239 ]
  %.0695 = phi double [ %287, %240 ], [ 0.000000e+00, %239 ]
  %.0694 = phi double [ %289, %240 ], [ 0.000000e+00, %239 ]
  %.0693 = phi double [ %297, %240 ], [ 0.000000e+00, %239 ]
  %.0692 = phi double [ %305, %240 ], [ 0.000000e+00, %239 ]
  %.0 = phi double [ %307, %240 ], [ 0.000000e+00, %239 ]
  %309 = phi <2 x double> [ %268, %240 ], [ %227, %239 ]
  %310 = phi <2 x double> [ %260, %240 ], [ %228, %239 ]
  %311 = phi <2 x double> [ %303, %240 ], [ %229, %239 ]
  %312 = phi <2 x double> [ %300, %240 ], [ %230, %239 ]
  %313 = fmul double %0, %6
  br i1 %41, label %314, label %._crit_edge

314:                                              ; preds = %308
  %315 = tail call double @llvm.fmuladd.f64(double %3, double -1.000000e+00, double %313)
  %sqrt880 = tail call double @llvm.sqrt.f64(double %22)
  %316 = tail call double @llvm.fmuladd.f64(double %sqrt880, double -1.000000e+00, double %315)
  %317 = fcmp olt double %316, 0.000000e+00
  %318 = fcmp ogt double %316, 0.000000e+00
  %319 = select i1 %318, double 1.000000e+00, double 0.000000e+00
  %320 = select i1 %317, double 0.000000e+00, double %319
  br label %._crit_edge

._crit_edge:                                      ; preds = %308, %314
  %.3767 = phi double [ %sqrt880, %314 ], [ %.2766, %308 ]
  %.3 = phi double [ %320, %314 ], [ %.2, %308 ]
  %321 = fneg double %3
  %sqrt882 = tail call double @llvm.sqrt.f64(double %36)
  %322 = fneg double %6
  %323 = tail call double @llvm.fmuladd.f64(double %322, double %sqrt882, double %321)
  %324 = fadd double %313, %323
  %sqrt881 = tail call double @llvm.sqrt.f64(double %35)
  %325 = fadd double %324, %sqrt881
  %326 = fsub double %324, %sqrt881
  %327 = insertelement <2 x double> poison, double %325, i64 0
  %328 = insertelement <2 x double> %327, double %326, i64 1
  %329 = fcmp olt <2 x double> %328, zeroinitializer
  %330 = fcmp ogt <2 x double> %328, zeroinitializer
  %331 = select <2 x i1> %330, <2 x double> <double 5.000000e-01, double 5.000000e-01>, <2 x double> zeroinitializer
  %332 = select <2 x i1> %329, <2 x double> zeroinitializer, <2 x double> %331
  %333 = extractelement <2 x double> %332, i64 0
  %334 = extractelement <2 x double> %332, i64 1
  %335 = fadd double %333, %334
  store double %335, ptr %10, align 8, !tbaa !5
  br i1 %43, label %337, label %336

336:                                              ; preds = %._crit_edge
  br i1 %40, label %343, label %347

337:                                              ; preds = %._crit_edge
  %338 = extractelement <2 x double> %312, i64 0
  %339 = fadd double %338, %.1721
  %340 = getelementptr inbounds i8, ptr %10, i64 8
  store double %339, ptr %340, align 8, !tbaa !5
  %341 = extractelement <2 x double> %311, i64 1
  %342 = fadd double %.1725, %341
  br label %.sink.split

343:                                              ; preds = %336
  %344 = getelementptr inbounds i8, ptr %10, i64 8
  store double 0.000000e+00, ptr %344, align 8, !tbaa !5
  %345 = fsub double %333, %334
  br label %.sink.split

.sink.split:                                      ; preds = %337, %343
  %.sink883 = phi double [ %345, %343 ], [ %342, %337 ]
  %346 = getelementptr inbounds i8, ptr %10, i64 16
  store double %.sink883, ptr %346, align 8, !tbaa !5
  br label %347

347:                                              ; preds = %.sink.split, %336
  br i1 %21, label %398, label %348

348:                                              ; preds = %347
  br i1 %24, label %412, label %349

349:                                              ; preds = %348
  br i1 %spec.select, label %354, label %350

350:                                              ; preds = %349
  br i1 %spec.select810, label %351, label %353

351:                                              ; preds = %350
  %352 = fmul double %.0738, %1
  br label %354

353:                                              ; preds = %350
  br i1 %42, label %.thread818, label %.thread816

354:                                              ; preds = %349, %351
  %.sink885 = phi double [ %352, %351 ], [ %.1776, %349 ]
  %355 = getelementptr inbounds i8, ptr %10, i64 24
  store double %.sink885, ptr %355, align 8, !tbaa !5
  br i1 %41, label %362, label %361

.thread818:                                       ; preds = %353
  br i1 %41, label %362, label %.thread847

.thread816:                                       ; preds = %353
  %356 = fneg double %333
  %357 = fneg double %334
  %358 = fmul double %.0734, %357
  %359 = tail call double @llvm.fmuladd.f64(double %356, double %.0735, double %358)
  %360 = getelementptr inbounds i8, ptr %10, i64 24
  store double %359, ptr %360, align 8, !tbaa !5
  br label %.thread817

361:                                              ; preds = %354
  br i1 %42, label %.thread827, label %.thread817

362:                                              ; preds = %.thread818, %354
  %363 = getelementptr inbounds i8, ptr %10, i64 32
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %363, i8 0, i64 16, i1 false)
  br label %.thread827

.thread817:                                       ; preds = %.thread816, %361
  %364 = insertelement <2 x double> poison, double %.1713, i64 0
  %365 = insertelement <2 x double> %364, double %.0735, i64 1
  %366 = fneg <2 x double> %365
  %367 = fneg double %.0734
  %368 = fmul double %.1721, %367
  %369 = tail call double @llvm.fmuladd.f64(double %33, double %.0714, double %.0717)
  %370 = fneg <2 x double> %311
  %371 = fneg double %.0717
  %372 = tail call double @llvm.fmuladd.f64(double %.0714, double %.1711, double %371)
  %373 = getelementptr inbounds i8, ptr %10, i64 32
  %374 = fneg double %.0706
  %375 = shufflevector <2 x double> %366, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %376 = insertelement <2 x double> %375, double %374, i64 1
  %377 = insertelement <2 x double> poison, double %368, i64 0
  %378 = insertelement <2 x double> %377, double %.0709, i64 1
  %379 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %376, <2 x double> %312, <2 x double> %378)
  %380 = insertelement <2 x double> poison, double %369, i64 0
  %381 = insertelement <2 x double> %380, double %.0734, i64 1
  %382 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %370, <2 x double> %381, <2 x double> %379)
  %383 = insertelement <2 x double> poison, double %372, i64 0
  %384 = insertelement <2 x double> %383, double %.1725, i64 1
  %385 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %366, <2 x double> %384, <2 x double> %382)
  store <2 x double> %385, ptr %373, align 8, !tbaa !5
  br label %.thread827

.thread827:                                       ; preds = %361, %.thread817, %362
  br i1 %spec.select, label %390, label %386

386:                                              ; preds = %.thread827
  br i1 %spec.select810, label %387, label %389

387:                                              ; preds = %386
  %388 = fmul double %.0738, %2
  br label %390

389:                                              ; preds = %386
  br i1 %42, label %.thread838, label %.thread836

390:                                              ; preds = %.thread827, %387
  %.sink887 = phi double [ %388, %387 ], [ %.1776, %.thread827 ]
  %391 = getelementptr inbounds i8, ptr %10, i64 48
  store double %.sink887, ptr %391, align 8, !tbaa !5
  br i1 %41, label %472, label %397

.thread838:                                       ; preds = %389
  br i1 %41, label %472, label %.thread847

.thread836:                                       ; preds = %389
  %392 = fneg double %333
  %393 = fneg double %334
  %394 = fmul double %.0730, %393
  %395 = tail call double @llvm.fmuladd.f64(double %392, double %.0731, double %394)
  %396 = getelementptr inbounds i8, ptr %10, i64 48
  store double %395, ptr %396, align 8, !tbaa !5
  br label %.thread837

397:                                              ; preds = %390
  br i1 %42, label %.thread847, label %.thread837

398:                                              ; preds = %347
  %399 = getelementptr inbounds i8, ptr %10, i64 24
  store double %.1776, ptr %399, align 8, !tbaa !5
  %400 = getelementptr inbounds i8, ptr %10, i64 32
  %401 = fmul double %.0771, %.0769
  %402 = insertelement <2 x double> poison, double %.0774, i64 0
  %403 = insertelement <2 x double> %402, double %401, i64 1
  %404 = fmul <2 x double> %403, %143
  %405 = fmul <2 x double> %72, %404
  store <2 x double> %405, ptr %400, align 8, !tbaa !5
  %406 = getelementptr inbounds i8, ptr %10, i64 48
  store double %.1776, ptr %406, align 8, !tbaa !5
  %407 = fmul double %.0771, %.0770
  %408 = fadd double %6, -1.000000e+00
  %409 = fmul double %408, %407
  %410 = getelementptr inbounds i8, ptr %10, i64 56
  store double %409, ptr %410, align 8, !tbaa !5
  %411 = fmul double %.0770, %.0768
  br label %.thread847.sink.split

412:                                              ; preds = %348
  %413 = fneg double %1
  %414 = extractelement <2 x double> %129, i64 1
  %415 = tail call double @llvm.fmuladd.f64(double %413, double %.0758, double %414)
  %416 = fadd double %415, %.0757
  %417 = fmul double %.0763, %416
  %418 = getelementptr inbounds i8, ptr %10, i64 24
  store double %417, ptr %418, align 8, !tbaa !5
  %419 = fneg double %.0745
  %420 = fmul double %419, %1
  %421 = tail call double @llvm.fmuladd.f64(double %1, double %.0746, double %420)
  %422 = extractelement <2 x double> %130, i64 1
  %423 = tail call double @llvm.fmuladd.f64(double %422, double %.0747, double %421)
  %424 = fneg double %.3
  %425 = tail call double @llvm.fmuladd.f64(double %424, double %.0747, double %423)
  %426 = fmul double %.0754, %.0744
  %427 = tail call double @llvm.fmuladd.f64(double %.2783, double %425, double %426)
  %428 = fneg double %.0754
  %429 = tail call double @llvm.fmuladd.f64(double %428, double %.0743, double %427)
  %430 = tail call double @llvm.fmuladd.f64(double %.0751, double %.0750, double %429)
  %431 = getelementptr inbounds i8, ptr %10, i64 32
  %432 = fmul double %.0755, %2
  %433 = fmul double %.0743, %1
  %434 = tail call double @llvm.fmuladd.f64(double %413, double %.0744, double %433)
  %435 = tail call double @llvm.fmuladd.f64(double %1, double %.0742, double %434)
  %436 = fadd double %435, %.0740
  %437 = insertelement <2 x double> poison, double %.0749, i64 0
  %438 = insertelement <2 x double> %437, double %.3767, i64 1
  %439 = insertelement <2 x double> poison, double %430, i64 0
  %440 = insertelement <2 x double> %439, double %436, i64 1
  %441 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %438, <2 x double> %129, <2 x double> %440)
  %442 = insertelement <2 x double> poison, double %.0755, i64 0
  %443 = insertelement <2 x double> %442, double %432, i64 1
  %444 = fmul <2 x double> %443, %441
  store <2 x double> %444, ptr %431, align 8, !tbaa !5
  %445 = fneg double %2
  %446 = tail call double @llvm.fmuladd.f64(double %445, double %.0758, double %.0757)
  %447 = fadd double %446, %.0756
  %448 = fmul double %.0763, %447
  %449 = getelementptr inbounds i8, ptr %10, i64 48
  store double %448, ptr %449, align 8, !tbaa !5
  %450 = fmul double %.0755, %1
  %451 = fmul double %.0743, %2
  %452 = tail call double @llvm.fmuladd.f64(double %445, double %.0744, double %451)
  %453 = tail call double @llvm.fmuladd.f64(double %2, double %.0742, double %452)
  %454 = fadd double %453, %.0740
  %455 = tail call double @llvm.fmuladd.f64(double %.3767, double %.0756, double %454)
  %456 = fmul double %450, %455
  %457 = getelementptr inbounds i8, ptr %10, i64 56
  store double %456, ptr %457, align 8, !tbaa !5
  %458 = extractelement <2 x double> %129, i64 0
  %459 = fneg double %458
  %460 = fmul double %459, %2
  %461 = tail call double @llvm.fmuladd.f64(double %2, double %.0741, double %460)
  %462 = tail call double @llvm.fmuladd.f64(double %.0739, double %422, double %461)
  %463 = fneg double %.0739
  %464 = tail call double @llvm.fmuladd.f64(double %463, double %.3, double %462)
  %465 = fmul double %.0754, %.0750
  %466 = tail call double @llvm.fmuladd.f64(double %.2783, double %464, double %465)
  %467 = tail call double @llvm.fmuladd.f64(double %.0744, double %.0751, double %466)
  %468 = fneg double %.0743
  %469 = tail call double @llvm.fmuladd.f64(double %468, double %.0751, double %467)
  %470 = tail call double @llvm.fmuladd.f64(double %.0749, double %.0745, double %469)
  %471 = fmul double %.0755, %470
  br label %.thread847.sink.split

472:                                              ; preds = %.thread838, %390
  %473 = getelementptr inbounds i8, ptr %10, i64 56
  store double 0.000000e+00, ptr %473, align 8, !tbaa !5
  %474 = fmul double %.3, %6
  br label %.thread847.sink.split

.thread837:                                       ; preds = %.thread836, %397
  %475 = fneg double %.1708
  %476 = tail call double @llvm.fmuladd.f64(double %475, double %.0706, double %.0709)
  %477 = fneg double %.0731
  %478 = extractelement <2 x double> %312, i64 0
  %479 = tail call double @llvm.fmuladd.f64(double %477, double %478, double %476)
  %480 = fneg double %.0730
  %481 = tail call double @llvm.fmuladd.f64(double %480, double %.1721, double %479)
  %482 = getelementptr inbounds i8, ptr %10, i64 56
  store double %481, ptr %482, align 8, !tbaa !5
  %483 = extractelement <2 x double> %311, i64 1
  %484 = fneg double %483
  %485 = fmul double %.1725, %477
  %486 = tail call double @llvm.fmuladd.f64(double %484, double %.0730, double %485)
  %487 = tail call double @llvm.fmuladd.f64(double %34, double %.0714, double %.0717)
  %488 = extractelement <2 x double> %311, i64 0
  %489 = fneg double %488
  %490 = tail call double @llvm.fmuladd.f64(double %489, double %487, double %486)
  %491 = fneg double %.0717
  %492 = tail call double @llvm.fmuladd.f64(double %.1, double %.0714, double %491)
  %493 = fneg double %.1713
  %494 = tail call double @llvm.fmuladd.f64(double %493, double %492, double %490)
  br label %.thread847.sink.split

.thread847.sink.split:                            ; preds = %398, %472, %.thread837, %412
  %.sink889 = phi double [ %471, %412 ], [ %494, %.thread837 ], [ %474, %472 ], [ %411, %398 ]
  %495 = getelementptr inbounds i8, ptr %10, i64 64
  store double %.sink889, ptr %495, align 8, !tbaa !5
  br label %.thread847

.thread847:                                       ; preds = %.thread847.sink.split, %.thread818, %.thread838, %397
  %496 = insertelement <2 x double> poison, double %322, i64 0
  %497 = insertelement <2 x double> %496, double %6, i64 1
  %498 = fmul <2 x double> %332, %497
  %499 = fadd double %6, -1.000000e+00
  %500 = extractelement <2 x double> %498, i64 0
  %501 = extractelement <2 x double> %498, i64 1
  %502 = fsub double %500, %501
  %503 = fadd double %499, %502
  %504 = fadd double %503, 1.000000e+00
  %505 = getelementptr inbounds i8, ptr %10, i64 72
  store double %504, ptr %505, align 8, !tbaa !5
  br i1 %43, label %.thread853, label %506

506:                                              ; preds = %.thread847
  br i1 %40, label %.thread859, label %.critedge809

.thread853:                                       ; preds = %.thread847
  %507 = fneg double %.0698
  %508 = fneg double %333
  %509 = getelementptr inbounds i8, ptr %10, i64 80
  %510 = insertelement <2 x double> poison, double %508, i64 0
  %511 = shufflevector <2 x double> %510, <2 x double> poison, <2 x i32> zeroinitializer
  %512 = fmul <2 x double> %310, %511
  %513 = insertelement <2 x double> poison, double %507, i64 0
  %514 = shufflevector <2 x double> %513, <2 x double> poison, <2 x i32> zeroinitializer
  %515 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %514, <2 x double> %309, <2 x double> %512)
  store <2 x double> %515, ptr %509, align 8, !tbaa !5
  %516 = extractelement <2 x double> %312, i64 0
  %517 = fneg double %516
  %518 = extractelement <2 x double> %31, i64 0
  %519 = tail call double @llvm.fmuladd.f64(double %518, double %.1727, double %517)
  %.sink = select i1 %40, double 0.000000e+00, double %519
  %520 = getelementptr inbounds i8, ptr %10, i64 96
  store double %.sink, ptr %520, align 8
  %521 = fneg double %.0697
  %522 = fmul double %.1711, %.0696
  %523 = tail call double @llvm.fmuladd.f64(double %521, double %33, double %522)
  %524 = fneg double %.0695
  %525 = tail call double @llvm.fmuladd.f64(double %.1716, double %.1711, double %524)
  %526 = extractelement <2 x double> %311, i64 0
  %527 = fneg double %526
  %528 = tail call double @llvm.fmuladd.f64(double %527, double %525, double %523)
  %529 = tail call double @llvm.fmuladd.f64(double %.0694, double %.1716, double %.0695)
  %530 = fneg double %.1713
  %531 = tail call double @llvm.fmuladd.f64(double %530, double %529, double %528)
  %532 = fadd double %531, 1.000000e+00
  %533 = getelementptr inbounds i8, ptr %10, i64 104
  store double %532, ptr %533, align 8, !tbaa !5
  br i1 %40, label %.thread860, label %547

.thread860:                                       ; preds = %.thread853
  %534 = getelementptr inbounds i8, ptr %10, i64 112
  %535 = tail call double @llvm.fmuladd.f64(double %.1708, double %.0696, double %.0693)
  %536 = extractelement <2 x double> %312, i64 1
  %537 = fneg double %536
  %538 = tail call double @llvm.fmuladd.f64(double %537, double %.0692, double %535)
  %539 = getelementptr inbounds i8, ptr %10, i64 128
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %534, i8 0, i64 16, i1 false)
  store double %538, ptr %539, align 8, !tbaa !5
  br label %545

.thread859:                                       ; preds = %506
  %540 = getelementptr inbounds i8, ptr %10, i64 80
  store double 0.000000e+00, ptr %540, align 8, !tbaa !5
  %541 = fadd double %500, %501
  %542 = getelementptr inbounds i8, ptr %10, i64 88
  store double %541, ptr %542, align 8, !tbaa !5
  %543 = getelementptr inbounds i8, ptr %10, i64 96
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %543, align 8, !tbaa !5
  %544 = getelementptr inbounds i8, ptr %10, i64 112
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %544, i8 0, i64 24, i1 false)
  br label %545

545:                                              ; preds = %.thread860, %.thread859
  %546 = tail call double @llvm.fmuladd.f64(double %.3, double -1.000000e+00, double 1.000000e+00)
  br label %.critedge809.sink.split

547:                                              ; preds = %.thread853
  %548 = fneg double %.1708
  %549 = extractelement <2 x double> %312, i64 1
  %550 = fmul double %549, %.0696
  %551 = tail call double @llvm.fmuladd.f64(double %548, double %.0692, double %550)
  %552 = fadd double %.0693, %551
  %553 = getelementptr inbounds i8, ptr %10, i64 112
  store double %552, ptr %553, align 8, !tbaa !5
  %554 = fneg double %.1725
  %555 = extractelement <2 x double> %31, i64 1
  %556 = tail call double @llvm.fmuladd.f64(double %555, double %.1727, double %554)
  %557 = getelementptr inbounds i8, ptr %10, i64 120
  store double %556, ptr %557, align 8, !tbaa !5
  %558 = tail call double @llvm.fmuladd.f64(double %.1708, double %.0696, double %.0693)
  %559 = fneg double %549
  %560 = tail call double @llvm.fmuladd.f64(double %559, double %.0692, double %558)
  %561 = getelementptr inbounds i8, ptr %10, i64 128
  store double %560, ptr %561, align 8, !tbaa !5
  %562 = fmul double %.1, %.0696
  %563 = tail call double @llvm.fmuladd.f64(double %521, double %34, double %562)
  %564 = tail call double @llvm.fmuladd.f64(double %.1, double %.1716, double %524)
  %565 = tail call double @llvm.fmuladd.f64(double %527, double %564, double %563)
  %566 = tail call double @llvm.fmuladd.f64(double %.0, double %.1716, double %.0695)
  %567 = tail call double @llvm.fmuladd.f64(double %530, double %566, double %565)
  %568 = fadd double %567, 1.000000e+00
  br label %.critedge809.sink.split

.critedge809.sink.split:                          ; preds = %545, %547
  %.sink891 = phi double [ %568, %547 ], [ %546, %545 ]
  %569 = getelementptr inbounds i8, ptr %10, i64 136
  store double %.sink891, ptr %569, align 8, !tbaa !5
  br label %.critedge809

.critedge809:                                     ; preds = %.critedge809.sink.split, %506
  ret void
}

; 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 speculatable willreturn memory(none)
declare double @llvm.maxnum.f64(double, double) #1

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

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

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

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

!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: AggressiveInstCombinePass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass