#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 GPS_Math_Rad_To_Deg(double);
double asin(double);
double atan(double);
double cos(double);
double log(double);
double pow(double, double);
double sin(double);
double tan(double);
void GPS_Math_TCylEA_EN_To_LatLon(double E, double N, double *phi,
                                  double *lambda, double phi0, double M0,
                                  double E0, double N0, double a, double b) {
  double p2;
  double po2;
  double a2;
  double b2;
  double e;
  double e2;
  double e4;
  double e6;
  double AM0;
  double qp;
  double om;
  double oo;
  double c0;
  double c1;
  double c2;
  double c3;
  double b0;
  double b1;
  double B2;
  double b3;
  double A0;
  double A1;
  double A2;
  double sf;
  double x;
  double som;
  double phis;
  double j;
  double te4;
  double lat;
  double phi0s2;
  double phi0s4;
  double phi0s6;
  double E1;
  double E2;
  double E3;
  double E4;
  double dx;
  double dy;
  double bt;
  double btc;
  double btp;
  double btcc;
  double Mc;
  double Muc;
  double mus2;
  double mus4;
  double mus6;
  double mus8;
  double bts2;
  double bts4;
  double bts6;
  double PHIc;
  double Qc;
  double Qco;
  double t;
  sf = (double)1.0;
  phi0 = GPS_Math_Deg_To_Rad(phi0);
  M0 = GPS_Math_Deg_To_Rad(M0);
  p2 = (double)3.141592653589 * (double)2.0;
  po2 = (double)3.141592653589 / (double)2.0;
  if (M0 > 3.141592653589)
    M0 -= p2;
  a2 = a * a;
  b2 = b * b;
  e2 = (a2 - b2) / a2;
  e4 = e2 * e2;
  e6 = e2 * e4;
  e = pow(e2, (double).5);
  om = (double)1. - e2;
  som = pow(om, (double).5);
  oo = (double)1. / ((double)2. * e);
  phis = sin(po2);
  x = e * phis;
  qp = om * (phis / ((double)1. - e2 * phis * phis) -
             oo * log(((double)1. - x) / ((double)1. + x)));
  A0 = e2 / (double)3. + (double)31. * e4 / (double)180. +
       (double)517. * e6 / (double)5040.;
  A1 = (double)23. * e4 / (double)360. + (double)251. * e6 / (double)3780.;
  A2 = (double)761. * e6 / (double)45360.;
  E1 = ((double)1.0 - som) / ((double)1.0 + som);
  E2 = E1 * E1;
  E3 = E2 * E1;
  E4 = E3 * E1;
  b0 = (double)3. * E1 / (double)2. - (double)27. * E3 / (double)32.;
  b1 = (double)21. * E2 / (double)16. - (double)55. * E4 / (double)32.;
  B2 = (double)151. * E3 / (double)96.;
  b3 = (double)1097. * E4 / (double)512.;
  j = (double)45.0 * e6 / (double)1024.0;
  te4 = (double)3.0 * e4;
  c0 = (double)1.0 - e2 / (double)4.0 - te4 / (double)64.0 -
       (double)5.0 * e6 / (double)256.0;
  c1 = (double)3.0 * e2 / (double)8.0 + te4 / (double)32.0 + j;
  c2 = (double)15.0 * e4 / (double)256.0 + j;
  c3 = (double)35.0 * e6 / (double)3072.0;
  lat = c0 * phi0;
  phi0s2 = c1 * sin((double)2.0 * phi0);
  phi0s4 = c2 * sin((double)4.0 * phi0);
  phi0s6 = c3 * sin((double)6.0 * phi0);
  AM0 = a * (lat - phi0s2 + phi0s4 - phi0s6);
  dx = E - E0;
  dy = N - N0;
  Mc = AM0 + dy / sf;
  Muc = Mc / (c0 * a);
  mus2 = b0 * sin((double)2.0 * Muc);
  mus4 = b1 * sin((double)4.0 * Muc);
  mus6 = B2 * sin((double)6.0 * Muc);
  mus8 = b3 * sin((double)6.0 * Muc);
  PHIc = Muc + mus2 + mus4 + mus6 + mus8;
  phis = sin(PHIc);
  x = e * phis;
  Qc = om * (phis / ((double)1. - e2 * phis * phis) -
             oo * log(((double)1. - x) / ((double)1. + x)));
  Qco = Qc / qp;
  if (Qco > (double)1.)
    Qco = (double)1.;
  else if (Qco < (double)-1.)
    Qco = (double)-1.;
  btc = asin(Qco);
  btcc = cos(btc);
  t = sf * dx * btcc * pow((double)1. - e2 * phis * phis, (double).5) /
      (a * cos(PHIc));
  if (t > (double)1.)
    t = (double)1.;
  else if (t < (double)-1.)
    t = (double)-1.;
  btp = -asin(t);
  bt = asin(cos(btp) * sin(btc));
  bts2 = A0 * sin((double)2.0 * bt);
  bts4 = A1 * sin((double)4.0 * bt);
  bts6 = A2 * sin((double)6.0 * bt);
  *phi = bt + bts2 + bts4 + bts6;
  *lambda = M0 - atan(tan(btp) / btcc);
  if (*phi > po2)
    *phi = po2;
  else if (*phi < -po2)
    *phi = -po2;
  if (*lambda > 3.141592653589)
    *lambda -= p2;
  if (*lambda < -3.141592653589)
    *lambda += p2;
  if (*lambda > 3.141592653589)
    *lambda = 3.141592653589;
  else if (*lambda < -3.141592653589)
    *lambda = -3.141592653589;
  *lambda = GPS_Math_Rad_To_Deg(*lambda);
  *phi = GPS_Math_Rad_To_Deg(*phi);
  return;
}


x86 assembly (clang, -O0):
<GPS_Math_TCylEA_EN_To_LatLon>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2c0,%rsp
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  0xe45(%rip),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
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  0xe0f(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xdfa(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xde0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    123d <GPS_Math_TCylEA_EN_To_LatLon+0xad>
movsd  -0x58(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  0xe7d(%rip),%xmm1
call   10b0 <pow@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  0xd63(%rip),%xmm0
subsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0xe4e(%rip),%xmm1
call   10b0 <pow@plt>
movsd  %xmm0,-0x120(%rbp)
ff
movsd  0xd49(%rip),%xmm1
mulsd  -0x78(%rbp),%xmm1
movsd  0xd24(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm1
mulsd  -0x128(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm2
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xca1(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x270(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x278(%rbp)
ff
movsd  0xc79(%rip),%xmm0
subsd  -0x118(%rbp),%xmm0
ff
movsd  0xc69(%rip),%xmm1
addsd  -0x118(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   10a0 <log@plt>
movsd  -0x278(%rbp),%xmm1
ff
movsd  -0x270(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x268(%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  -0x80(%rbp),%xmm0
movsd  0xc55(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xcf9(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  0xce1(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  0xcc9(%rip),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
movsd  0xcb1(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0xc91(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  0xc79(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xc65(%rip),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
movsd  0xc4d(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0xc2d(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  0xc15(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0xb49(%rip),%xmm0
subsd  -0x120(%rbp),%xmm0
ff
movsd  0xb39(%rip),%xmm1
addsd  -0x120(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  0xb25(%rip),%xmm0
mulsd  -0x160(%rbp),%xmm0
ff
movsd  0xadd(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xb69(%rip),%xmm1
mulsd  -0x170(%rbp),%xmm1
ff
movsd  0xae9(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xb39(%rip),%xmm0
mulsd  -0x168(%rbp),%xmm0
ff
movsd  0xb21(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xb0d(%rip),%xmm1
mulsd  -0x178(%rbp),%xmm1
ff
movsd  0xaa5(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xadd(%rip),%xmm0
mulsd  -0x170(%rbp),%xmm0
ff
movsd  0xac5(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xaa9(%rip),%xmm0
mulsd  -0x178(%rbp),%xmm0
ff
movsd  0xa91(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0xa75(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  0xa5d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  0xa31(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x80(%rbp),%xmm1
movsd  0x9d4(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0x9b8(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  -0x138(%rbp),%xmm1
ff
movsd  0xa04(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  0x9ec(%rip),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
movsd  0x9b4(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x9bc(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  0x9a7(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x138(%rbp),%xmm1
ff
movsd  0x98b(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
addsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x963(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  0x94b(%rip),%xmm1
divsd  %xmm1,%xmm0
addsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x927(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  0x90f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x260(%rbp)
ff
movsd  0x8ce(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x260(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x258(%rbp)
ff
movsd  0x88d(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x258(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x250(%rbp)
ff
movsd  0x84c(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x250(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x140(%rbp),%xmm1
ff
subsd  -0x148(%rbp),%xmm1
ff
addsd  -0x150(%rbp),%xmm1
ff
subsd  -0x158(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm1
ff
divsd  -0x110(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x1b0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0x48(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x248(%rbp)
ff
movsd  0x789(%rip),%xmm0
mulsd  -0x1b8(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x248(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x240(%rbp)
ff
movsd  0x745(%rip),%xmm0
mulsd  -0x1b8(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x240(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x238(%rbp)
ff
movsd  0x701(%rip),%xmm0
mulsd  -0x1b8(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x238(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x230(%rbp)
ff
movsd  0x6c5(%rip),%xmm0
mulsd  -0x1b8(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x230(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x1b8(%rbp),%xmm0
ff
addsd  -0x1c0(%rbp),%xmm0
ff
addsd  -0x1c8(%rbp),%xmm0
ff
addsd  -0x1d0(%rbp),%xmm0
ff
addsd  -0x1d8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x1f8(%rbp),%xmm0
ff
call   1040 <sin@plt>
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm1
mulsd  -0x128(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm2
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0x5ef(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x228(%rbp)
ff
movsd  0x5c7(%rip),%xmm0
subsd  -0x118(%rbp),%xmm0
ff
movsd  0x5b7(%rip),%xmm1
addsd  -0x118(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   10a0 <log@plt>
movsd  -0x228(%rbp),%xmm1
ff
movsd  -0x220(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x218(%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,-0x200(%rbp)
ff
movsd  -0x200(%rbp),%xmm0
ff
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x208(%rbp),%xmm0
ff
movsd  0x538(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1aff <GPS_Math_TCylEA_EN_To_LatLon+0x96f>
movsd  0x526(%rip),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
jmp    1b2a <GPS_Math_TCylEA_EN_To_LatLon+0x99a>
movsd  0x621(%rip),%xmm0
ucomisd -0x208(%rbp),%xmm0
ff
jbe    1b25 <GPS_Math_TCylEA_EN_To_LatLon+0x995>
movsd  0x60b(%rip),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
jmp    1b2a <GPS_Math_TCylEA_EN_To_LatLon+0x99a>
movsd  -0x208(%rbp),%xmm0
ff
call   1060 <asin@plt>
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
call   1090 <cos@plt>
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x1a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x290(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x46c(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0x568(%rip),%xmm1
call   10b0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x290(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x280(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x288(%rbp)
ff
movsd  -0x1f8(%rbp),%xmm0
ff
call   1090 <cos@plt>
movsd  -0x288(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x280(%rbp),%xmm0
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x210(%rbp),%xmm0
ff
movsd  0x3f7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1c40 <GPS_Math_TCylEA_EN_To_LatLon+0xab0>
movsd  0x3e5(%rip),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
jmp    1c6b <GPS_Math_TCylEA_EN_To_LatLon+0xadb>
movsd  0x4e0(%rip),%xmm0
ucomisd -0x210(%rbp),%xmm0
ff
jbe    1c66 <GPS_Math_TCylEA_EN_To_LatLon+0xad6>
movsd  0x4ca(%rip),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
jmp    1c6b <GPS_Math_TCylEA_EN_To_LatLon+0xadb>
movsd  -0x210(%rbp),%xmm0
ff
call   1060 <asin@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x1a0(%rbp),%xmm0
ff
call   1090 <cos@plt>
movsd  %xmm0,-0x2b8(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x2b8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
call   1060 <asin@plt>
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  0x343(%rip),%xmm0
mulsd  -0x190(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x2b0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  0x2ff(%rip),%xmm0
mulsd  -0x190(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x2a8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  0x2bb(%rip),%xmm0
mulsd  -0x190(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x2a0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x190(%rbp),%xmm0
ff
addsd  -0x1e0(%rbp),%xmm0
ff
addsd  -0x1e8(%rbp),%xmm0
ff
addsd  -0x1f0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x298(%rbp)
ff
movsd  -0x1a0(%rbp),%xmm0
ff
call   1070 <tan@plt>
divsd  -0x1a8(%rbp),%xmm0
ff
call   1050 <atan@plt>
movaps %xmm0,%xmm1
movsd  -0x298(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x60(%rbp),%xmm0
jbe    1e14 <GPS_Math_TCylEA_EN_To_LatLon+0xc84>
movsd  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e6b <GPS_Math_TCylEA_EN_To_LatLon+0xcdb>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm1,%xmm0
jbe    1e66 <GPS_Math_TCylEA_EN_To_LatLon+0xcd6>
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e6b <GPS_Math_TCylEA_EN_To_LatLon+0xcdb>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x185(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1e9a <GPS_Math_TCylEA_EN_To_LatLon+0xd0a>
movsd  -0x58(%rbp),%xmm1
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  0x28a(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    1ec1 <GPS_Math_TCylEA_EN_To_LatLon+0xd31>
movsd  -0x58(%rbp),%xmm0
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x12f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1ef0 <GPS_Math_TCylEA_EN_To_LatLon+0xd60>
mov    -0x20(%rbp),%rax
movsd  0x119(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1f1b <GPS_Math_TCylEA_EN_To_LatLon+0xd8b>
mov    -0x20(%rbp),%rax
movsd  0x234(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    1f16 <GPS_Math_TCylEA_EN_To_LatLon+0xd86>
mov    -0x20(%rbp),%rax
movsd  0x21e(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1f1b <GPS_Math_TCylEA_EN_To_LatLon+0xd8b>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
call   1080 <GPS_Math_Rad_To_Deg@plt>
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
call   1080 <GPS_Math_Rad_To_Deg@plt>
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x2c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<GPS_Math_TCylEA_EN_To_LatLon>:
push   %r14
push   %rbx
sub    $0x138,%rsp
movsd  %xmm7,0x10(%rsp)
movsd  %xmm6,0x38(%rsp)
movsd  %xmm5,0xa8(%rsp)
movsd  %xmm4,0xa0(%rsp)
movsd  %xmm3,0x28(%rsp)
mov    %rsi,%r14
mov    %rdi,%rbx
movsd  %xmm1,0x50(%rsp)
movsd  %xmm0,0x8(%rsp)
movaps %xmm2,%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x28(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  0xe0f(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0xe0b(%rip),%xmm2
cmpltsd %xmm0,%xmm2
andpd  %xmm2,%xmm1
andnpd %xmm0,%xmm2
orpd   %xmm1,%xmm2
movapd %xmm2,0x120(%rsp)
movsd  0x38(%rsp),%xmm1
mulsd  %xmm1,%xmm1
movsd  0x10(%rsp),%xmm2
mulsd  %xmm2,%xmm2
movapd %xmm1,%xmm0
subsd  %xmm2,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x70(%rsp)
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
movapd %xmm0,%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x20(%rsp)
movsd  0xdaf(%rip),%xmm1
call   10b0 <pow@plt>
movsd  %xmm0,0x88(%rsp)
movsd  0xda1(%rip),%xmm0
subsd  0x70(%rsp),%xmm0
movapd %xmm0,0xc0(%rsp)
movsd  0xd82(%rip),%xmm1
call   10b0 <pow@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0x88(%rsp),%xmm1
movapd %xmm1,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xd60(%rip),%xmm2
movapd %xmm2,%xmm0
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   10a0 <log@plt>
movapd %xmm0,0x110(%rsp)
movsd  0xd42(%rip),%xmm0
divsd  0x10(%rsp),%xmm0
movapd %xmm0,0x100(%rsp)
movsd  0xd33(%rip),%xmm0
movsd  0x70(%rsp),%xmm3
movapd %xmm3,%xmm1
divsd  %xmm0,%xmm1
movsd  0xd25(%rip),%xmm2
movsd  0x18(%rsp),%xmm6
mulsd  %xmm6,%xmm2
divsd  0xd1b(%rip),%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x10(%rsp)
movsd  0xd11(%rip),%xmm1
movsd  0x20(%rsp),%xmm8
mulsd  %xmm8,%xmm1
divsd  0xd05(%rip),%xmm1
movsd  %xmm1,0xb8(%rsp)
movsd  0xcfc(%rip),%xmm1
mulsd  %xmm6,%xmm1
divsd  0xcf8(%rip),%xmm1
movsd  %xmm1,0x28(%rsp)
movsd  0xcf2(%rip),%xmm1
mulsd  %xmm8,%xmm1
divsd  0xced(%rip),%xmm1
movsd  %xmm1,0xb0(%rsp)
movsd  0xc8c(%rip),%xmm1
movapd %xmm1,%xmm4
movsd  0x30(%rsp),%xmm2
subsd  %xmm2,%xmm4
addsd  %xmm1,%xmm2
movapd %xmm2,%xmm5
movapd %xmm1,%xmm2
divsd  %xmm5,%xmm4
movapd %xmm4,%xmm1
mulsd  %xmm4,%xmm1
movapd %xmm4,%xmm5
mulsd  %xmm1,%xmm5
unpcklpd %xmm4,%xmm1
mulpd  0xd6a(%rip),%xmm1
mulsd  %xmm5,%xmm4
mulpd  0xd6e(%rip),%xmm1
movapd %xmm4,%xmm7
unpcklpd %xmm5,%xmm7
mulpd  0xd6e(%rip),%xmm7
mulpd  0xd76(%rip),%xmm7
mulsd  0xc8e(%rip),%xmm5
divsd  0xc8e(%rip),%xmm5
movapd %xmm5,0xe0(%rsp)
mulsd  0xc85(%rip),%xmm4
mulsd  0xc85(%rip),%xmm4
movapd %xmm4,0xf0(%rsp)
addpd  %xmm1,%xmm7
movapd %xmm7,0xd0(%rsp)
movapd %xmm6,%xmm7
mulsd  %xmm0,%xmm7
movsd  0xc77(%rip),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0xc6f(%rip),%xmm2
mulsd  %xmm7,%xmm2
addsd  %xmm1,%xmm2
movsd  0xc67(%rip),%xmm5
mulsd  %xmm8,%xmm5
movsd  0xc62(%rip),%xmm1
mulsd  %xmm1,%xmm5
addsd  %xmm2,%xmm5
movsd  %xmm5,0x98(%rsp)
mulsd  %xmm3,%xmm0
mulsd  0xc4d(%rip),%xmm0
movsd  0xbe5(%rip),%xmm2
mulsd  0xc45(%rip),%xmm7
addsd  %xmm0,%xmm7
movsd  0xc01(%rip),%xmm0
mulsd  %xmm8,%xmm0
mulsd  0xbfc(%rip),%xmm0
mulsd  %xmm8,%xmm2
movsd  %xmm2,0x30(%rsp)
addsd  %xmm0,%xmm7
movsd  %xmm7,0x90(%rsp)
movapd %xmm6,%xmm2
mulsd  0xc10(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,0x18(%rsp)
movapd %xmm8,%xmm0
mulsd  0xbfd(%rip),%xmm0
divsd  0xbfd(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x40(%rsp),%xmm0
mulsd  %xmm0,%xmm5
movsd  %xmm5,0x68(%rsp)
addsd  %xmm0,%xmm0
call   1040 <sin@plt>
mulsd  0x90(%rsp),%xmm0
movsd  0x68(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x68(%rsp)
movsd  0x40(%rsp),%xmm0
mulsd  0xbbf(%rip),%xmm0
call   1040 <sin@plt>
mulsd  0x18(%rsp),%xmm0
addsd  0x68(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x40(%rsp),%xmm0
mulsd  0xba2(%rip),%xmm0
call   1040 <sin@plt>
mulsd  0x20(%rsp),%xmm0
addsd  0x18(%rsp),%xmm0
movsd  0x38(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movsd  0x8(%rsp),%xmm1
subsd  0xa0(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x50(%rsp),%xmm1
subsd  0xa8(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  0x98(%rsp),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  %xmm1,0x50(%rsp)
movapd %xmm1,%xmm0
addsd  %xmm1,%xmm0
call   1040 <sin@plt>
movapd %xmm0,0x40(%rsp)
movsd  0xb25(%rip),%xmm0
mulsd  0x50(%rsp),%xmm0
call   1040 <sin@plt>
unpcklpd 0x40(%rsp),%xmm0
mulpd  0xd0(%rsp),%xmm0
movapd %xmm0,0x40(%rsp)
movsd  0xb05(%rip),%xmm0
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
call   1040 <sin@plt>
mulsd  0xe0(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x18(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0xf0(%rsp),%xmm0
movapd 0x40(%rsp),%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
addsd  0x50(%rsp),%xmm1
addsd  %xmm2,%xmm1
addsd  0x20(%rsp),%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,0x40(%rsp)
movapd %xmm1,%xmm0
call   1040 <sin@plt>
movapd %xmm0,%xmm4
movsd  0x88(%rsp),%xmm2
mulsd  %xmm0,%xmm2
movsd  0x70(%rsp),%xmm0
mulsd  %xmm4,%xmm0
mulsd  %xmm4,%xmm0
movsd  0x991(%rip),%xmm1
movapd %xmm1,%xmm3
subsd  %xmm0,%xmm3
shufpd $0x2,0xad8(%rip),%xmm4
movapd %xmm3,0x70(%rsp)
movapd %xmm3,%xmm0
unpcklpd 0xc0(%rsp),%xmm0
divpd  %xmm0,%xmm4
movapd %xmm4,0x50(%rsp)
movapd %xmm1,%xmm0
subsd  %xmm2,%xmm0
addsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
call   10a0 <log@plt>
movapd 0xc0(%rsp),%xmm1
movapd 0x100(%rsp),%xmm2
unpcklpd %xmm2,%xmm2
unpcklpd 0x110(%rsp),%xmm0
mulpd  %xmm2,%xmm0
addpd  0x50(%rsp),%xmm0
unpcklpd %xmm1,%xmm1
mulpd  %xmm0,%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
divsd  %xmm0,%xmm1
movsd  0x909(%rip),%xmm0
ucomisd %xmm0,%xmm1
ja     172f <GPS_Math_TCylEA_EN_To_LatLon+0x59f>
movsd  0x903(%rip),%xmm0
ucomisd %xmm1,%xmm0
movapd %xmm1,%xmm0
jbe    172f <GPS_Math_TCylEA_EN_To_LatLon+0x59f>
movsd  0x8f1(%rip),%xmm0
movsd  0x10(%rsp),%xmm1
addsd  0xb8(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x28(%rsp),%xmm1
addsd  0xb0(%rsp),%xmm1
movsd  %xmm1,0x28(%rsp)
movsd  0x30(%rsp),%xmm1
divsd  0x911(%rip),%xmm1
movsd  %xmm1,0x30(%rsp)
call   1060 <asin@plt>
movsd  %xmm0,0x20(%rsp)
call   1090 <cos@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x875(%rip),%xmm1
movapd 0x70(%rsp),%xmm0
call   10b0 <pow@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movapd 0x40(%rsp),%xmm0
call   1090 <cos@plt>
movsd  0x8(%rsp),%xmm2
mulsd  0x38(%rsp),%xmm0
divsd  %xmm0,%xmm2
movsd  0x843(%rip),%xmm0
ucomisd %xmm0,%xmm2
ja     17f1 <GPS_Math_TCylEA_EN_To_LatLon+0x661>
movsd  0x83d(%rip),%xmm1
ucomisd %xmm2,%xmm1
movapd %xmm2,%xmm0
jbe    17f1 <GPS_Math_TCylEA_EN_To_LatLon+0x661>
movapd %xmm1,%xmm0
call   1060 <asin@plt>
movsd  %xmm0,0x38(%rsp)
call   1090 <cos@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x20(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x8(%rsp),%xmm0
call   1060 <asin@plt>
movsd  %xmm0,0x8(%rsp)
addsd  %xmm0,%xmm0
call   1040 <sin@plt>
movsd  0x10(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x8b4(%rip),%xmm0
mulsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x28(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x28(%rsp)
movsd  0x899(%rip),%xmm0
mulsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x30(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
addsd  0x28(%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx)
movsd  0x38(%rsp),%xmm0
call   1070 <tan@plt>
xorpd  0x8d7(%rip),%xmm0
divsd  0x50(%rsp),%xmm0
call   1050 <atan@plt>
movapd 0x120(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  %xmm2,(%r14)
movsd  (%rbx),%xmm1
movsd  0x836(%rip),%xmm0
ucomisd %xmm0,%xmm1
ja     18e6 <GPS_Math_TCylEA_EN_To_LatLon+0x756>
movsd  0x830(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    18ef <GPS_Math_TCylEA_EN_To_LatLon+0x75f>
movsd  %xmm0,(%rbx)
movsd  (%r14),%xmm2
movsd  0x711(%rip),%xmm3
ucomisd %xmm3,%xmm2
movsd  0x6fd(%rip),%xmm0
addsd  %xmm2,%xmm0
movapd %xmm3,%xmm1
cmpltsd %xmm2,%xmm1
andpd  %xmm1,%xmm0
andnpd %xmm2,%xmm1
orpd   %xmm0,%xmm1
movsd  0x7f4(%rip),%xmm2
movapd %xmm1,%xmm0
cmpltsd 0x7ef(%rip),%xmm0
addsd  %xmm1,%xmm2
andpd  %xmm0,%xmm2
andnpd %xmm1,%xmm0
orpd   %xmm2,%xmm0
ja     1959 <GPS_Math_TCylEA_EN_To_LatLon+0x7c9>
movsd  0x7d5(%rip),%xmm2
ucomisd %xmm1,%xmm2
ja     1959 <GPS_Math_TCylEA_EN_To_LatLon+0x7c9>
ucomisd %xmm3,%xmm0
jbe    1964 <GPS_Math_TCylEA_EN_To_LatLon+0x7d4>
jmp    1972 <GPS_Math_TCylEA_EN_To_LatLon+0x7e2>
movsd  %xmm0,(%r14)
ucomisd %xmm3,%xmm0
ja     1972 <GPS_Math_TCylEA_EN_To_LatLon+0x7e2>
movsd  0x7b4(%rip),%xmm3
ucomisd %xmm0,%xmm3
jbe    197b <GPS_Math_TCylEA_EN_To_LatLon+0x7eb>
movsd  %xmm3,(%r14)
movapd %xmm3,%xmm0
call   1080 <GPS_Math_Rad_To_Deg@plt>
movsd  %xmm0,(%r14)
movsd  (%rbx),%xmm0
call   1080 <GPS_Math_Rad_To_Deg@plt>
movsd  %xmm0,(%rbx)
add    $0x138,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define void @GPS_Math_TCylEA_EN_To_LatLon(double %0, double %1, double* %2, double* %3, double %4, double %5, double %6, double %7, double %8, double %9) {
%11 = alloca double
%12 = alloca double
%13 = alloca double*
%14 = alloca double*
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%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
%55 = alloca double
%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
store double %0, double* %11
store double %1, double* %12
store double* %2, double** %13
store double* %3, double** %14
store double %4, double* %15
store double %5, double* %16
store double %6, double* %17
store double %7, double* %18
store double %8, double* %19
store double %9, double* %20
store double 1.000000e+00, double* %44
%77 = load double, double* %15
%78 = call double @GPS_Math_Deg_To_Rad(double %77)
store double %78, double* %15
%79 = load double, double* %16
%80 = call double @GPS_Math_Deg_To_Rad(double %79)
store double %80, double* %16
store double 0x401921FB5444261E, double* %21
store double 0x3FF921FB5444261E, double* %22
%81 = load double, double* %16
%82 = fcmp ogt double %81, 0x400921FB5444261E
br i1 %82, label %83, label %87
83: ; preds = %10
%84 = load double, double* %21
%85 = load double, double* %16
%86 = fsub double %85, %84
store double %86, double* %16
br label %87
87: ; preds = %83, %10
%88 = load double, double* %19
%89 = load double, double* %19
%90 = fmul double %88, %89
store double %90, double* %23
%91 = load double, double* %20
%92 = load double, double* %20
%93 = fmul double %91, %92
store double %93, double* %24
%94 = load double, double* %23
%95 = load double, double* %24
%96 = fsub double %94, %95
%97 = load double, double* %23
%98 = fdiv double %96, %97
store double %98, double* %26
%99 = load double, double* %26
%100 = load double, double* %26
%101 = fmul double %99, %100
store double %101, double* %27
%102 = load double, double* %26
%103 = load double, double* %27
%104 = fmul double %102, %103
store double %104, double* %28
%105 = load double, double* %26
%106 = call double @pow(double %105, double 5.000000e-01)
store double %106, double* %25
%107 = load double, double* %26
%108 = fsub double 1.000000e+00, %107
store double %108, double* %31
%109 = load double, double* %31
%110 = call double @pow(double %109, double 5.000000e-01)
store double %110, double* %46
%111 = load double, double* %25
%112 = fmul double 2.000000e+00, %111
%113 = fdiv double 1.000000e+00, %112
store double %113, double* %32
%114 = load double, double* %22
%115 = call double @sin(double %114)
store double %115, double* %47
%116 = load double, double* %25
%117 = load double, double* %47
%118 = fmul double %116, %117
store double %118, double* %45
%119 = load double, double* %31
%120 = load double, double* %47
%121 = load double, double* %26
%122 = load double, double* %47
%123 = fmul double %121, %122
%124 = load double, double* %47
%125 = fneg double %123
%126 = call double @llvm.fmuladd.f64(double %125, double %124, double 1.000000e+00)
%127 = fdiv double %120, %126
%128 = load double, double* %32
%129 = load double, double* %45
%130 = fsub double 1.000000e+00, %129
%131 = load double, double* %45
%132 = fadd double 1.000000e+00, %131
%133 = fdiv double %130, %132
%134 = call double @log(double %133)
%135 = fneg double %128
%136 = call double @llvm.fmuladd.f64(double %135, double %134, double %127)
%137 = fmul double %119, %136
store double %137, double* %30
%138 = load double, double* %26
%139 = fdiv double %138, 3.000000e+00
%140 = load double, double* %27
%141 = fmul double 3.100000e+01, %140
%142 = fdiv double %141, 1.800000e+02
%143 = fadd double %139, %142
%144 = load double, double* %28
%145 = fmul double 5.170000e+02, %144
%146 = fdiv double %145, 5.040000e+03
%147 = fadd double %143, %146
store double %147, double* %41
%148 = load double, double* %27
%149 = fmul double 2.300000e+01, %148
%150 = fdiv double %149, 3.600000e+02
%151 = load double, double* %28
%152 = fmul double 2.510000e+02, %151
%153 = fdiv double %152, 3.780000e+03
%154 = fadd double %150, %153
store double %154, double* %42
%155 = load double, double* %28
%156 = fmul double 7.610000e+02, %155
%157 = fdiv double %156, 4.536000e+04
store double %157, double* %43
%158 = load double, double* %46
%159 = fsub double 1.000000e+00, %158
%160 = load double, double* %46
%161 = fadd double 1.000000e+00, %160
%162 = fdiv double %159, %161
store double %162, double* %54
%163 = load double, double* %54
%164 = load double, double* %54
%165 = fmul double %163, %164
store double %165, double* %55
%166 = load double, double* %55
%167 = load double, double* %54
%168 = fmul double %166, %167
store double %168, double* %56
%169 = load double, double* %56
%170 = load double, double* %54
%171 = fmul double %169, %170
store double %171, double* %57
%172 = load double, double* %54
%173 = fmul double 3.000000e+00, %172
%174 = fdiv double %173, 2.000000e+00
%175 = load double, double* %56
%176 = fmul double 2.700000e+01, %175
%177 = fdiv double %176, 3.200000e+01
%178 = fsub double %174, %177
store double %178, double* %37
%179 = load double, double* %55
%180 = fmul double 2.100000e+01, %179
%181 = fdiv double %180, 1.600000e+01
%182 = load double, double* %57
%183 = fmul double 5.500000e+01, %182
%184 = fdiv double %183, 3.200000e+01
%185 = fsub double %181, %184
store double %185, double* %38
%186 = load double, double* %56
%187 = fmul double 1.510000e+02, %186
%188 = fdiv double %187, 9.600000e+01
store double %188, double* %39
%189 = load double, double* %57
%190 = fmul double 1.097000e+03, %189
%191 = fdiv double %190, 5.120000e+02
store double %191, double* %40
%192 = load double, double* %28
%193 = fmul double 4.500000e+01, %192
%194 = fdiv double %193, 1.024000e+03
store double %194, double* %48
%195 = load double, double* %27
%196 = fmul double 3.000000e+00, %195
store double %196, double* %49
%197 = load double, double* %26
%198 = fdiv double %197, 4.000000e+00
%199 = fsub double 1.000000e+00, %198
%200 = load double, double* %49
%201 = fdiv double %200, 6.400000e+01
%202 = fsub double %199, %201
%203 = load double, double* %28
%204 = fmul double 5.000000e+00, %203
%205 = fdiv double %204, 2.560000e+02
%206 = fsub double %202, %205
store double %206, double* %33
%207 = load double, double* %26
%208 = fmul double 3.000000e+00, %207
%209 = fdiv double %208, 8.000000e+00
%210 = load double, double* %49
%211 = fdiv double %210, 3.200000e+01
%212 = fadd double %209, %211
%213 = load double, double* %48
%214 = fadd double %212, %213
store double %214, double* %34
%215 = load double, double* %27
%216 = fmul double 1.500000e+01, %215
%217 = fdiv double %216, 2.560000e+02
%218 = load double, double* %48
%219 = fadd double %217, %218
store double %219, double* %35
%220 = load double, double* %28
%221 = fmul double 3.500000e+01, %220
%222 = fdiv double %221, 3.072000e+03
store double %222, double* %36
%223 = load double, double* %33
%224 = load double, double* %15
%225 = fmul double %223, %224
store double %225, double* %50
%226 = load double, double* %34
%227 = load double, double* %15
%228 = fmul double 2.000000e+00, %227
%229 = call double @sin(double %228)
%230 = fmul double %226, %229
store double %230, double* %51
%231 = load double, double* %35
%232 = load double, double* %15
%233 = fmul double 4.000000e+00, %232
%234 = call double @sin(double %233)
%235 = fmul double %231, %234
store double %235, double* %52
%236 = load double, double* %36
%237 = load double, double* %15
%238 = fmul double 6.000000e+00, %237
%239 = call double @sin(double %238)
%240 = fmul double %236, %239
store double %240, double* %53
%241 = load double, double* %19
%242 = load double, double* %50
%243 = load double, double* %51
%244 = fsub double %242, %243
%245 = load double, double* %52
%246 = fadd double %244, %245
%247 = load double, double* %53
%248 = fsub double %246, %247
%249 = fmul double %241, %248
store double %249, double* %29
%250 = load double, double* %11
%251 = load double, double* %17
%252 = fsub double %250, %251
store double %252, double* %58
%253 = load double, double* %12
%254 = load double, double* %18
%255 = fsub double %253, %254
store double %255, double* %59
%256 = load double, double* %29
%257 = load double, double* %59
%258 = load double, double* %44
%259 = fdiv double %257, %258
%260 = fadd double %256, %259
store double %260, double* %64
%261 = load double, double* %64
%262 = load double, double* %33
%263 = load double, double* %19
%264 = fmul double %262, %263
%265 = fdiv double %261, %264
store double %265, double* %65
%266 = load double, double* %37
%267 = load double, double* %65
%268 = fmul double 2.000000e+00, %267
%269 = call double @sin(double %268)
%270 = fmul double %266, %269
store double %270, double* %66
%271 = load double, double* %38
%272 = load double, double* %65
%273 = fmul double 4.000000e+00, %272
%274 = call double @sin(double %273)
%275 = fmul double %271, %274
store double %275, double* %67
%276 = load double, double* %39
%277 = load double, double* %65
%278 = fmul double 6.000000e+00, %277
%279 = call double @sin(double %278)
%280 = fmul double %276, %279
store double %280, double* %68
%281 = load double, double* %40
%282 = load double, double* %65
%283 = fmul double 6.000000e+00, %282
%284 = call double @sin(double %283)
%285 = fmul double %281, %284
store double %285, double* %69
%286 = load double, double* %65
%287 = load double, double* %66
%288 = fadd double %286, %287
%289 = load double, double* %67
%290 = fadd double %288, %289
%291 = load double, double* %68
%292 = fadd double %290, %291
%293 = load double, double* %69
%294 = fadd double %292, %293
store double %294, double* %73
%295 = load double, double* %73
%296 = call double @sin(double %295)
store double %296, double* %47
%297 = load double, double* %25
%298 = load double, double* %47
%299 = fmul double %297, %298
store double %299, double* %45
%300 = load double, double* %31
%301 = load double, double* %47
%302 = load double, double* %26
%303 = load double, double* %47
%304 = fmul double %302, %303
%305 = load double, double* %47
%306 = fneg double %304
%307 = call double @llvm.fmuladd.f64(double %306, double %305, double 1.000000e+00)
%308 = fdiv double %301, %307
%309 = load double, double* %32
%310 = load double, double* %45
%311 = fsub double 1.000000e+00, %310
%312 = load double, double* %45
%313 = fadd double 1.000000e+00, %312
%314 = fdiv double %311, %313
%315 = call double @log(double %314)
%316 = fneg double %309
%317 = call double @llvm.fmuladd.f64(double %316, double %315, double %308)
%318 = fmul double %300, %317
store double %318, double* %74
%319 = load double, double* %74
%320 = load double, double* %30
%321 = fdiv double %319, %320
store double %321, double* %75
%322 = load double, double* %75
%323 = fcmp ogt double %322, 1.000000e+00
br i1 %323, label %324, label %325
324: ; preds = %87
store double 1.000000e+00, double* %75
br label %330
325: ; preds = %87
%326 = load double, double* %75
%327 = fcmp olt double %326, -1.000000e+00
br i1 %327, label %328, label %329
328: ; preds = %325
store double -1.000000e+00, double* %75
br label %329
329: ; preds = %328, %325
br label %330
330: ; preds = %329, %324
%331 = load double, double* %75
%332 = call double @asin(double %331)
store double %332, double* %61
%333 = load double, double* %61
%334 = call double @cos(double %333)
store double %334, double* %63
%335 = load double, double* %44
%336 = load double, double* %58
%337 = fmul double %335, %336
%338 = load double, double* %63
%339 = fmul double %337, %338
%340 = load double, double* %26
%341 = load double, double* %47
%342 = fmul double %340, %341
%343 = load double, double* %47
%344 = fneg double %342
%345 = call double @llvm.fmuladd.f64(double %344, double %343, double 1.000000e+00)
%346 = call double @pow(double %345, double 5.000000e-01)
%347 = fmul double %339, %346
%348 = load double, double* %19
%349 = load double, double* %73
%350 = call double @cos(double %349)
%351 = fmul double %348, %350
%352 = fdiv double %347, %351
store double %352, double* %76
%353 = load double, double* %76
%354 = fcmp ogt double %353, 1.000000e+00
br i1 %354, label %355, label %356
355: ; preds = %330
store double 1.000000e+00, double* %76
br label %361
356: ; preds = %330
%357 = load double, double* %76
%358 = fcmp olt double %357, -1.000000e+00
br i1 %358, label %359, label %360
359: ; preds = %356
store double -1.000000e+00, double* %76
br label %360
360: ; preds = %359, %356
br label %361
361: ; preds = %360, %355
%362 = load double, double* %76
%363 = call double @asin(double %362)
%364 = fneg double %363
store double %364, double* %62
%365 = load double, double* %62
%366 = call double @cos(double %365)
%367 = load double, double* %61
%368 = call double @sin(double %367)
%369 = fmul double %366, %368
%370 = call double @asin(double %369)
store double %370, double* %60
%371 = load double, double* %41
%372 = load double, double* %60
%373 = fmul double 2.000000e+00, %372
%374 = call double @sin(double %373)
%375 = fmul double %371, %374
store double %375, double* %70
%376 = load double, double* %42
%377 = load double, double* %60
%378 = fmul double 4.000000e+00, %377
%379 = call double @sin(double %378)
%380 = fmul double %376, %379
store double %380, double* %71
%381 = load double, double* %43
%382 = load double, double* %60
%383 = fmul double 6.000000e+00, %382
%384 = call double @sin(double %383)
%385 = fmul double %381, %384
store double %385, double* %72
%386 = load double, double* %60
%387 = load double, double* %70
%388 = fadd double %386, %387
%389 = load double, double* %71
%390 = fadd double %388, %389
%391 = load double, double* %72
%392 = fadd double %390, %391
%393 = load double*, double** %13
store double %392, double* %393
%394 = load double, double* %16
%395 = load double, double* %62
%396 = call double @tan(double %395)
%397 = load double, double* %63
%398 = fdiv double %396, %397
%399 = call double @atan(double %398)
%400 = fsub double %394, %399
%401 = load double*, double** %14
store double %400, double* %401
%402 = load double*, double** %13
%403 = load double, double* %402
%404 = load double, double* %22
%405 = fcmp ogt double %403, %404
br i1 %405, label %406, label %409
406: ; preds = %361
%407 = load double, double* %22
%408 = load double*, double** %13
store double %407, double* %408
br label %420
409: ; preds = %361
%410 = load double*, double** %13
%411 = load double, double* %410
%412 = load double, double* %22
%413 = fneg double %412
%414 = fcmp olt double %411, %413
br i1 %414, label %415, label %419
415: ; preds = %409
%416 = load double, double* %22
%417 = fneg double %416
%418 = load double*, double** %13
store double %417, double* %418
br label %419
419: ; preds = %415, %409
br label %420
420: ; preds = %419, %406
%421 = load double*, double** %14
%422 = load double, double* %421
%423 = fcmp ogt double %422, 0x400921FB5444261E
br i1 %423, label %424, label %429
424: ; preds = %420
%425 = load double, double* %21
%426 = load double*, double** %14
%427 = load double, double* %426
%428 = fsub double %427, %425
store double %428, double* %426
br label %429
429: ; preds = %424, %420
%430 = load double*, double** %14
%431 = load double, double* %430
%432 = fcmp olt double %431, 0xC00921FB5444261E
br i1 %432, label %433, label %438
433: ; preds = %429
%434 = load double, double* %21
%435 = load double*, double** %14
%436 = load double, double* %435
%437 = fadd double %436, %434
store double %437, double* %435
br label %438
438: ; preds = %433, %429
%439 = load double*, double** %14
%440 = load double, double* %439
%441 = fcmp ogt double %440, 0x400921FB5444261E
br i1 %441, label %442, label %444
442: ; preds = %438
%443 = load double*, double** %14
store double 0x400921FB5444261E, double* %443
br label %451
444: ; preds = %438
%445 = load double*, double** %14
%446 = load double, double* %445
%447 = fcmp olt double %446, 0xC00921FB5444261E
br i1 %447, label %448, label %450
448: ; preds = %444
%449 = load double*, double** %14
store double 0xC00921FB5444261E, double* %449
br label %450
450: ; preds = %448, %444
br label %451
451: ; preds = %450, %442
%452 = load double*, double** %14
%453 = load double, double* %452
%454 = call double @GPS_Math_Rad_To_Deg(double %453)
%455 = load double*, double** %14
store double %454, double* %455
%456 = load double*, double** %13
%457 = load double, double* %456
%458 = call double @GPS_Math_Rad_To_Deg(double %457)
%459 = load double*, double** %13
store double %458, double* %459
ret void
}

LLVM IR (-O2):
define void @GPS_Math_TCylEA_EN_To_LatLon(double %0, double %1, double* nocapture %2, double* nocapture %3, double %4, double %5, double %6, double %7, double %8, double %9) {
%11 = tail call double @GPS_Math_Deg_To_Rad(double %4)
%12 = tail call double @GPS_Math_Deg_To_Rad(double %5)
%13 = fcmp ogt double %12, 0x400921FB5444261E
%14 = fadd double %12, 0xC01921FB5444261E
%15 = select i1 %13, double %14, double %12
%16 = fmul double %8, %8
%17 = fmul double %9, %9
%18 = fsub double %16, %17
%19 = fdiv double %18, %16
%20 = fmul double %19, %19
%21 = fmul double %19, %20
%22 = tail call double @pow(double %19, double 5.000000e-01)
%23 = fsub double 1.000000e+00, %19
%24 = tail call double @pow(double %23, double 5.000000e-01)
%25 = fmul double %22, 2.000000e+00
%26 = fsub double 1.000000e+00, %22
%27 = fadd double %22, 1.000000e+00
%28 = fdiv double %26, %27
%29 = tail call double @log(double %28)
%30 = fdiv double -1.000000e+00, %25
%31 = fdiv double %19, 3.000000e+00
%32 = fmul double %20, 3.100000e+01
%33 = fdiv double %32, 1.800000e+02
%34 = fadd double %31, %33
%35 = fmul double %21, 5.170000e+02
%36 = fdiv double %35, 5.040000e+03
%37 = fadd double %34, %36
%38 = fmul double %20, 2.300000e+01
%39 = fdiv double %38, 3.600000e+02
%40 = fmul double %21, 2.510000e+02
%41 = fdiv double %40, 3.780000e+03
%42 = fadd double %39, %41
%43 = fmul double %21, 7.610000e+02
%44 = fdiv double %43, 4.536000e+04
%45 = fsub double 1.000000e+00, %24
%46 = fadd double %24, 1.000000e+00
%47 = fdiv double %45, %46
%48 = fmul double %47, %47
%49 = fmul double %47, %48
%50 = fmul double %47, %49
%51 = insertelement <2 x double> poison, double %48, i64 0
%52 = insertelement <2 x double> %51, double %47, i64 1
%53 = fmul <2 x double> %52, <double 2.100000e+01, double 3.000000e+00>
%54 = fmul <2 x double> %53, <double 6.250000e-02, double 5.000000e-01>
%55 = insertelement <2 x double> poison, double %50, i64 0
%56 = insertelement <2 x double> %55, double %49, i64 1
%57 = fmul <2 x double> %56, <double 5.500000e+01, double 2.700000e+01>
%58 = fmul <2 x double> %57, <double 3.125000e-02, double 3.125000e-02>
%59 = fsub <2 x double> %54, %58
%60 = fmul double %49, 1.510000e+02
%61 = fdiv double %60, 9.600000e+01
%62 = fmul double %50, 1.097000e+03
%63 = fmul double %62, 0x3F60000000000000
%64 = fmul double %21, 4.500000e+01
%65 = fmul double %64, 0x3F50000000000000
%66 = fmul double %20, 3.000000e+00
%67 = fmul double %19, 2.500000e-01
%68 = fsub double 1.000000e+00, %67
%69 = fmul double %66, 1.562500e-02
%70 = fsub double %68, %69
%71 = fmul double %21, 5.000000e+00
%72 = fmul double %71, 3.906250e-03
%73 = fsub double %70, %72
%74 = fmul double %19, 3.000000e+00
%75 = fmul double %74, 1.250000e-01
%76 = fmul double %66, 3.125000e-02
%77 = fadd double %75, %76
%78 = fadd double %77, %65
%79 = fmul double %20, 1.500000e+01
%80 = fmul double %79, 3.906250e-03
%81 = fadd double %80, %65
%82 = fmul double %21, 3.500000e+01
%83 = fdiv double %82, 3.072000e+03
%84 = fmul double %73, %11
%85 = fmul double %11, 2.000000e+00
%86 = tail call double @sin(double %85)
%87 = fmul double %78, %86
%88 = fmul double %11, 4.000000e+00
%89 = tail call double @sin(double %88)
%90 = fmul double %81, %89
%91 = fmul double %11, 6.000000e+00
%92 = tail call double @sin(double %91)
%93 = fmul double %83, %92
%94 = fsub double %84, %87
%95 = fadd double %94, %90
%96 = fsub double %95, %93
%97 = fmul double %96, %8
%98 = fsub double %0, %6
%99 = fsub double %1, %7
%100 = fadd double %99, %97
%101 = fmul double %73, %8
%102 = fdiv double %100, %101
%103 = fmul double %102, 2.000000e+00
%104 = tail call double @sin(double %103)
%105 = fmul double %102, 4.000000e+00
%106 = tail call double @sin(double %105)
%107 = insertelement <2 x double> poison, double %106, i64 0
%108 = insertelement <2 x double> %107, double %104, i64 1
%109 = fmul <2 x double> %108, %59
%110 = fmul double %102, 6.000000e+00
%111 = tail call double @sin(double %110)
%112 = fmul double %61, %111
%113 = tail call double @sin(double %110)
%114 = fmul double %63, %113
%115 = extractelement <2 x double> %109, i64 1
%116 = fadd double %115, %102
%117 = extractelement <2 x double> %109, i64 0
%118 = fadd double %117, %116
%119 = fadd double %112, %118
%120 = fadd double %114, %119
%121 = tail call double @sin(double %120)
%122 = fmul double %22, %121
%123 = fneg double %19
%124 = fmul double %121, %123
%125 = tail call double @llvm.fmuladd.f64(double %124, double %121, double 1.000000e+00)
%126 = insertelement <2 x double> <double poison, double 1.000000e+00>, double %121, i64 0
%127 = insertelement <2 x double> poison, double %125, i64 0
%128 = insertelement <2 x double> %127, double %23, i64 1
%129 = fdiv <2 x double> %126, %128
%130 = fsub double 1.000000e+00, %122
%131 = fadd double %122, 1.000000e+00
%132 = fdiv double %130, %131
%133 = tail call double @log(double %132)
%134 = insertelement <2 x double> poison, double %30, i64 0
%135 = shufflevector <2 x double> %134, <2 x double> poison, <2 x i32> zeroinitializer
%136 = insertelement <2 x double> poison, double %133, i64 0
%137 = insertelement <2 x double> %136, double %29, i64 1
%138 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %135, <2 x double> %137, <2 x double> %129)
%139 = insertelement <2 x double> poison, double %23, i64 0
%140 = shufflevector <2 x double> %139, <2 x double> poison, <2 x i32> zeroinitializer
%141 = fmul <2 x double> %140, %138
%142 = extractelement <2 x double> %141, i64 0
%143 = extractelement <2 x double> %141, i64 1
%144 = fdiv double %142, %143
%145 = fcmp ogt double %144, 1.000000e+00
br i1 %145, label %149, label %146
146: ; preds = %10
%147 = fcmp olt double %144, -1.000000e+00
br i1 %147, label %148, label %149
148: ; preds = %146
br label %149
149: ; preds = %10, %146, %148
%150 = phi double [ -1.000000e+00, %148 ], [ %144, %146 ], [ 1.000000e+00, %10 ]
%151 = tail call double @asin(double %150)
%152 = tail call double @cos(double %151)
%153 = fmul double %98, %152
%154 = tail call double @pow(double %125, double 5.000000e-01)
%155 = fmul double %153, %154
%156 = tail call double @cos(double %120)
%157 = fmul double %156, %8
%158 = fdiv double %155, %157
%159 = fcmp ogt double %158, 1.000000e+00
br i1 %159, label %163, label %160
160: ; preds = %149
%161 = fcmp olt double %158, -1.000000e+00
br i1 %161, label %162, label %163
162: ; preds = %160
br label %163
163: ; preds = %149, %160, %162
%164 = phi double [ -1.000000e+00, %162 ], [ %158, %160 ], [ 1.000000e+00, %149 ]
%165 = tail call double @asin(double %164)
%166 = tail call double @cos(double %165)
%167 = tail call double @sin(double %151)
%168 = fmul double %166, %167
%169 = tail call double @asin(double %168)
%170 = fmul double %169, 2.000000e+00
%171 = tail call double @sin(double %170)
%172 = fmul double %37, %171
%173 = fmul double %169, 4.000000e+00
%174 = tail call double @sin(double %173)
%175 = fmul double %42, %174
%176 = fmul double %169, 6.000000e+00
%177 = tail call double @sin(double %176)
%178 = fmul double %44, %177
%179 = fadd double %169, %172
%180 = fadd double %179, %175
%181 = fadd double %180, %178
store double %181, double* %2
%182 = tail call double @tan(double %165)
%183 = fneg double %182
%184 = fdiv double %183, %152
%185 = tail call double @atan(double %184)
%186 = fsub double %15, %185
store double %186, double* %3
%187 = load double, double* %2
%188 = fcmp ogt double %187, 0x3FF921FB5444261E
br i1 %188, label %191, label %189
189: ; preds = %163
%190 = fcmp olt double %187, 0xBFF921FB5444261E
br i1 %190, label %191, label %194
191: ; preds = %189, %163
%192 = phi double [ 0x3FF921FB5444261E, %163 ], [ 0xBFF921FB5444261E, %189 ]
store double %192, double* %2
%193 = load double, double* %3
br label %194
194: ; preds = %191, %189
%195 = phi double [ %193, %191 ], [ %186, %189 ]
%196 = fcmp ogt double %195, 0x400921FB5444261E
%197 = fadd double %195, 0xC01921FB5444261E
%198 = select i1 %196, double %197, double %195
%199 = fcmp olt double %198, 0xC00921FB5444261E
%200 = fadd double %198, 0x401921FB5444261E
%201 = select i1 %199, double %200, double %198
%202 = or i1 %196, %199
br i1 %202, label %203, label %204
203: ; preds = %194
store double %201, double* %3
br label %204
204: ; preds = %194, %203
%205 = fcmp ogt double %201, 0x400921FB5444261E
br i1 %205, label %208, label %206
206: ; preds = %204
%207 = fcmp olt double %201, 0xC00921FB5444261E
br i1 %207, label %208, label %210
208: ; preds = %206, %204
%209 = phi double [ 0x400921FB5444261E, %204 ], [ 0xC00921FB5444261E, %206 ]
store double %209, double* %3
br label %210
210: ; preds = %208, %206
%211 = phi double [ %201, %206 ], [ %209, %208 ]
%212 = tail call double @GPS_Math_Rad_To_Deg(double %211)
store double %212, double* %3
%213 = load double, double* %2
%214 = tail call double @GPS_Math_Rad_To_Deg(double %213)
store double %214, double* %2
ret void
}