#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 GPS_Math_Deg_To_Rad(double);
double cos(double);
double fabs(double);
double log(double);
double pow(double, double);
double sin(double);
void GPS_Math_Albers_LatLon_To_EN(double phi, double lambda, double *E,
                                  double *N, double phi1, double phi2,
                                  double phi0, double M0, double E0, double N0,
                                  double a, double b) {
  double dlambda;
  double phis;
  double phic;
  double e;
  double esq;
  double esqs;
  double omesqs2;
  double a2;
  double b2;
  double q;
  double q0;
  double q1;
  double q2;
  double m1;
  double m2;
  double n;
  double phi0s;
  double phi1s;
  double phi1c;
  double phi2s;
  double phi2c;
  double ess;
  double om0;
  double m1sq;
  double C;
  double nq;
  double nq0;
  double rho;
  double rho0;
  double theta;
  phi = GPS_Math_Deg_To_Rad(phi);
  phi0 = GPS_Math_Deg_To_Rad(phi0);
  phi1 = GPS_Math_Deg_To_Rad(phi1);
  phi2 = GPS_Math_Deg_To_Rad(phi2);
  lambda = GPS_Math_Deg_To_Rad(lambda);
  M0 = GPS_Math_Deg_To_Rad(M0);
  dlambda = lambda - M0;
  if (dlambda > 3.141592653589)
    dlambda -= ((double)2.0 * 3.141592653589);
  if (dlambda < -3.141592653589)
    dlambda += ((double)2.0 * 3.141592653589);
  phis = sin(phi);
  phic = cos(phi);
  a2 = a * a;
  b2 = b * b;
  esq = (a2 - b2) / a2;
  e = pow(esq, (double)0.5);
  phi0s = sin(phi0);
  ess = e * phi0s;
  om0 = ((double)1.0 - ess * ess);
  q0 = ((double)1.0 - esq) *
       (phi0s / om0 - ((double)1.0 / (e + e)) *
                          log(((double)1.0 - ess) / ((double)1.0 + ess)));
  phi1s = sin(phi1);
  phi1c = cos(phi1);
  ess = e * phi1s;
  om0 = ((double)1.0 - ess * ess);
  m1 = phi1c / pow(om0, (double)0.5);
  q1 = ((double)1.0 - esq) *
       (phi1s / om0 - ((double)1.0 / (e + e)) *
                          log(((double)1.0 - ess) / ((double)1.0 + ess)));
  m1sq = m1 * m1;
  if (fabs(phi1 - phi2) > 1.0e-10) {
    phi2s = sin(phi2);
    phi2c = cos(phi2);
    ess = e * phi2s;
    om0 = ((double)1.0 - ess * ess);
    m2 = phi2c / pow(om0, (double)0.5);
    q2 = ((double)1.0 - esq) *
         (phi2s / om0 - ((double)1.0 / (e + e)) *
                            log(((double)1.0 - ess) / ((double)1.0 + ess)));
    n = (m1sq - m2 * m2) / (q2 - q1);
  } else
    n = phi1s;
  C = m1sq + n * q1;
  nq0 = n * q0;
  if (C < nq0)
    rho0 = (double)0.;
  else
    rho0 = (a / n) * pow(C - nq0, (double)0.5);
  esqs = e * phis;
  omesqs2 = ((double)1.0 - esqs * esqs);
  q = ((double)1.0 - esq) *
      (phis / omesqs2 - ((double)1.0 / (e + e)) *
                            log(((double)1.0 - esqs) / ((double)1.0 + esqs)));
  nq = n * q;
  if (C < nq)
    rho = (double)0.;
  else
    rho = (a / n) * pow(C - nq, (double)0.5);
  theta = n * dlambda;
  *E = rho * sin(theta) + E0;
  *N = rho0 - rho * cos(theta) + N0;
  return;
}


x86 assembly (clang, -O0):
<GPS_Math_Albers_LatLon_To_EN>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1e0,%rsp
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
mov    %rdi,-0x18(%rbp)
mov    %rsi,-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)
movsd  -0x8(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x8(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x10(%rbp)
movsd  -0x40(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x10(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  0xdf3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    122d <GPS_Math_Albers_LatLon_To_EN+0xdd>
movsd  -0x58(%rbp),%xmm0
movsd  0xde4(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xddb(%rip),%xmm0
ucomisd -0x58(%rbp),%xmm0
jbe    1252 <GPS_Math_Albers_LatLon_To_EN+0x102>
movsd  0xdc0(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  0x10(%rbp),%xmm0
mulsd  0x10(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0x18(%rbp),%xmm0
mulsd  0x18(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0x98(%rbp),%xmm0
ff
divsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  0xd6a(%rip),%xmm1
call   1070 <pow@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xcfe(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0xcea(%rip),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
divsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
addsd  -0x70(%rbp),%xmm1
movsd  0xcb3(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  0xc9f(%rip),%xmm0
subsd  -0x100(%rbp),%xmm0
ff
movsd  0xc8f(%rip),%xmm1
addsd  -0x100(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  -0x178(%rbp),%xmm1
ff
movsd  -0x170(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x168(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xbcc(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  0xba8(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x160(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xb7c(%rip),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
divsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
addsd  -0x70(%rbp),%xmm1
movsd  0xb45(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0xb31(%rip),%xmm0
subsd  -0x100(%rbp),%xmm0
ff
movsd  0xb21(%rip),%xmm1
addsd  -0x100(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  -0x158(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x148(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movaps 0xab1(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xa8d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    175b <GPS_Math_Albers_LatLon_To_EN+0x60b>
movsd  -0x30(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xa1f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  0x9fb(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x198(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x9cf(%rip),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
divsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
addsd  -0x70(%rbp),%xmm1
movsd  0x998(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0x984(%rip),%xmm0
subsd  -0x100(%rbp),%xmm0
ff
movsd  0x974(%rip),%xmm1
addsd  -0x100(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  -0x190(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x180(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x110(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xb8(%rbp),%xmm1
ff
subsd  -0xb0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
jmp    176b <GPS_Math_Albers_LatLon_To_EN+0x61b>
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x110(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x118(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    17d5 <GPS_Math_Albers_LatLon_To_EN+0x685>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
jmp    181e <GPS_Math_Albers_LatLon_To_EN+0x6ce>
movsd  0x10(%rbp),%xmm0
divsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
subsd  -0x128(%rbp),%xmm0
ff
movsd  0x826(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1a0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x7c6(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x7b2(%rip),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
addsd  -0x70(%rbp),%xmm1
movsd  0x77e(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  0x76a(%rip),%xmm0
subsd  -0x80(%rbp),%xmm0
movsd  0x75d(%rip),%xmm1
addsd  -0x80(%rbp),%xmm1
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  -0x1b8(%rbp),%xmm1
ff
movsd  -0x1b0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x1a8(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x118(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1959 <GPS_Math_Albers_LatLon_To_EN+0x809>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
jmp    19a2 <GPS_Math_Albers_LatLon_To_EN+0x852>
movsd  0x10(%rbp),%xmm0
divsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
subsd  -0x120(%rbp),%xmm0
ff
movsd  0x6a2(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1c0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm2
movsd  -0x1d8(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  -0x1d0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1c8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x50(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x1e0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<GPS_Math_Albers_LatLon_To_EN>:
push   %r14
push   %rbx
sub    $0xa8,%rsp
movsd  %xmm7,0xa0(%rsp)
movsd  %xmm6,0x98(%rsp)
movsd  %xmm5,0x60(%rsp)
movsd  %xmm4,0x8(%rsp)
movsd  %xmm3,0x80(%rsp)
movsd  %xmm2,0x38(%rsp)
mov    %rsi,%r14
mov    %rdi,%rbx
movsd  %xmm1,0x50(%rsp)
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x38(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movaps %xmm0,0x40(%rsp)
movsd  0x80(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x50(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movaps %xmm0,0x50(%rsp)
movsd  0x60(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movapd 0x50(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  0xe00(%rip),%xmm1
addsd  %xmm2,%xmm1
movsd  0xdfc(%rip),%xmm0
cmpltsd %xmm2,%xmm0
andpd  %xmm0,%xmm1
movapd %xmm1,0x60(%rsp)
andnpd %xmm2,%xmm0
movapd %xmm0,0x80(%rsp)
movsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x10(%rsp),%xmm1
movsd  %xmm0,0x38(%rsp)
ucomisd 0xdc9(%rip),%xmm1
jae    16ae <GPS_Math_Albers_LatLon_To_EN+0x55e>
movsd  0xdc3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jae    16ae <GPS_Math_Albers_LatLon_To_EN+0x55e>
movaps 0x80(%rsp),%xmm0
orps   0x60(%rsp),%xmm0
movaps %xmm0,0x80(%rsp)
movsd  0xc0(%rsp),%xmm2
mulsd  %xmm2,%xmm2
movsd  0xc8(%rsp),%xmm1
mulsd  %xmm1,%xmm1
movapd %xmm2,%xmm0
subsd  %xmm1,%xmm0
divsd  %xmm2,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xd78(%rip),%xmm1
call   1070 <pow@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x50(%rsp),%xmm4
movapd %xmm4,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,%xmm5
mulsd  %xmm1,%xmm5
movsd  0xd4c(%rip),%xmm3
movapd %xmm3,%xmm2
subsd  %xmm5,%xmm2
movapd %xmm3,%xmm5
subsd  0x10(%rsp),%xmm5
movsd  %xmm5,0x60(%rsp)
divsd  %xmm2,%xmm0
movsd  %xmm0,0x10(%rsp)
addsd  %xmm4,%xmm4
movsd  %xmm4,0x8(%rsp)
movapd %xmm3,%xmm0
subsd  %xmm1,%xmm0
addsd  %xmm3,%xmm1
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  0xd0b(%rip),%xmm1
divsd  0x8(%rsp),%xmm1
movsd  %xmm1,0x78(%rsp)
mulsd  %xmm1,%xmm0
addsd  0x10(%rsp),%xmm0
mulsd  0x60(%rsp),%xmm0
movsd  %xmm0,0x90(%rsp)
movaps 0x40(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x10(%rsp)
movaps 0x40(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x50(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x70(%rsp)
mulsd  %xmm0,%xmm0
movsd  0xca0(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x30(%rsp)
movapd %xmm1,%xmm0
movsd  0xc82(%rip),%xmm1
call   1070 <pow@plt>
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x10(%rsp),%xmm0
divsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0xc5b(%rip),%xmm1
movapd %xmm1,%xmm0
movsd  0x70(%rsp),%xmm2
subsd  %xmm2,%xmm0
addsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
call   1060 <log@plt>
movsd  0x8(%rsp),%xmm3
movapd %xmm0,%xmm2
mulsd  0x78(%rsp),%xmm2
addsd  0x30(%rsp),%xmm2
mulsd  0x60(%rsp),%xmm2
movsd  0x28(%rsp),%xmm0
movapd 0x40(%rsp),%xmm1
subsd  %xmm0,%xmm1
andpd  0xc34(%rip),%xmm1
mulsd  %xmm3,%xmm3
ucomisd 0xc10(%rip),%xmm1
jbe    1512 <GPS_Math_Albers_LatLon_To_EN+0x3c2>
movsd  %xmm2,0x40(%rsp)
movsd  %xmm3,0x8(%rsp)
call   1040 <sin@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x50(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movapd %xmm0,%xmm2
mulsd  %xmm0,%xmm2
movsd  0xbb0(%rip),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,0x70(%rsp)
movsd  0xb96(%rip),%xmm1
call   1070 <pow@plt>
movsd  0x28(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x28(%rsp)
movsd  0x10(%rsp),%xmm0
divsd  0x70(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xb6f(%rip),%xmm2
movapd %xmm2,%xmm0
movsd  0x30(%rsp),%xmm1
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  0x8(%rsp),%xmm3
movsd  0x40(%rsp),%xmm2
mulsd  0x78(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
mulsd  0x60(%rsp),%xmm0
movsd  0x28(%rsp),%xmm4
mulsd  %xmm4,%xmm4
movapd %xmm3,%xmm1
subsd  %xmm4,%xmm1
subsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x10(%rsp),%xmm0
mulsd  %xmm0,%xmm2
addsd  %xmm3,%xmm2
movsd  0x90(%rsp),%xmm1
mulsd  %xmm0,%xmm1
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  %xmm2,0x40(%rsp)
ucomisd %xmm2,%xmm1
xorpd  %xmm0,%xmm0
ja     1579 <GPS_Math_Albers_LatLon_To_EN+0x429>
movsd  0xc0(%rsp),%xmm0
divsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x40(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  0xab2(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x38(%rsp),%xmm4
movsd  0x50(%rsp),%xmm2
mulsd  %xmm4,%xmm2
movapd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
movsd  0xa89(%rip),%xmm3
movapd %xmm3,%xmm1
subsd  %xmm0,%xmm1
divsd  %xmm1,%xmm4
movsd  %xmm4,0x38(%rsp)
movapd %xmm3,%xmm0
subsd  %xmm2,%xmm0
addsd  %xmm3,%xmm2
divsd  %xmm2,%xmm0
call   1060 <log@plt>
movsd  0x78(%rsp),%xmm2
mulsd  %xmm0,%xmm2
addsd  0x38(%rsp),%xmm2
movsd  0x60(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  0x40(%rsp),%xmm2
ucomisd %xmm2,%xmm1
ja     1628 <GPS_Math_Albers_LatLon_To_EN+0x4d8>
movsd  0xc0(%rsp),%xmm0
divsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
subsd  %xmm1,%xmm2
movsd  0xa0d(%rip),%xmm1
movapd %xmm2,%xmm0
call   1070 <pow@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xa10(%rip),%xmm2
movapd 0x80(%rsp),%xmm1
addsd  %xmm1,%xmm2
movapd %xmm1,%xmm0
cmpltsd 0x9fe(%rip),%xmm0
andpd  %xmm0,%xmm2
andnpd %xmm1,%xmm0
orpd   %xmm2,%xmm0
mulsd  0x10(%rsp),%xmm0
movapd %xmm0,0x10(%rsp)
call   1040 <sin@plt>
mulsd  0x8(%rsp),%xmm0
addsd  0x98(%rsp),%xmm0
movsd  %xmm0,(%rbx)
movapd 0x10(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
subsd  %xmm0,%xmm1
addsd  0xa0(%rsp),%xmm1
movsd  %xmm1,(%r14)
add    $0xa8,%rsp
pop    %rbx
pop    %r14
ret
movapd %xmm1,%xmm0
call   1050 <cos@plt>
jmp    125f <GPS_Math_Albers_LatLon_To_EN+0x10f>

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

LLVM IR (-O2):
define void @GPS_Math_Albers_LatLon_To_EN(double %0, double %1, double* nocapture writeonly %2, double* nocapture writeonly %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11) {
%13 = tail call double @GPS_Math_Deg_To_Rad(double %0)
%14 = tail call double @GPS_Math_Deg_To_Rad(double %6)
%15 = tail call double @GPS_Math_Deg_To_Rad(double %4)
%16 = tail call double @GPS_Math_Deg_To_Rad(double %5)
%17 = tail call double @GPS_Math_Deg_To_Rad(double %1)
%18 = tail call double @GPS_Math_Deg_To_Rad(double %7)
%19 = fsub double %17, %18
%20 = fcmp ogt double %19, 0x400921FB5444261E
%21 = fadd double %19, 0xC01921FB5444261E
%22 = select i1 %20, double %21, double %19
%23 = tail call double @sin(double %13)
%24 = fcmp oeq double %13, 0xFFF0000000000000
%25 = fcmp oeq double %13, 0x7FF0000000000000
%26 = or i1 %25, %24
br i1 %26, label %27, label %29
27: ; preds = %12
%28 = tail call double @cos(double %13)
br label %29
29: ; preds = %12, %27
%30 = fmul double %10, %10
%31 = fmul double %11, %11
%32 = fsub double %30, %31
%33 = fdiv double %32, %30
%34 = tail call double @pow(double %33, double 5.000000e-01)
%35 = tail call double @sin(double %14)
%36 = fmul double %34, %35
%37 = fneg double %36
%38 = tail call double @llvm.fmuladd.f64(double %37, double %36, double 1.000000e+00)
%39 = fsub double 1.000000e+00, %33
%40 = fdiv double %35, %38
%41 = fadd double %34, %34
%42 = fsub double 1.000000e+00, %36
%43 = fadd double %36, 1.000000e+00
%44 = fdiv double %42, %43
%45 = tail call double @log(double %44)
%46 = fdiv double -1.000000e+00, %41
%47 = tail call double @llvm.fmuladd.f64(double %46, double %45, double %40)
%48 = fmul double %39, %47
%49 = tail call double @sin(double %15)
%50 = tail call double @cos(double %15)
%51 = fmul double %34, %49
%52 = fneg double %51
%53 = tail call double @llvm.fmuladd.f64(double %52, double %51, double 1.000000e+00)
%54 = tail call double @pow(double %53, double 5.000000e-01)
%55 = fdiv double %50, %54
%56 = fdiv double %49, %53
%57 = fsub double 1.000000e+00, %51
%58 = fadd double %51, 1.000000e+00
%59 = fdiv double %57, %58
%60 = tail call double @log(double %59)
%61 = tail call double @llvm.fmuladd.f64(double %46, double %60, double %56)
%62 = fmul double %39, %61
%63 = fmul double %55, %55
%64 = fsub double %15, %16
%65 = tail call double @llvm.fabs.f64(double %64)
%66 = fcmp ogt double %65, 1.000000e-10
br i1 %66, label %67, label %86
67: ; preds = %29
%68 = tail call double @sin(double %16)
%69 = tail call double @cos(double %16)
%70 = fmul double %34, %68
%71 = fneg double %70
%72 = tail call double @llvm.fmuladd.f64(double %71, double %70, double 1.000000e+00)
%73 = tail call double @pow(double %72, double 5.000000e-01)
%74 = fdiv double %69, %73
%75 = fdiv double %68, %72
%76 = fsub double 1.000000e+00, %70
%77 = fadd double %70, 1.000000e+00
%78 = fdiv double %76, %77
%79 = tail call double @log(double %78)
%80 = tail call double @llvm.fmuladd.f64(double %46, double %79, double %75)
%81 = fmul double %39, %80
%82 = fneg double %74
%83 = tail call double @llvm.fmuladd.f64(double %82, double %74, double %63)
%84 = fsub double %81, %62
%85 = fdiv double %83, %84
br label %86
86: ; preds = %29, %67
%87 = phi double [ %85, %67 ], [ %49, %29 ]
%88 = tail call double @llvm.fmuladd.f64(double %87, double %62, double %63)
%89 = fmul double %48, %87
%90 = fcmp olt double %88, %89
br i1 %90, label %96, label %91
91: ; preds = %86
%92 = fdiv double %10, %87
%93 = fsub double %88, %89
%94 = tail call double @pow(double %93, double 5.000000e-01)
%95 = fmul double %92, %94
br label %96
96: ; preds = %86, %91
%97 = phi double [ %95, %91 ], [ 0.000000e+00, %86 ]
%98 = fmul double %23, %34
%99 = fneg double %98
%100 = tail call double @llvm.fmuladd.f64(double %99, double %98, double 1.000000e+00)
%101 = fdiv double %23, %100
%102 = fsub double 1.000000e+00, %98
%103 = fadd double %98, 1.000000e+00
%104 = fdiv double %102, %103
%105 = tail call double @log(double %104)
%106 = tail call double @llvm.fmuladd.f64(double %46, double %105, double %101)
%107 = fmul double %39, %106
%108 = fmul double %87, %107
%109 = fcmp olt double %88, %108
br i1 %109, label %115, label %110
110: ; preds = %96
%111 = fdiv double %10, %87
%112 = fsub double %88, %108
%113 = tail call double @pow(double %112, double 5.000000e-01)
%114 = fmul double %111, %113
br label %115
115: ; preds = %96, %110
%116 = phi double [ %114, %110 ], [ 0.000000e+00, %96 ]
%117 = fcmp olt double %22, 0xC00921FB5444261E
%118 = fadd double %22, 0x401921FB5444261E
%119 = select i1 %117, double %118, double %22
%120 = fmul double %119, %87
%121 = tail call double @sin(double %120)
%122 = tail call double @llvm.fmuladd.f64(double %116, double %121, double %8)
store double %122, double* %2
%123 = tail call double @cos(double %120)
%124 = fneg double %116
%125 = tail call double @llvm.fmuladd.f64(double %124, double %123, double %97)
%126 = fadd double %125, %9
store double %126, double* %3
ret void
}