#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 cos(double);
double sin(double);
int calc_nutation_woolard(double J, double *nutlo) {
  double deps, dpsi;
  double ls, ld;
  double ms, md;
  double nm;
  double t, t2;
  double tls, tnm, tld;
  double a, b;
  double mjd = J - 2415020.0;
  t = mjd / 36525.;
  t2 = t * t;
  a = 100.0021358 * t;
  b = 360. * (a - (long)a);
  ls = 279.697 + .000303 * t2 + b;
  a = 1336.855231 * t;
  b = 360. * (a - (long)a);
  ld = 270.434 - .001133 * t2 + b;
  a = 99.99736056000026 * t;
  b = 360. * (a - (long)a);
  ms = 358.476 - .00015 * t2 + b;
  a = 13255523.59 * t;
  b = 360. * (a - (long)a);
  md = 296.105 + .009192 * t2 + b;
  a = 5.372616667 * t;
  b = 360. * (a - (long)a);
  nm = 259.183 + .002078 * t2 - b;
  tls = 2 * ls * (3.14159265358979323846 / 180.0);
  nm = nm * (3.14159265358979323846 / 180.0);
  tnm = 2 * nm;
  ms = ms * (3.14159265358979323846 / 180.0);
  tld = 2 * ld * (3.14159265358979323846 / 180.0);
  md = md * (3.14159265358979323846 / 180.0);
  dpsi = (-17.2327 - .01737 * t) * sin(nm) + (-1.2729 - .00013 * t) * sin(tls) +
         .2088 * sin(tnm) - .2037 * sin(tld) + (.1261 - .00031 * t) * sin(ms) +
         .0675 * sin(md) - (.0497 - .00012 * t) * sin(tls + ms) -
         .0342 * sin(tld - nm) - .0261 * sin(tld + md) + .0214 * sin(tls - ms) -
         .0149 * sin(tls - tld + md) + .0124 * sin(tls - nm) +
         .0114 * sin(tld - md);
  deps = (9.21 + .00091 * t) * cos(nm) + (.5522 - .00029 * t) * cos(tls) -
         .0904 * cos(tnm) + .0884 * cos(tld) + .0216 * cos(tls + ms) +
         .0183 * cos(tld - nm) + .0113 * cos(tld + md) - .0093 * cos(tls - ms) -
         .0066 * cos(tls - nm);
  dpsi = dpsi / 3600.0 * (3.14159265358979323846 / 180.0);
  deps = deps / 3600.0 * (3.14159265358979323846 / 180.0);
  nutlo[1] = deps;
  nutlo[0] = dpsi;
  return (0);
}


x86 assembly (clang, -O0):
<calc_nutation_woolard>:
push   %rbp
mov    %rsp,%rbp
sub    $0x160,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0x103f(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0x101b(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xff3(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
cvttsd2si -0x78(%rbp),%rax
cvtsi2sd %rax,%xmm0
subsd  %xmm0,%xmm1
movsd  0xf65(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  0xfa7(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xfa3(%rip),%xmm1
addsd  %xmm1,%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xf7d(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
cvttsd2si -0x78(%rbp),%rax
cvtsi2sd %rax,%xmm0
subsd  %xmm0,%xmm1
movsd  0xf07(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  0xf31(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xf2d(%rip),%xmm1
addsd  %xmm1,%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xf07(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
cvttsd2si -0x78(%rbp),%rax
cvtsi2sd %rax,%xmm0
subsd  %xmm0,%xmm1
movsd  0xea9(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  0xebb(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xeb7(%rip),%xmm1
addsd  %xmm1,%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe91(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
cvttsd2si -0x78(%rbp),%rax
cvtsi2sd %rax,%xmm0
subsd  %xmm0,%xmm1
movsd  0xe4b(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  0xe45(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe41(%rip),%xmm1
addsd  %xmm1,%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe1b(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
cvttsd2si -0x78(%rbp),%rax
cvtsi2sd %rax,%xmm0
subsd  %xmm0,%xmm1
movsd  0xded(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  0xdc7(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdc3(%rip),%xmm1
addsd  %xmm1,%xmm0
subsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xd9d(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xca0(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xc8f(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xd6d(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xc6b(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xd49(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0xc4c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xc3b(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  0xd04(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd00(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  0xcbd(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcb9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x158(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x148(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x140(%rbp),%xmm1
ff
movsd  0xc4a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x138(%rbp),%xmm1
ff
movsd  0xc18(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  0xbeb(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbe7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x130(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x120(%rbp),%xmm1
ff
movsd  0xb84(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  0xb57(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb53(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x118(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x110(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x108(%rbp),%xmm1
ff
movsd  0xacf(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x100(%rbp),%xmm1
ff
movsd  0xa98(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0xa61(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0xf0(%rbp),%xmm1
ff
movsd  0xa25(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0xe8(%rbp),%xmm1
ff
movsd  0x9ee(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0x9b7(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  0x98d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x989(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  0x946(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x942(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0xc0(%rbp),%xmm1
ff
movsd  0x8d3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0xb8(%rbp),%xmm1
ff
movsd  0x8a1(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0xb0(%rbp),%xmm1
ff
movsd  0x86a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0xa8(%rbp),%xmm1
ff
movsd  0x833(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0xa0(%rbp),%xmm1
ff
movsd  0x7fc(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0x98(%rbp),%xmm1
ff
movsd  0x7c5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0x90(%rbp),%xmm1
ff
movsd  0x78e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0x76c(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x758(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0x74a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x736(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x20(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
xor    %eax,%eax
add    $0x160,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<calc_nutation_woolard>:
push   %rbx
sub    $0x120,%rsp
mov    %rdi,%rbx
addsd  0xecd(%rip),%xmm0
divsd  0xecd(%rip),%xmm0
movapd %xmm0,%xmm4
movsd  0xec9(%rip),%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm0,%xmm3
cvttsd2si %xmm1,%rax
mulsd  %xmm0,%xmm4
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
subsd  %xmm0,%xmm1
movsd  0xeac(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xea8(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  0xea4(%rip),%xmm5
movsd  0xea4(%rip),%xmm2
mulsd  %xmm3,%xmm2
movapd %xmm3,%xmm6
cvttsd2si %xmm2,%rax
xorps  %xmm3,%xmm3
cvtsi2sd %rax,%xmm3
addsd  %xmm1,%xmm5
subsd  %xmm3,%xmm2
mulsd  %xmm0,%xmm2
movsd  0xe83(%rip),%xmm1
mulsd  %xmm4,%xmm1
addsd  0xe7f(%rip),%xmm1
addsd  %xmm2,%xmm1
movapd %xmm1,%xmm8
movsd  0xe76(%rip),%xmm1
mulsd  %xmm6,%xmm1
cvttsd2si %xmm1,%rax
xorps  %xmm2,%xmm2
cvtsi2sd %rax,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xe5d(%rip),%xmm7
mulsd  %xmm4,%xmm7
addsd  0xe59(%rip),%xmm7
movsd  0xe59(%rip),%xmm2
mulsd  %xmm6,%xmm2
cvttsd2si %xmm2,%rax
addsd  %xmm1,%xmm7
movapd %xmm7,%xmm3
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
subsd  %xmm1,%xmm2
movsd  0xe3c(%rip),%xmm1
mulsd  %xmm4,%xmm1
addsd  0xe38(%rip),%xmm1
mulsd  %xmm0,%xmm2
addsd  %xmm2,%xmm1
movapd %xmm1,%xmm7
movsd  0xe2c(%rip),%xmm1
mulsd  %xmm6,%xmm1
movsd  %xmm6,0x20(%rsp)
cvttsd2si %xmm1,%rax
xorps  %xmm2,%xmm2
cvtsi2sd %rax,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xe0d(%rip),%xmm4
addsd  0xe0d(%rip),%xmm4
subsd  %xmm1,%xmm4
addsd  %xmm5,%xmm5
movsd  0xe05(%rip),%xmm0
mulsd  %xmm0,%xmm5
movsd  %xmm5,(%rsp)
mulsd  %xmm0,%xmm4
movapd %xmm4,%xmm1
movsd  %xmm4,0x70(%rsp)
addsd  %xmm4,%xmm1
movsd  %xmm1,0x88(%rsp)
mulsd  %xmm0,%xmm3
movsd  %xmm3,0x40(%rsp)
movapd %xmm8,%xmm3
addsd  %xmm8,%xmm3
mulsd  %xmm0,%xmm3
movsd  %xmm3,0x8(%rsp)
mulsd  %xmm0,%xmm7
movsd  %xmm7,0x50(%rsp)
movsd  0xdb9(%rip),%xmm0
mulsd  %xmm6,%xmm0
addsd  0xdb5(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
movapd %xmm4,%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0xda0(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  0xd9a(%rip),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
mulsd  0x60(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x88(%rsp),%xmm0
call   1030 <sin@plt>
mulsd  0xd60(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <sin@plt>
mulsd  0xd49(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xd3d(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  0xd37(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x40(%rsp),%xmm0
call   1030 <sin@plt>
mulsd  0x30(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movapd %xmm0,0x110(%rsp)
movsd  0x50(%rsp),%xmm0
call   1030 <sin@plt>
movaps %xmm0,0x100(%rsp)
movsd  0xcfe(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  0xcf8(%rip),%xmm0
movapd %xmm0,0xb0(%rsp)
movsd  0x40(%rsp),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,0xc8(%rsp)
call   1030 <sin@plt>
movapd %xmm0,0x90(%rsp)
movaps 0xb0(%rsp),%xmm0
xorps  0xcee(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movsd  0x8(%rsp),%xmm0
subsd  0x70(%rsp),%xmm0
movsd  %xmm0,0xd0(%rsp)
call   1030 <sin@plt>
movapd %xmm0,0xa0(%rsp)
movsd  0x50(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0xe0(%rsp)
call   1030 <sin@plt>
movapd %xmm0,0x60(%rsp)
movsd  (%rsp),%xmm0
subsd  0x40(%rsp),%xmm0
movsd  %xmm0,0xe8(%rsp)
call   1030 <sin@plt>
movapd %xmm0,0x30(%rsp)
movsd  (%rsp),%xmm0
subsd  0x8(%rsp),%xmm0
addsd  0x50(%rsp),%xmm0
call   1030 <sin@plt>
movapd %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
subsd  0x70(%rsp),%xmm0
movsd  %xmm0,0xd8(%rsp)
call   1030 <sin@plt>
movapd %xmm0,0x40(%rsp)
movsd  0x8(%rsp),%xmm0
subsd  0x50(%rsp),%xmm0
call   1030 <sin@plt>
movapd %xmm0,0x50(%rsp)
movsd  0xc02(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  0xbfc(%rip),%xmm0
movapd %xmm0,0xf0(%rsp)
movsd  0x70(%rsp),%xmm0
call   1040 <cos@plt>
movaps %xmm0,0x70(%rsp)
movsd  0x20(%rsp),%xmm0
mulsd  0xbdd(%rip),%xmm0
addsd  0xbdd(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  (%rsp),%xmm0
call   1040 <cos@plt>
mulsd  0x20(%rsp),%xmm0
movapd 0x110(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
movapd 0x100(%rsp),%xmm0
unpcklpd 0xf0(%rsp),%xmm0
movapd 0xbc0(%rip),%xmm2
unpcklpd 0x70(%rsp),%xmm2
mulpd  %xmm0,%xmm2
addpd  %xmm1,%xmm2
movapd %xmm2,0x20(%rsp)
movsd  0x88(%rsp),%xmm0
call   1040 <cos@plt>
movapd 0xb0(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
movapd 0x90(%rsp),%xmm0
shufpd $0x2,0xb8f(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0x20(%rsp),%xmm0
movapd %xmm0,0x90(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <cos@plt>
movapd 0xa0(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xb6c(%rip),%xmm1
addpd  0x90(%rsp),%xmm1
movapd %xmm1,0xa0(%rsp)
movsd  0xc8(%rsp),%xmm0
call   1040 <cos@plt>
movapd 0x60(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xb4a(%rip),%xmm1
addpd  0xa0(%rsp),%xmm1
movapd %xmm1,0x60(%rsp)
movsd  0xd0(%rsp),%xmm0
call   1040 <cos@plt>
movapd 0x30(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xb2b(%rip),%xmm1
addpd  0x60(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  0xe0(%rsp),%xmm0
call   1040 <cos@plt>
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xb0f(%rip),%xmm1
addpd  0x30(%rsp),%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0xe8(%rsp),%xmm0
call   1040 <cos@plt>
movapd 0x40(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xaf3(%rip),%xmm1
addpd  0x10(%rsp),%xmm1
movapd %xmm1,0x40(%rsp)
movsd  0xd8(%rsp),%xmm0
call   1040 <cos@plt>
movapd 0x50(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xad7(%rip),%xmm1
addpd  0x40(%rsp),%xmm1
divpd  0xad9(%rip),%xmm1
mulpd  0xae1(%rip),%xmm1
movupd %xmm1,(%rbx)
xor    %eax,%eax
add    $0x120,%rsp
pop    %rbx
ret

LLVM IR (-O0):
define i32 @calc_nutation_woolard(double %0, double* %1) {
%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
store double %0, double* %3
store double* %1, double** %4
%20 = load double, double* %3
%21 = fsub double %20, 2.415020e+06
store double %21, double* %19
%22 = load double, double* %19
%23 = fdiv double %22, 3.652500e+04
store double %23, double* %12
%24 = load double, double* %12
%25 = load double, double* %12
%26 = fmul double %24, %25
store double %26, double* %13
%27 = load double, double* %12
%28 = fmul double 0x40590022FE31C9A7, %27
store double %28, double* %17
%29 = load double, double* %17
%30 = load double, double* %17
%31 = fptosi double %30 to i64
%32 = sitofp i64 %31 to double
%33 = fsub double %29, %32
%34 = fmul double 3.600000e+02, %33
store double %34, double* %18
%35 = load double, double* %13
%36 = call double @llvm.fmuladd.f64(double 3.030000e-04, double %35, double 2.796970e+02)
%37 = load double, double* %18
%38 = fadd double %36, %37
store double %38, double* %7
%39 = load double, double* %12
%40 = fmul double 0x4094E36BC1ACDE1A, %39
store double %40, double* %17
%41 = load double, double* %17
%42 = load double, double* %17
%43 = fptosi double %42 to i64
%44 = sitofp i64 %43 to double
%45 = fsub double %41, %44
%46 = fmul double 3.600000e+02, %45
store double %46, double* %18
%47 = load double, double* %13
%48 = call double @llvm.fmuladd.f64(double -1.133000e-03, double %47, double 2.704340e+02)
%49 = load double, double* %18
%50 = fadd double %48, %49
store double %50, double* %8
%51 = load double, double* %12
%52 = fmul double 0x4058FFD4C162E15E, %51
store double %52, double* %17
%53 = load double, double* %17
%54 = load double, double* %17
%55 = fptosi double %54 to i64
%56 = sitofp i64 %55 to double
%57 = fsub double %53, %56
%58 = fmul double 3.600000e+02, %57
store double %58, double* %18
%59 = load double, double* %13
%60 = call double @llvm.fmuladd.f64(double -1.500000e-04, double %59, double 3.584760e+02)
%61 = load double, double* %18
%62 = fadd double %60, %61
store double %62, double* %9
%63 = load double, double* %12
%64 = fmul double 0x4169486C72E147AE, %63
store double %64, double* %17
%65 = load double, double* %17
%66 = load double, double* %17
%67 = fptosi double %66 to i64
%68 = sitofp i64 %67 to double
%69 = fsub double %65, %68
%70 = fmul double 3.600000e+02, %69
store double %70, double* %18
%71 = load double, double* %13
%72 = call double @llvm.fmuladd.f64(double 9.192000e-03, double %71, double 2.961050e+02)
%73 = load double, double* %18
%74 = fadd double %72, %73
store double %74, double* %10
%75 = load double, double* %12
%76 = fmul double 0x40157D8F393AD68D, %75
store double %76, double* %17
%77 = load double, double* %17
%78 = load double, double* %17
%79 = fptosi double %78 to i64
%80 = sitofp i64 %79 to double
%81 = fsub double %77, %80
%82 = fmul double 3.600000e+02, %81
store double %82, double* %18
%83 = load double, double* %13
%84 = call double @llvm.fmuladd.f64(double 2.078000e-03, double %83, double 2.591830e+02)
%85 = load double, double* %18
%86 = fsub double %84, %85
store double %86, double* %11
%87 = load double, double* %7
%88 = fmul double 2.000000e+00, %87
%89 = fmul double %88, 0x3F91DF46A2529D39
store double %89, double* %14
%90 = load double, double* %11
%91 = fmul double %90, 0x3F91DF46A2529D39
store double %91, double* %11
%92 = load double, double* %11
%93 = fmul double 2.000000e+00, %92
store double %93, double* %15
%94 = load double, double* %9
%95 = fmul double %94, 0x3F91DF46A2529D39
store double %95, double* %9
%96 = load double, double* %8
%97 = fmul double 2.000000e+00, %96
%98 = fmul double %97, 0x3F91DF46A2529D39
store double %98, double* %16
%99 = load double, double* %10
%100 = fmul double %99, 0x3F91DF46A2529D39
store double %100, double* %10
%101 = load double, double* %12
%102 = call double @llvm.fmuladd.f64(double -1.737000e-02, double %101, double -1.723270e+01)
%103 = load double, double* %11
%104 = call double @sin(double %103)
%105 = load double, double* %12
%106 = call double @llvm.fmuladd.f64(double -1.300000e-04, double %105, double -1.272900e+00)
%107 = load double, double* %14
%108 = call double @sin(double %107)
%109 = fmul double %106, %108
%110 = call double @llvm.fmuladd.f64(double %102, double %104, double %109)
%111 = load double, double* %15
%112 = call double @sin(double %111)
%113 = call double @llvm.fmuladd.f64(double 2.088000e-01, double %112, double %110)
%114 = load double, double* %16
%115 = call double @sin(double %114)
%116 = call double @llvm.fmuladd.f64(double -2.037000e-01, double %115, double %113)
%117 = load double, double* %12
%118 = call double @llvm.fmuladd.f64(double -3.100000e-04, double %117, double 1.261000e-01)
%119 = load double, double* %9
%120 = call double @sin(double %119)
%121 = call double @llvm.fmuladd.f64(double %118, double %120, double %116)
%122 = load double, double* %10
%123 = call double @sin(double %122)
%124 = call double @llvm.fmuladd.f64(double 6.750000e-02, double %123, double %121)
%125 = load double, double* %12
%126 = call double @llvm.fmuladd.f64(double -1.200000e-04, double %125, double 4.970000e-02)
%127 = load double, double* %14
%128 = load double, double* %9
%129 = fadd double %127, %128
%130 = call double @sin(double %129)
%131 = fneg double %126
%132 = call double @llvm.fmuladd.f64(double %131, double %130, double %124)
%133 = load double, double* %16
%134 = load double, double* %11
%135 = fsub double %133, %134
%136 = call double @sin(double %135)
%137 = call double @llvm.fmuladd.f64(double -3.420000e-02, double %136, double %132)
%138 = load double, double* %16
%139 = load double, double* %10
%140 = fadd double %138, %139
%141 = call double @sin(double %140)
%142 = call double @llvm.fmuladd.f64(double -2.610000e-02, double %141, double %137)
%143 = load double, double* %14
%144 = load double, double* %9
%145 = fsub double %143, %144
%146 = call double @sin(double %145)
%147 = call double @llvm.fmuladd.f64(double 2.140000e-02, double %146, double %142)
%148 = load double, double* %14
%149 = load double, double* %16
%150 = fsub double %148, %149
%151 = load double, double* %10
%152 = fadd double %150, %151
%153 = call double @sin(double %152)
%154 = call double @llvm.fmuladd.f64(double -1.490000e-02, double %153, double %147)
%155 = load double, double* %14
%156 = load double, double* %11
%157 = fsub double %155, %156
%158 = call double @sin(double %157)
%159 = call double @llvm.fmuladd.f64(double 1.240000e-02, double %158, double %154)
%160 = load double, double* %16
%161 = load double, double* %10
%162 = fsub double %160, %161
%163 = call double @sin(double %162)
%164 = call double @llvm.fmuladd.f64(double 1.140000e-02, double %163, double %159)
store double %164, double* %6
%165 = load double, double* %12
%166 = call double @llvm.fmuladd.f64(double 9.100000e-04, double %165, double 9.210000e+00)
%167 = load double, double* %11
%168 = call double @cos(double %167)
%169 = load double, double* %12
%170 = call double @llvm.fmuladd.f64(double -2.900000e-04, double %169, double 5.522000e-01)
%171 = load double, double* %14
%172 = call double @cos(double %171)
%173 = fmul double %170, %172
%174 = call double @llvm.fmuladd.f64(double %166, double %168, double %173)
%175 = load double, double* %15
%176 = call double @cos(double %175)
%177 = call double @llvm.fmuladd.f64(double 0xBFB72474538EF34D, double %176, double %174)
%178 = load double, double* %16
%179 = call double @cos(double %178)
%180 = call double @llvm.fmuladd.f64(double 8.840000e-02, double %179, double %177)
%181 = load double, double* %14
%182 = load double, double* %9
%183 = fadd double %181, %182
%184 = call double @cos(double %183)
%185 = call double @llvm.fmuladd.f64(double 2.160000e-02, double %184, double %180)
%186 = load double, double* %16
%187 = load double, double* %11
%188 = fsub double %186, %187
%189 = call double @cos(double %188)
%190 = call double @llvm.fmuladd.f64(double 1.830000e-02, double %189, double %185)
%191 = load double, double* %16
%192 = load double, double* %10
%193 = fadd double %191, %192
%194 = call double @cos(double %193)
%195 = call double @llvm.fmuladd.f64(double 1.130000e-02, double %194, double %190)
%196 = load double, double* %14
%197 = load double, double* %9
%198 = fsub double %196, %197
%199 = call double @cos(double %198)
%200 = call double @llvm.fmuladd.f64(double -9.300000e-03, double %199, double %195)
%201 = load double, double* %14
%202 = load double, double* %11
%203 = fsub double %201, %202
%204 = call double @cos(double %203)
%205 = call double @llvm.fmuladd.f64(double -6.600000e-03, double %204, double %200)
store double %205, double* %5
%206 = load double, double* %6
%207 = fdiv double %206, 3.600000e+03
%208 = fmul double %207, 0x3F91DF46A2529D39
store double %208, double* %6
%209 = load double, double* %5
%210 = fdiv double %209, 3.600000e+03
%211 = fmul double %210, 0x3F91DF46A2529D39
store double %211, double* %5
%212 = load double, double* %5
%213 = load double*, double** %4
%214 = getelementptr inbounds double, double* %213, i64 1
store double %212, double* %214
%215 = load double, double* %6
%216 = load double*, double** %4
%217 = getelementptr inbounds double, double* %216, i64 0
store double %215, double* %217
ret i32 0
}

LLVM IR (-O2):
define i32 @calc_nutation_woolard(double %0, double* nocapture writeonly %1) {
%3 = fadd double %0, -2.415020e+06
%4 = fdiv double %3, 3.652500e+04
%5 = fmul double %4, %4
%6 = fmul double %4, 0x40590022FE31C9A7
%7 = fptosi double %6 to i64
%8 = sitofp i64 %7 to double
%9 = fsub double %6, %8
%10 = fmul double %9, 3.600000e+02
%11 = tail call double @llvm.fmuladd.f64(double %5, double 3.030000e-04, double 2.796970e+02)
%12 = fadd double %11, %10
%13 = fmul double %4, 0x4094E36BC1ACDE1A
%14 = fptosi double %13 to i64
%15 = sitofp i64 %14 to double
%16 = fsub double %13, %15
%17 = fmul double %16, 3.600000e+02
%18 = tail call double @llvm.fmuladd.f64(double %5, double -1.133000e-03, double 2.704340e+02)
%19 = fadd double %18, %17
%20 = fmul double %4, 0x4058FFD4C162E15E
%21 = fptosi double %20 to i64
%22 = sitofp i64 %21 to double
%23 = fsub double %20, %22
%24 = fmul double %23, 3.600000e+02
%25 = tail call double @llvm.fmuladd.f64(double %5, double -1.500000e-04, double 3.584760e+02)
%26 = fadd double %25, %24
%27 = fmul double %4, 0x4169486C72E147AE
%28 = fptosi double %27 to i64
%29 = sitofp i64 %28 to double
%30 = fsub double %27, %29
%31 = fmul double %30, 3.600000e+02
%32 = tail call double @llvm.fmuladd.f64(double %5, double 9.192000e-03, double 2.961050e+02)
%33 = fadd double %32, %31
%34 = fmul double %4, 0x40157D8F393AD68D
%35 = fptosi double %34 to i64
%36 = sitofp i64 %35 to double
%37 = fsub double %34, %36
%38 = fmul double %37, 3.600000e+02
%39 = tail call double @llvm.fmuladd.f64(double %5, double 2.078000e-03, double 2.591830e+02)
%40 = fsub double %39, %38
%41 = fmul double %12, 2.000000e+00
%42 = fmul double %41, 0x3F91DF46A2529D39
%43 = fmul double %40, 0x3F91DF46A2529D39
%44 = fmul double %43, 2.000000e+00
%45 = fmul double %26, 0x3F91DF46A2529D39
%46 = fmul double %19, 2.000000e+00
%47 = fmul double %46, 0x3F91DF46A2529D39
%48 = fmul double %33, 0x3F91DF46A2529D39
%49 = tail call double @llvm.fmuladd.f64(double %4, double -1.737000e-02, double -1.723270e+01)
%50 = tail call double @sin(double %43)
%51 = tail call double @llvm.fmuladd.f64(double %4, double -1.300000e-04, double -1.272900e+00)
%52 = tail call double @sin(double %42)
%53 = fmul double %51, %52
%54 = tail call double @llvm.fmuladd.f64(double %49, double %50, double %53)
%55 = tail call double @sin(double %44)
%56 = tail call double @llvm.fmuladd.f64(double %55, double 2.088000e-01, double %54)
%57 = tail call double @sin(double %47)
%58 = tail call double @llvm.fmuladd.f64(double %57, double -2.037000e-01, double %56)
%59 = tail call double @llvm.fmuladd.f64(double %4, double -3.100000e-04, double 1.261000e-01)
%60 = tail call double @sin(double %45)
%61 = tail call double @llvm.fmuladd.f64(double %59, double %60, double %58)
%62 = tail call double @sin(double %48)
%63 = tail call double @llvm.fmuladd.f64(double %4, double -1.200000e-04, double 4.970000e-02)
%64 = fadd double %45, %42
%65 = tail call double @sin(double %64)
%66 = fneg double %63
%67 = fsub double %47, %43
%68 = tail call double @sin(double %67)
%69 = fadd double %48, %47
%70 = tail call double @sin(double %69)
%71 = fsub double %42, %45
%72 = tail call double @sin(double %71)
%73 = fsub double %42, %47
%74 = fadd double %48, %73
%75 = tail call double @sin(double %74)
%76 = fsub double %42, %43
%77 = tail call double @sin(double %76)
%78 = fsub double %47, %48
%79 = tail call double @sin(double %78)
%80 = tail call double @llvm.fmuladd.f64(double %4, double 9.100000e-04, double 9.210000e+00)
%81 = tail call double @cos(double %43)
%82 = tail call double @llvm.fmuladd.f64(double %4, double -2.900000e-04, double 5.522000e-01)
%83 = tail call double @cos(double %42)
%84 = fmul double %82, %83
%85 = insertelement <2 x double> poison, double %62, i64 0
%86 = insertelement <2 x double> %85, double %80, i64 1
%87 = insertelement <2 x double> <double 6.750000e-02, double poison>, double %81, i64 1
%88 = insertelement <2 x double> poison, double %61, i64 0
%89 = insertelement <2 x double> %88, double %84, i64 1
%90 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %86, <2 x double> %87, <2 x double> %89)
%91 = tail call double @cos(double %44)
%92 = insertelement <2 x double> poison, double %66, i64 0
%93 = insertelement <2 x double> %92, double %91, i64 1
%94 = insertelement <2 x double> <double poison, double 0xBFB72474538EF34D>, double %65, i64 0
%95 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %93, <2 x double> %94, <2 x double> %90)
%96 = tail call double @cos(double %47)
%97 = insertelement <2 x double> poison, double %68, i64 0
%98 = insertelement <2 x double> %97, double %96, i64 1
%99 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %98, <2 x double> <double -3.420000e-02, double 8.840000e-02>, <2 x double> %95)
%100 = tail call double @cos(double %64)
%101 = insertelement <2 x double> poison, double %70, i64 0
%102 = insertelement <2 x double> %101, double %100, i64 1
%103 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %102, <2 x double> <double -2.610000e-02, double 2.160000e-02>, <2 x double> %99)
%104 = tail call double @cos(double %67)
%105 = insertelement <2 x double> poison, double %72, i64 0
%106 = insertelement <2 x double> %105, double %104, i64 1
%107 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %106, <2 x double> <double 2.140000e-02, double 1.830000e-02>, <2 x double> %103)
%108 = tail call double @cos(double %69)
%109 = insertelement <2 x double> poison, double %75, i64 0
%110 = insertelement <2 x double> %109, double %108, i64 1
%111 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %110, <2 x double> <double -1.490000e-02, double 1.130000e-02>, <2 x double> %107)
%112 = tail call double @cos(double %71)
%113 = insertelement <2 x double> poison, double %77, i64 0
%114 = insertelement <2 x double> %113, double %112, i64 1
%115 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %114, <2 x double> <double 1.240000e-02, double -9.300000e-03>, <2 x double> %111)
%116 = tail call double @cos(double %76)
%117 = insertelement <2 x double> poison, double %79, i64 0
%118 = insertelement <2 x double> %117, double %116, i64 1
%119 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %118, <2 x double> <double 1.140000e-02, double -6.600000e-03>, <2 x double> %115)
%120 = fdiv <2 x double> %119, <double 3.600000e+03, double 3.600000e+03>
%121 = fmul <2 x double> %120, <double 0x3F91DF46A2529D39, double 0x3F91DF46A2529D39>
%122 = bitcast double* %1 to <2 x double>*
store <2 x double> %121, <2 x double>* %122
ret i32 0
}