#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double fabs(double);
double sqrt(double);
void Quad_ak1(double a, double b1, double c, double *sr, double *si, double *lr,
              double *li) {
  double b, d, e;
  *sr = *si = *lr = *li = 0.0;
  if (a == 0) {
    *sr = ((b1 != 0) ? -(c / b1) : *sr);
    return;
  }
  if (c == 0) {
    *lr = -(b1 / a);
    return;
  }
  b = b1 / 2.0;
  if (fabs(b) < fabs(c)) {
    e = ((c >= 0) ? a : -a);
    e = -e + b * (b / fabs(c));
    d = sqrt(fabs(e)) * sqrt(fabs(c));
  } else {
    e = -((a / b) * (c / b)) + 1.0;
    d = sqrt(fabs(e)) * (fabs(b));
  }
  if (e >= 0) {
    d = ((b >= 0) ? -d : d);
    *lr = (-b + d) / a;
    *sr = ((*lr != 0) ? (c / (*lr)) / a : *sr);
  } else {
    *lr = *sr = -(b / a);
    *si = fabs(d / a);
    *li = -(*si);
  }
  return;
}


x86 assembly (clang, -O0):
<Quad_ak1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
mov    %rdi,-0x20(%rbp)
mov    %rsi,-0x28(%rbp)
mov    %rdx,-0x30(%rbp)
mov    %rcx,-0x38(%rbp)
mov    -0x38(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11e5 <Quad_ak1+0xd5>
jp     11e5 <Quad_ak1+0xd5>
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    119b <Quad_ak1+0x8b>
jp     119b <Quad_ak1+0x8b>
jmp    11c6 <Quad_ak1+0xb6>
movsd  -0x18(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    11d3 <Quad_ak1+0xc3>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1512 <Quad_ak1+0x402>
movsd  -0x18(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    122b <Quad_ak1+0x11b>
jp     122b <Quad_ak1+0x11b>
movsd  -0x10(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1512 <Quad_ak1+0x402>
movsd  -0x10(%rbp),%xmm0
movsd  0xdd8(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movaps 0xdb3(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0x18(%rbp),%xmm0
movaps 0xda3(%rip),%xmm2
pand   %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    1343 <Quad_ak1+0x233>
movsd  -0x18(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     128c <Quad_ak1+0x17c>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    12ad <Quad_ak1+0x19d>
movsd  -0x8(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movaps 0xd17(%rip),%xmm4
pand   %xmm4,%xmm3
divsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movaps 0xcf6(%rip),%xmm1
pand   %xmm1,%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  -0x18(%rbp),%xmm0
movaps 0xcdc(%rip),%xmm1
pand   %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    13b1 <Quad_ak1+0x2a1>
movsd  -0x8(%rbp),%xmm0
divsd  -0x40(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
divsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xc9e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movaps 0xc71(%rip),%xmm1
pand   %xmm1,%xmm0
call   1030 <sqrt@plt>
movsd  -0x40(%rbp),%xmm1
movaps 0xc5c(%rip),%xmm2
pand   %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x50(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1498 <Quad_ak1+0x388>
movsd  -0x40(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     13fb <Quad_ak1+0x2eb>
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x70(%rbp)
jmp    1405 <Quad_ak1+0x2f5>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0x48(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    145d <Quad_ak1+0x34d>
jp     145d <Quad_ak1+0x34d>
jmp    1479 <Quad_ak1+0x369>
movsd  -0x18(%rbp),%xmm0
mov    -0x30(%rbp),%rax
divsd  (%rax),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1486 <Quad_ak1+0x376>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    150d <Quad_ak1+0x3fd>
movsd  -0x40(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x48(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
movaps 0xb26(%rip),%xmm1
pand   %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1512 <Quad_ak1+0x402>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Quad_ak1>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %rdi,%rbx
movapd %xmm0,%xmm4
movq   $0x0,(%rcx)
movq   $0x0,(%rdx)
movq   $0x0,(%rsi)
movq   $0x0,(%rdi)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
jne    116b <Quad_ak1+0x5b>
jp     116b <Quad_ak1+0x5b>
ucomisd %xmm0,%xmm1
jne    1152 <Quad_ak1+0x42>
jnp    1162 <Quad_ak1+0x52>
xorpd  0xec6(%rip),%xmm2
divsd  %xmm1,%xmm2
movapd %xmm2,%xmm0
movsd  %xmm0,(%rbx)
jmp    135d <Quad_ak1+0x24d>
mov    %rdx,%r14
ucomisd %xmm0,%xmm2
jne    118c <Quad_ak1+0x7c>
jp     118c <Quad_ak1+0x7c>
xorpd  0xea2(%rip),%xmm1
divsd  %xmm4,%xmm1
movsd  %xmm1,(%r14)
jmp    135d <Quad_ak1+0x24d>
mov    %rcx,%r15
mov    %rsi,%r12
mulsd  0xe66(%rip),%xmm1
movapd 0xe6e(%rip),%xmm7
movapd %xmm1,%xmm6
andpd  %xmm7,%xmm6
andpd  %xmm2,%xmm7
movapd 0xe6a(%rip),%xmm0
xorpd  %xmm4,%xmm0
ucomisd %xmm6,%xmm7
jbe    1204 <Quad_ak1+0xf4>
xorpd  %xmm6,%xmm6
xorpd  %xmm3,%xmm3
cmplesd %xmm2,%xmm3
andpd  %xmm3,%xmm0
andnpd %xmm4,%xmm3
orpd   %xmm0,%xmm3
movapd %xmm1,%xmm5
divsd  %xmm7,%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm3,%xmm5
movapd 0xe1f(%rip),%xmm0
andpd  %xmm5,%xmm0
ucomisd %xmm6,%xmm0
jb     1236 <Quad_ak1+0x126>
xorps  %xmm6,%xmm6
sqrtsd %xmm0,%xmm6
jmp    1279 <Quad_ak1+0x169>
unpcklpd %xmm2,%xmm0
movapd %xmm1,%xmm3
unpcklpd %xmm1,%xmm3
divpd  %xmm3,%xmm0
movapd %xmm0,%xmm5
unpckhpd %xmm0,%xmm5
mulsd  %xmm0,%xmm5
addsd  0xde0(%rip),%xmm5
movapd 0xde0(%rip),%xmm7
andpd  %xmm5,%xmm7
jmp    1279 <Quad_ak1+0x169>
movapd %xmm2,0x40(%rsp)
movapd %xmm4,0x30(%rsp)
movapd %xmm1,0x20(%rsp)
movapd %xmm7,(%rsp)
movapd %xmm5,0x10(%rsp)
call   1030 <sqrt@plt>
movapd 0x10(%rsp),%xmm5
movapd (%rsp),%xmm7
movapd 0x20(%rsp),%xmm1
movapd 0x30(%rsp),%xmm4
movapd 0x40(%rsp),%xmm2
movapd %xmm0,%xmm6
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm7
jb     128c <Quad_ak1+0x17c>
xorps  %xmm0,%xmm0
sqrtsd %xmm7,%xmm0
jmp    12d3 <Quad_ak1+0x1c3>
movapd %xmm7,%xmm0
movapd %xmm2,0x40(%rsp)
movapd %xmm4,0x30(%rsp)
movapd %xmm1,0x20(%rsp)
movapd %xmm6,(%rsp)
movapd %xmm5,0x10(%rsp)
call   1030 <sqrt@plt>
xorpd  %xmm3,%xmm3
movapd 0x10(%rsp),%xmm5
movapd (%rsp),%xmm6
movapd 0x20(%rsp),%xmm1
movapd 0x30(%rsp),%xmm4
movapd 0x40(%rsp),%xmm2
mulsd  %xmm0,%xmm6
ucomisd %xmm3,%xmm5
jae    1317 <Quad_ak1+0x207>
movapd 0xd3b(%rip),%xmm0
xorpd  %xmm0,%xmm1
divsd  %xmm4,%xmm1
movsd  %xmm1,(%rbx)
movsd  %xmm1,(%r14)
divsd  %xmm4,%xmm6
movapd 0xd0e(%rip),%xmm1
andpd  %xmm6,%xmm1
movlpd %xmm1,(%r12)
orpd   %xmm0,%xmm6
movlpd %xmm6,(%r15)
jmp    135d <Quad_ak1+0x24d>
movapd 0xd01(%rip),%xmm5
xorpd  %xmm6,%xmm5
xorpd  %xmm3,%xmm3
xorpd  %xmm0,%xmm0
cmplesd %xmm1,%xmm0
andpd  %xmm0,%xmm5
andnpd %xmm6,%xmm0
orpd   %xmm5,%xmm0
subsd  %xmm1,%xmm0
divsd  %xmm4,%xmm0
movsd  %xmm0,(%r14)
ucomisd %xmm3,%xmm0
jne    1351 <Quad_ak1+0x241>
jnp    1369 <Quad_ak1+0x259>
divsd  %xmm0,%xmm2
divsd  %xmm4,%xmm2
movsd  %xmm2,(%rbx)
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret
movsd  (%rbx),%xmm0
jmp    1162 <Quad_ak1+0x52>

LLVM IR (-O0):
define void @Quad_ak1(double %0, double %1, double %2, double* %3, double* %4, double* %5, double* %6) {
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca double*
%15 = alloca double
%16 = alloca double
%17 = alloca double
store double %0, double* %8
store double %1, double* %9
store double %2, double* %10
store double* %3, double** %11
store double* %4, double** %12
store double* %5, double** %13
store double* %6, double** %14
%18 = load double*, double** %14
store double 0.000000e+00, double* %18
%19 = load double*, double** %13
store double 0.000000e+00, double* %19
%20 = load double*, double** %12
store double 0.000000e+00, double* %20
%21 = load double*, double** %11
store double 0.000000e+00, double* %21
%22 = load double, double* %8
%23 = fcmp oeq double %22, 0.000000e+00
br i1 %23, label %24, label %38
24: ; preds = %7
%25 = load double, double* %9
%26 = fcmp une double %25, 0.000000e+00
br i1 %26, label %27, label %32
27: ; preds = %24
%28 = load double, double* %10
%29 = load double, double* %9
%30 = fdiv double %28, %29
%31 = fneg double %30
br label %35
32: ; preds = %24
%33 = load double*, double** %11
%34 = load double, double* %33
br label %35
35: ; preds = %32, %27
%36 = phi double [ %31, %27 ], [ %34, %32 ]
%37 = load double*, double** %11
store double %36, double* %37
br label %149
38: ; preds = %7
%39 = load double, double* %10
%40 = fcmp oeq double %39, 0.000000e+00
br i1 %40, label %41, label %47
41: ; preds = %38
%42 = load double, double* %9
%43 = load double, double* %8
%44 = fdiv double %42, %43
%45 = fneg double %44
%46 = load double*, double** %13
store double %45, double* %46
br label %149
47: ; preds = %38
%48 = load double, double* %9
%49 = fdiv double %48, 2.000000e+00
store double %49, double* %15
%50 = load double, double* %15
%51 = call double @llvm.fabs.f64(double %50)
%52 = load double, double* %10
%53 = call double @llvm.fabs.f64(double %52)
%54 = fcmp olt double %51, %53
br i1 %54, label %55, label %80
55: ; preds = %47
%56 = load double, double* %10
%57 = fcmp oge double %56, 0.000000e+00
br i1 %57, label %58, label %60
58: ; preds = %55
%59 = load double, double* %8
br label %63
60: ; preds = %55
%61 = load double, double* %8
%62 = fneg double %61
br label %63
63: ; preds = %60, %58
%64 = phi double [ %59, %58 ], [ %62, %60 ]
store double %64, double* %17
%65 = load double, double* %17
%66 = fneg double %65
%67 = load double, double* %15
%68 = load double, double* %15
%69 = load double, double* %10
%70 = call double @llvm.fabs.f64(double %69)
%71 = fdiv double %68, %70
%72 = call double @llvm.fmuladd.f64(double %67, double %71, double %66)
store double %72, double* %17
%73 = load double, double* %17
%74 = call double @llvm.fabs.f64(double %73)
%75 = call double @sqrt(double %74)
%76 = load double, double* %10
%77 = call double @llvm.fabs.f64(double %76)
%78 = call double @sqrt(double %77)
%79 = fmul double %75, %78
store double %79, double* %16
br label %96
80: ; preds = %47
%81 = load double, double* %8
%82 = load double, double* %15
%83 = fdiv double %81, %82
%84 = load double, double* %10
%85 = load double, double* %15
%86 = fdiv double %84, %85
%87 = fmul double %83, %86
%88 = fneg double %87
%89 = fadd double %88, 1.000000e+00
store double %89, double* %17
%90 = load double, double* %17
%91 = call double @llvm.fabs.f64(double %90)
%92 = call double @sqrt(double %91)
%93 = load double, double* %15
%94 = call double @llvm.fabs.f64(double %93)
%95 = fmul double %92, %94
store double %95, double* %16
br label %96
96: ; preds = %80, %63
%97 = load double, double* %17
%98 = fcmp oge double %97, 0.000000e+00
br i1 %98, label %99, label %132
99: ; preds = %96
%100 = load double, double* %15
%101 = fcmp oge double %100, 0.000000e+00
br i1 %101, label %102, label %105
102: ; preds = %99
%103 = load double, double* %16
%104 = fneg double %103
br label %107
105: ; preds = %99
%106 = load double, double* %16
br label %107
107: ; preds = %105, %102
%108 = phi double [ %104, %102 ], [ %106, %105 ]
store double %108, double* %16
%109 = load double, double* %15
%110 = fneg double %109
%111 = load double, double* %16
%112 = fadd double %110, %111
%113 = load double, double* %8
%114 = fdiv double %112, %113
%115 = load double*, double** %13
store double %114, double* %115
%116 = load double*, double** %13
%117 = load double, double* %116
%118 = fcmp une double %117, 0.000000e+00
br i1 %118, label %119, label %126
119: ; preds = %107
%120 = load double, double* %10
%121 = load double*, double** %13
%122 = load double, double* %121
%123 = fdiv double %120, %122
%124 = load double, double* %8
%125 = fdiv double %123, %124
br label %129
126: ; preds = %107
%127 = load double*, double** %11
%128 = load double, double* %127
br label %129
129: ; preds = %126, %119
%130 = phi double [ %125, %119 ], [ %128, %126 ]
%131 = load double*, double** %11
store double %130, double* %131
br label %148
132: ; preds = %96
%133 = load double, double* %15
%134 = load double, double* %8
%135 = fdiv double %133, %134
%136 = fneg double %135
%137 = load double*, double** %11
store double %136, double* %137
%138 = load double*, double** %13
store double %136, double* %138
%139 = load double, double* %16
%140 = load double, double* %8
%141 = fdiv double %139, %140
%142 = call double @llvm.fabs.f64(double %141)
%143 = load double*, double** %12
store double %142, double* %143
%144 = load double*, double** %12
%145 = load double, double* %144
%146 = fneg double %145
%147 = load double*, double** %14
store double %146, double* %147
br label %148
148: ; preds = %132, %129
br label %149
149: ; preds = %148, %41, %35
ret void
}

LLVM IR (-O2):
define void @Quad_ak1(double %0, double %1, double %2, double* nocapture %3, double* nocapture writeonly %4, double* nocapture writeonly %5, double* nocapture writeonly %6) {
store double 0.000000e+00, double* %6
store double 0.000000e+00, double* %5
store double 0.000000e+00, double* %4
store double 0.000000e+00, double* %3
%8 = fcmp oeq double %0, 0.000000e+00
br i1 %8, label %9, label %16
9: ; preds = %7
%10 = fcmp une double %1, 0.000000e+00
br i1 %10, label %11, label %14
11: ; preds = %9
%12 = fneg double %2
%13 = fdiv double %12, %1
br label %14
14: ; preds = %9, %11
%15 = phi double [ %13, %11 ], [ 0.000000e+00, %9 ]
store double %15, double* %3
br label %73
16: ; preds = %7
%17 = fcmp oeq double %2, 0.000000e+00
br i1 %17, label %18, label %21
18: ; preds = %16
%19 = fneg double %1
%20 = fdiv double %19, %0
store double %20, double* %5
br label %73
21: ; preds = %16
%22 = fmul double %1, 5.000000e-01
%23 = tail call double @llvm.fabs.f64(double %22)
%24 = tail call double @llvm.fabs.f64(double %2)
%25 = fcmp olt double %23, %24
br i1 %25, label %26, label %34
26: ; preds = %21
%27 = fcmp oge double %2, 0.000000e+00
%28 = fneg double %0
%29 = select i1 %27, double %28, double %0
%30 = fdiv double %22, %24
%31 = tail call double @llvm.fmuladd.f64(double %22, double %30, double %29)
%32 = tail call double @llvm.fabs.f64(double %31)
%33 = tail call double @sqrt(double %32)
br label %46
34: ; preds = %21
%35 = fneg double %0
%36 = insertelement <2 x double> poison, double %2, i64 1
%37 = insertelement <2 x double> %36, double %35, i64 0
%38 = insertelement <2 x double> poison, double %22, i64 0
%39 = shufflevector <2 x double> %38, <2 x double> poison, <2 x i32> zeroinitializer
%40 = fdiv <2 x double> %37, %39
%41 = shufflevector <2 x double> %40, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%42 = fmul <2 x double> %40, %41
%43 = extractelement <2 x double> %42, i64 0
%44 = fadd double %43, 1.000000e+00
%45 = tail call double @llvm.fabs.f64(double %44)
br label %46
46: ; preds = %34, %26
%47 = phi double [ %45, %34 ], [ %24, %26 ]
%48 = phi double [ %23, %34 ], [ %33, %26 ]
%49 = phi double [ %44, %34 ], [ %31, %26 ]
%50 = tail call double @sqrt(double %47)
%51 = fmul double %48, %50
%52 = fcmp ult double %49, 0.000000e+00
br i1 %52, label %67, label %53
53: ; preds = %46
%54 = fcmp oge double %22, 0.000000e+00
%55 = fneg double %51
%56 = select i1 %54, double %55, double %51
%57 = fsub double %56, %22
%58 = fdiv double %57, %0
store double %58, double* %5
%59 = fcmp une double %58, 0.000000e+00
br i1 %59, label %60, label %63
60: ; preds = %53
%61 = fdiv double %2, %58
%62 = fdiv double %61, %0
br label %65
63: ; preds = %53
%64 = load double, double* %3
br label %65
65: ; preds = %63, %60
%66 = phi double [ %62, %60 ], [ %64, %63 ]
store double %66, double* %3
br label %73
67: ; preds = %46
%68 = fneg double %22
%69 = fdiv double %68, %0
store double %69, double* %3
store double %69, double* %5
%70 = fdiv double %51, %0
%71 = tail call double @llvm.fabs.f64(double %70)
store double %71, double* %4
%72 = fneg double %71
store double %72, double* %6
br label %73
73: ; preds = %65, %67, %18, %14
ret void
}