#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 atan2(double, double);
double cos(double);
double fabs(double);
double log(double);
double pow(double, double);
double sin(double);
void GPS_Math_Albers_EN_To_LatLon(double E, double N, double *phi,
                                  double *lambda, double phi1, double phi2,
                                  double phi0, double M0, double E0, double N0,
                                  double a, double b) {
  double po2;
  double rho;
  double rho0;
  double C;
  double a2;
  double b2;
  double esq;
  double e;
  double phi0s;
  double q0;
  double q1;
  double q2;
  double phi1s;
  double phi1c;
  double phi2s;
  double phi2c;
  double m1;
  double m1sq;
  double m2;
  double n;
  double nq0;
  double dx;
  double dy;
  double rhom;
  double q;
  double qc;
  double qd2;
  double rhon;
  double lat;
  double dphi;
  double phis;
  double ess;
  double om0;
  double theta;
  double tol;
  phi0 = GPS_Math_Deg_To_Rad(phi0);
  phi1 = GPS_Math_Deg_To_Rad(phi1);
  phi2 = GPS_Math_Deg_To_Rad(phi2);
  M0 = GPS_Math_Deg_To_Rad(M0);
  a2 = a * a;
  b2 = b * b;
  esq = (a2 - b2) / a2;
  e = pow(esq, (double)0.5);
  phi0s = sin(phi0);
  ess = e * phi0s;
  om0 = ((double)1.0 - ess * ess);
  q0 = ((double)1.0 - esq) *
       (phi0s / om0 - ((double)1.0 / (e + e)) *
                          log(((double)1.0 - ess) / ((double)1.0 + ess)));
  phi1s = sin(phi1);
  phi1c = cos(phi1);
  ess = e * phi1s;
  om0 = ((double)1.0 - ess * ess);
  m1 = phi1c / pow(om0, (double)0.5);
  q1 = ((double)1.0 - esq) *
       (phi1s / om0 - ((double)1.0 / (e + e)) *
                          log(((double)1.0 - ess) / ((double)1.0 + ess)));
  m1sq = m1 * m1;
  if (fabs(phi1 - phi2) > 1.0e-10) {
    phi2s = sin(phi2);
    phi2c = cos(phi2);
    ess = e * phi2s;
    om0 = ((double)1.0 - ess * ess);
    m2 = phi2c / pow(om0, (double)0.5);
    q2 = ((double)1.0 - esq) *
         (phi2s / om0 - ((double)1.0 / (e + e)) *
                            log(((double)1.0 - ess) / ((double)1.0 + ess)));
    n = (m1sq - m2 * m2) / (q2 - q1);
  } else
    n = phi1s;
  C = m1sq + n * q1;
  nq0 = n * q0;
  if (C < nq0)
    rho0 = (double)0.;
  else
    rho0 = (a / n) * pow(C - nq0, (double)0.5);
  dphi = (double)1.0;
  theta = (double)0.0;
  tol = (double)4.85e-10;
  po2 = (double)3.141592653589 / (double)2.0;
  dy = N - N0;
  dx = E - E0;
  rhom = rho0 - dy;
  rho = pow(dx * dx + rhom * rhom, (double)0.5);
  if (n < 0.0) {
    rho *= (double)-1.0;
    dx *= (double)-1.0;
    dy *= (double)-1.0;
    rhom *= (double)-1.0;
  }
  if (rho)
    theta = atan2(dx, rhom);
  rhon = rho * n;
  q = (C - (rhon * rhon) / a2) / n;
  qc = (double)1.0 -
       ((double)1.0 / (e + e)) * log(((double)1.0 - e) / ((double)1.0 + e));
  if (fabs(fabs(qc) - fabs(q)) > 1.9e-6) {
    qd2 = q / (double)2.0;
    if (qd2 > 1.0)
      *phi = po2;
    else if (qd2 < -1.0)
      *phi = -po2;
    else {
      lat = asin(qd2);
      if (e < 1.0e-10)
        *phi = lat;
      else {
        while (fabs(dphi) > tol) {
          phis = sin(lat);
          ess = e * phis;
          om0 = ((double)1.0 - ess * ess);
          dphi = (om0 * om0) / ((double)2.0 * cos(lat)) *
                 (q / ((double)1.0 - esq) - phis / om0 +
                  (log(((double)1.0 - ess) / ((double)1.0 + ess)) / (e + e)));
          lat += dphi;
        }
        *phi = lat;
      }
      if (*phi > po2)
        *phi = po2;
      else if (*phi < -po2)
        *phi = -po2;
    }
  } else {
    if (q >= 0.0)
      *phi = po2;
    else
      *phi = -po2;
  }
  *lambda = M0 + theta / n;
  if (*lambda > 3.141592653589)
    *lambda -= 3.141592653589 * (double)2.0;
  if (*lambda < -3.141592653589)
    *lambda += 3.141592653589 * (double)2.0;
  if (*lambda > 3.141592653589)
    *lambda = 3.141592653589;
  else if (*lambda < -3.141592653589)
    *lambda = -3.141592653589;
  *phi = GPS_Math_Rad_To_Deg(*phi);
  *lambda = GPS_Math_Rad_To_Deg(*lambda);
  return;
}


x86 assembly (clang, -O0):
<GPS_Math_Albers_EN_To_LatLon>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1f0,%rsp
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
mov    %rdi,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
movsd  %xmm2,-0x28(%rbp)
movsd  %xmm3,-0x30(%rbp)
movsd  %xmm4,-0x38(%rbp)
movsd  %xmm5,-0x40(%rbp)
movsd  %xmm6,-0x48(%rbp)
movsd  %xmm7,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1040 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1040 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1040 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  -0x40(%rbp),%xmm0
call   1040 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  0x10(%rbp),%xmm0
mulsd  0x10(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x18(%rbp),%xmm0
mulsd  0x18(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x78(%rbp),%xmm0
subsd  -0x80(%rbp),%xmm0
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xdc8(%rip),%xmm1
call   10a0 <pow@plt>
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1050 <sin@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xd56(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0xd42(%rip),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
divsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
addsd  -0x90(%rbp),%xmm1
ff
movsd  0xd02(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  0xcee(%rip),%xmm0
subsd  -0x150(%rbp),%xmm0
ff
movsd  0xcde(%rip),%xmm1
addsd  -0x150(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movsd  -0x1a0(%rbp),%xmm1
ff
movsd  -0x198(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x190(%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  -0x28(%rbp),%xmm0
call   1050 <sin@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1080 <cos@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xc18(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  0xbf4(%rip),%xmm1
call   10a0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x188(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xbc8(%rip),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
divsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
addsd  -0x90(%rbp),%xmm1
ff
movsd  0xb88(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  0xb74(%rip),%xmm0
subsd  -0x150(%rbp),%xmm0
ff
movsd  0xb64(%rip),%xmm1
addsd  -0x150(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movsd  -0x180(%rbp),%xmm1
ff
movsd  -0x178(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x170(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movaps 0xb3c(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xad0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    170c <GPS_Math_Albers_EN_To_LatLon+0x58c>
movsd  -0x30(%rbp),%xmm0
call   1050 <sin@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1080 <cos@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xa5f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  0xa3b(%rip),%xmm1
call   10a0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1c0(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xa0f(%rip),%xmm0
subsd  -0x88(%rbp),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
divsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
addsd  -0x90(%rbp),%xmm1
ff
movsd  0x9cf(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  0x9bb(%rip),%xmm0
subsd  -0x150(%rbp),%xmm0
ff
movsd  0x9ab(%rip),%xmm1
addsd  -0x150(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movsd  -0x1b8(%rbp),%xmm1
ff
movsd  -0x1b0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x1a8(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
subsd  -0xa8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
jmp    171c <GPS_Math_Albers_EN_To_LatLon+0x59c>
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    177d <GPS_Math_Albers_EN_To_LatLon+0x5fd>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    17c0 <GPS_Math_Albers_EN_To_LatLon+0x640>
movsd  0x10(%rbp),%xmm0
divsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
subsd  -0xf8(%rbp),%xmm0
ff
movsd  0x869(%rip),%xmm1
call   10a0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1c8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0x840(%rip),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  0x83d(%rip),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  0x825(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x10(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x7af(%rip),%xmm1
call   10a0 <pow@plt>
movsd  %xmm0,-0x60(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0xf0(%rbp),%xmm0
ff
jbe    18d6 <GPS_Math_Albers_EN_To_LatLon+0x756>
movsd  0x7a4(%rip),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x792(%rip),%xmm0
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0x77a(%rip),%xmm0
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0x762(%rip),%xmm0
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    18f3 <GPS_Math_Albers_EN_To_LatLon+0x773>
jp     18f3 <GPS_Math_Albers_EN_To_LatLon+0x773>
jmp    1910 <GPS_Math_Albers_EN_To_LatLon+0x790>
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm1
ff
call   1030 <atan2@plt>
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0x130(%rbp),%xmm1
ff
mulsd  -0x130(%rbp),%xmm1
ff
divsd  -0x78(%rbp),%xmm1
subsd  %xmm1,%xmm0
divsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
addsd  -0x90(%rbp),%xmm1
ff
movsd  0x69d(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  0x689(%rip),%xmm0
subsd  -0x90(%rbp),%xmm0
ff
movsd  0x679(%rip),%xmm1
addsd  -0x90(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x1d0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x63a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movaps 0x677(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  -0x118(%rbp),%xmm1
ff
movaps 0x664(%rip),%xmm2
pand   %xmm2,%xmm1
subsd  %xmm1,%xmm0
movaps 0x655(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x619(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1d12 <GPS_Math_Albers_EN_To_LatLon+0xb92>
movsd  -0x118(%rbp),%xmm0
ff
movsd  0x607(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  0x5bb(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1a69 <GPS_Math_Albers_EN_To_LatLon+0x8e9>
movsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1d0d <GPS_Math_Albers_EN_To_LatLon+0xb8d>
movsd  0x5b7(%rip),%xmm0
ucomisd -0x128(%rbp),%xmm0
ff
jbe    1aa8 <GPS_Math_Albers_EN_To_LatLon+0x928>
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1d08 <GPS_Math_Albers_EN_To_LatLon+0xb88>
movsd  -0x128(%rbp),%xmm0
ff
call   1060 <asin@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  0x53b(%rip),%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jbe    1ae8 <GPS_Math_Albers_EN_To_LatLon+0x968>
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1c87 <GPS_Math_Albers_EN_To_LatLon+0xb07>
jmp    1aed <GPS_Math_Albers_EN_To_LatLon+0x96d>
movsd  -0x140(%rbp),%xmm0
ff
movaps 0x564(%rip),%xmm1
pand   %xmm1,%xmm0
ucomisd -0x168(%rbp),%xmm0
ff
jbe    1c77 <GPS_Math_Albers_EN_To_LatLon+0xaf7>
movsd  -0x138(%rbp),%xmm0
ff
call   1050 <sin@plt>
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x49a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
call   1080 <cos@plt>
movaps %xmm0,%xmm2
movsd  -0x1e8(%rbp),%xmm0
ff
movsd  0x486(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  0x436(%rip),%xmm1
subsd  -0x88(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  -0x148(%rbp),%xmm1
ff
divsd  -0x158(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  0x406(%rip),%xmm0
subsd  -0x150(%rbp),%xmm0
ff
movsd  0x3f6(%rip),%xmm1
addsd  -0x150(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movsd  -0x1e0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1d8(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm3
ff
addsd  -0x90(%rbp),%xmm3
ff
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
jmp    1aed <GPS_Math_Albers_EN_To_LatLon+0x96d>
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x58(%rbp),%xmm0
jbe    1cac <GPS_Math_Albers_EN_To_LatLon+0xb2c>
movsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1d03 <GPS_Math_Albers_EN_To_LatLon+0xb83>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm1,%xmm0
jbe    1cfe <GPS_Math_Albers_EN_To_LatLon+0xb7e>
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1d03 <GPS_Math_Albers_EN_To_LatLon+0xb83>
jmp    1d08 <GPS_Math_Albers_EN_To_LatLon+0xb88>
jmp    1d0d <GPS_Math_Albers_EN_To_LatLon+0xb8d>
jmp    1d62 <GPS_Math_Albers_EN_To_LatLon+0xbe2>
movsd  -0x118(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1d39 <GPS_Math_Albers_EN_To_LatLon+0xbb9>
movsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1d5d <GPS_Math_Albers_EN_To_LatLon+0xbdd>
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1d62 <GPS_Math_Albers_EN_To_LatLon+0xbe2>
movsd  -0x40(%rbp),%xmm0
movsd  -0x160(%rbp),%xmm1
ff
divsd  -0xf0(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x2ad(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1db5 <GPS_Math_Albers_EN_To_LatLon+0xc35>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x29b(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  0x28f(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    1ddf <GPS_Math_Albers_EN_To_LatLon+0xc5f>
mov    -0x20(%rbp),%rax
movsd  0x271(%rip),%xmm0
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x251(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1e0e <GPS_Math_Albers_EN_To_LatLon+0xc8e>
mov    -0x20(%rbp),%rax
movsd  0x23b(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1e39 <GPS_Math_Albers_EN_To_LatLon+0xcb9>
mov    -0x20(%rbp),%rax
movsd  0x236(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    1e34 <GPS_Math_Albers_EN_To_LatLon+0xcb4>
mov    -0x20(%rbp),%rax
movsd  0x220(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1e39 <GPS_Math_Albers_EN_To_LatLon+0xcb9>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
call   1070 <GPS_Math_Rad_To_Deg@plt>
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
call   1070 <GPS_Math_Rad_To_Deg@plt>
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x1f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<GPS_Math_Albers_EN_To_LatLon>:
push   %r14
push   %rbx
sub    $0xd8,%rsp
movsd  %xmm7,0xd0(%rsp)
movsd  %xmm6,0x40(%rsp)
movsd  %xmm5,0x28(%rsp)
movsd  %xmm3,0x10(%rsp)
movsd  %xmm2,0x30(%rsp)
mov    %rsi,%rbx
mov    %rdi,%r14
movsd  %xmm1,0xc8(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm4,%xmm0
call   1040 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x30(%rsp),%xmm0
call   1040 <GPS_Math_Deg_To_Rad@plt>
movaps %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
call   1040 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x28(%rsp),%xmm0
call   1040 <GPS_Math_Deg_To_Rad@plt>
movaps %xmm0,0x90(%rsp)
movsd  0xf0(%rsp),%xmm2
mulsd  %xmm2,%xmm2
movsd  0xf8(%rsp),%xmm1
mulsd  %xmm1,%xmm1
movapd %xmm2,%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm2,0xb0(%rsp)
divsd  %xmm2,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xdbf(%rip),%xmm1
call   10a0 <pow@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <sin@plt>
movsd  0x28(%rsp),%xmm4
movapd %xmm4,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,%xmm5
mulsd  %xmm1,%xmm5
movsd  0xd93(%rip),%xmm3
movapd %xmm3,%xmm2
subsd  %xmm5,%xmm2
movapd %xmm3,%xmm5
subsd  0x10(%rsp),%xmm5
movsd  %xmm5,0x48(%rsp)
divsd  %xmm2,%xmm0
movsd  %xmm0,0x8(%rsp)
addsd  %xmm4,%xmm4
movapd %xmm4,0xa0(%rsp)
movapd %xmm3,%xmm0
subsd  %xmm1,%xmm0
addsd  %xmm3,%xmm1
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movsd  0xd4f(%rip),%xmm1
divsd  0xa0(%rsp),%xmm1
movapd %xmm1,0x70(%rsp)
mulsd  %xmm1,%xmm0
addsd  0x8(%rsp),%xmm0
mulsd  0x48(%rsp),%xmm0
movsd  %xmm0,0xc0(%rsp)
movaps 0x30(%rsp),%xmm0
call   1050 <sin@plt>
movsd  %xmm0,0x8(%rsp)
movaps 0x30(%rsp),%xmm0
call   1080 <cos@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x68(%rsp)
mulsd  %xmm0,%xmm0
movsd  0xce1(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x60(%rsp)
movapd %xmm1,%xmm0
movsd  0xcc3(%rip),%xmm1
call   10a0 <pow@plt>
movsd  0x10(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
divsd  0x60(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0xc9c(%rip),%xmm1
movapd %xmm1,%xmm0
movsd  0x68(%rsp),%xmm2
subsd  %xmm2,%xmm0
addsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
call   1090 <log@plt>
movsd  0x8(%rsp),%xmm1
movapd %xmm0,%xmm2
mulsd  0x70(%rsp),%xmm2
addsd  0x60(%rsp),%xmm2
mulsd  0x48(%rsp),%xmm2
movsd  0x50(%rsp),%xmm4
movapd %xmm4,%xmm0
movapd 0x30(%rsp),%xmm3
subsd  %xmm4,%xmm3
movsd  0x10(%rsp),%xmm4
andpd  0xc9b(%rip),%xmm3
mulsd  %xmm4,%xmm4
ucomisd 0xc47(%rip),%xmm3
jbe    14b5 <GPS_Math_Albers_EN_To_LatLon+0x335>
movapd %xmm2,0x30(%rsp)
movsd  %xmm4,0x10(%rsp)
call   1050 <sin@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x50(%rsp),%xmm0
call   1080 <cos@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x28(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movapd %xmm0,%xmm2
mulsd  %xmm0,%xmm2
movsd  0xbe7(%rip),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,0x68(%rsp)
movsd  0xbcd(%rip),%xmm1
call   10a0 <pow@plt>
movsd  0x50(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
divsd  0x68(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xba6(%rip),%xmm2
movapd %xmm2,%xmm0
movsd  0x60(%rsp),%xmm1
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movsd  0x10(%rsp),%xmm4
movapd 0x30(%rsp),%xmm2
mulsd  0x70(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
mulsd  0x48(%rsp),%xmm0
movsd  0x50(%rsp),%xmm3
mulsd  %xmm3,%xmm3
movapd %xmm4,%xmm1
subsd  %xmm3,%xmm1
subsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
mulsd  %xmm1,%xmm2
addsd  %xmm4,%xmm2
movsd  0xc0(%rsp),%xmm3
mulsd  %xmm1,%xmm3
movapd %xmm2,0x30(%rsp)
ucomisd %xmm2,%xmm3
xorpd  %xmm0,%xmm0
ja     1512 <GPS_Math_Albers_EN_To_LatLon+0x392>
movsd  0xf0(%rsp),%xmm0
divsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movapd 0x30(%rsp),%xmm0
subsd  %xmm3,%xmm0
movsd  0xaf9(%rip),%xmm1
call   10a0 <pow@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0xc8(%rsp),%xmm1
subsd  0xd0(%rsp),%xmm1
movapd 0x80(%rsp),%xmm2
subsd  0x40(%rsp),%xmm2
subsd  %xmm1,%xmm0
movapd %xmm0,0x10(%rsp)
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm2,0x80(%rsp)
movapd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xa9e(%rip),%xmm1
call   10a0 <pow@plt>
movapd 0xb01(%rip),%xmm1
xorpd  %xmm0,%xmm1
movsd  0x8(%rsp),%xmm4
movapd %xmm4,%xmm6
xorpd  %xmm3,%xmm3
cmpltsd %xmm3,%xmm6
movapd %xmm6,%xmm2
andnpd %xmm0,%xmm2
andpd  %xmm1,%xmm6
orpd   %xmm2,%xmm6
ucomisd %xmm3,%xmm6
movapd %xmm4,%xmm1
xorpd  %xmm0,%xmm0
jne    15a6 <GPS_Math_Albers_EN_To_LatLon+0x426>
jnp    1607 <GPS_Math_Albers_EN_To_LatLon+0x487>
xorpd  %xmm2,%xmm2
ucomisd %xmm1,%xmm2
movapd 0xaba(%rip),%xmm5
movapd 0x80(%rsp),%xmm4
movapd %xmm4,%xmm3
xorpd  %xmm5,%xmm3
movapd %xmm1,%xmm0
cmpltsd %xmm2,%xmm0
andpd  %xmm0,%xmm3
andnpd %xmm4,%xmm0
orpd   %xmm3,%xmm0
movapd %xmm6,0x50(%rsp)
ja     15ec <GPS_Math_Albers_EN_To_LatLon+0x46c>
movapd 0x10(%rsp),%xmm1
jmp    15f6 <GPS_Math_Albers_EN_To_LatLon+0x476>
movapd 0x10(%rsp),%xmm1
xorpd  %xmm5,%xmm1
call   1030 <atan2@plt>
movsd  0x8(%rsp),%xmm1
movapd 0x50(%rsp),%xmm6
movsd  %xmm0,0x40(%rsp)
movapd %xmm1,%xmm0
mulsd  %xmm6,%xmm0
mulsd  %xmm0,%xmm0
divsd  0xb0(%rsp),%xmm0
movapd 0x30(%rsp),%xmm2
subsd  %xmm0,%xmm2
divsd  %xmm1,%xmm2
movapd %xmm2,0x30(%rsp)
movsd  0x9ca(%rip),%xmm2
movapd %xmm2,%xmm0
movsd  0x28(%rsp),%xmm1
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movapd 0x30(%rsp),%xmm2
movapd 0x70(%rsp),%xmm3
mulsd  %xmm0,%xmm3
addsd  0x997(%rip),%xmm3
movapd 0x9e7(%rip),%xmm0
andpd  %xmm0,%xmm3
movapd %xmm2,%xmm1
andpd  %xmm0,%xmm1
subsd  %xmm1,%xmm3
andpd  %xmm0,%xmm3
ucomisd 0x98b(%rip),%xmm3
jbe    16bb <GPS_Math_Albers_EN_To_LatLon+0x53b>
movsd  0x961(%rip),%xmm0
mulsd  %xmm2,%xmm0
ucomisd 0x95d(%rip),%xmm0
jbe    1787 <GPS_Math_Albers_EN_To_LatLon+0x607>
movsd  0x96f(%rip),%xmm0
jmp    16d4 <GPS_Math_Albers_EN_To_LatLon+0x554>
xorpd  %xmm0,%xmm0
xor    %eax,%eax
ucomisd %xmm0,%xmm2
setb   %al
lea    0x9b1(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm0
movapd 0x90(%rsp),%xmm3
movsd  0x8(%rsp),%xmm1
movsd  0x40(%rsp),%xmm2
movsd  %xmm0,(%r14)
divsd  %xmm1,%xmm2
addsd  %xmm2,%xmm3
movsd  0x942(%rip),%xmm1
addsd  %xmm3,%xmm1
movsd  0x93e(%rip),%xmm0
movapd %xmm0,%xmm2
cmpltsd %xmm3,%xmm2
andpd  %xmm2,%xmm1
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0x929(%rip),%xmm3
addsd  %xmm2,%xmm3
movapd %xmm2,%xmm1
cmpltsd 0x920(%rip),%xmm1
andpd  %xmm1,%xmm3
andnpd %xmm2,%xmm1
orpd   %xmm3,%xmm1
movlpd %xmm1,(%rbx)
ucomisd %xmm0,%xmm1
ja     175c <GPS_Math_Albers_EN_To_LatLon+0x5dc>
movsd  0x902(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1760 <GPS_Math_Albers_EN_To_LatLon+0x5e0>
movsd  %xmm0,(%rbx)
movsd  (%r14),%xmm0
call   1070 <GPS_Math_Rad_To_Deg@plt>
movsd  %xmm0,(%r14)
movsd  (%rbx),%xmm0
call   1070 <GPS_Math_Rad_To_Deg@plt>
movsd  %xmm0,(%rbx)
add    $0xd8,%rsp
pop    %rbx
pop    %r14
ret
movsd  0x881(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    17a2 <GPS_Math_Albers_EN_To_LatLon+0x622>
movsd  0x893(%rip),%xmm0
jmp    16d4 <GPS_Math_Albers_EN_To_LatLon+0x554>
call   1060 <asin@plt>
movapd %xmm0,%xmm4
movsd  0x865(%rip),%xmm0
movsd  0x28(%rsp),%xmm1
ucomisd %xmm1,%xmm0
ja     18e9 <GPS_Math_Albers_EN_To_LatLon+0x769>
movapd 0x30(%rsp),%xmm1
divsd  0x48(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
unpcklpd 0xa0(%rsp),%xmm1
movapd %xmm1,0xb0(%rsp)
nopw   0x0(%rax,%rax,1)
movsd  %xmm4,0x10(%rsp)
movapd %xmm4,%xmm0
call   1050 <sin@plt>
movapd %xmm0,%xmm1
movsd  %xmm0,0x50(%rsp)
movsd  0x28(%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x48(%rsp)
mulsd  %xmm0,%xmm0
movsd  0x7e3(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0xa0(%rsp)
movapd %xmm1,%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,0x80(%rsp)
movsd  0x10(%rsp),%xmm0
call   1080 <cos@plt>
addsd  %xmm0,%xmm0
shufpd $0x2,0xb0(%rsp),%xmm0
movapd %xmm0,0x70(%rsp)
movsd  0x50(%rsp),%xmm0
divsd  0xa0(%rsp),%xmm0
movapd 0x30(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0x50(%rsp)
movsd  0x77f(%rip),%xmm2
movapd %xmm2,%xmm0
movsd  0x48(%rsp),%xmm1
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1090 <log@plt>
movsd  0x10(%rsp),%xmm4
movapd 0x80(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
divpd  0x70(%rsp),%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
addsd  0x50(%rsp),%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm0,%xmm4
andpd  0x785(%rip),%xmm0
ucomisd 0x755(%rip),%xmm0
ja     17f0 <GPS_Math_Albers_EN_To_LatLon+0x670>
movsd  %xmm4,(%r14)
movsd  0x732(%rip),%xmm0
ucomisd %xmm0,%xmm4
movapd 0x90(%rsp),%xmm3
movsd  0x8(%rsp),%xmm1
movsd  0x40(%rsp),%xmm2
ja     16e9 <GPS_Math_Albers_EN_To_LatLon+0x569>
movsd  0x713(%rip),%xmm0
ucomisd %xmm4,%xmm0
ja     16e9 <GPS_Math_Albers_EN_To_LatLon+0x569>
jmp    16ee <GPS_Math_Albers_EN_To_LatLon+0x56e>

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

LLVM IR (-O2):
define void @GPS_Math_Albers_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, double %10, double %11) {
%13 = tail call double @GPS_Math_Deg_To_Rad(double %6)
%14 = tail call double @GPS_Math_Deg_To_Rad(double %4)
%15 = tail call double @GPS_Math_Deg_To_Rad(double %5)
%16 = tail call double @GPS_Math_Deg_To_Rad(double %7)
%17 = fmul double %10, %10
%18 = fmul double %11, %11
%19 = fsub double %17, %18
%20 = fdiv double %19, %17
%21 = tail call double @pow(double %20, double 5.000000e-01)
%22 = tail call double @sin(double %13)
%23 = fmul double %21, %22
%24 = fneg double %23
%25 = tail call double @llvm.fmuladd.f64(double %24, double %23, double 1.000000e+00)
%26 = fsub double 1.000000e+00, %20
%27 = fdiv double %22, %25
%28 = fadd double %21, %21
%29 = fsub double 1.000000e+00, %23
%30 = fadd double %23, 1.000000e+00
%31 = fdiv double %29, %30
%32 = tail call double @log(double %31)
%33 = fdiv double -1.000000e+00, %28
%34 = tail call double @llvm.fmuladd.f64(double %33, double %32, double %27)
%35 = fmul double %26, %34
%36 = tail call double @sin(double %14)
%37 = tail call double @cos(double %14)
%38 = fmul double %21, %36
%39 = fneg double %38
%40 = tail call double @llvm.fmuladd.f64(double %39, double %38, double 1.000000e+00)
%41 = tail call double @pow(double %40, double 5.000000e-01)
%42 = fdiv double %37, %41
%43 = fdiv double %36, %40
%44 = fsub double 1.000000e+00, %38
%45 = fadd double %38, 1.000000e+00
%46 = fdiv double %44, %45
%47 = tail call double @log(double %46)
%48 = tail call double @llvm.fmuladd.f64(double %33, double %47, double %43)
%49 = fmul double %26, %48
%50 = fmul double %42, %42
%51 = fsub double %14, %15
%52 = tail call double @llvm.fabs.f64(double %51)
%53 = fcmp ogt double %52, 1.000000e-10
br i1 %53, label %54, label %73
54: ; preds = %12
%55 = tail call double @sin(double %15)
%56 = tail call double @cos(double %15)
%57 = fmul double %21, %55
%58 = fneg double %57
%59 = tail call double @llvm.fmuladd.f64(double %58, double %57, double 1.000000e+00)
%60 = tail call double @pow(double %59, double 5.000000e-01)
%61 = fdiv double %56, %60
%62 = fdiv double %55, %59
%63 = fsub double 1.000000e+00, %57
%64 = fadd double %57, 1.000000e+00
%65 = fdiv double %63, %64
%66 = tail call double @log(double %65)
%67 = tail call double @llvm.fmuladd.f64(double %33, double %66, double %62)
%68 = fmul double %26, %67
%69 = fneg double %61
%70 = tail call double @llvm.fmuladd.f64(double %69, double %61, double %50)
%71 = fsub double %68, %49
%72 = fdiv double %70, %71
br label %73
73: ; preds = %12, %54
%74 = phi double [ %72, %54 ], [ %36, %12 ]
%75 = tail call double @llvm.fmuladd.f64(double %74, double %49, double %50)
%76 = fmul double %35, %74
%77 = fcmp olt double %75, %76
br i1 %77, label %83, label %78
78: ; preds = %73
%79 = fdiv double %10, %74
%80 = fsub double %75, %76
%81 = tail call double @pow(double %80, double 5.000000e-01)
%82 = fmul double %79, %81
br label %83
83: ; preds = %73, %78
%84 = phi double [ %82, %78 ], [ 0.000000e+00, %73 ]
%85 = fsub double %1, %9
%86 = fsub double %0, %8
%87 = fsub double %84, %85
%88 = fmul double %87, %87
%89 = tail call double @llvm.fmuladd.f64(double %86, double %86, double %88)
%90 = tail call double @pow(double %89, double 5.000000e-01)
%91 = fcmp olt double %74, 0.000000e+00
%92 = fneg double %90
%93 = select i1 %91, double %92, double %90
%94 = fcmp une double %93, 0.000000e+00
br i1 %94, label %95, label %101
95: ; preds = %83
%96 = fneg double %86
%97 = select i1 %91, double %96, double %86
%98 = fneg double %87
%99 = select i1 %91, double %98, double %87
%100 = tail call double @atan2(double %97, double %99)
br label %101
101: ; preds = %95, %83
%102 = phi double [ %100, %95 ], [ 0.000000e+00, %83 ]
%103 = fmul double %74, %93
%104 = fmul double %103, %103
%105 = fdiv double %104, %17
%106 = fsub double %75, %105
%107 = fdiv double %106, %74
%108 = fsub double 1.000000e+00, %21
%109 = fadd double %21, 1.000000e+00
%110 = fdiv double %108, %109
%111 = tail call double @log(double %110)
%112 = tail call double @llvm.fmuladd.f64(double %33, double %111, double 1.000000e+00)
%113 = tail call double @llvm.fabs.f64(double %112)
%114 = tail call double @llvm.fabs.f64(double %107)
%115 = fsub double %113, %114
%116 = tail call double @llvm.fabs.f64(double %115)
%117 = fcmp ogt double %116, 1.900000e-06
br i1 %117, label %118, label %160
118: ; preds = %101
%119 = fmul double %107, 5.000000e-01
%120 = fcmp ogt double %119, 1.000000e+00
br i1 %120, label %163, label %121
121: ; preds = %118
%122 = fcmp olt double %119, -1.000000e+00
br i1 %122, label %163, label %123
123: ; preds = %121
%124 = tail call double @asin(double %119)
%125 = fcmp olt double %21, 1.000000e-10
br i1 %125, label %155, label %126
126: ; preds = %123
%127 = fdiv double %107, %26
%128 = insertelement <2 x double> poison, double %28, i64 1
br label %129
129: ; preds = %126, %129
%130 = phi double [ %124, %126 ], [ %152, %129 ]
%131 = tail call double @sin(double %130)
%132 = fmul double %21, %131
%133 = fneg double %132
%134 = tail call double @llvm.fmuladd.f64(double %133, double %132, double 1.000000e+00)
%135 = fmul double %134, %134
%136 = tail call double @cos(double %130)
%137 = fmul double %136, 2.000000e+00
%138 = fdiv double %131, %134
%139 = fsub double %127, %138
%140 = fsub double 1.000000e+00, %132
%141 = fadd double %132, 1.000000e+00
%142 = fdiv double %140, %141
%143 = tail call double @log(double %142)
%144 = insertelement <2 x double> poison, double %135, i64 0
%145 = insertelement <2 x double> %144, double %143, i64 1
%146 = insertelement <2 x double> %128, double %137, i64 0
%147 = fdiv <2 x double> %145, %146
%148 = extractelement <2 x double> %147, i64 1
%149 = fadd double %148, %139
%150 = extractelement <2 x double> %147, i64 0
%151 = fmul double %150, %149
%152 = fadd double %130, %151
%153 = tail call double @llvm.fabs.f64(double %151)
%154 = fcmp ogt double %153, 4.850000e-10
br i1 %154, label %129, label %155
155: ; preds = %129, %123
%156 = phi double [ %124, %123 ], [ %152, %129 ]
store double %156, double* %2
%157 = fcmp ogt double %156, 0x3FF921FB5444261E
br i1 %157, label %163, label %158
158: ; preds = %155
%159 = fcmp olt double %156, 0xBFF921FB5444261E
br i1 %159, label %163, label %165
160: ; preds = %101
%161 = fcmp ult double %107, 0.000000e+00
%162 = select i1 %161, double 0xBFF921FB5444261E, double 0x3FF921FB5444261E
br label %163
163: ; preds = %160, %158, %155, %121, %118
%164 = phi double [ 0x3FF921FB5444261E, %118 ], [ 0xBFF921FB5444261E, %121 ], [ 0x3FF921FB5444261E, %155 ], [ 0xBFF921FB5444261E, %158 ], [ %162, %160 ]
store double %164, double* %2
br label %165
165: ; preds = %163, %158
%166 = fdiv double %102, %74
%167 = fadd double %16, %166
%168 = fcmp ogt double %167, 0x400921FB5444261E
%169 = fadd double %167, 0xC01921FB5444261E
%170 = select i1 %168, double %169, double %167
%171 = fcmp olt double %170, 0xC00921FB5444261E
%172 = fadd double %170, 0x401921FB5444261E
%173 = select i1 %171, double %172, double %170
store double %173, double* %3
%174 = fcmp ogt double %173, 0x400921FB5444261E
br i1 %174, label %177, label %175
175: ; preds = %165
%176 = fcmp olt double %173, 0xC00921FB5444261E
br i1 %176, label %177, label %179
177: ; preds = %175, %165
%178 = phi double [ 0x400921FB5444261E, %165 ], [ 0xC00921FB5444261E, %175 ]
store double %178, double* %3
br label %179
179: ; preds = %177, %175
%180 = load double, double* %2
%181 = tail call double @GPS_Math_Rad_To_Deg(double %180)
store double %181, double* %2
%182 = load double, double* %3
%183 = tail call double @GPS_Math_Rad_To_Deg(double %182)
store double %183, double* %3
ret void
}