#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 */
int EXIT_SUCCESS;
int M_PI;
double kepler_lite(int, double, double);
double kepler_rv(int, double, double);
double sqrt(int);
int triorb_rv(double *op, double t, double *rv) {
  double wp, wt, we, woAB, waAB, waC;
  double tp, tt, te, toA, tkA, tkB, tdo;
  double wliteAB, wrvAB, trvA, L, dLdt, ct, rv_C, rv_AB, rv_A, rv_B;
  wp = op[0];
  wt = op[1];
  we = op[2];
  woAB = op[3];
  waAB = op[4];
  waC = op[5];
  wliteAB = kepler_lite(2 * M_PI * (t - wt) / wp, we, woAB);
  wrvAB = kepler_rv(2 * M_PI * (t - wt) / wp, we, woAB);
  tp = op[6];
  tt = op[7];
  te = op[8];
  toA = op[9];
  tkA = op[10];
  tkB = op[11];
  tdo = op[12];
  L = -waC * wliteAB;
  dLdt = -2 * M_PI * waC * wrvAB / (wp * sqrt(1 - we * we));
  ct = (t - L + dLdt * t) / (1 + dLdt);
  rv_C = 2.998E05 * 2 * M_PI * waC *
         kepler_rv(2 * M_PI * (ct - wt) / wp, we, M_PI + woAB) /
         (wp * sqrt(1 - we * we));
  L = waC * wliteAB;
  dLdt = 2 * M_PI * waAB * wrvAB / (wp * sqrt(1 - we * we));
  ct = (t - L + dLdt * t) / (1 + dLdt);
  rv_AB = 2.998E05 * 2 * M_PI * waAB *
          kepler_rv(2 * M_PI * (ct - wt) / wp, we, woAB) /
          (wp * sqrt(1 - we * we));
  trvA = kepler_rv(2 * M_PI * (ct - tt) / tp, te, toA);
  rv_A = rv_AB + tkA * trvA;
  rv_B = rv_AB - tkB * trvA;
  *(rv + 0) = rv_A;
  *(rv + 1) = rv_B;
  *(rv + 2) = rv_C;
  return EXIT_SUCCESS;
}


x86 assembly (clang, -O0):
<triorb_rv>:
push   %rbp
mov    %rsp,%rbp
sub    $0x120,%rsp
mov    %rdi,-0x8(%rbp)
movsd  %xmm0,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x2e46(%rip),%rax
mov    (%rax),%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  -0x10(%rbp),%xmm1
subsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x20(%rbp),%xmm0
cvttsd2si %xmm0,%edi
movsd  -0x30(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
call   1030 <kepler_lite@plt>
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x2e08(%rip),%rax
mov    (%rax),%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  -0x10(%rbp),%xmm1
subsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x20(%rbp),%xmm0
cvttsd2si %xmm0,%edi
movsd  -0x30(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
call   1050 <kepler_rv@plt>
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x2d3c(%rip),%rax
imul   $0xfffffffe,(%rax),%eax
cvtsi2sd %eax,%xmm0
mulsd  -0x48(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xcfb(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <sqrt@plt>
movsd  -0x120(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
subsd  -0xa0(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xca1(%rip),%xmm1
addsd  -0xa8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x2c6e(%rip),%rax
cvtsi2sdl (%rax),%xmm1
movsd  0xc82(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    0x2c4a(%rip),%rax
mov    (%rax),%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
subsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x20(%rbp),%xmm0
cvttsd2si %xmm0,%edi
movsd  -0x30(%rbp),%xmm0
mov    0x2c1b(%rip),%rax
cvtsi2sdl (%rax),%xmm1
addsd  -0x38(%rbp),%xmm1
call   1050 <kepler_rv@plt>
movaps %xmm0,%xmm1
movsd  -0x110(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xbd4(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <sqrt@plt>
movsd  -0x108(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x2b70(%rip),%rax
mov    (%rax),%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xb30(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <sqrt@plt>
movsd  -0xf8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
subsd  -0xa0(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xad6(%rip),%xmm1
addsd  -0xa8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x2aa3(%rip),%rax
cvtsi2sdl (%rax),%xmm1
movsd  0xab7(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    0x2a7f(%rip),%rax
mov    (%rax),%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
subsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x20(%rbp),%xmm0
cvttsd2si %xmm0,%edi
movsd  -0x30(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
call   1050 <kepler_rv@plt>
movaps %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xa14(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <sqrt@plt>
movsd  -0xe0(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x29c5(%rip),%rax
mov    (%rax),%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
subsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x50(%rbp),%xmm0
cvttsd2si %xmm0,%edi
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
call   1050 <kepler_rv@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    0x28e1(%rip),%rax
mov    (%rax),%eax
add    $0x120,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<triorb_rv>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0xa8,%rsp
mov    %rsi,%r14
movapd %xmm0,%xmm5
movsd  %xmm0,0x18(%rsp)
mov    %rdi,%rbx
movsd  (%rdi),%xmm4
movsd  %xmm4,0x10(%rsp)
movsd  0x8(%rdi),%xmm3
movsd  %xmm3,0x50(%rsp)
movsd  0x10(%rdi),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x18(%rdi),%xmm1
movsd  %xmm1,0x48(%rsp)
movsd  0x20(%rdi),%xmm2
movsd  %xmm2,0x58(%rsp)
movsd  0x28(%rdi),%xmm2
movsd  %xmm2,(%rsp)
mov    0x2e54(%rip),%r15
mov    (%r15),%eax
add    %eax,%eax
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
subsd  %xmm3,%xmm5
movsd  %xmm5,0x40(%rsp)
mulsd  %xmm5,%xmm2
divsd  %xmm4,%xmm2
cvttsd2si %xmm2,%edi
call   1030 <kepler_lite@plt>
movsd  %xmm0,0x8(%rsp)
mov    (%r15),%eax
add    %eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x40(%rsp),%xmm0
divsd  0x10(%rsp),%xmm0
cvttsd2si %xmm0,%edi
movsd  0x20(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
call   1050 <kepler_rv@plt>
movapd %xmm0,%xmm1
movsd  %xmm0,0x38(%rsp)
movsd  0x30(%rbx),%xmm0
movsd  %xmm0,0x70(%rsp)
movsd  0x38(%rbx),%xmm0
movsd  %xmm0,0x68(%rsp)
movsd  0x40(%rbx),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x48(%rbx),%xmm0
movsd  %xmm0,0x78(%rsp)
mov    (%r15),%eax
add    %eax,%eax
neg    %eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x20(%rsp),%xmm0
mulsd  %xmm0,%xmm0
movsd  0xdad(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%ebp
movsd  0x58(%rbx),%xmm0
movaps %xmm0,0x80(%rsp)
movsd  0x50(%rbx),%xmm0
movapd %xmm0,0x90(%rsp)
mov    %ebp,%edi
call   1040 <sqrt@plt>
movsd  0x10(%rsp),%xmm3
mulsd  %xmm3,%xmm0
movsd  0x60(%rsp),%xmm5
divsd  %xmm0,%xmm5
movsd  0x8(%rsp),%xmm0
movsd  (%rsp),%xmm4
mulsd  %xmm4,%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x18(%rsp),%xmm1
addsd  %xmm1,%xmm0
movapd %xmm5,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
addsd  0xd3c(%rip),%xmm5
divsd  %xmm5,%xmm2
mov    (%r15),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x48(%rsp),%xmm1
addsd  %xmm0,%xmm1
mulsd  0xd24(%rip),%xmm0
mulsd  %xmm4,%xmm0
movsd  %xmm0,(%rsp)
add    %eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
subsd  0x50(%rsp),%xmm2
mulsd  %xmm0,%xmm2
divsd  %xmm3,%xmm2
cvttsd2si %xmm2,%edi
movsd  0x20(%rsp),%xmm0
call   1050 <kepler_rv@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    %ebp,%edi
call   1040 <sqrt@plt>
mulsd  0x10(%rsp),%xmm0
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
mov    (%r15),%eax
add    %eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x58(%rsp),%xmm0
mulsd  0x38(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
mov    %ebp,%edi
call   1040 <sqrt@plt>
movsd  0x10(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  0x38(%rsp),%xmm3
divsd  %xmm0,%xmm3
movapd %xmm3,%xmm0
movsd  0x18(%rsp),%xmm1
mulsd  %xmm1,%xmm0
subsd  0x8(%rsp),%xmm1
addsd  %xmm0,%xmm1
addsd  0xc6f(%rip),%xmm3
divsd  %xmm3,%xmm1
movsd  %xmm1,0x18(%rsp)
mov    (%r15),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xc5b(%rip),%xmm0
mulsd  0x58(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
add    %eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
subsd  0x50(%rsp),%xmm1
mulsd  %xmm0,%xmm1
divsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
movsd  0x20(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
call   1050 <kepler_rv@plt>
mulsd  0x8(%rsp),%xmm0
movapd %xmm0,0x20(%rsp)
mov    %ebp,%edi
call   1040 <sqrt@plt>
mulsd  0x10(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,0x20(%rsp)
mov    (%r15),%eax
add    %eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x18(%rsp),%xmm1
subsd  0x68(%rsp),%xmm1
mulsd  %xmm0,%xmm1
divsd  0x70(%rsp),%xmm1
cvttsd2si %xmm1,%edi
movsd  0x40(%rsp),%xmm0
movsd  0x78(%rsp),%xmm1
call   1050 <kepler_rv@plt>
movapd 0x80(%rsp),%xmm2
xorpd  0xbba(%rip),%xmm2
movapd 0x90(%rsp),%xmm1
unpcklpd %xmm2,%xmm1
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
movapd 0x20(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
addpd  %xmm0,%xmm1
movupd %xmm1,(%r14)
movsd  (%rsp),%xmm0
movsd  %xmm0,0x10(%r14)
mov    0x2b48(%rip),%rax
mov    (%rax),%eax
add    $0xa8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@M_PI = global i32 0
@EXIT_SUCCESS = global i32 0
define i32 @triorb_rv(double* nocapture %0, double %1, double* nocapture writeonly %2) {
%4 = load double, double* %0
%5 = getelementptr inbounds double, double* %0, i64 1
%6 = load double, double* %5
%7 = getelementptr inbounds double, double* %0, i64 2
%8 = load double, double* %7
%9 = getelementptr inbounds double, double* %0, i64 3
%10 = load double, double* %9
%11 = getelementptr inbounds double, double* %0, i64 4
%12 = load double, double* %11
%13 = getelementptr inbounds double, double* %0, i64 5
%14 = load double, double* %13
%15 = load i32, i32* @M_PI
%16 = shl nsw i32 %15, 1
%17 = sitofp i32 %16 to double
%18 = fsub double %1, %6
%19 = fmul double %18, %17
%20 = fdiv double %19, %4
%21 = fptosi double %20 to i32
%22 = tail call double @kepler_lite(i32 %21, double %8, double %10)
%23 = load i32, i32* @M_PI
%24 = shl nsw i32 %23, 1
%25 = sitofp i32 %24 to double
%26 = fmul double %18, %25
%27 = fdiv double %26, %4
%28 = fptosi double %27 to i32
%29 = tail call double @kepler_rv(i32 %28, double %8, double %10)
%30 = getelementptr inbounds double, double* %0, i64 6
%31 = load double, double* %30
%32 = getelementptr inbounds double, double* %0, i64 7
%33 = load double, double* %32
%34 = getelementptr inbounds double, double* %0, i64 8
%35 = load double, double* %34
%36 = getelementptr inbounds double, double* %0, i64 9
%37 = load double, double* %36
%38 = getelementptr inbounds double, double* %0, i64 10
%39 = load double, double* %38
%40 = getelementptr inbounds double, double* %0, i64 11
%41 = load double, double* %40
%42 = load i32, i32* @M_PI
%43 = mul nsw i32 %42, -2
%44 = sitofp i32 %43 to double
%45 = fmul double %14, %44
%46 = fmul double %29, %45
%47 = fneg double %8
%48 = tail call double @llvm.fmuladd.f64(double %47, double %8, double 1.000000e+00)
%49 = fptosi double %48 to i32
%50 = tail call double @sqrt(i32 %49)
%51 = fmul double %4, %50
%52 = fdiv double %46, %51
%53 = fmul double %14, %22
%54 = fadd double %53, %1
%55 = tail call double @llvm.fmuladd.f64(double %52, double %1, double %54)
%56 = fadd double %52, 1.000000e+00
%57 = fdiv double %55, %56
%58 = load i32, i32* @M_PI
%59 = sitofp i32 %58 to double
%60 = fmul double %59, 5.996000e+05
%61 = fmul double %14, %60
%62 = shl nsw i32 %58, 1
%63 = sitofp i32 %62 to double
%64 = fsub double %57, %6
%65 = fmul double %64, %63
%66 = fdiv double %65, %4
%67 = fptosi double %66 to i32
%68 = fadd double %10, %59
%69 = tail call double @kepler_rv(i32 %67, double %8, double %68)
%70 = fmul double %69, %61
%71 = tail call double @sqrt(i32 %49)
%72 = fmul double %4, %71
%73 = fdiv double %70, %72
%74 = load i32, i32* @M_PI
%75 = shl nsw i32 %74, 1
%76 = sitofp i32 %75 to double
%77 = fmul double %12, %76
%78 = fmul double %29, %77
%79 = tail call double @sqrt(i32 %49)
%80 = fmul double %4, %79
%81 = fdiv double %78, %80
%82 = fsub double %1, %53
%83 = tail call double @llvm.fmuladd.f64(double %81, double %1, double %82)
%84 = fadd double %81, 1.000000e+00
%85 = fdiv double %83, %84
%86 = load i32, i32* @M_PI
%87 = sitofp i32 %86 to double
%88 = fmul double %87, 5.996000e+05
%89 = fmul double %12, %88
%90 = shl nsw i32 %86, 1
%91 = sitofp i32 %90 to double
%92 = fsub double %85, %6
%93 = fmul double %92, %91
%94 = fdiv double %93, %4
%95 = fptosi double %94 to i32
%96 = tail call double @kepler_rv(i32 %95, double %8, double %10)
%97 = fmul double %96, %89
%98 = tail call double @sqrt(i32 %49)
%99 = fmul double %4, %98
%100 = fdiv double %97, %99
%101 = load i32, i32* @M_PI
%102 = shl nsw i32 %101, 1
%103 = sitofp i32 %102 to double
%104 = fsub double %85, %33
%105 = fmul double %104, %103
%106 = fdiv double %105, %31
%107 = fptosi double %106 to i32
%108 = tail call double @kepler_rv(i32 %107, double %35, double %37)
%109 = fneg double %41
%110 = insertelement <2 x double> poison, double %39, i64 0
%111 = insertelement <2 x double> %110, double %109, i64 1
%112 = insertelement <2 x double> poison, double %108, i64 0
%113 = shufflevector <2 x double> %112, <2 x double> poison, <2 x i32> zeroinitializer
%114 = insertelement <2 x double> poison, double %100, i64 0
%115 = shufflevector <2 x double> %114, <2 x double> poison, <2 x i32> zeroinitializer
%116 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %111, <2 x double> %113, <2 x double> %115)
%117 = bitcast double* %2 to <2 x double>*
store <2 x double> %116, <2 x double>* %117
%118 = getelementptr inbounds double, double* %2, i64 2
store double %73, double* %118
%119 = load i32, i32* @EXIT_SUCCESS
ret i32 %119
}