#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 pow(double, double);
double sin(double);
double tan(double);
void GPS_Math_LatLon_To_EN(double *E, double *N, double phi, double lambda,
                           double N0, double E0, double phi0, double lambda0,
                           double F0, double a, double b) {
  double esq;
  double n;
  double etasq;
  double nu;
  double rho;
  double M;
  double I;
  double II;
  double III;
  double IIIA;
  double IV;
  double V;
  double VI;
  double tmp;
  double tmp2;
  double fdf;
  double fde;
  phi0 = GPS_Math_Deg_To_Rad(phi0);
  lambda0 = GPS_Math_Deg_To_Rad(lambda0);
  phi = GPS_Math_Deg_To_Rad(phi);
  lambda = GPS_Math_Deg_To_Rad(lambda);
  esq = ((a * a) - (b * b)) / (a * a);
  n = (a - b) / (a + b);
  tmp = (double)1.0 - (esq * sin(phi) * sin(phi));
  nu = a * F0 * pow(tmp, (double)-0.5);
  rho = a * F0 * ((double)1.0 - esq) * pow(tmp, (double)-1.5);
  etasq = (nu / rho) - (double)1.0;
  fdf = (double)5.0 / (double)4.0;
  tmp = (double)1.0 + n + (fdf * n * n) + (fdf * n * n * n);
  tmp *= (phi - phi0);
  tmp2 = (double)3.0 * n + (double)3.0 * n * n +
         ((double)21. / (double)8.) * n * n * n;
  tmp2 *= (sin(phi - phi0) * cos(phi + phi0));
  tmp -= tmp2;
  fde = ((double)15.0 / (double)8.0);
  tmp2 = ((fde * n * n) + (fde * n * n * n)) * sin((double)2.0 * (phi - phi0));
  tmp2 *= cos((double)2.0 * (phi + phi0));
  tmp += tmp2;
  tmp2 = ((double)35.0 / (double)24.0) * n * n * n;
  tmp2 *= sin((double)3.0 * (phi - phi0));
  tmp2 *= cos((double)3.0 * (phi + phi0));
  tmp -= tmp2;
  M = b * F0 * tmp;
  I = M + N0;
  II = (nu / (double)2.0) * sin(phi) * cos(phi);
  III = (nu / (double)24.0) * sin(phi) * cos(phi) * cos(phi) * cos(phi);
  III *= ((double)5.0 - (tan(phi) * tan(phi)) + ((double)9.0 * etasq));
  IIIA = (nu / (double)720.0) * sin(phi) * pow(cos(phi), (double)5.0);
  IIIA *= ((double)61.0 - ((double)58.0 * tan(phi) * tan(phi)) +
           pow(tan(phi), (double)4.0));
  IV = nu * cos(phi);
  tmp = pow(cos(phi), (double)3.0);
  tmp *= ((nu / rho) - tan(phi) * tan(phi));
  V = (nu / (double)6.0) * tmp;
  tmp = (double)5.0 - ((double)18.0 * tan(phi) * tan(phi));
  tmp += tan(phi) * tan(phi) * tan(phi) * tan(phi) + ((double)14.0 * etasq);
  tmp -= ((double)58.0 * tan(phi) * tan(phi) * etasq);
  tmp2 = cos(phi) * cos(phi) * cos(phi) * cos(phi) * cos(phi) * tmp;
  VI = (nu / (double)120.0) * tmp2;
  *N = I + II * (lambda - lambda0) * (lambda - lambda0) +
       III * pow((lambda - lambda0), (double)4.0) +
       IIIA * pow((lambda - lambda0), (double)6.0);
  *E = E0 + IV * (lambda - lambda0) + V * pow((lambda - lambda0), (double)3.0) +
       VI * pow((lambda - lambda0), (double)5.0);
  return;
}


x86 assembly (clang, -O0):
<GPS_Math_LatLon_To_EN>:
push   %rbp
mov    %rsp,%rbp
sub    $0x200,%rsp
movsd  0x10(%rbp),%xmm8
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  %xmm0,-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)
movsd  -0x38(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x18(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  0x10(%rbp),%xmm1
mulsd  0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
subsd  0x10(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
addsd  0x10(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x200(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1f8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xdea(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  0xdd4(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1f0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  0xd91(%rip),%xmm1
subsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  0xd80(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1e8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm0
divsd  -0x78(%rbp),%xmm0
movsd  0xd45(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xd3c(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0xd24(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  -0x60(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0x60(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x60(%rbp),%xmm1
movsd  0xc3f(%rip),%xmm0
mulsd  -0x60(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  0xc2d(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xc8d(%rip),%xmm0
mulsd  -0x60(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x1e0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xbfd(%rip),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0x60(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x60(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x18(%rbp),%xmm1
subsd  -0x38(%rbp),%xmm1
movsd  0xb9a(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1d8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x18(%rbp),%xmm1
addsd  -0x38(%rbp),%xmm1
movsd  0xb68(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1060 <cos@plt>
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xb37(%rip),%xmm0
mulsd  -0x60(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x18(%rbp),%xmm1
subsd  -0x38(%rbp),%xmm1
movsd  0xaae(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <sin@plt>
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x18(%rbp),%xmm1
addsd  -0x38(%rbp),%xmm1
movsd  0xa83(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1060 <cos@plt>
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x10(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  0xa70(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1d0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x1c8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  0xa0d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1c0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x1b8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x1b0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movsd  -0x1a0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x8de(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
movsd  0x91d(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  0x8f0(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x198(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movsd  0x869(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x190(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm1
movsd  0x860(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm1
movsd  -0x188(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x834(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movsd  0x7ee(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x180(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x178(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movsd  0x77a(%rip),%xmm1
call   1070 <pow@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movsd  -0x170(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x168(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  0x6f8(%rip),%xmm1
divsd  %xmm1,%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm1
movsd  0x6f7(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm1
movsd  -0x160(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x67b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm1
movsd  -0x158(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm1
movsd  -0x150(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm2
movsd  -0x148(%rbp),%xmm0
ff
movsd  0x62e(%rip),%xmm1
mulsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm1
movsd  0x5f4(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  0x4e8(%rip),%xmm1
divsd  %xmm1,%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x20(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
movsd  -0x20(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0x472(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x118(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x110(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0x420(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x108(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0x20(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0x3a7(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0xf8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0x355(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0xe8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x200,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<GPS_Math_LatLon_To_EN>:
push   %r14
push   %rbx
sub    $0x78,%rsp
movsd  %xmm7,0x18(%rsp)
movsd  %xmm6,0x48(%rsp)
movsd  %xmm5,0x38(%rsp)
movsd  %xmm3,0x70(%rsp)
movsd  %xmm2,0x50(%rsp)
movsd  %xmm1,0x30(%rsp)
movsd  %xmm0,(%rsp)
mov    %rsi,%rbx
mov    %rdi,%r14
movaps %xmm4,%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x38(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x68(%rsp)
movsd  (%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,(%rsp)
movsd  0x30(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x90(%rsp),%xmm4
movapd %xmm4,%xmm0
mulsd  %xmm4,%xmm0
movsd  0x18(%rsp),%xmm2
movapd %xmm2,%xmm1
mulsd  %xmm2,%xmm1
movapd %xmm1,%xmm3
subsd  %xmm0,%xmm3
divsd  %xmm1,%xmm3
movsd  %xmm3,0x8(%rsp)
movapd %xmm2,%xmm3
subsd  %xmm4,%xmm3
movapd %xmm2,%xmm0
addsd  %xmm4,%xmm0
divsd  %xmm0,%xmm3
movsd  %xmm3,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x30(%rsp)
movsd  (%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x30(%rsp),%xmm1
mulsd  0x8(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0xdbe(%rip),%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,0x40(%rsp)
movsd  0x18(%rsp),%xmm0
mulsd  0x48(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0xda2(%rip),%xmm1
movapd %xmm2,%xmm0
call   1070 <pow@plt>
movsd  0x18(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0xd79(%rip),%xmm0
subsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0xd71(%rip),%xmm1
movsd  0x40(%rsp),%xmm0
call   1070 <pow@plt>
mulsd  0x18(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x58(%rsp)
movsd  0xd50(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm2
movsd  0xd20(%rip),%xmm1
addsd  %xmm2,%xmm1
movsd  0xd34(%rip),%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm0,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  (%rsp),%xmm1
subsd  0x28(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rsp)
movapd %xmm1,%xmm0
movsd  %xmm1,0x40(%rsp)
movapd %xmm2,%xmm3
mulsd  0xcfd(%rip),%xmm3
movapd %xmm2,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm3,%xmm1
movsd  0xcf1(%rip),%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm1,%xmm3
movsd  %xmm3,0x20(%rsp)
call   1040 <sin@plt>
movsd  %xmm0,0x60(%rsp)
movsd  0x28(%rsp),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
call   1060 <cos@plt>
mulsd  0x60(%rsp),%xmm0
mulsd  0x20(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0xc9e(%rip),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm0,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  0x40(%rsp),%xmm0
addsd  %xmm0,%xmm0
call   1040 <sin@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x28(%rsp),%xmm0
addsd  %xmm0,%xmm0
call   1060 <cos@plt>
mulsd  0x20(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xc46(%rip),%xmm1
movsd  0x10(%rsp),%xmm0
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x40(%rsp),%xmm0
mulsd  0xc08(%rip),%xmm0
call   1040 <sin@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
mulsd  0xbe9(%rip),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
mulsd  0x90(%rsp),%xmm1
mulsd  %xmm0,%xmm1
addsd  0x50(%rsp),%xmm1
movsd  %xmm1,0x48(%rsp)
movsd  0xbd1(%rip),%xmm0
mulsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  (%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x30(%rsp),%xmm0
divsd  0xb93(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0xb15(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  0xb11(%rip),%xmm0
mulsd  0x18(%rsp),%xmm0
addsd  %xmm1,%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x30(%rsp),%xmm0
divsd  0xaf5(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
movsd  0xab7(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  0x8(%rsp),%xmm1
mulsd  0xa96(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xa92(%rip),%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  0xa82(%rip),%xmm1
call   1070 <pow@plt>
addsd  0x8(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
movsd  0x9eb(%rip),%xmm1
call   1070 <pow@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,0x20(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
mulsd  0x20(%rsp),%xmm0
movsd  0x58(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  0x30(%rsp),%xmm0
divsd  0xa02(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  0x10(%rsp),%xmm1
mulsd  0x9d8(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0x994(%rip),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,0x20(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  0x980(%rip),%xmm1
mulsd  0x18(%rsp),%xmm1
mulsd  0x20(%rsp),%xmm0
addsd  %xmm1,%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1050 <tan@plt>
movsd  0x10(%rsp),%xmm1
mulsd  0x914(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  0x18(%rsp),%xmm1
addsd  0x20(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
movsd  %xmm0,0x18(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  (%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
divsd  0x8b8(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  0x38(%rsp),%xmm0
subsd  0x68(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x28(%rsp),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  0x48(%rsp),%xmm1
movsd  %xmm1,0x28(%rsp)
movsd  0x85a(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x28(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x38(%rsp),%xmm0
movsd  0x83e(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0x50(%rsp),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rbx)
movsd  0x8(%rsp),%xmm1
movsd  0x38(%rsp),%xmm0
mulsd  %xmm0,%xmm1
addsd  0x70(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x7a6(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0x58(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x38(%rsp),%xmm0
movsd  0x7b2(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0x30(%rsp),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%r14)
add    $0x78,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
define void @GPS_Math_LatLon_To_EN(double* nocapture writeonly %0, double* nocapture writeonly %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10) {
%12 = tail call double @GPS_Math_Deg_To_Rad(double %6)
%13 = tail call double @GPS_Math_Deg_To_Rad(double %7)
%14 = tail call double @GPS_Math_Deg_To_Rad(double %2)
%15 = tail call double @GPS_Math_Deg_To_Rad(double %3)
%16 = fneg double %10
%17 = fmul double %16, %10
%18 = tail call double @llvm.fmuladd.f64(double %9, double %9, double %17)
%19 = fmul double %9, %9
%20 = fdiv double %18, %19
%21 = fsub double %9, %10
%22 = fadd double %9, %10
%23 = fdiv double %21, %22
%24 = tail call double @sin(double %14)
%25 = tail call double @sin(double %14)
%26 = fneg double %20
%27 = fmul double %24, %26
%28 = tail call double @llvm.fmuladd.f64(double %27, double %25, double 1.000000e+00)
%29 = fmul double %8, %9
%30 = tail call double @pow(double %28, double -5.000000e-01)
%31 = fmul double %29, %30
%32 = fsub double 1.000000e+00, %20
%33 = fmul double %29, %32
%34 = tail call double @pow(double %28, double -1.500000e+00)
%35 = fmul double %33, %34
%36 = fdiv double %31, %35
%37 = fadd double %36, -1.000000e+00
%38 = fadd double %23, 1.000000e+00
%39 = fmul double %23, 1.250000e+00
%40 = tail call double @llvm.fmuladd.f64(double %39, double %23, double %38)
%41 = fmul double %23, %39
%42 = tail call double @llvm.fmuladd.f64(double %41, double %23, double %40)
%43 = fsub double %14, %12
%44 = fmul double %42, %43
%45 = fmul double %23, 3.000000e+00
%46 = fmul double %23, %45
%47 = tail call double @llvm.fmuladd.f64(double %23, double 3.000000e+00, double %46)
%48 = fmul double %23, 2.625000e+00
%49 = fmul double %23, %48
%50 = tail call double @llvm.fmuladd.f64(double %49, double %23, double %47)
%51 = tail call double @sin(double %43)
%52 = fadd double %12, %14
%53 = tail call double @cos(double %52)
%54 = fmul double %51, %53
%55 = fmul double %50, %54
%56 = fsub double %44, %55
%57 = fmul double %23, 1.875000e+00
%58 = fmul double %23, %57
%59 = fmul double %23, %58
%60 = tail call double @llvm.fmuladd.f64(double %57, double %23, double %59)
%61 = fmul double %43, 2.000000e+00
%62 = tail call double @sin(double %61)
%63 = fmul double %60, %62
%64 = fmul double %52, 2.000000e+00
%65 = tail call double @cos(double %64)
%66 = fmul double %63, %65
%67 = fadd double %56, %66
%68 = fmul double %23, 0x3FF7555555555555
%69 = fmul double %23, %68
%70 = fmul double %23, %69
%71 = fmul double %43, 3.000000e+00
%72 = tail call double @sin(double %71)
%73 = fmul double %70, %72
%74 = fmul double %52, 3.000000e+00
%75 = tail call double @cos(double %74)
%76 = fmul double %73, %75
%77 = fsub double %67, %76
%78 = fmul double %8, %10
%79 = fmul double %78, %77
%80 = fadd double %79, %4
%81 = fmul double %31, 5.000000e-01
%82 = tail call double @sin(double %14)
%83 = fmul double %81, %82
%84 = tail call double @cos(double %14)
%85 = fmul double %83, %84
%86 = fdiv double %31, 2.400000e+01
%87 = tail call double @sin(double %14)
%88 = fmul double %86, %87
%89 = tail call double @cos(double %14)
%90 = fmul double %88, %89
%91 = tail call double @cos(double %14)
%92 = fmul double %90, %91
%93 = tail call double @cos(double %14)
%94 = fmul double %92, %93
%95 = tail call double @tan(double %14)
%96 = tail call double @tan(double %14)
%97 = fneg double %95
%98 = tail call double @llvm.fmuladd.f64(double %97, double %96, double 5.000000e+00)
%99 = tail call double @llvm.fmuladd.f64(double %37, double 9.000000e+00, double %98)
%100 = fmul double %94, %99
%101 = fdiv double %31, 7.200000e+02
%102 = tail call double @sin(double %14)
%103 = fmul double %101, %102
%104 = tail call double @cos(double %14)
%105 = tail call double @pow(double %104, double 5.000000e+00)
%106 = fmul double %103, %105
%107 = tail call double @tan(double %14)
%108 = tail call double @tan(double %14)
%109 = fmul double %107, -5.800000e+01
%110 = tail call double @llvm.fmuladd.f64(double %109, double %108, double 6.100000e+01)
%111 = tail call double @tan(double %14)
%112 = tail call double @pow(double %111, double 4.000000e+00)
%113 = fadd double %110, %112
%114 = fmul double %106, %113
%115 = tail call double @cos(double %14)
%116 = fmul double %31, %115
%117 = tail call double @cos(double %14)
%118 = tail call double @pow(double %117, double 3.000000e+00)
%119 = tail call double @tan(double %14)
%120 = tail call double @tan(double %14)
%121 = fneg double %119
%122 = tail call double @llvm.fmuladd.f64(double %121, double %120, double %36)
%123 = fmul double %118, %122
%124 = fdiv double %31, 6.000000e+00
%125 = fmul double %124, %123
%126 = tail call double @tan(double %14)
%127 = tail call double @tan(double %14)
%128 = fmul double %126, -1.800000e+01
%129 = tail call double @llvm.fmuladd.f64(double %128, double %127, double 5.000000e+00)
%130 = tail call double @tan(double %14)
%131 = tail call double @tan(double %14)
%132 = fmul double %130, %131
%133 = tail call double @tan(double %14)
%134 = fmul double %132, %133
%135 = tail call double @tan(double %14)
%136 = fmul double %37, 1.400000e+01
%137 = tail call double @llvm.fmuladd.f64(double %134, double %135, double %136)
%138 = fadd double %129, %137
%139 = tail call double @tan(double %14)
%140 = tail call double @tan(double %14)
%141 = fmul double %139, -5.800000e+01
%142 = fmul double %141, %140
%143 = tail call double @llvm.fmuladd.f64(double %142, double %37, double %138)
%144 = tail call double @cos(double %14)
%145 = tail call double @cos(double %14)
%146 = fmul double %144, %145
%147 = tail call double @cos(double %14)
%148 = fmul double %146, %147
%149 = tail call double @cos(double %14)
%150 = fmul double %148, %149
%151 = tail call double @cos(double %14)
%152 = fmul double %150, %151
%153 = fmul double %143, %152
%154 = fdiv double %31, 1.200000e+02
%155 = fmul double %154, %153
%156 = fsub double %15, %13
%157 = fmul double %156, %85
%158 = tail call double @llvm.fmuladd.f64(double %157, double %156, double %80)
%159 = tail call double @pow(double %156, double 4.000000e+00)
%160 = tail call double @llvm.fmuladd.f64(double %100, double %159, double %158)
%161 = tail call double @pow(double %156, double 6.000000e+00)
%162 = tail call double @llvm.fmuladd.f64(double %114, double %161, double %160)
store double %162, double* %1
%163 = tail call double @llvm.fmuladd.f64(double %116, double %156, double %5)
%164 = tail call double @pow(double %156, double 3.000000e+00)
%165 = tail call double @llvm.fmuladd.f64(double %125, double %164, double %163)
%166 = tail call double @pow(double %156, double 5.000000e+00)
%167 = tail call double @llvm.fmuladd.f64(double %155, double %166, double %165)
store double %167, double* %0
ret void
}