#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 acos(double);
double asin(double);
double cos(double);
double sin(double);
double sqrt(double);
void j2b(double yearobs, double alphain, double deltain, double *alphaout,
         double *deltaout) {
  int i, j;
  static double a[3] = {-1.62557e-6, -0.31919e-6, -0.13843e-6},
                ap[3] = {1.245e-3, -1.580e-3, -0.659e-3},
                m[6][6] = {{0.9999256794678425, 0.01118148281196562,
                            0.004859003848996022, -2.423898417033081e-06,
                            -2.710547600126671e-08, -1.177738063266745e-08},
                           {-0.01118148272969232, 0.9999374849247641,
                            -2.717708936468247e-05, 2.710547578707874e-08,
                            -2.423927042585208e-06, 6.588254898401055e-11},
                           {-0.00485900399622881, -2.715579322970546e-05,
                            0.999988194643078, 1.177738102358923e-08,
                            6.582788892816657e-11, -2.424049920613325e-06},
                           {-0.0005508458576414713, 0.2384844384742432,
                            -0.4356144527773499, 0.9999043171308133,
                            0.01118145410120206, 0.004858518651645554},
                           {-0.2385354433560954, -0.002664266996872802,
                            0.01225282765749546, -0.01118145417187502,
                            0.9999161290795875, -2.717034576263522e-05},
                           {0.4357269351676567, -0.008536768476441086,
                            0.002113420799663768, -0.004858518477064975,
                            -2.715994547222661e-05, 0.9999668385070383}},
                a1[3], r[3], ro[3], r1[3], r2[3], v1[3], v[3];
  static double cai, sai, cdi, sdi, dotp, rmod, alpha, delta, t1;
  t1 = ((yearobs - 2000.0) + (51544.50000 - 33281.92346) / 365.25) * 1.0000214 /
       100.0;
  alphain *= (3.1415926535898 / 180.0);
  deltain *= (3.1415926535898 / 180.0);
  cai = cos(alphain);
  sai = sin(alphain);
  cdi = cos(deltain);
  sdi = sin(deltain);
  r[0] = cdi * cai;
  r[1] = cdi * sai;
  r[2] = sdi;
  for (i = 0; i < 3; i++)
    v[i] = r2[i] = v1[i] = 0.0;
  for (j = 0; j < 6; j++)
    for (i = 0; i < 6; i++)
      if (j < 3)
        r2[j] += m[j][i] * (i < 3 ? r[i] : v[i - 3]);
      else
        v1[j - 3] += m[j][i] * (i < 3 ? r[i] : v[i - 3]);
  for (i = 0; i < 3; i++)
    r1[i] = r2[i] + v1[i] * ((3.1415926535898 / 180.0) / 3600.0) * t1;
  dotp = 0.0;
  for (i = 0; i < 3; i++) {
    a1[i] = a[i] + ap[i] * ((3.1415926535898 / 180.0) / 3600.0) * t1;
    dotp += a1[i] * (r1[i] + a1[i]);
  }
  dotp = 2.0 / (sqrt(1 + 4.0 * dotp) + 1.0);
  rmod = 0.0;
  for (i = 0; i < 3; i++) {
    ro[i] = dotp * (r1[i] + a1[i]);
    rmod += ro[i] * ro[i];
  }
  rmod = sqrt(rmod);
  delta = asin(ro[2] / rmod);
  alpha = acos(ro[0] / cos(delta) / rmod);
  if (ro[1] < 0)
    alpha = 2.0 * 3.1415926535898 - alpha;
  *alphaout = alpha / (3.1415926535898 / 180.0);
  *deltaout = delta / (3.1415926535898 / 180.0);
  return;
}


x86 assembly (clang, -O0):
<j2b>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
mov    %rdi,-0x20(%rbp)
mov    %rsi,-0x28(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xea4(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xe90(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xe7c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe68(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x312c(%rip)
movsd  0xe4c(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xe3a(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movsd  %xmm0,0x30b6(%rip)
movsd  -0x10(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x30ac(%rip)
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movsd  %xmm0,0x30a2(%rip)
movsd  -0x18(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x3098(%rip)
movsd  0x3088(%rip),%xmm0
mulsd  0x3070(%rip),%xmm0
movsd  %xmm0,0x2fb0(%rip)
movsd  0x3070(%rip),%xmm0
mulsd  0x3060(%rip),%xmm0
movsd  %xmm0,0x2fa0(%rip)
movsd  0x3060(%rip),%xmm0
movsd  %xmm0,0x2f98(%rip)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jge    12b0 <j2b+0x160>
movslq -0x2c(%rbp),%rcx
lea    0x2fec(%rip),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x2c(%rbp),%rcx
lea    0x2fb9(%rip),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x2c(%rbp),%rcx
lea    0x2fe6(%rip),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    125f <j2b+0x10f>
movl   $0x0,-0x30(%rbp)
cmpl   $0x6,-0x30(%rbp)
jge    1424 <j2b+0x2d4>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x6,-0x2c(%rbp)
jge    1411 <j2b+0x2c1>
cmpl   $0x3,-0x30(%rbp)
jge    136d <j2b+0x21d>
movslq -0x30(%rbp),%rcx
lea    0x2da9(%rip),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x38(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jge    1320 <j2b+0x1d0>
movslq -0x2c(%rbp),%rcx
lea    0x2ecf(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    133a <j2b+0x1ea>
mov    -0x2c(%rbp),%eax
sub    $0x3,%eax
movslq %eax,%rcx
lea    0x2f50(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movslq -0x30(%rbp),%rcx
lea    0x2ef1(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
lea    0x2edd(%rip),%rax
movsd  %xmm0,(%rax,%rcx,8)
jmp    13fe <j2b+0x2ae>
movslq -0x30(%rbp),%rcx
lea    0x2d18(%rip),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jge    13b1 <j2b+0x261>
movslq -0x2c(%rbp),%rcx
lea    0x2e3e(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    13cb <j2b+0x27b>
mov    -0x2c(%rbp),%eax
sub    $0x3,%eax
movslq %eax,%rcx
lea    0x2ebf(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
mov    -0x30(%rbp),%eax
sub    $0x3,%eax
movslq %eax,%rcx
lea    0x2e7b(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
lea    0x2e67(%rip),%rax
movsd  %xmm0,(%rax,%rcx,8)
jmp    1403 <j2b+0x2b3>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    12c8 <j2b+0x178>
jmp    1416 <j2b+0x2c6>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    12b7 <j2b+0x167>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jge    148b <j2b+0x33b>
movslq -0x2c(%rbp),%rcx
lea    0x2e00(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
movslq -0x2c(%rbp),%rcx
movsd  0xbf7(%rip),%xmm0
lea    0x2e08(%rip),%rax
mulsd  (%rax,%rcx,8),%xmm0
movsd  0x2e73(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movslq -0x2c(%rbp),%rcx
lea    0x2da8(%rip),%rax
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    142b <j2b+0x2db>
xorps  %xmm0,%xmm0
movsd  %xmm0,0x2e22(%rip)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jge    1545 <j2b+0x3f5>
movslq -0x2c(%rbp),%rcx
lea    0x2b9e(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
movslq -0x2c(%rbp),%rcx
movsd  0xb85(%rip),%xmm0
lea    0x2ba6(%rip),%rax
mulsd  (%rax,%rcx,8),%xmm0
movsd  0x2e01(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movslq -0x2c(%rbp),%rcx
lea    0x2cd6(%rip),%rax
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x2c(%rbp),%rcx
lea    0x2cc6(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movslq -0x2c(%rbp),%rcx
lea    0x2d16(%rip),%rax
movsd  (%rax,%rcx,8),%xmm2
movslq -0x2c(%rbp),%rcx
lea    0x2ca6(%rip),%rax
addsd  (%rax,%rcx,8),%xmm2
movsd  0x2d91(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2d81(%rip)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    149d <j2b+0x34d>
movsd  0x2d6b(%rip),%xmm0
movsd  0xae3(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xacf(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1070 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0xabb(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xaa7(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2d2b(%rip)
xorps  %xmm0,%xmm0
movsd  %xmm0,0x2d28(%rip)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jge    162b <j2b+0x4db>
movsd  0x2d07(%rip),%xmm0
movslq -0x2c(%rbp),%rcx
lea    0x2c64(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
movslq -0x2c(%rbp),%rcx
lea    0x2bf4(%rip),%rax
addsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
movslq -0x2c(%rbp),%rcx
lea    0x2c20(%rip),%rax
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x2c(%rbp),%rcx
lea    0x2c10(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movslq -0x2c(%rbp),%rcx
lea    0x2c00(%rip),%rax
movsd  (%rax,%rcx,8),%xmm2
movsd  0x2cb3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2ca3(%rip)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    159f <j2b+0x44f>
movsd  0x2c8d(%rip),%xmm0
call   1070 <sqrt@plt>
movsd  %xmm0,0x2c80(%rip)
movsd  0x2bc8(%rip),%xmm0
divsd  0x2c70(%rip),%xmm0
call   1050 <asin@plt>
movsd  %xmm0,0x2c73(%rip)
movsd  0x2b9b(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0x2c5e(%rip),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x58(%rbp),%xmm0
divsd  %xmm1,%xmm0
divsd  0x2c35(%rip),%xmm0
call   1030 <acos@plt>
movsd  %xmm0,0x2c30(%rip)
xorps  %xmm0,%xmm0
ucomisd 0x2b65(%rip),%xmm0
jbe    16c1 <j2b+0x571>
movsd  0x98f(%rip),%xmm0
subsd  0x2c0f(%rip),%xmm0
movsd  %xmm0,0x2c07(%rip)
movsd  0x2bff(%rip),%xmm0
movsd  0x92f(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x2beb(%rip),%xmm0
movsd  0x913(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<j2b>:
push   %r14
push   %rbx
sub    $0x18,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
addsd  0xe9b(%rip),%xmm0
addsd  0xe9b(%rip),%xmm0
mulsd  0xe9b(%rip),%xmm0
divsd  0xe9b(%rip),%xmm0
movsd  %xmm0,0x2fcb(%rip)
movsd  0xe93(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
mulsd  %xmm0,%xmm2
movsd  %xmm2,0x8(%rsp)
movapd %xmm1,%xmm0
call   1060 <cos@plt>
movsd  %xmm0,0x2f76(%rip)
movsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x2f6b(%rip)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
movsd  %xmm0,0x2f60(%rip)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x2f4d(%rip),%xmm1
movsd  0x2f35(%rip),%xmm2
mulsd  %xmm1,%xmm2
mulsd  0x2f31(%rip),%xmm1
xorpd  %xmm3,%xmm3
movapd %xmm3,0x2f05(%rip)
movq   $0x0,0x2f0a(%rip)
movapd %xmm3,0x2ed2(%rip)
movq   $0x0,0x2ed7(%rip)
lea    0xe78(%rip),%rax
lea    0x2eb9(%rip),%rcx
xor    %edx,%edx
lea    0x2ed0(%rip),%rsi
xorpd  %xmm3,%xmm3
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    -0x3(%rdx),%edi
cmp    $0x3,%rdx
lea    (%rsi,%rdi,8),%rdi
cmovb  %rcx,%rdi
movsd  -0x28(%rax),%xmm4
mulsd  %xmm2,%xmm4
addsd  (%rdi),%xmm4
movsd  %xmm4,(%rdi)
movsd  -0x20(%rax),%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm4,%xmm5
movsd  %xmm5,(%rdi)
movsd  -0x18(%rax),%xmm4
mulsd  %xmm0,%xmm4
addsd  %xmm5,%xmm4
movsd  %xmm4,(%rdi)
movsd  -0x10(%rax),%xmm5
mulsd  %xmm3,%xmm5
addsd  %xmm4,%xmm5
movsd  %xmm5,(%rdi)
movsd  -0x8(%rax),%xmm4
mulsd  %xmm3,%xmm4
addsd  %xmm5,%xmm4
movsd  %xmm4,(%rdi)
movsd  (%rax),%xmm5
mulsd  %xmm3,%xmm5
addsd  %xmm4,%xmm5
movsd  %xmm5,(%rdi)
add    $0x1,%rdx
add    $0x30,%rax
add    $0x8,%rcx
cmp    $0x6,%rdx
jne    1250 <j2b+0x100>
movsd  0x2e6e(%rip),%xmm1
movsd  0xd3e(%rip),%xmm0
movsd  0x2e1e(%rip),%xmm3
mulsd  %xmm0,%xmm3
mulsd  %xmm1,%xmm3
addsd  0x2dee(%rip),%xmm3
movsd  %xmm3,0x2db6(%rip)
movsd  0x2e06(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm1,%xmm2
addsd  0x2dd6(%rip),%xmm2
mulsd  0x2df6(%rip),%xmm0
movsd  %xmm2,0x2d9e(%rip)
mulsd  %xmm1,%xmm0
addsd  0x2dc2(%rip),%xmm0
movsd  0xcea(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xce6(%rip),%xmm4
movsd  %xmm0,0x2d86(%rip)
movsd  %xmm4,0x2cfe(%rip)
addsd  %xmm4,%xmm3
mulsd  %xmm4,%xmm3
xorpd  %xmm5,%xmm5
addsd  %xmm5,%xmm3
movsd  0xcc6(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xcc2(%rip),%xmm4
movsd  %xmm4,0x2ce2(%rip)
addsd  %xmm4,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  0xcae(%rip),%xmm1
addsd  0xcae(%rip),%xmm1
movsd  %xmm1,0x2cce(%rip)
addsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
mulsd  0xc9a(%rip),%xmm0
addsd  0xc9a(%rip),%xmm0
ucomisd %xmm5,%xmm0
jb     13da <j2b+0x28a>
sqrtsd %xmm0,%xmm0
jmp    13e3 <j2b+0x293>
call   1070 <sqrt@plt>
xorpd  %xmm5,%xmm5
addsd  0xc7d(%rip),%xmm0
movsd  0xc7d(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0x2cc1(%rip),%xmm0
addsd  0x2c59(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2c7d(%rip)
mulsd  %xmm0,%xmm0
addsd  %xmm5,%xmm0
movsd  0x2cad(%rip),%xmm2
addsd  0x2c45(%rip),%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x2c69(%rip)
mulsd  %xmm2,%xmm2
addsd  %xmm0,%xmm2
movsd  0x2c99(%rip),%xmm0
addsd  0x2c31(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2c55(%rip)
mulsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm5,%xmm0
jb     146f <j2b+0x31f>
sqrtsd %xmm0,%xmm0
jmp    1474 <j2b+0x324>
call   1070 <sqrt@plt>
movsd  %xmm0,0x2cc4(%rip)
movsd  0x2c2c(%rip),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
call   1050 <asin@plt>
movsd  %xmm0,0x2caf(%rip)
movsd  0x2bef(%rip),%xmm1
movsd  %xmm1,0x8(%rsp)
call   1060 <cos@plt>
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
divsd  0x2c82(%rip),%xmm1
movapd %xmm1,%xmm0
call   1030 <acos@plt>
movsd  0x2bd1(%rip),%xmm1
movsd  0xba1(%rip),%xmm2
subsd  %xmm0,%xmm2
xorpd  %xmm3,%xmm3
cmpltsd %xmm3,%xmm1
andpd  %xmm1,%xmm2
andnpd %xmm0,%xmm1
orpd   %xmm2,%xmm1
movsd  0xb28(%rip),%xmm2
divsd  %xmm2,%xmm1
movsd  %xmm1,(%rbx)
movsd  0x2c40(%rip),%xmm0
divsd  %xmm2,%xmm0
movsd  %xmm0,(%r14)
add    $0x18,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@j2b.a = internal global [3 x double] [double -1.625570e-06, double -3.191900e-07, double -1.384300e-07]
@j2b.ap = internal global [3 x double] [double 1.245000e-03, double -1.580000e-03, double -6.590000e-04]
@j2b.m = internal global [6 x [6 x double]] [[6 x double] [double 0x3FEFFF642377D6BB, double 0x3F86E65137FC44FC, double 0x3F73E708E9F6124A, double 0xBEC455483F3DDF7A, double 0xBE5D1AB24E79DC5D, double 0xBE494AAEF83ABD6E], [6 x double] [double 0xBF86E651352895FC, double 0x3FEFFF7CE5797BBD, double 0xBEFC7F4B5C3FCC74, double 0x3E5D1AB24A9E17D7, double 0xBEC45557FBEE1481, double 0x3DD21C127E0206FA], [6 x double] [double 0xBF73E708F41437D2, double 0xBEFC7993E6AE4073, double 0x3FEFFFE73E0C196A, double 0x3E494AAF06505B63, double 0x3DD21839D2FE1C23, double 0xBEC4559B89799CFB], [6 x double] [double 0xBF420CD478CB65B1, double 0x3FCE86A877ED07BD, double 0xBFDBE11B7115FE6E, double 0x3FEFFF3756A69802, double 0x3F86E64D5D7DB8F3, double 0x3F73E686AB740386], [6 x double] [double 0xBFCE885454135D7A, double 0xBF65D35F73D1F7B9, double 0x3F891802B09469BB, double 0xBF86E64D5FEB5E4F, double 0x3FEFFF501C2478C6, double 0xBEFC7D7BF18C21AB], [6 x double] [double 0x3FDBE2F33A22026C, double 0xBF817BB9AB5BD423, double 0x3F61502A26F3A59A, double 0xBF73E6869F74C27E, double 0xBEFC7AB13DB41F6D, double 0x3FEFFFBA748F1C9D]]
@j2b.a1 = internal global [3 x double] zeroinitializer
@j2b.r = internal global [3 x double] zeroinitializer
@j2b.ro = internal global [3 x double] zeroinitializer
@j2b.r1 = internal global [3 x double] zeroinitializer
@j2b.r2 = internal global [3 x double] zeroinitializer
@j2b.v1 = internal global [3 x double] zeroinitializer
@j2b.v = internal global [3 x double] zeroinitializer
@j2b.cai = internal global double 0.000000e+00
@j2b.sai = internal global double 0.000000e+00
@j2b.cdi = internal global double 0.000000e+00
@j2b.sdi = internal global double 0.000000e+00
@j2b.dotp = internal global double 0.000000e+00
@j2b.rmod = internal global double 0.000000e+00
@j2b.alpha = internal global double 0.000000e+00
@j2b.delta = internal global double 0.000000e+00
@j2b.t1 = internal global double 0.000000e+00
define void @j2b(double %0, double %1, double %2, double* %3, double* %4) {
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double*
%10 = alloca double*
%11 = alloca i32
%12 = alloca i32
store double %0, double* %6
store double %1, double* %7
store double %2, double* %8
store double* %3, double** %9
store double* %4, double** %10
%13 = load double, double* %6
%14 = fsub double %13, 2.000000e+03
%15 = fadd double %14, 0x40490006DDE02625
%16 = fmul double %15, 0x3FF000167084CD5A
%17 = fdiv double %16, 1.000000e+02
store double %17, double* @j2b.t1
%18 = load double, double* %7
%19 = fmul double %18, 0x3F91DF46A2529D44
store double %19, double* %7
%20 = load double, double* %8
%21 = fmul double %20, 0x3F91DF46A2529D44
store double %21, double* %8
%22 = load double, double* %7
%23 = call double @cos(double %22)
store double %23, double* @j2b.cai
%24 = load double, double* %7
%25 = call double @sin(double %24)
store double %25, double* @j2b.sai
%26 = load double, double* %8
%27 = call double @cos(double %26)
store double %27, double* @j2b.cdi
%28 = load double, double* %8
%29 = call double @sin(double %28)
store double %29, double* @j2b.sdi
%30 = load double, double* @j2b.cdi
%31 = load double, double* @j2b.cai
%32 = fmul double %30, %31
store double %32, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.r, i64 0, i64 0)
%33 = load double, double* @j2b.cdi
%34 = load double, double* @j2b.sai
%35 = fmul double %33, %34
store double %35, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.r, i64 0, i64 1)
%36 = load double, double* @j2b.sdi
store double %36, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.r, i64 0, i64 2)
store i32 0, i32* %11
br label %37
37: ; preds = %50, %5
%38 = load i32, i32* %11
%39 = icmp slt i32 %38, 3
br i1 %39, label %40, label %53
40: ; preds = %37
%41 = load i32, i32* %11
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds [3 x double], [3 x double]* @j2b.v1, i64 0, i64 %42
store double 0.000000e+00, double* %43
%44 = load i32, i32* %11
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r2, i64 0, i64 %45
store double 0.000000e+00, double* %46
%47 = load i32, i32* %11
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [3 x double], [3 x double]* @j2b.v, i64 0, i64 %48
store double 0.000000e+00, double* %49
br label %50
50: ; preds = %40
%51 = load i32, i32* %11
%52 = add nsw i32 %51, 1
store i32 %52, i32* %11
br label %37
53: ; preds = %37
store i32 0, i32* %12
br label %54
54: ; preds = %126, %53
%55 = load i32, i32* %12
%56 = icmp slt i32 %55, 6
br i1 %56, label %57, label %129
57: ; preds = %54
store i32 0, i32* %11
br label %58
58: ; preds = %122, %57
%59 = load i32, i32* %11
%60 = icmp slt i32 %59, 6
br i1 %60, label %61, label %125
61: ; preds = %58
%62 = load i32, i32* %12
%63 = icmp slt i32 %62, 3
br i1 %63, label %64, label %92
64: ; preds = %61
%65 = load i32, i32* %12
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds [6 x [6 x double]], [6 x [6 x double]]* @j2b.m, i64 0, i64 %66
%68 = load i32, i32* %11
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds [6 x double], [6 x double]* %67, i64 0, i64 %69
%71 = load double, double* %70
%72 = load i32, i32* %11
%73 = icmp slt i32 %72, 3
br i1 %73, label %74, label %79
74: ; preds = %64
%75 = load i32, i32* %11
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r, i64 0, i64 %76
%78 = load double, double* %77
br label %85
79: ; preds = %64
%80 = load i32, i32* %11
%81 = sub nsw i32 %80, 3
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [3 x double], [3 x double]* @j2b.v, i64 0, i64 %82
%84 = load double, double* %83
br label %85
85: ; preds = %79, %74
%86 = phi double [ %78, %74 ], [ %84, %79 ]
%87 = load i32, i32* %12
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r2, i64 0, i64 %88
%90 = load double, double* %89
%91 = call double @llvm.fmuladd.f64(double %71, double %86, double %90)
store double %91, double* %89
br label %121
92: ; preds = %61
%93 = load i32, i32* %12
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds [6 x [6 x double]], [6 x [6 x double]]* @j2b.m, i64 0, i64 %94
%96 = load i32, i32* %11
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [6 x double], [6 x double]* %95, i64 0, i64 %97
%99 = load double, double* %98
%100 = load i32, i32* %11
%101 = icmp slt i32 %100, 3
br i1 %101, label %102, label %107
102: ; preds = %92
%103 = load i32, i32* %11
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r, i64 0, i64 %104
%106 = load double, double* %105
br label %113
107: ; preds = %92
%108 = load i32, i32* %11
%109 = sub nsw i32 %108, 3
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds [3 x double], [3 x double]* @j2b.v, i64 0, i64 %110
%112 = load double, double* %111
br label %113
113: ; preds = %107, %102
%114 = phi double [ %106, %102 ], [ %112, %107 ]
%115 = load i32, i32* %12
%116 = sub nsw i32 %115, 3
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [3 x double], [3 x double]* @j2b.v1, i64 0, i64 %117
%119 = load double, double* %118
%120 = call double @llvm.fmuladd.f64(double %99, double %114, double %119)
store double %120, double* %118
br label %121
121: ; preds = %113, %85
br label %122
122: ; preds = %121
%123 = load i32, i32* %11
%124 = add nsw i32 %123, 1
store i32 %124, i32* %11
br label %58
125: ; preds = %58
br label %126
126: ; preds = %125
%127 = load i32, i32* %12
%128 = add nsw i32 %127, 1
store i32 %128, i32* %12
br label %54
129: ; preds = %54
store i32 0, i32* %11
br label %130
130: ; preds = %148, %129
%131 = load i32, i32* %11
%132 = icmp slt i32 %131, 3
br i1 %132, label %133, label %151
133: ; preds = %130
%134 = load i32, i32* %11
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r2, i64 0, i64 %135
%137 = load double, double* %136
%138 = load i32, i32* %11
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds [3 x double], [3 x double]* @j2b.v1, i64 0, i64 %139
%141 = load double, double* %140
%142 = fmul double %141, 0x3ED455A5B2FF8FAA
%143 = load double, double* @j2b.t1
%144 = call double @llvm.fmuladd.f64(double %142, double %143, double %137)
%145 = load i32, i32* %11
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r1, i64 0, i64 %146
store double %144, double* %147
br label %148
148: ; preds = %133
%149 = load i32, i32* %11
%150 = add nsw i32 %149, 1
store i32 %150, i32* %11
br label %130
151: ; preds = %130
store double 0.000000e+00, double* @j2b.dotp
store i32 0, i32* %11
br label %152
152: ; preds = %185, %151
%153 = load i32, i32* %11
%154 = icmp slt i32 %153, 3
br i1 %154, label %155, label %188
155: ; preds = %152
%156 = load i32, i32* %11
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds [3 x double], [3 x double]* @j2b.a, i64 0, i64 %157
%159 = load double, double* %158
%160 = load i32, i32* %11
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds [3 x double], [3 x double]* @j2b.ap, i64 0, i64 %161
%163 = load double, double* %162
%164 = fmul double %163, 0x3ED455A5B2FF8FAA
%165 = load double, double* @j2b.t1
%166 = call double @llvm.fmuladd.f64(double %164, double %165, double %159)
%167 = load i32, i32* %11
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds [3 x double], [3 x double]* @j2b.a1, i64 0, i64 %168
store double %166, double* %169
%170 = load i32, i32* %11
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds [3 x double], [3 x double]* @j2b.a1, i64 0, i64 %171
%173 = load double, double* %172
%174 = load i32, i32* %11
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r1, i64 0, i64 %175
%177 = load double, double* %176
%178 = load i32, i32* %11
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds [3 x double], [3 x double]* @j2b.a1, i64 0, i64 %179
%181 = load double, double* %180
%182 = fadd double %177, %181
%183 = load double, double* @j2b.dotp
%184 = call double @llvm.fmuladd.f64(double %173, double %182, double %183)
store double %184, double* @j2b.dotp
br label %185
185: ; preds = %155
%186 = load i32, i32* %11
%187 = add nsw i32 %186, 1
store i32 %187, i32* %11
br label %152
188: ; preds = %152
%189 = load double, double* @j2b.dotp
%190 = call double @llvm.fmuladd.f64(double 4.000000e+00, double %189, double 1.000000e+00)
%191 = call double @sqrt(double %190)
%192 = fadd double %191, 1.000000e+00
%193 = fdiv double 2.000000e+00, %192
store double %193, double* @j2b.dotp
store double 0.000000e+00, double* @j2b.rmod
store i32 0, i32* %11
br label %194
194: ; preds = %222, %188
%195 = load i32, i32* %11
%196 = icmp slt i32 %195, 3
br i1 %196, label %197, label %225
197: ; preds = %194
%198 = load double, double* @j2b.dotp
%199 = load i32, i32* %11
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r1, i64 0, i64 %200
%202 = load double, double* %201
%203 = load i32, i32* %11
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds [3 x double], [3 x double]* @j2b.a1, i64 0, i64 %204
%206 = load double, double* %205
%207 = fadd double %202, %206
%208 = fmul double %198, %207
%209 = load i32, i32* %11
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds [3 x double], [3 x double]* @j2b.ro, i64 0, i64 %210
store double %208, double* %211
%212 = load i32, i32* %11
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [3 x double], [3 x double]* @j2b.ro, i64 0, i64 %213
%215 = load double, double* %214
%216 = load i32, i32* %11
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [3 x double], [3 x double]* @j2b.ro, i64 0, i64 %217
%219 = load double, double* %218
%220 = load double, double* @j2b.rmod
%221 = call double @llvm.fmuladd.f64(double %215, double %219, double %220)
store double %221, double* @j2b.rmod
br label %222
222: ; preds = %197
%223 = load i32, i32* %11
%224 = add nsw i32 %223, 1
store i32 %224, i32* %11
br label %194
225: ; preds = %194
%226 = load double, double* @j2b.rmod
%227 = call double @sqrt(double %226)
store double %227, double* @j2b.rmod
%228 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.ro, i64 0, i64 2)
%229 = load double, double* @j2b.rmod
%230 = fdiv double %228, %229
%231 = call double @asin(double %230)
store double %231, double* @j2b.delta
%232 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.ro, i64 0, i64 0)
%233 = load double, double* @j2b.delta
%234 = call double @cos(double %233)
%235 = fdiv double %232, %234
%236 = load double, double* @j2b.rmod
%237 = fdiv double %235, %236
%238 = call double @acos(double %237)
store double %238, double* @j2b.alpha
%239 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.ro, i64 0, i64 1)
%240 = fcmp olt double %239, 0.000000e+00
br i1 %240, label %241, label %244
241: ; preds = %225
%242 = load double, double* @j2b.alpha
%243 = fsub double 0x401921FB54442D28, %242
store double %243, double* @j2b.alpha
br label %244
244: ; preds = %241, %225
%245 = load double, double* @j2b.alpha
%246 = fdiv double %245, 0x3F91DF46A2529D44
%247 = load double*, double** %9
store double %246, double* %247
%248 = load double, double* @j2b.delta
%249 = fdiv double %248, 0x3F91DF46A2529D44
%250 = load double*, double** %10
store double %249, double* %250
ret void
}

LLVM IR (-O2):
@j2b.m = internal unnamed_addr constant [6 x [6 x double]] [[6 x double] [double 0x3FEFFF642377D6BB, double 0x3F86E65137FC44FC, double 0x3F73E708E9F6124A, double 0xBEC455483F3DDF7A, double 0xBE5D1AB24E79DC5D, double 0xBE494AAEF83ABD6E], [6 x double] [double 0xBF86E651352895FC, double 0x3FEFFF7CE5797BBD, double 0xBEFC7F4B5C3FCC74, double 0x3E5D1AB24A9E17D7, double 0xBEC45557FBEE1481, double 0x3DD21C127E0206FA], [6 x double] [double 0xBF73E708F41437D2, double 0xBEFC7993E6AE4073, double 0x3FEFFFE73E0C196A, double 0x3E494AAF06505B63, double 0x3DD21839D2FE1C23, double 0xBEC4559B89799CFB], [6 x double] [double 0xBF420CD478CB65B1, double 0x3FCE86A877ED07BD, double 0xBFDBE11B7115FE6E, double 0x3FEFFF3756A69802, double 0x3F86E64D5D7DB8F3, double 0x3F73E686AB740386], [6 x double] [double 0xBFCE885454135D7A, double 0xBF65D35F73D1F7B9, double 0x3F891802B09469BB, double 0xBF86E64D5FEB5E4F, double 0x3FEFFF501C2478C6, double 0xBEFC7D7BF18C21AB], [6 x double] [double 0x3FDBE2F33A22026C, double 0xBF817BB9AB5BD423, double 0x3F61502A26F3A59A, double 0xBF73E6869F74C27E, double 0xBEFC7AB13DB41F6D, double 0x3FEFFFBA748F1C9D]]
@j2b.a1.0 = internal unnamed_addr global double 0.000000e+00
@j2b.a1.1 = internal unnamed_addr global double 0.000000e+00
@j2b.a1.2 = internal unnamed_addr global double 0.000000e+00
@j2b.ro.0 = internal unnamed_addr global double 0.000000e+00
@j2b.ro.1 = internal unnamed_addr global double 0.000000e+00
@j2b.ro.2 = internal unnamed_addr global double 0.000000e+00
@j2b.r1.0 = internal unnamed_addr global double 0.000000e+00
@j2b.r1.1 = internal unnamed_addr global double 0.000000e+00
@j2b.r1.2 = internal unnamed_addr global double 0.000000e+00
@j2b.r2 = internal unnamed_addr global [3 x double] zeroinitializer
@j2b.v1 = internal unnamed_addr global [3 x double] zeroinitializer
@j2b.cai = internal unnamed_addr global double 0.000000e+00
@j2b.sai = internal unnamed_addr global double 0.000000e+00
@j2b.cdi = internal unnamed_addr global double 0.000000e+00
@j2b.rmod = internal unnamed_addr global double 0.000000e+00
@j2b.delta = internal unnamed_addr global double 0.000000e+00
@j2b.t1 = internal unnamed_addr global double 0.000000e+00
define void @j2b(double %0, double %1, double %2, double* nocapture writeonly %3, double* nocapture writeonly %4) {
%6 = fadd double %0, -2.000000e+03
%7 = fadd double %6, 0x40490006DDE02625
%8 = fmul double %7, 0x3FF000167084CD5A
%9 = fdiv double %8, 1.000000e+02
store double %9, double* @j2b.t1
%10 = fmul double %1, 0x3F91DF46A2529D44
%11 = fmul double %2, 0x3F91DF46A2529D44
%12 = tail call double @cos(double %10)
store double %12, double* @j2b.cai
%13 = tail call double @sin(double %10)
store double %13, double* @j2b.sai
%14 = tail call double @cos(double %11)
store double %14, double* @j2b.cdi
%15 = tail call double @sin(double %11)
%16 = load double, double* @j2b.cdi
%17 = load double, double* @j2b.cai
%18 = fmul double %16, %17
%19 = load double, double* @j2b.sai
%20 = fmul double %16, %19
br label %21
21: ; preds = %5, %21
%22 = phi i64 [ 0, %5 ], [ %48, %21 ]
%23 = icmp ult i64 %22, 3
%24 = add nuw i64 %22, 4294967293
%25 = and i64 %24, 4294967295
%26 = getelementptr inbounds [3 x double], [3 x double]* @j2b.v1, i64 0, i64 %25
%27 = getelementptr inbounds [3 x double], [3 x double]* @j2b.r2, i64 0, i64 %22
%28 = getelementptr inbounds [6 x [6 x double]], [6 x [6 x double]]* @j2b.m, i64 0, i64 %22, i64 0
%29 = load double, double* %28
%30 = select i1 %23, double* %27, double* %26
%31 = load double, double* %30
%32 = tail call double @llvm.fmuladd.f64(double %29, double %18, double %31)
store double %32, double* %30
%33 = getelementptr inbounds [6 x [6 x double]], [6 x [6 x double]]* @j2b.m, i64 0, i64 %22, i64 1
%34 = load double, double* %33
%35 = tail call double @llvm.fmuladd.f64(double %34, double %20, double %32)
store double %35, double* %30
%36 = getelementptr inbounds [6 x [6 x double]], [6 x [6 x double]]* @j2b.m, i64 0, i64 %22, i64 2
%37 = load double, double* %36
%38 = tail call double @llvm.fmuladd.f64(double %37, double %15, double %35)
store double %38, double* %30
%39 = getelementptr inbounds [6 x [6 x double]], [6 x [6 x double]]* @j2b.m, i64 0, i64 %22, i64 3
%40 = load double, double* %39
%41 = tail call double @llvm.fmuladd.f64(double %40, double 0.000000e+00, double %38)
store double %41, double* %30
%42 = getelementptr inbounds [6 x [6 x double]], [6 x [6 x double]]* @j2b.m, i64 0, i64 %22, i64 4
%43 = load double, double* %42
%44 = tail call double @llvm.fmuladd.f64(double %43, double 0.000000e+00, double %41)
store double %44, double* %30
%45 = getelementptr inbounds [6 x [6 x double]], [6 x [6 x double]]* @j2b.m, i64 0, i64 %22, i64 5
%46 = load double, double* %45
%47 = tail call double @llvm.fmuladd.f64(double %46, double 0.000000e+00, double %44)
store double %47, double* %30
%48 = add nuw nsw i64 %22, 1
%49 = icmp eq i64 %48, 6
br i1 %49, label %50, label %21
50: ; preds = %21
%51 = load double, double* @j2b.t1
%52 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.r2, i64 0, i64 0)
%53 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.v1, i64 0, i64 0)
%54 = fmul double %53, 0x3ED455A5B2FF8FAA
%55 = tail call double @llvm.fmuladd.f64(double %54, double %51, double %52)
store double %55, double* @j2b.r1.0
%56 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.r2, i64 0, i64 1)
%57 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.v1, i64 0, i64 1)
%58 = fmul double %57, 0x3ED455A5B2FF8FAA
%59 = tail call double @llvm.fmuladd.f64(double %58, double %51, double %56)
store double %59, double* @j2b.r1.1
%60 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.r2, i64 0, i64 2)
%61 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @j2b.v1, i64 0, i64 2)
%62 = fmul double %61, 0x3ED455A5B2FF8FAA
%63 = tail call double @llvm.fmuladd.f64(double %62, double %51, double %60)
store double %63, double* @j2b.r1.2
%64 = tail call double @llvm.fmuladd.f64(double %51, double 0x3E39EC935958D0B7, double -1.625570e-06)
store double %64, double* @j2b.a1.0
%65 = fadd double %64, %55
%66 = tail call double @llvm.fmuladd.f64(double %64, double %65, double 0.000000e+00)
%67 = tail call double @llvm.fmuladd.f64(double %51, double 0xBE4073291098FFCF, double -3.191900e-07)
store double %67, double* @j2b.a1.1
%68 = fadd double %67, %59
%69 = tail call double @llvm.fmuladd.f64(double %67, double %68, double %66)
%70 = tail call double @llvm.fmuladd.f64(double %51, double 0xBE2B71B547C2FBCB, double -1.384300e-07)
store double %70, double* @j2b.a1.2
%71 = fadd double %70, %63
%72 = tail call double @llvm.fmuladd.f64(double %70, double %71, double %69)
%73 = tail call double @llvm.fmuladd.f64(double %72, double 4.000000e+00, double 1.000000e+00)
%74 = tail call double @sqrt(double %73)
%75 = fadd double %74, 1.000000e+00
%76 = fdiv double 2.000000e+00, %75
%77 = load double, double* @j2b.r1.0
%78 = load double, double* @j2b.a1.0
%79 = fadd double %77, %78
%80 = fmul double %76, %79
store double %80, double* @j2b.ro.0
%81 = tail call double @llvm.fmuladd.f64(double %80, double %80, double 0.000000e+00)
%82 = load double, double* @j2b.r1.1
%83 = load double, double* @j2b.a1.1
%84 = fadd double %82, %83
%85 = fmul double %76, %84
store double %85, double* @j2b.ro.1
%86 = tail call double @llvm.fmuladd.f64(double %85, double %85, double %81)
%87 = load double, double* @j2b.r1.2
%88 = load double, double* @j2b.a1.2
%89 = fadd double %87, %88
%90 = fmul double %76, %89
store double %90, double* @j2b.ro.2
%91 = tail call double @llvm.fmuladd.f64(double %90, double %90, double %86)
%92 = tail call double @sqrt(double %91)
store double %92, double* @j2b.rmod
%93 = load double, double* @j2b.ro.2
%94 = fdiv double %93, %92
%95 = tail call double @asin(double %94)
store double %95, double* @j2b.delta
%96 = load double, double* @j2b.ro.0
%97 = tail call double @cos(double %95)
%98 = fdiv double %96, %97
%99 = load double, double* @j2b.rmod
%100 = fdiv double %98, %99
%101 = tail call double @acos(double %100)
%102 = load double, double* @j2b.ro.1
%103 = fcmp olt double %102, 0.000000e+00
%104 = fsub double 0x401921FB54442D28, %101
%105 = select i1 %103, double %104, double %101
%106 = fdiv double %105, 0x3F91DF46A2529D44
store double %106, double* %3
%107 = load double, double* @j2b.delta
%108 = fdiv double %107, 0x3F91DF46A2529D44
store double %108, double* %4
ret void
}