#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 atan2(double, double);
double const cos(double);
double sin(double);
double sqrt(double);
void GPS_ComputeSatellitePositionAndVelocity(
    const unsigned short transmission_gpsweek, const double transmission_gpstow,
    const unsigned short ephem_week, const unsigned toe, const double m0,
    const double delta_n, const double ecc, const double sqrta,
    const double omega0, const double i0, const double w, const double omegadot,
    const double idot, const double cuc, const double cus, const double crc,
    const double crs, const double cic, const double cis,
    const double estimateOfTrueRange, const double estimteOfRangeRate,
    double *x, double *y, double *z, double *vx, double *vy, double *vz) {
  unsigned char j;
  double tot;
  double tk;
  double a;
  double n;
  double M;
  double E;
  double v;
  double u;
  double r;
  double i;
  double cos2u;
  double sin2u;
  double d_u;
  double d_r;
  double d_i;
  double x_op;
  double y_op;
  double omegak;
  double cos_omegak;
  double sin_omegak;
  double cosu;
  double sinu;
  double cosi;
  double sini;
  double cosE;
  double sinE;
  double omegadotk;
  double edot;
  double vdot;
  double udot;
  double idotdot;
  double rdot;
  double tmpa;
  double tmpb;
  double vx_op;
  double vy_op;
  tot = transmission_gpsweek * (604800.0) + transmission_gpstow;
  tk = tot - (ephem_week * (604800.0) + toe);
  a = sqrta * sqrta;
  n = sqrt((3.986005e14) / (a * a * a));
  n += delta_n;
  M = m0 + n * tk;
  E = M;
  for (j = 0; j < 7; j++) {
    E = M + ecc * sin(E);
  }
  cosE = cos(E);
  sinE = sin(E);
  v = atan2((sqrt(1.0 - ecc * ecc) * sinE), (cosE - ecc));
  u = v + w;
  r = a * (1.0 - ecc * cos(E));
  i = i0;
  cos2u = cos(2.0 * u);
  sin2u = sin(2.0 * u);
  d_u = cuc * cos2u + cus * sin2u;
  d_r = crc * cos2u + crs * sin2u;
  d_i = cic * cos2u + cis * sin2u;
  u += d_u;
  r += d_r;
  i += d_i + idot * tk;
  cosu = cos(u);
  sinu = sin(u);
  x_op = r * cosu;
  y_op = r * sinu;
  omegak = omega0 + (omegadot - (7.2921151467e-05)) * tk -
           (7.2921151467e-05) * (toe + estimateOfTrueRange / (299792458.0));
  cos_omegak = cos(omegak);
  sin_omegak = sin(omegak);
  cosi = cos(i);
  sini = sin(i);
  *x = x_op * cos_omegak - y_op * sin_omegak * cosi;
  *y = x_op * sin_omegak + y_op * cos_omegak * cosi;
  *z = y_op * sini;
  cos2u = cos(2.0 * u);
  sin2u = sin(2.0 * u);
  edot = n / (1.0 - ecc * cosE);
  vdot = sinE * edot * (1.0 + ecc * cos(v)) / (sin(v) * (1.0 - ecc * cosE));
  udot = vdot + 2.0 * (cus * cos2u - cuc * sin2u) * vdot;
  rdot = a * ecc * sinE * n / (1.0 - ecc * cosE) +
         2.0 * (crs * cos2u - crc * sin2u) * vdot;
  idotdot = idot + (cis * cos2u - cic * sin2u) * 2.0 * vdot;
  vx_op = rdot * cosu - y_op * udot;
  vy_op = rdot * sinu + x_op * udot;
  omegadotk = omegadot -
              (7.2921151467e-05) * (1.0 + estimteOfRangeRate / (299792458.0));
  tmpa = vx_op - y_op * cosi * omegadotk;
  tmpb = x_op * omegadotk + vy_op * cosi - y_op * sini * idotdot;
  *vx = tmpa * cos_omegak - tmpb * sin_omegak;
  *vy = tmpa * sin_omegak + tmpb * cos_omegak;
  *vz = vy_op * sini + y_op * cosi * idotdot;
}


x86 assembly (clang, -O0):
<GPS_ComputeSatellitePositionAndVelocity>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1d0,%rsp
mov    %si,%ax
mov    %di,%si
mov    0x70(%rbp),%rdi
mov    0x68(%rbp),%rdi
mov    0x60(%rbp),%rdi
movsd  0x58(%rbp),%xmm8
movsd  0x50(%rbp),%xmm8
movsd  0x48(%rbp),%xmm8
movsd  0x40(%rbp),%xmm8
movsd  0x38(%rbp),%xmm8
movsd  0x30(%rbp),%xmm8
movsd  0x28(%rbp),%xmm8
movsd  0x20(%rbp),%xmm8
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
mov    %si,-0x2(%rbp)
movsd  %xmm0,-0x10(%rbp)
mov    %ax,-0x12(%rbp)
mov    %edx,-0x18(%rbp)
movsd  %xmm1,-0x20(%rbp)
movsd  %xmm2,-0x28(%rbp)
movsd  %xmm3,-0x30(%rbp)
movsd  %xmm4,-0x38(%rbp)
movsd  %xmm5,-0x40(%rbp)
movsd  %xmm6,-0x48(%rbp)
movsd  %xmm7,-0x50(%rbp)
mov    %rcx,-0x58(%rbp)
mov    %r8,-0x60(%rbp)
mov    %r9,-0x68(%rbp)
movzwl -0x2(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xe1b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
movzwl -0x12(%rbp),%eax
cvtsi2sd %eax,%xmm1
mov    -0x18(%rbp),%eax
cvtsi2sd %rax,%xmm2
movsd  0xdf1(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x38(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
movsd  0xda6(%rip),%xmm0
divsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movb   $0x0,-0x69(%rbp)
movzbl -0x69(%rbp),%eax
cmp    $0x7,%eax
jge    131d <GPS_ComputeSatellitePositionAndVelocity+0x1dd>
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
call   1040 <sin@plt>
movsd  -0x1a0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x198(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x69(%rbp),%al
add    $0x1,%al
mov    %al,-0x69(%rbp)
jmp    12b6 <GPS_ComputeSatellitePositionAndVelocity+0x176>
movsd  -0xa0(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
call   1040 <sin@plt>
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm1
movsd  0xcc0(%rip),%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
subsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  -0x140(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  -0x138(%rbp),%xmm1
ff
movsd  -0x30(%rbp),%xmm2
subsd  %xmm2,%xmm1
call   1030 <atan2@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0x50(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  -0x1d0(%rbp),%xmm2
ff
movsd  -0x1c8(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0x1c0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  %xmm0,%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  %xmm0,%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0x20(%rbp),%xmm0
movsd  -0xc8(%rbp),%xmm2
ff
movsd  0x28(%rbp),%xmm1
movsd  -0xd0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0x30(%rbp),%xmm0
movsd  -0xc8(%rbp),%xmm2
ff
movsd  0x38(%rbp),%xmm1
movsd  -0xd0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0x40(%rbp),%xmm0
movsd  -0xc8(%rbp),%xmm2
ff
movsd  0x48(%rbp),%xmm1
movsd  -0xd0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x18(%rbp),%xmm1
movsd  -0x80(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
call   1040 <sin@plt>
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  0x10(%rbp),%xmm1
movsd  0xa68(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x80(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x18(%rbp),%eax
cvtsi2sd %rax,%xmm0
movsd  0x50(%rbp),%xmm2
movsd  0xa52(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  0xa32(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
call   1040 <sin@plt>
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
call   1040 <sin@plt>
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
mulsd  -0x128(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x58(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x108(%rbp),%xmm1
ff
mulsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x60(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x93f(%rip),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x922(%rip),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
call   1040 <sin@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0x138(%rbp),%xmm2
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0x8c5(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  -0x1b8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1b0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
movsd  0x864(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1a8(%rbp),%xmm0
ff
movsd  -0x30(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm3
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
movsd  0x80c(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm1
ff
movsd  0x28(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm3
ff
movsd  0x20(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
movsd  0x7bf(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  -0x158(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
mulsd  -0x30(%rbp),%xmm1
mulsd  -0x140(%rbp),%xmm1
ff
mulsd  -0x90(%rbp),%xmm1
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x138(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
movsd  0x746(%rip),%xmm2
addsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0x38(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm3
ff
movsd  0x30(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
movsd  0x70d(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  -0x158(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  0x18(%rbp),%xmm1
movsd  0x48(%rbp),%xmm0
movsd  -0xc8(%rbp),%xmm3
ff
movsd  0x40(%rbp),%xmm2
mulsd  -0xd0(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
movsd  0x6ab(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  -0x158(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x160(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x160(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0x10(%rbp),%xmm1
movsd  0x58(%rbp),%xmm2
movsd  0x5fe(%rip),%xmm0
divsd  %xmm0,%xmm2
movsd  0x5ea(%rip),%xmm0
addsd  %xmm2,%xmm0
movsd  0x5d6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x188(%rbp),%xmm1
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0xf0(%rbp),%xmm1
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x190(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0x180(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x60(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x180(%rbp),%xmm1
ff
mulsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x68(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x190(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x128(%rbp),%xmm1
ff
mulsd  -0x168(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x70(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x1d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<GPS_ComputeSatellitePositionAndVelocity>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xa8,%rsp
cvtsi2sd %edi,%xmm8
mov    %r9,%r14
mov    %r8,%r15
mov    %rcx,%rbx
movsd  %xmm7,0x8(%rsp)
movsd  %xmm6,0x68(%rsp)
movsd  %xmm5,0x28(%rsp)
movaps %xmm3,0x40(%rsp)
movsd  0xe82(%rip),%xmm5
xorps  %xmm6,%xmm6
cvtsi2sd %esi,%xmm6
mulsd  %xmm5,%xmm8
mov    %edx,%eax
xorps  %xmm3,%xmm3
cvtsi2sd %rax,%xmm3
addsd  %xmm0,%xmm8
mulsd  %xmm5,%xmm6
movsd  %xmm3,0x60(%rsp)
addsd  %xmm3,%xmm6
subsd  %xmm6,%xmm8
movsd  %xmm8,0x38(%rsp)
mulsd  %xmm4,%xmm4
movapd %xmm4,%xmm3
mulsd  %xmm4,%xmm3
movsd  %xmm4,0x88(%rsp)
mulsd  %xmm4,%xmm3
movsd  0xe34(%rip),%xmm0
divsd  %xmm3,%xmm0
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
jb     11e8 <GPS_ComputeSatellitePositionAndVelocity+0xa8>
sqrtsd %xmm0,%xmm0
jmp    1203 <GPS_ComputeSatellitePositionAndVelocity+0xc3>
movsd  %xmm1,0x10(%rsp)
movsd  %xmm2,(%rsp)
call   1060 <sqrt@plt>
movsd  (%rsp),%xmm2
movsd  0x10(%rsp),%xmm1
mov    0x140(%rsp),%r12
mov    0x138(%rsp),%r13
mov    0x130(%rsp),%rbp
addsd  %xmm2,%xmm0
movsd  %xmm0,0x80(%rsp)
mulsd  0x38(%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rsp)
call   1040 <sin@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
call   1050 <cos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  (%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x70(%rsp)
movapd 0xd59(%rip),%xmm0
movapd 0x40(%rsp),%xmm1
xorpd  %xmm1,%xmm0
movapd %xmm0,0x10(%rsp)
mulsd  %xmm1,%xmm1
movsd  0xd1d(%rip),%xmm0
subsd  %xmm1,%xmm0
ucomisd 0xd29(%rip),%xmm0
jb     1307 <GPS_ComputeSatellitePositionAndVelocity+0x1c7>
sqrtsd %xmm0,%xmm0
jmp    130c <GPS_ComputeSatellitePositionAndVelocity+0x1cc>
call   1060 <sqrt@plt>
mulsd  0x70(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
subsd  0x40(%rsp),%xmm1
call   1030 <atan2@plt>
movsd  %xmm0,0x78(%rsp)
movsd  0x8(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1050 <cos@plt>
movapd %xmm0,%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  0xcbb(%rip),%xmm0
addsd  %xmm0,%xmm1
mulsd  0x88(%rsp),%xmm1
movsd  %xmm1,(%rsp)
movsd  0x8(%rsp),%xmm0
addsd  %xmm0,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1050 <cos@plt>
movsd  %xmm0,0x58(%rsp)
movsd  0x20(%rsp),%xmm0
call   1040 <sin@plt>
movapd %xmm0,%xmm3
movsd  0xf8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xf0(%rsp),%xmm1
movsd  0x58(%rsp),%xmm4
mulsd  %xmm4,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,%xmm2
movapd %xmm3,%xmm0
movsd  0x108(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x100(%rsp),%xmm1
mulsd  %xmm4,%xmm1
addsd  %xmm0,%xmm1
addsd  (%rsp),%xmm1
movsd  %xmm1,(%rsp)
movsd  0x118(%rsp),%xmm0
mulsd  %xmm0,%xmm3
movsd  0x110(%rsp),%xmm0
mulsd  %xmm0,%xmm4
addsd  %xmm4,%xmm3
addsd  0x8(%rsp),%xmm2
movsd  %xmm2,0x8(%rsp)
movsd  0xe8(%rsp),%xmm0
mulsd  0x38(%rsp),%xmm0
addsd  %xmm0,%xmm3
addsd  0x68(%rsp),%xmm3
movsd  %xmm3,0x20(%rsp)
movapd %xmm2,%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x68(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0xa0(%rsp)
movsd  0x68(%rsp),%xmm2
movsd  (%rsp),%xmm1
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x58(%rsp)
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  0xba1(%rip),%xmm1
movsd  0xe0(%rsp),%xmm0
addsd  %xmm1,%xmm0
movapd %xmm1,%xmm2
mulsd  0x38(%rsp),%xmm0
addsd  0x28(%rsp),%xmm0
movsd  0x120(%rsp),%xmm1
divsd  0xb7b(%rip),%xmm1
addsd  0x60(%rsp),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x28(%rsp)
movapd %xmm1,%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x28(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x60(%rsp)
movsd  0x20(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x28(%rsp),%xmm5
movapd %xmm5,%xmm6
movsd  (%rsp),%xmm2
mulsd  %xmm2,%xmm6
movsd  0x60(%rsp),%xmm7
mulsd  %xmm7,%xmm6
movsd  0x58(%rsp),%xmm3
movapd %xmm3,%xmm1
movsd  0x38(%rsp),%xmm4
mulsd  %xmm4,%xmm1
subsd  %xmm6,%xmm1
movsd  %xmm1,(%rbx)
movapd %xmm4,%xmm6
mulsd  %xmm2,%xmm6
mulsd  %xmm7,%xmm6
movapd %xmm3,%xmm1
mulsd  %xmm5,%xmm1
addsd  %xmm6,%xmm1
movsd  %xmm1,(%r15)
movapd %xmm2,%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x98(%rsp)
movsd  %xmm1,(%r14)
movsd  0x8(%rsp),%xmm0
addsd  %xmm0,%xmm0
movsd  %xmm0,0x8(%rsp)
call   1050 <cos@plt>
movsd  %xmm0,0x90(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x8(%rsp)
movapd 0x10(%rsp),%xmm0
mulsd  0x30(%rsp),%xmm0
addsd  0xa66(%rip),%xmm0
movapd %xmm0,0x10(%rsp)
movsd  0x80(%rsp),%xmm1
divsd  %xmm0,%xmm1
mulsd  0x70(%rsp),%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  0x78(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0xa2e(%rip),%xmm0
mulsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x78(%rsp),%xmm0
call   1040 <sin@plt>
movapd 0x10(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  0x30(%rsp),%xmm7
divsd  %xmm0,%xmm7
movsd  0xf0(%rsp),%xmm0
movsd  0x8(%rsp),%xmm6
mulsd  %xmm6,%xmm0
movsd  0xf8(%rsp),%xmm1
movsd  0x90(%rsp),%xmm4
mulsd  %xmm4,%xmm1
subsd  %xmm0,%xmm1
movsd  0x88(%rsp),%xmm0
mulsd  0x40(%rsp),%xmm0
mulsd  0x70(%rsp),%xmm0
mulsd  0x80(%rsp),%xmm0
divsd  %xmm2,%xmm0
movsd  0x100(%rsp),%xmm2
mulsd  %xmm6,%xmm2
movsd  0x108(%rsp),%xmm3
mulsd  %xmm4,%xmm3
movapd %xmm4,%xmm5
subsd  %xmm2,%xmm3
addsd  %xmm3,%xmm3
mulsd  %xmm7,%xmm3
addsd  %xmm0,%xmm3
movapd %xmm6,%xmm0
mulsd  0x110(%rsp),%xmm0
movsd  0x118(%rsp),%xmm4
mulsd  %xmm5,%xmm4
subsd  %xmm0,%xmm4
addsd  %xmm1,%xmm1
mulsd  %xmm7,%xmm1
addsd  %xmm7,%xmm1
addsd  %xmm4,%xmm4
mulsd  %xmm7,%xmm4
addsd  0xe8(%rsp),%xmm4
movsd  0x58(%rsp),%xmm7
movapd %xmm7,%xmm0
mulsd  %xmm1,%xmm0
movsd  (%rsp),%xmm6
mulsd  %xmm6,%xmm1
movsd  0x68(%rsp),%xmm5
mulsd  %xmm3,%xmm5
subsd  %xmm1,%xmm5
mulsd  0xa0(%rsp),%xmm3
addsd  %xmm0,%xmm3
movsd  0x128(%rsp),%xmm2
divsd  0x918(%rip),%xmm2
addsd  0x900(%rip),%xmm2
mulsd  0x900(%rip),%xmm2
addsd  0xe0(%rsp),%xmm2
movsd  0x60(%rsp),%xmm1
mulsd  %xmm1,%xmm6
movapd %xmm6,%xmm0
mulsd  %xmm2,%xmm0
subsd  %xmm0,%xmm5
mulsd  %xmm7,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm1,%xmm2
movsd  0x98(%rsp),%xmm0
mulsd  %xmm4,%xmm0
subsd  %xmm0,%xmm2
movsd  0x28(%rsp),%xmm8
movapd %xmm8,%xmm0
mulsd  %xmm2,%xmm0
movapd %xmm5,%xmm1
movsd  0x38(%rsp),%xmm7
mulsd  %xmm7,%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x0(%rbp)
mulsd  %xmm7,%xmm2
mulsd  %xmm8,%xmm5
addsd  %xmm2,%xmm5
movsd  %xmm5,0x0(%r13)
mulsd  %xmm4,%xmm6
mulsd  0x20(%rsp),%xmm3
addsd  %xmm6,%xmm3
movsd  %xmm3,(%r12)
add    $0xa8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @GPS_ComputeSatellitePositionAndVelocity(i16 zeroext %0, double %1, i16 zeroext %2, i32 %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11, double %12, double %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double* %21, double* %22, double* %23, double* %24, double* %25, double* %26) {
%28 = alloca i16
%29 = alloca double
%30 = alloca i16
%31 = alloca i32
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double*
%50 = alloca double*
%51 = alloca double*
%52 = alloca double*
%53 = alloca double*
%54 = alloca double*
%55 = alloca i8
%56 = alloca double
%57 = alloca double
%58 = alloca double
%59 = alloca double
%60 = alloca double
%61 = alloca double
%62 = alloca double
%63 = alloca double
%64 = alloca double
%65 = alloca double
%66 = alloca double
%67 = alloca double
%68 = alloca double
%69 = alloca double
%70 = alloca double
%71 = alloca double
%72 = alloca double
%73 = alloca double
%74 = alloca double
%75 = alloca double
%76 = alloca double
%77 = alloca double
%78 = alloca double
%79 = alloca double
%80 = alloca double
%81 = alloca double
%82 = alloca double
%83 = alloca double
%84 = alloca double
%85 = alloca double
%86 = alloca double
%87 = alloca double
%88 = alloca double
%89 = alloca double
%90 = alloca double
%91 = alloca double
store i16 %0, i16* %28
store double %1, double* %29
store i16 %2, i16* %30
store i32 %3, i32* %31
store double %4, double* %32
store double %5, double* %33
store double %6, double* %34
store double %7, double* %35
store double %8, double* %36
store double %9, double* %37
store double %10, double* %38
store double %11, double* %39
store double %12, double* %40
store double %13, double* %41
store double %14, double* %42
store double %15, double* %43
store double %16, double* %44
store double %17, double* %45
store double %18, double* %46
store double %19, double* %47
store double %20, double* %48
store double* %21, double** %49
store double* %22, double** %50
store double* %23, double** %51
store double* %24, double** %52
store double* %25, double** %53
store double* %26, double** %54
%92 = load i16, i16* %28
%93 = zext i16 %92 to i32
%94 = sitofp i32 %93 to double
%95 = load double, double* %29
%96 = call double @llvm.fmuladd.f64(double %94, double 6.048000e+05, double %95)
store double %96, double* %56
%97 = load double, double* %56
%98 = load i16, i16* %30
%99 = zext i16 %98 to i32
%100 = sitofp i32 %99 to double
%101 = load i32, i32* %31
%102 = uitofp i32 %101 to double
%103 = call double @llvm.fmuladd.f64(double %100, double 6.048000e+05, double %102)
%104 = fsub double %97, %103
store double %104, double* %57
%105 = load double, double* %35
%106 = load double, double* %35
%107 = fmul double %105, %106
store double %107, double* %58
%108 = load double, double* %58
%109 = load double, double* %58
%110 = fmul double %108, %109
%111 = load double, double* %58
%112 = fmul double %110, %111
%113 = fdiv double 0x42F6A866935B5000, %112
%114 = call double @sqrt(double %113)
store double %114, double* %59
%115 = load double, double* %33
%116 = load double, double* %59
%117 = fadd double %116, %115
store double %117, double* %59
%118 = load double, double* %32
%119 = load double, double* %59
%120 = load double, double* %57
%121 = call double @llvm.fmuladd.f64(double %119, double %120, double %118)
store double %121, double* %60
%122 = load double, double* %60
store double %122, double* %61
store i8 0, i8* %55
br label %123
123: ; preds = %133, %27
%124 = load i8, i8* %55
%125 = zext i8 %124 to i32
%126 = icmp slt i32 %125, 7
br i1 %126, label %127, label %136
127: ; preds = %123
%128 = load double, double* %60
%129 = load double, double* %34
%130 = load double, double* %61
%131 = call double @sin(double %130)
%132 = call double @llvm.fmuladd.f64(double %129, double %131, double %128)
store double %132, double* %61
br label %133
133: ; preds = %127
%134 = load i8, i8* %55
%135 = add i8 %134, 1
store i8 %135, i8* %55
br label %123
136: ; preds = %123
%137 = load double, double* %61
%138 = call double @cos(double %137)
store double %138, double* %80
%139 = load double, double* %61
%140 = call double @sin(double %139)
store double %140, double* %81
%141 = load double, double* %34
%142 = load double, double* %34
%143 = fneg double %141
%144 = call double @llvm.fmuladd.f64(double %143, double %142, double 1.000000e+00)
%145 = call double @sqrt(double %144)
%146 = load double, double* %81
%147 = fmul double %145, %146
%148 = load double, double* %80
%149 = load double, double* %34
%150 = fsub double %148, %149
%151 = call double @atan2(double %147, double %150)
store double %151, double* %62
%152 = load double, double* %62
%153 = load double, double* %38
%154 = fadd double %152, %153
store double %154, double* %63
%155 = load double, double* %58
%156 = load double, double* %34
%157 = load double, double* %61
%158 = call double @cos(double %157)
%159 = fneg double %156
%160 = call double @llvm.fmuladd.f64(double %159, double %158, double 1.000000e+00)
%161 = fmul double %155, %160
store double %161, double* %64
%162 = load double, double* %37
store double %162, double* %65
%163 = load double, double* %63
%164 = fmul double 2.000000e+00, %163
%165 = call double @cos(double %164)
store double %165, double* %66
%166 = load double, double* %63
%167 = fmul double 2.000000e+00, %166
%168 = call double @sin(double %167)
store double %168, double* %67
%169 = load double, double* %41
%170 = load double, double* %66
%171 = load double, double* %42
%172 = load double, double* %67
%173 = fmul double %171, %172
%174 = call double @llvm.fmuladd.f64(double %169, double %170, double %173)
store double %174, double* %68
%175 = load double, double* %43
%176 = load double, double* %66
%177 = load double, double* %44
%178 = load double, double* %67
%179 = fmul double %177, %178
%180 = call double @llvm.fmuladd.f64(double %175, double %176, double %179)
store double %180, double* %69
%181 = load double, double* %45
%182 = load double, double* %66
%183 = load double, double* %46
%184 = load double, double* %67
%185 = fmul double %183, %184
%186 = call double @llvm.fmuladd.f64(double %181, double %182, double %185)
store double %186, double* %70
%187 = load double, double* %68
%188 = load double, double* %63
%189 = fadd double %188, %187
store double %189, double* %63
%190 = load double, double* %69
%191 = load double, double* %64
%192 = fadd double %191, %190
store double %192, double* %64
%193 = load double, double* %70
%194 = load double, double* %40
%195 = load double, double* %57
%196 = call double @llvm.fmuladd.f64(double %194, double %195, double %193)
%197 = load double, double* %65
%198 = fadd double %197, %196
store double %198, double* %65
%199 = load double, double* %63
%200 = call double @cos(double %199)
store double %200, double* %76
%201 = load double, double* %63
%202 = call double @sin(double %201)
store double %202, double* %77
%203 = load double, double* %64
%204 = load double, double* %76
%205 = fmul double %203, %204
store double %205, double* %71
%206 = load double, double* %64
%207 = load double, double* %77
%208 = fmul double %206, %207
store double %208, double* %72
%209 = load double, double* %36
%210 = load double, double* %39
%211 = fsub double %210, 0x3F131DA7D7CB8D5B
%212 = load double, double* %57
%213 = call double @llvm.fmuladd.f64(double %211, double %212, double %209)
%214 = load i32, i32* %31
%215 = uitofp i32 %214 to double
%216 = load double, double* %47
%217 = fdiv double %216, 0x41B1DE784A000000
%218 = fadd double %215, %217
%219 = call double @llvm.fmuladd.f64(double 0xBF131DA7D7CB8D5B, double %218, double %213)
store double %219, double* %73
%220 = load double, double* %73
%221 = call double @cos(double %220)
store double %221, double* %74
%222 = load double, double* %73
%223 = call double @sin(double %222)
store double %223, double* %75
%224 = load double, double* %65
%225 = call double @cos(double %224)
store double %225, double* %78
%226 = load double, double* %65
%227 = call double @sin(double %226)
store double %227, double* %79
%228 = load double, double* %71
%229 = load double, double* %74
%230 = load double, double* %72
%231 = load double, double* %75
%232 = fmul double %230, %231
%233 = load double, double* %78
%234 = fmul double %232, %233
%235 = fneg double %234
%236 = call double @llvm.fmuladd.f64(double %228, double %229, double %235)
%237 = load double*, double** %49
store double %236, double* %237
%238 = load double, double* %71
%239 = load double, double* %75
%240 = load double, double* %72
%241 = load double, double* %74
%242 = fmul double %240, %241
%243 = load double, double* %78
%244 = fmul double %242, %243
%245 = call double @llvm.fmuladd.f64(double %238, double %239, double %244)
%246 = load double*, double** %50
store double %245, double* %246
%247 = load double, double* %72
%248 = load double, double* %79
%249 = fmul double %247, %248
%250 = load double*, double** %51
store double %249, double* %250
%251 = load double, double* %63
%252 = fmul double 2.000000e+00, %251
%253 = call double @cos(double %252)
store double %253, double* %66
%254 = load double, double* %63
%255 = fmul double 2.000000e+00, %254
%256 = call double @sin(double %255)
store double %256, double* %67
%257 = load double, double* %59
%258 = load double, double* %34
%259 = load double, double* %80
%260 = fneg double %258
%261 = call double @llvm.fmuladd.f64(double %260, double %259, double 1.000000e+00)
%262 = fdiv double %257, %261
store double %262, double* %83
%263 = load double, double* %81
%264 = load double, double* %83
%265 = fmul double %263, %264
%266 = load double, double* %34
%267 = load double, double* %62
%268 = call double @cos(double %267)
%269 = call double @llvm.fmuladd.f64(double %266, double %268, double 1.000000e+00)
%270 = fmul double %265, %269
%271 = load double, double* %62
%272 = call double @sin(double %271)
%273 = load double, double* %34
%274 = load double, double* %80
%275 = fneg double %273
%276 = call double @llvm.fmuladd.f64(double %275, double %274, double 1.000000e+00)
%277 = fmul double %272, %276
%278 = fdiv double %270, %277
store double %278, double* %84
%279 = load double, double* %84
%280 = load double, double* %42
%281 = load double, double* %66
%282 = load double, double* %41
%283 = load double, double* %67
%284 = fmul double %282, %283
%285 = fneg double %284
%286 = call double @llvm.fmuladd.f64(double %280, double %281, double %285)
%287 = fmul double 2.000000e+00, %286
%288 = load double, double* %84
%289 = call double @llvm.fmuladd.f64(double %287, double %288, double %279)
store double %289, double* %85
%290 = load double, double* %58
%291 = load double, double* %34
%292 = fmul double %290, %291
%293 = load double, double* %81
%294 = fmul double %292, %293
%295 = load double, double* %59
%296 = fmul double %294, %295
%297 = load double, double* %34
%298 = load double, double* %80
%299 = fneg double %297
%300 = call double @llvm.fmuladd.f64(double %299, double %298, double 1.000000e+00)
%301 = fdiv double %296, %300
%302 = load double, double* %44
%303 = load double, double* %66
%304 = load double, double* %43
%305 = load double, double* %67
%306 = fmul double %304, %305
%307 = fneg double %306
%308 = call double @llvm.fmuladd.f64(double %302, double %303, double %307)
%309 = fmul double 2.000000e+00, %308
%310 = load double, double* %84
%311 = call double @llvm.fmuladd.f64(double %309, double %310, double %301)
store double %311, double* %87
%312 = load double, double* %40
%313 = load double, double* %46
%314 = load double, double* %66
%315 = load double, double* %45
%316 = load double, double* %67
%317 = fmul double %315, %316
%318 = fneg double %317
%319 = call double @llvm.fmuladd.f64(double %313, double %314, double %318)
%320 = fmul double %319, 2.000000e+00
%321 = load double, double* %84
%322 = call double @llvm.fmuladd.f64(double %320, double %321, double %312)
store double %322, double* %86
%323 = load double, double* %87
%324 = load double, double* %76
%325 = load double, double* %72
%326 = load double, double* %85
%327 = fmul double %325, %326
%328 = fneg double %327
%329 = call double @llvm.fmuladd.f64(double %323, double %324, double %328)
store double %329, double* %90
%330 = load double, double* %87
%331 = load double, double* %77
%332 = load double, double* %71
%333 = load double, double* %85
%334 = fmul double %332, %333
%335 = call double @llvm.fmuladd.f64(double %330, double %331, double %334)
store double %335, double* %91
%336 = load double, double* %39
%337 = load double, double* %48
%338 = fdiv double %337, 0x41B1DE784A000000
%339 = fadd double 1.000000e+00, %338
%340 = call double @llvm.fmuladd.f64(double 0xBF131DA7D7CB8D5B, double %339, double %336)
store double %340, double* %82
%341 = load double, double* %90
%342 = load double, double* %72
%343 = load double, double* %78
%344 = fmul double %342, %343
%345 = load double, double* %82
%346 = fneg double %344
%347 = call double @llvm.fmuladd.f64(double %346, double %345, double %341)
store double %347, double* %88
%348 = load double, double* %71
%349 = load double, double* %82
%350 = load double, double* %91
%351 = load double, double* %78
%352 = fmul double %350, %351
%353 = call double @llvm.fmuladd.f64(double %348, double %349, double %352)
%354 = load double, double* %72
%355 = load double, double* %79
%356 = fmul double %354, %355
%357 = load double, double* %86
%358 = fneg double %356
%359 = call double @llvm.fmuladd.f64(double %358, double %357, double %353)
store double %359, double* %89
%360 = load double, double* %88
%361 = load double, double* %74
%362 = load double, double* %89
%363 = load double, double* %75
%364 = fmul double %362, %363
%365 = fneg double %364
%366 = call double @llvm.fmuladd.f64(double %360, double %361, double %365)
%367 = load double*, double** %52
store double %366, double* %367
%368 = load double, double* %88
%369 = load double, double* %75
%370 = load double, double* %89
%371 = load double, double* %74
%372 = fmul double %370, %371
%373 = call double @llvm.fmuladd.f64(double %368, double %369, double %372)
%374 = load double*, double** %53
store double %373, double* %374
%375 = load double, double* %91
%376 = load double, double* %79
%377 = load double, double* %72
%378 = load double, double* %78
%379 = fmul double %377, %378
%380 = load double, double* %86
%381 = fmul double %379, %380
%382 = call double @llvm.fmuladd.f64(double %375, double %376, double %381)
%383 = load double*, double** %54
store double %382, double* %383
ret void
}

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