#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 */
typedef double int32_t;

/* Variables and functions */
double DBL_EPSILON;
scalar_t__ FLT_MAX;
int /*<<< orphan*/ cdivid(double, double, double, double, double *, double *);
int /*<<< orphan*/ complexMultiplication(double, double, double, double,
                                         double *, double *);
int /*<<< orphan*/ cplxexp(double, double, double *, double *);
int /*<<< orphan*/ cplxlog(double, double, double *, double *);
scalar_t__ eps(double, double);
double fabs(double);
double hypot(double, double);
double sineIntReal(double x) {
  double sg = (x < 0.0) ? -1.0 : (x > 0.0);
  x = x * sg;
  double tmpRe, tmpIm;
  double yRe;
  double yIm;
  if (x < DBL_EPSILON)
    return 0.0;
  if (fabs(x) <= 8.2676619523664776) {
    double egamma = 0.57721566490153286061;
    double xkRe = 0.0;
    double xkIm = x;
    cplxlog(0.0, x, &tmpRe, &tmpIm);
    double ykRe = -egamma - tmpRe;
    double ykIm = -tmpIm;
    double j = 1.0;
    double ptermRe = 0.0;
    double ptermIm = x;
    double termRe = 0.0;
    double termIm = x;
    while (hypot(termRe, termIm) > eps(ykRe, ykIm)) {
      ykRe = ykRe + termRe;
      ykIm = ykIm + termIm;
      j = j + 1.0;
      complexMultiplication(-xkRe, -xkIm, ptermRe / j, ptermIm / j, &ptermRe,
                            &ptermIm);
      termRe = ptermRe / j;
      termIm = ptermIm / j;
    }
    yRe = ykRe;
    yIm = ykIm;
  } else {
    double xkRe = 0.0;
    double xkIm = x;
    double am2Re = 0.0;
    double am2Im = 0.0;
    double bm2Re = 1.0;
    double bm2Im = 0.0;
    double am1Re = 1.0;
    double am1Im = 0.0;
    double bm1Re = xkRe;
    double bm1Im = xkIm;
    double fRe, fIm;
    cdivid(am1Re, am1Im, bm1Re, bm1Im, &fRe, &fIm);
    double oldfRe = (double)FLT_MAX;
    double oldfIm = 0.0;
    int32_t j = 2;
    while (hypot(fRe - oldfRe, fIm - oldfIm) >
           (100.0 * DBL_EPSILON * hypot(fRe, fIm))) {
      double alpha = j * 0.5;
      double aRe = am1Re + alpha * am2Re;
      double aIm = am1Im + alpha * am2Im;
      double bRe = bm1Re + alpha * bm2Re;
      double bIm = bm1Im + alpha * bm2Im;
      cdivid(am1Re, am1Im, bRe, bIm, &am2Re, &am2Im);
      cdivid(bm1Re, bm1Im, bRe, bIm, &bm2Re, &bm2Im);
      cdivid(aRe, aIm, bRe, bIm, &am1Re, &am1Im);
      bm1Re = 1.0;
      bm1Im = 0.0;
      fRe = am1Re;
      fIm = am1Im;
      j = j + 1;
      alpha = (j - 1) * 0.5;
      double betaRe = xkRe;
      double betaIm = xkIm;
      complexMultiplication(betaRe, betaIm, am1Re, am1Im, &aRe, &aIm);
      aRe += alpha * am2Re;
      aIm += alpha * am2Im;
      complexMultiplication(betaRe, betaIm, bm1Re, bm1Im, &bRe, &bIm);
      bRe += alpha * bm2Re;
      bIm += alpha * bm2Im;
      cdivid(am1Re, am1Im, bRe, bIm, &am2Re, &am2Im);
      cdivid(bm1Re, bm1Im, bRe, bIm, &bm2Re, &bm2Im);
      cdivid(aRe, aIm, bRe, bIm, &am1Re, &am1Im);
      bm1Re = 1.0;
      bm1Im = 0.0;
      oldfRe = fRe;
      oldfIm = fIm;
      fRe = am1Re;
      fIm = am1Im;
      j = j + 1;
    }
    cplxexp(-xkRe, -xkIm, &tmpRe, &tmpIm);
    complexMultiplication(tmpRe, tmpIm, fRe, fIm, &tmpRe, &tmpIm);
    yRe = tmpRe;
    yIm = tmpIm - 3.14159265358979323846 * ((xkRe < 0.0) && (xkIm == 0));
  }
  return (yIm + 3.14159265358979323846 * 0.5) * sg;
}


x86 assembly (clang, -O0):
<sineIntReal>:
push   %rbp
mov    %rsp,%rbp
sub    $0x170,%rsp
movsd  %xmm0,-0x10(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1193 <sineIntReal+0x33>
movsd  0xe7a(%rip),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
jmp    11b3 <sineIntReal+0x53>
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x18(%rbp)
movsd  -0x10(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm1
mov    0x2e0d(%rip),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    11f6 <sineIntReal+0x96>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1a3b <sineIntReal+0x8db>
movsd  -0x10(%rbp),%xmm1
movaps 0xe4e(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xdfa(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     13d2 <sineIntReal+0x272>
movsd  0xe18(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm1
xorps  %xmm0,%xmm0
lea    -0x20(%rbp),%rdi
lea    -0x28(%rbp),%rsi
call   1050 <cplxlog@plt>
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xd7d(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm1
ff
call   1060 <hypot@plt>
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
call   1030 <eps@plt>
movsd  -0x148(%rbp),%xmm0
ff
cvtsi2sd %rax,%xmm1
ucomisd %xmm1,%xmm0
jbe    13b9 <sineIntReal+0x259>
movsd  -0x58(%rbp),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  0xce8(%rip),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x50(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  -0x70(%rbp),%xmm2
divsd  -0x68(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm3
divsd  -0x68(%rbp),%xmm3
lea    -0x70(%rbp),%rdi
lea    -0x78(%rbp),%rsi
call   1040 <complexMultiplication@plt>
movsd  -0x70(%rbp),%xmm0
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x78(%rbp),%xmm0
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    12c7 <sineIntReal+0x167>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    1a24 <sineIntReal+0x8c4>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xc10(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xbf5(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm3
ff
lea    -0xe0(%rbp),%rdi
lea    -0xe8(%rbp),%rsi
call   1080 <cdivid@plt>
mov    0x2b50(%rip),%rax
cvtsi2sdq (%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0xb60(%rip),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
subsd  -0xf8(%rbp),%xmm1
ff
call   1060 <hypot@plt>
movsd  %xmm0,-0x150(%rbp)
ff
movsd  0xb33(%rip),%xmm0
mov    0x2af4(%rip),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
call   1060 <hypot@plt>
movsd  -0x158(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x150(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1939 <sineIntReal+0x7d9>
movsd  0xaf2(%rip),%xmm0
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm3
ff
lea    -0xa0(%rbp),%rdi
lea    -0xa8(%rbp),%rsi
call   1080 <cdivid@plt>
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm3
ff
lea    -0xb0(%rbp),%rdi
lea    -0xb8(%rbp),%rsi
call   1080 <cdivid@plt>
movsd  -0x110(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm3
ff
lea    -0xc0(%rbp),%rdi
lea    -0xc8(%rbp),%rsi
call   1080 <cdivid@plt>
movsd  0x989(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0x94e(%rip),%xmm0
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  0x92e(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x93a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm3
ff
lea    -0x110(%rbp),%rdi
lea    -0x118(%rbp),%rsi
call   1040 <complexMultiplication@plt>
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm3
ff
lea    -0x120(%rbp),%rdi
lea    -0x128(%rbp),%rsi
call   1040 <complexMultiplication@plt>
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm3
ff
lea    -0xa0(%rbp),%rdi
lea    -0xa8(%rbp),%rsi
call   1080 <cdivid@plt>
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm3
ff
lea    -0xb0(%rbp),%rdi
lea    -0xb8(%rbp),%rsi
call   1080 <cdivid@plt>
movsd  -0x110(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm3
ff
lea    -0xc0(%rbp),%rdi
lea    -0xc8(%rbp),%rsi
call   1080 <cdivid@plt>
movsd  0x74f(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0x6f4(%rip),%xmm0
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
jmp    14b8 <sineIntReal+0x358>
movsd  -0x90(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
lea    -0x20(%rbp),%rdi
lea    -0x28(%rbp),%rsi
call   1070 <cplxexp@plt>
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm3
ff
lea    -0x20(%rbp),%rdi
lea    -0x28(%rbp),%rsi
call   1040 <complexMultiplication@plt>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
xor    %eax,%eax
xorps  %xmm0,%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
mov    %al,-0x159(%rbp)
jbe    19f8 <sineIntReal+0x898>
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
mov    %al,-0x159(%rbp)
movsd  -0x168(%rbp),%xmm1
ff
mov    -0x159(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cvtsi2sd %eax,%xmm0
movsd  0x611(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x614(%rip),%xmm0
addsd  -0x38(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x170,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sineIntReal>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xc8,%rsp
movapd %xmm0,%xmm4
xorpd  %xmm0,%xmm0
xorpd  %xmm1,%xmm1
cmpltsd %xmm4,%xmm1
movsd  0xe76(%rip),%xmm2
andpd  %xmm1,%xmm2
movapd %xmm4,%xmm1
cmpltsd %xmm0,%xmm1
movsd  0xe69(%rip),%xmm3
andpd  %xmm1,%xmm3
andnpd %xmm2,%xmm1
orpd   %xmm1,%xmm3
mulsd  %xmm3,%xmm4
mov    0x2e32(%rip),%rbx
movsd  (%rbx),%xmm1
ucomisd %xmm4,%xmm1
ja     17c5 <sineIntReal+0x665>
movapd %xmm3,0xb0(%rsp)
movapd 0xe7b(%rip),%xmm0
andpd  %xmm4,%xmm0
movsd  0xe2f(%rip),%xmm1
ucomisd %xmm0,%xmm1
movapd %xmm4,0x80(%rsp)
jae    1618 <sineIntReal+0x4b8>
movq   $0x0,0x58(%rsp)
movq   $0x0,0x50(%rsp)
movabs $0x3ff0000000000000,%rax
mov    %rax,0x98(%rsp)
movq   $0x0,0x90(%rsp)
mov    %rax,0x78(%rsp)
movq   $0x0,0x70(%rsp)
movsd  0xdc6(%rip),%xmm0
lea    0x48(%rsp),%rdi
lea    0x40(%rsp),%rsi
xorpd  %xmm1,%xmm1
xorpd  %xmm2,%xmm2
movapd %xmm4,%xmm3
call   1080 <cdivid@plt>
mov    0x2d84(%rip),%rax
xorps  %xmm1,%xmm1
cvtsi2sdq (%rax),%xmm1
movsd  0x48(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  0x40(%rsp),%xmm1
call   1060 <hypot@plt>
movsd  %xmm0,0x20(%rsp)
movsd  (%rbx),%xmm0
mulsd  0xd9d(%rip),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x48(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
call   1060 <hypot@plt>
xorpd  %xmm4,%xmm4
mulsd  0x60(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jbe    15b5 <sineIntReal+0x455>
movsd  0xd6c(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
lea    0x58(%rsp),%r14
lea    0x50(%rsp),%r15
lea    0x98(%rsp),%r12
lea    0x90(%rsp),%r13
lea    0x78(%rsp),%rbx
lea    0x70(%rsp),%rbp
movapd 0x80(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
nopl   (%rax)
movsd  %xmm4,0x8(%rsp)
movsd  0x20(%rsp),%xmm3
movsd  0xd24(%rip),%xmm0
mulsd  %xmm0,%xmm3
movsd  0x78(%rsp),%xmm0
movsd  0x58(%rsp),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x70(%rsp),%xmm1
movsd  0x50(%rsp),%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x10(%rsp)
movsd  0x98(%rsp),%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm4,%xmm2
movsd  %xmm2,0x38(%rsp)
mulsd  0x90(%rsp),%xmm3
addsd  0x60(%rsp),%xmm3
movsd  %xmm3,0x30(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <cdivid@plt>
movsd  0x38(%rsp),%xmm2
movsd  0x30(%rsp),%xmm3
movsd  0x8(%rsp),%xmm0
movsd  0x60(%rsp),%xmm1
mov    %r12,%rdi
mov    %r13,%rsi
call   1080 <cdivid@plt>
movsd  0x18(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
movsd  0x38(%rsp),%xmm2
movsd  0x30(%rsp),%xmm3
mov    %rbx,%rdi
mov    %rbp,%rsi
call   1080 <cdivid@plt>
movsd  0x78(%rsp),%xmm2
movsd  %xmm2,0x48(%rsp)
movsd  0x70(%rsp),%xmm3
movsd  %xmm3,0x40(%rsp)
movsd  0xc17(%rip),%xmm1
movsd  0x20(%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
addsd  0xc07(%rip),%xmm0
mulsd  0xc2f(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x60(%rsp)
xorpd  %xmm0,%xmm0
movaps 0x80(%rsp),%xmm1
lea    0x18(%rsp),%rdi
lea    0x10(%rsp),%rsi
call   1040 <complexMultiplication@plt>
movsd  0x58(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
addsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x50(%rsp),%xmm0
mulsd  %xmm1,%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
xorpd  %xmm0,%xmm0
xorps  %xmm3,%xmm3
movaps 0x80(%rsp),%xmm1
movsd  0xb83(%rip),%xmm2
lea    0x38(%rsp),%rdi
lea    0x30(%rsp),%rsi
call   1040 <complexMultiplication@plt>
movsd  0x98(%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
mulsd  %xmm3,%xmm2
addsd  0x38(%rsp),%xmm2
mulsd  0x90(%rsp),%xmm3
addsd  0x30(%rsp),%xmm3
movsd  %xmm2,0x38(%rsp)
movsd  %xmm3,0x30(%rsp)
movsd  0x78(%rsp),%xmm0
movsd  0x70(%rsp),%xmm1
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <cdivid@plt>
movsd  0x38(%rsp),%xmm2
movsd  0x30(%rsp),%xmm3
xorps  %xmm1,%xmm1
movsd  0xb12(%rip),%xmm0
mov    %r12,%rdi
mov    %r13,%rsi
call   1080 <cdivid@plt>
movsd  0x18(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
movsd  0x38(%rsp),%xmm2
movsd  0x30(%rsp),%xmm3
mov    %rbx,%rdi
mov    %rbp,%rsi
call   1080 <cdivid@plt>
movsd  0x78(%rsp),%xmm1
movapd %xmm1,%xmm0
subsd  0x48(%rsp),%xmm0
movsd  %xmm1,0x48(%rsp)
movsd  0x70(%rsp),%xmm2
movapd %xmm2,%xmm1
subsd  0x40(%rsp),%xmm1
movsd  %xmm2,0x40(%rsp)
movsd  0x20(%rsp),%xmm2
addsd  0xaaa(%rip),%xmm2
movsd  %xmm2,0x20(%rsp)
call   1060 <hypot@plt>
movsd  %xmm0,0x8(%rsp)
mov    0x2a7a(%rip),%rax
movsd  (%rax),%xmm0
mulsd  0xaae(%rip),%xmm0
movsd  %xmm0,0xa0(%rsp)
movsd  0x48(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
call   1060 <hypot@plt>
mulsd  0xa0(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
ucomisd %xmm0,%xmm1
movsd  0xa51(%rip),%xmm4
ja     1300 <sineIntReal+0x1a0>
movaps 0x80(%rsp),%xmm1
xorps  0xa9c(%rip),%xmm1
movsd  0xa54(%rip),%xmm0
lea    0x18(%rsp),%rbx
lea    0x10(%rsp),%rbp
mov    %rbx,%rdi
mov    %rbp,%rsi
call   1070 <cplxexp@plt>
movsd  0x18(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
movsd  0x48(%rsp),%xmm2
movsd  0x40(%rsp),%xmm3
mov    %rbx,%rdi
mov    %rbp,%rsi
call   1040 <complexMultiplication@plt>
movsd  0x10(%rsp),%xmm1
movapd 0xb0(%rsp),%xmm0
jmp    17b9 <sineIntReal+0x659>
lea    0x18(%rsp),%rdi
lea    0x10(%rsp),%rsi
xorpd  %xmm0,%xmm0
movapd %xmm4,%xmm1
call   1050 <cplxlog@plt>
movsd  0x9e1(%rip),%xmm0
subsd  0x18(%rsp),%xmm0
movapd %xmm0,0x60(%rsp)
movsd  0x10(%rsp),%xmm0
xorps  0xa10(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movq   $0x0,0x58(%rsp)
movaps 0x80(%rsp),%xmm1
movsd  %xmm1,0x50(%rsp)
xorps  %xmm0,%xmm0
call   1060 <hypot@plt>
movsd  %xmm0,0x8(%rsp)
movaps 0x60(%rsp),%xmm0
movaps 0x20(%rsp),%xmm1
call   1030 <eps@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
movsd  0x8(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jbe    17ac <sineIntReal+0x64c>
movdqa 0x9b7(%rip),%xmm0
movdqa 0x80(%rsp),%xmm3
pxor   %xmm3,%xmm0
movdqa %xmm0,0xa0(%rsp)
movq   %xmm3,%xmm1
movaps 0x20(%rsp),%xmm0
unpcklpd 0x60(%rsp),%xmm0
movaps %xmm0,0x20(%rsp)
movsd  0x925(%rip),%xmm0
lea    0x58(%rsp),%rbx
lea    0x50(%rsp),%rbp
movapd %xmm0,0x60(%rsp)
xorpd  %xmm2,%xmm2
nop
movapd 0x20(%rsp),%xmm0
addpd  %xmm1,%xmm0
movapd %xmm0,0x20(%rsp)
movapd 0x60(%rsp),%xmm0
addsd  0x8f2(%rip),%xmm0
movapd %xmm0,0x60(%rsp)
divsd  %xmm0,%xmm2
divsd  %xmm0,%xmm3
movsd  0x8fc(%rip),%xmm0
movaps 0xa0(%rsp),%xmm1
mov    %rbx,%rdi
mov    %rbp,%rsi
call   1040 <complexMultiplication@plt>
movsd  0x50(%rsp),%xmm1
movhpd 0x58(%rsp),%xmm1
movapd 0x60(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
divpd  %xmm0,%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
movapd %xmm1,0x80(%rsp)
call   1060 <hypot@plt>
movsd  %xmm0,0x8(%rsp)
movaps 0x20(%rsp),%xmm1
movaps %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
call   1030 <eps@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
movsd  0x8(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jbe    17ac <sineIntReal+0x64c>
movsd  0x58(%rsp),%xmm2
movsd  0x50(%rsp),%xmm3
movapd 0x80(%rsp),%xmm1
jmp    16f0 <sineIntReal+0x590>
movaps 0xb0(%rsp),%xmm0
movaps 0x20(%rsp),%xmm1
addsd  0x87f(%rip),%xmm1
mulsd  %xmm1,%xmm0
add    $0xc8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@DBL_EPSILON = global double 0.000000e+00
@FLT_MAX = global i64 0
define double @sineIntReal(double %0) {
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%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
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
store double %0, double* %3
%41 = load double, double* %3
%42 = fcmp olt double %41, 0.000000e+00
br i1 %42, label %43, label %44
43: ; preds = %1
br label %49
44: ; preds = %1
%45 = load double, double* %3
%46 = fcmp ogt double %45, 0.000000e+00
%47 = zext i1 %46 to i32
%48 = sitofp i32 %47 to double
br label %49
49: ; preds = %44, %43
%50 = phi double [ -1.000000e+00, %43 ], [ %48, %44 ]
store double %50, double* %4
%51 = load double, double* %3
%52 = load double, double* %4
%53 = fmul double %51, %52
store double %53, double* %3
%54 = load double, double* %3
%55 = load double, double* @DBL_EPSILON
%56 = fcmp olt double %54, %55
br i1 %56, label %57, label %58
57: ; preds = %49
store double 0.000000e+00, double* %2
br label %256
58: ; preds = %49
%59 = load double, double* %3
%60 = call double @llvm.fabs.f64(double %59)
%61 = fcmp ole double %60, 0x4020890AFCC79856
br i1 %61, label %62, label %112
62: ; preds = %58
store double 0x3FE2788CFC6FB619, double* %9
store double 0.000000e+00, double* %10
%63 = load double, double* %3
store double %63, double* %11
%64 = load double, double* %3
%65 = call i32 @cplxlog(double 0.000000e+00, double %64, double* %5, double* %6)
%66 = load double, double* %9
%67 = fneg double %66
%68 = load double, double* %5
%69 = fsub double %67, %68
store double %69, double* %12
%70 = load double, double* %6
%71 = fneg double %70
store double %71, double* %13
store double 1.000000e+00, double* %14
store double 0.000000e+00, double* %15
%72 = load double, double* %3
store double %72, double* %16
store double 0.000000e+00, double* %17
%73 = load double, double* %3
store double %73, double* %18
br label %74
74: ; preds = %83, %62
%75 = load double, double* %17
%76 = load double, double* %18
%77 = call double @hypot(double %75, double %76)
%78 = load double, double* %12
%79 = load double, double* %13
%80 = call i64 @eps(double %78, double %79)
%81 = sitofp i64 %80 to double
%82 = fcmp ogt double %77, %81
br i1 %82, label %83, label %109
83: ; preds = %74
%84 = load double, double* %12
%85 = load double, double* %17
%86 = fadd double %84, %85
store double %86, double* %12
%87 = load double, double* %13
%88 = load double, double* %18
%89 = fadd double %87, %88
store double %89, double* %13
%90 = load double, double* %14
%91 = fadd double %90, 1.000000e+00
store double %91, double* %14
%92 = load double, double* %10
%93 = fneg double %92
%94 = load double, double* %11
%95 = fneg double %94
%96 = load double, double* %15
%97 = load double, double* %14
%98 = fdiv double %96, %97
%99 = load double, double* %16
%100 = load double, double* %14
%101 = fdiv double %99, %100
%102 = call i32 @complexMultiplication(double %93, double %95, double %98, double %101, double* %15, double* %16)
%103 = load double, double* %15
%104 = load double, double* %14
%105 = fdiv double %103, %104
store double %105, double* %17
%106 = load double, double* %16
%107 = load double, double* %14
%108 = fdiv double %106, %107
store double %108, double* %18
br label %74
109: ; preds = %74
%110 = load double, double* %12
store double %110, double* %7
%111 = load double, double* %13
store double %111, double* %8
br label %251
112: ; preds = %58
store double 0.000000e+00, double* %19
%113 = load double, double* %3
store double %113, double* %20
store double 0.000000e+00, double* %21
store double 0.000000e+00, double* %22
store double 1.000000e+00, double* %23
store double 0.000000e+00, double* %24
store double 1.000000e+00, double* %25
store double 0.000000e+00, double* %26
%114 = load double, double* %19
store double %114, double* %27
%115 = load double, double* %20
store double %115, double* %28
%116 = load double, double* %25
%117 = load double, double* %26
%118 = load double, double* %27
%119 = load double, double* %28
%120 = call i32 @cdivid(double %116, double %117, double %118, double %119, double* %29, double* %30)
%121 = load i64, i64* @FLT_MAX
%122 = sitofp i64 %121 to double
store double %122, double* %31
store double 0.000000e+00, double* %32
store double 2.000000e+00, double* %33
br label %123
123: ; preds = %138, %112
%124 = load double, double* %29
%125 = load double, double* %31
%126 = fsub double %124, %125
%127 = load double, double* %30
%128 = load double, double* %32
%129 = fsub double %127, %128
%130 = call double @hypot(double %126, double %129)
%131 = load double, double* @DBL_EPSILON
%132 = fmul double 1.000000e+02, %131
%133 = load double, double* %29
%134 = load double, double* %30
%135 = call double @hypot(double %133, double %134)
%136 = fmul double %132, %135
%137 = fcmp ogt double %130, %136
br i1 %137, label %138, label %228
138: ; preds = %123
%139 = load double, double* %33
%140 = fmul double %139, 5.000000e-01
store double %140, double* %34
%141 = load double, double* %25
%142 = load double, double* %34
%143 = load double, double* %21
%144 = call double @llvm.fmuladd.f64(double %142, double %143, double %141)
store double %144, double* %35
%145 = load double, double* %26
%146 = load double, double* %34
%147 = load double, double* %22
%148 = call double @llvm.fmuladd.f64(double %146, double %147, double %145)
store double %148, double* %36
%149 = load double, double* %27
%150 = load double, double* %34
%151 = load double, double* %23
%152 = call double @llvm.fmuladd.f64(double %150, double %151, double %149)
store double %152, double* %37
%153 = load double, double* %28
%154 = load double, double* %34
%155 = load double, double* %24
%156 = call double @llvm.fmuladd.f64(double %154, double %155, double %153)
store double %156, double* %38
%157 = load double, double* %25
%158 = load double, double* %26
%159 = load double, double* %37
%160 = load double, double* %38
%161 = call i32 @cdivid(double %157, double %158, double %159, double %160, double* %21, double* %22)
%162 = load double, double* %27
%163 = load double, double* %28
%164 = load double, double* %37
%165 = load double, double* %38
%166 = call i32 @cdivid(double %162, double %163, double %164, double %165, double* %23, double* %24)
%167 = load double, double* %35
%168 = load double, double* %36
%169 = load double, double* %37
%170 = load double, double* %38
%171 = call i32 @cdivid(double %167, double %168, double %169, double %170, double* %25, double* %26)
store double 1.000000e+00, double* %27
store double 0.000000e+00, double* %28
%172 = load double, double* %25
store double %172, double* %29
%173 = load double, double* %26
store double %173, double* %30
%174 = load double, double* %33
%175 = fadd double %174, 1.000000e+00
store double %175, double* %33
%176 = load double, double* %33
%177 = fsub double %176, 1.000000e+00
%178 = fmul double %177, 5.000000e-01
store double %178, double* %34
%179 = load double, double* %19
store double %179, double* %39
%180 = load double, double* %20
store double %180, double* %40
%181 = load double, double* %39
%182 = load double, double* %40
%183 = load double, double* %25
%184 = load double, double* %26
%185 = call i32 @complexMultiplication(double %181, double %182, double %183, double %184, double* %35, double* %36)
%186 = load double, double* %34
%187 = load double, double* %21
%188 = load double, double* %35
%189 = call double @llvm.fmuladd.f64(double %186, double %187, double %188)
store double %189, double* %35
%190 = load double, double* %34
%191 = load double, double* %22
%192 = load double, double* %36
%193 = call double @llvm.fmuladd.f64(double %190, double %191, double %192)
store double %193, double* %36
%194 = load double, double* %39
%195 = load double, double* %40
%196 = load double, double* %27
%197 = load double, double* %28
%198 = call i32 @complexMultiplication(double %194, double %195, double %196, double %197, double* %37, double* %38)
%199 = load double, double* %34
%200 = load double, double* %23
%201 = load double, double* %37
%202 = call double @llvm.fmuladd.f64(double %199, double %200, double %201)
store double %202, double* %37
%203 = load double, double* %34
%204 = load double, double* %24
%205 = load double, double* %38
%206 = call double @llvm.fmuladd.f64(double %203, double %204, double %205)
store double %206, double* %38
%207 = load double, double* %25
%208 = load double, double* %26
%209 = load double, double* %37
%210 = load double, double* %38
%211 = call i32 @cdivid(double %207, double %208, double %209, double %210, double* %21, double* %22)
%212 = load double, double* %27
%213 = load double, double* %28
%214 = load double, double* %37
%215 = load double, double* %38
%216 = call i32 @cdivid(double %212, double %213, double %214, double %215, double* %23, double* %24)
%217 = load double, double* %35
%218 = load double, double* %36
%219 = load double, double* %37
%220 = load double, double* %38
%221 = call i32 @cdivid(double %217, double %218, double %219, double %220, double* %25, double* %26)
store double 1.000000e+00, double* %27
store double 0.000000e+00, double* %28
%222 = load double, double* %29
store double %222, double* %31
%223 = load double, double* %30
store double %223, double* %32
%224 = load double, double* %25
store double %224, double* %29
%225 = load double, double* %26
store double %225, double* %30
%226 = load double, double* %33
%227 = fadd double %226, 1.000000e+00
store double %227, double* %33
br label %123
228: ; preds = %123
%229 = load double, double* %19
%230 = fneg double %229
%231 = load double, double* %20
%232 = fneg double %231
%233 = call i32 @cplxexp(double %230, double %232, double* %5, double* %6)
%234 = load double, double* %5
%235 = load double, double* %6
%236 = load double, double* %29
%237 = load double, double* %30
%238 = call i32 @complexMultiplication(double %234, double %235, double %236, double %237, double* %5, double* %6)
%239 = load double, double* %5
store double %239, double* %7
%240 = load double, double* %6
%241 = load double, double* %19
%242 = fcmp olt double %241, 0.000000e+00
br i1 %242, label %243, label %246
243: ; preds = %228
%244 = load double, double* %20
%245 = fcmp oeq double %244, 0.000000e+00
br label %246
246: ; preds = %243, %228
%247 = phi i1 [ false, %228 ], [ %245, %243 ]
%248 = zext i1 %247 to i32
%249 = sitofp i32 %248 to double
%250 = call double @llvm.fmuladd.f64(double 0xC00921FB54442D18, double %249, double %240)
store double %250, double* %8
br label %251
251: ; preds = %246, %109
%252 = load double, double* %8
%253 = fadd double %252, 0x3FF921FB54442D18
%254 = load double, double* %4
%255 = fmul double %253, %254
store double %255, double* %2
br label %256
256: ; preds = %251, %57
%257 = load double, double* %2
ret double %257
}

LLVM IR (-O2):
@DBL_EPSILON = global double 0.000000e+00
@FLT_MAX = global i64 0
define double @sineIntReal(double %0) {
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%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
%18 = fcmp olt double %0, 0.000000e+00
%19 = fcmp ogt double %0, 0.000000e+00
%20 = uitofp i1 %19 to double
%21 = select i1 %18, double -1.000000e+00, double %20
%22 = fmul double %21, %0
%23 = bitcast double* %2 to i8*
%24 = bitcast double* %3 to i8*
%25 = load double, double* @DBL_EPSILON
%26 = fcmp olt double %22, %25
br i1 %26, label %189, label %27
27: ; preds = %1
%28 = tail call double @llvm.fabs.f64(double %22)
%29 = fcmp ugt double %28, 0x4020890AFCC79856
br i1 %29, label %80, label %30
30: ; preds = %27
%31 = call i32 @cplxlog(double 0.000000e+00, double %22, double* %2, double* %3)
%32 = load double, double* %2
%33 = fsub double 0xBFE2788CFC6FB619, %32
%34 = load double, double* %3
%35 = fneg double %34
%36 = bitcast double* %4 to i8*
store double 0.000000e+00, double* %4
%37 = bitcast double* %5 to i8*
store double %22, double* %5
%38 = call double @hypot(double 0.000000e+00, double %22)
%39 = call i64 @eps(double %33, double %35)
%40 = sitofp i64 %39 to double
%41 = fcmp ogt double %38, %40
br i1 %41, label %42, label %78
42: ; preds = %30
%43 = fneg double %22
%44 = insertelement <2 x double> poison, double %35, i64 0
%45 = insertelement <2 x double> %44, double %33, i64 1
%46 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %22, i64 0
br label %47
47: ; preds = %73, %42
%48 = phi double [ %22, %42 ], [ %75, %73 ]
%49 = phi double [ 0.000000e+00, %42 ], [ %74, %73 ]
%50 = phi double [ 1.000000e+00, %42 ], [ %54, %73 ]
%51 = phi <2 x double> [ %45, %42 ], [ %53, %73 ]
%52 = phi <2 x double> [ %46, %42 ], [ %64, %73 ]
%53 = fadd <2 x double> %51, %52
%54 = fadd double %50, 1.000000e+00
%55 = fdiv double %49, %54
%56 = fdiv double %48, %54
%57 = call i32 @complexMultiplication(double -0.000000e+00, double %43, double %55, double %56, double* %4, double* %5)
%58 = load double, double* %4
%59 = load double, double* %5
%60 = insertelement <2 x double> poison, double %59, i64 0
%61 = insertelement <2 x double> %60, double %58, i64 1
%62 = insertelement <2 x double> poison, double %54, i64 0
%63 = shufflevector <2 x double> %62, <2 x double> poison, <2 x i32> zeroinitializer
%64 = fdiv <2 x double> %61, %63
%65 = extractelement <2 x double> %64, i64 0
%66 = extractelement <2 x double> %64, i64 1
%67 = call double @hypot(double %66, double %65)
%68 = extractelement <2 x double> %53, i64 0
%69 = extractelement <2 x double> %53, i64 1
%70 = call i64 @eps(double %69, double %68)
%71 = sitofp i64 %70 to double
%72 = fcmp ogt double %67, %71
br i1 %72, label %73, label %76
73: ; preds = %47
%74 = load double, double* %4
%75 = load double, double* %5
br label %47
76: ; preds = %47
%77 = extractelement <2 x double> %53, i64 0
br label %78
78: ; preds = %76, %30
%79 = phi double [ %35, %30 ], [ %77, %76 ]
br label %185
80: ; preds = %27
%81 = bitcast double* %6 to i8*
store double 0.000000e+00, double* %6
%82 = bitcast double* %7 to i8*
store double 0.000000e+00, double* %7
%83 = bitcast double* %8 to i8*
store double 1.000000e+00, double* %8
%84 = bitcast double* %9 to i8*
store double 0.000000e+00, double* %9
%85 = bitcast double* %10 to i8*
store double 1.000000e+00, double* %10
%86 = bitcast double* %11 to i8*
store double 0.000000e+00, double* %11
%87 = bitcast double* %12 to i8*
%88 = bitcast double* %13 to i8*
%89 = call i32 @cdivid(double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double %22, double* %12, double* %13)
%90 = load i64, i64* @FLT_MAX
%91 = sitofp i64 %90 to double
%92 = bitcast double* %14 to i8*
%93 = bitcast double* %15 to i8*
%94 = bitcast double* %16 to i8*
%95 = bitcast double* %17 to i8*
%96 = load double, double* %12
%97 = load double, double* %13
%98 = fsub double %96, %91
%99 = call double @hypot(double %98, double %97)
%100 = load double, double* @DBL_EPSILON
%101 = fmul double %100, 1.000000e+02
%102 = load double, double* %12
%103 = load double, double* %13
%104 = call double @hypot(double %102, double %103)
%105 = fmul double %101, %104
%106 = fcmp ogt double %99, %105
br i1 %106, label %107, label %176
107: ; preds = %80, %107
%108 = phi double [ %165, %107 ], [ 2.000000e+00, %80 ]
%109 = phi double [ 0.000000e+00, %107 ], [ %22, %80 ]
%110 = phi double [ 1.000000e+00, %107 ], [ 0.000000e+00, %80 ]
%111 = fmul double %108, 5.000000e-01
%112 = load double, double* %10
%113 = load double, double* %6
%114 = call double @llvm.fmuladd.f64(double %111, double %113, double %112)
store double %114, double* %14
%115 = load double, double* %11
%116 = load double, double* %7
%117 = call double @llvm.fmuladd.f64(double %111, double %116, double %115)
store double %117, double* %15
%118 = load double, double* %8
%119 = call double @llvm.fmuladd.f64(double %111, double %118, double %110)
store double %119, double* %16
%120 = load double, double* %9
%121 = call double @llvm.fmuladd.f64(double %111, double %120, double %109)
store double %121, double* %17
%122 = call i32 @cdivid(double %112, double %115, double %119, double %121, double* %6, double* %7)
%123 = load double, double* %16
%124 = load double, double* %17
%125 = call i32 @cdivid(double %110, double %109, double %123, double %124, double* %8, double* %9)
%126 = load double, double* %14
%127 = load double, double* %15
%128 = load double, double* %16
%129 = load double, double* %17
%130 = call i32 @cdivid(double %126, double %127, double %128, double %129, double* %10, double* %11)
%131 = load double, double* %10
store double %131, double* %12
%132 = load double, double* %11
store double %132, double* %13
%133 = fadd double %108, 1.000000e+00
%134 = fadd double %133, -1.000000e+00
%135 = fmul double %134, 5.000000e-01
%136 = call i32 @complexMultiplication(double 0.000000e+00, double %22, double %131, double %132, double* %14, double* %15)
%137 = load double, double* %6
%138 = load double, double* %14
%139 = call double @llvm.fmuladd.f64(double %135, double %137, double %138)
store double %139, double* %14
%140 = load double, double* %7
%141 = load double, double* %15
%142 = call double @llvm.fmuladd.f64(double %135, double %140, double %141)
store double %142, double* %15
%143 = call i32 @complexMultiplication(double 0.000000e+00, double %22, double 1.000000e+00, double 0.000000e+00, double* %16, double* %17)
%144 = load double, double* %8
%145 = load double, double* %16
%146 = call double @llvm.fmuladd.f64(double %135, double %144, double %145)
store double %146, double* %16
%147 = load double, double* %9
%148 = load double, double* %17
%149 = call double @llvm.fmuladd.f64(double %135, double %147, double %148)
store double %149, double* %17
%150 = load double, double* %10
%151 = load double, double* %11
%152 = call i32 @cdivid(double %150, double %151, double %146, double %149, double* %6, double* %7)
%153 = load double, double* %16
%154 = load double, double* %17
%155 = call i32 @cdivid(double 1.000000e+00, double 0.000000e+00, double %153, double %154, double* %8, double* %9)
%156 = load double, double* %14
%157 = load double, double* %15
%158 = load double, double* %16
%159 = load double, double* %17
%160 = call i32 @cdivid(double %156, double %157, double %158, double %159, double* %10, double* %11)
%161 = load double, double* %12
%162 = load double, double* %13
%163 = load double, double* %10
store double %163, double* %12
%164 = load double, double* %11
store double %164, double* %13
%165 = fadd double %133, 1.000000e+00
%166 = fsub double %163, %161
%167 = fsub double %164, %162
%168 = call double @hypot(double %166, double %167)
%169 = load double, double* @DBL_EPSILON
%170 = fmul double %169, 1.000000e+02
%171 = load double, double* %12
%172 = load double, double* %13
%173 = call double @hypot(double %171, double %172)
%174 = fmul double %170, %173
%175 = fcmp ogt double %168, %174
br i1 %175, label %107, label %176
176: ; preds = %107, %80
%177 = fneg double %22
%178 = call i32 @cplxexp(double -0.000000e+00, double %177, double* %2, double* %3)
%179 = load double, double* %2
%180 = load double, double* %3
%181 = load double, double* %12
%182 = load double, double* %13
%183 = call i32 @complexMultiplication(double %179, double %180, double %181, double %182, double* %2, double* %3)
%184 = load double, double* %3
br label %185
185: ; preds = %176, %78
%186 = phi double [ %79, %78 ], [ %184, %176 ]
%187 = fadd double %186, 0x3FF921FB54442D18
%188 = fmul double %21, %187
br label %189
189: ; preds = %1, %185
%190 = phi double [ %188, %185 ], [ 0.000000e+00, %1 ]
ret double %190
}