#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double GPS_Math_Deg_To_Rad(double);
double cos(double);
double fabs(double);
double pow(double, double);
double sin(double);
void GPS_Math_Bonne_LatLon_To_EN(double phi, double lambda, double *E,
                                 double *N, double phi0, double M0, double E0,
                                 double N0, double a, double b) {
  double p2;
  double po2;
  double a2;
  double b2;
  double e2;
  double e4;
  double e6;
  double M1;
  double m1;
  double c0;
  double c1;
  double c2;
  double c3;
  double j;
  double te4;
  double E1;
  double E2;
  double E3;
  double E4;
  double x;
  double phi0s;
  double lat;
  double phi0c;
  double phi0s2;
  double phi0s4;
  double phi0s6;
  double as;
  double phis;
  double phic;
  double phis2;
  double phis4;
  double phis6;
  double dlam;
  double mm;
  double MM;
  double rho;
  double EE;
  double tol;
  lambda = GPS_Math_Deg_To_Rad(lambda);
  phi = GPS_Math_Deg_To_Rad(phi);
  phi0 = GPS_Math_Deg_To_Rad(phi0);
  M0 = GPS_Math_Deg_To_Rad(M0);
  phi0s = sin(phi0);
  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;
  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;
  phi0c = cos(phi0);
  m1 = phi0c / pow(((double)1.0 - e2 * phi0s * phi0s), (double)0.5);
  lat = c0 * phi0;
  phi0s2 = c1 * sin((double)2.0 * phi0);
  phi0s4 = c2 * sin((double)4.0 * phi0);
  phi0s6 = c3 * sin((double)6.0 * phi0);
  M1 = a * (lat - phi0s2 + phi0s4 - phi0s6);
  x = pow((double)1.0 - e2, (double)0.5);
  E1 = ((double)1.0 - x) / ((double)1.0 + x);
  E2 = E1 * E1;
  E3 = E2 * E1;
  E4 = E3 * E1;
  if (!phi0s)
    as = (double)0.0;
  else
    as = a * m1 / phi0s;
  dlam = lambda - M0;
  if (dlam > 3.141592653589)
    dlam -= p2;
  if (dlam < -3.141592653589)
    dlam += p2;
  phis = sin(phi);
  phic = cos(phi);
  tol = (double)0.0001;
  if (!(phi - phi0) && (((po2 - tol) < fabs(phi)) && (fabs(phi) < po2 + tol)))
    *E = *N = (double)0.0;
  else {
    mm = phic / pow(((double)1.0 - e2 * phis * phis), (double)0.5);
    lat = c0 * phi;
    phis2 = c1 * sin((double)2.0 * phi);
    phis4 = c2 * sin((double)4.0 * phi);
    phis6 = c3 * sin((double)6.0 * phi);
    MM = a * (lat - phis2 + phis4 - phis6);
    rho = as + M1 - MM;
    if (!rho)
      EE = (double)0.0;
    else
      EE = a * mm * dlam / rho;
    *E = rho * sin(EE) + E0;
    *N = as - rho * cos(EE) + N0;
  }
  return;
}


x86 assembly (clang, -O0):
<GPS_Math_Bonne_LatLon_To_EN>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1e0,%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  -0x10(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x8(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0xe3f(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xe2a(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xe10(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    120d <GPS_Math_Bonne_LatLon_To_EN+0xcd>
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,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x78(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xe28(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  0xe10(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xde4(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x78(%rbp),%xmm1
movsd  0xd8a(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0xd66(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
movsd  0xdba(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  0xda2(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  0xd6a(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xd72(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  0xd5d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
movsd  0xd41(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xd19(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  0xd04(%rip),%xmm1
divsd  %xmm1,%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xce0(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  0xcc8(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xc3a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xc36(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1a0(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
movsd  0xc05(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x198(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0xbc4(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x190(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movsd  0xb83(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x188(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x100(%rbp),%xmm1
ff
subsd  -0x110(%rbp),%xmm1
ff
addsd  -0x118(%rbp),%xmm1
ff
subsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xb19(%rip),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  0xb14(%rip),%xmm1
call   1060 <pow@plt>
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0xaf7(%rip),%xmm0
subsd  -0xf0(%rbp),%xmm0
ff
movsd  0xae7(%rip),%xmm1
addsd  -0xf0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    15b8 <GPS_Math_Bonne_LatLon_To_EN+0x478>
jp     15b8 <GPS_Math_Bonne_LatLon_To_EN+0x478>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
jmp    15d5 <GPS_Math_Bonne_LatLon_To_EN+0x495>
movsd  -0x48(%rbp),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
divsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  0xa09(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    161a <GPS_Math_Bonne_LatLon_To_EN+0x4da>
movsd  -0x58(%rbp),%xmm1
movsd  -0x158(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0xa76(%rip),%xmm0
ucomisd -0x158(%rbp),%xmm0
ff
jbe    1645 <GPS_Math_Bonne_LatLon_To_EN+0x505>
movsd  -0x58(%rbp),%xmm0
addsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  0xa2f(%rip),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    16ff <GPS_Math_Bonne_LatLon_To_EN+0x5bf>
jp     16ff <GPS_Math_Bonne_LatLon_To_EN+0x5bf>
movsd  -0x60(%rbp),%xmm1
subsd  -0x180(%rbp),%xmm1
ff
movsd  -0x8(%rbp),%xmm0
movaps 0xa01(%rip),%xmm2
pand   %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    16ff <GPS_Math_Bonne_LatLon_To_EN+0x5bf>
movsd  -0x8(%rbp),%xmm1
movaps 0x9e7(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0x60(%rbp),%xmm0
addsd  -0x180(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    16ff <GPS_Math_Bonne_LatLon_To_EN+0x5bf>
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1979 <GPS_Math_Bonne_LatLon_To_EN+0x839>
movsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x8d1(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0x8cd(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1c0(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  0x89c(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1b8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  0x85b(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1b0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  0x81a(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x100(%rbp),%xmm1
ff
subsd  -0x140(%rbp),%xmm1
ff
addsd  -0x148(%rbp),%xmm1
ff
subsd  -0x150(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    18ab <GPS_Math_Bonne_LatLon_To_EN+0x76b>
jp     18ab <GPS_Math_Bonne_LatLon_To_EN+0x76b>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
jmp    18d0 <GPS_Math_Bonne_LatLon_To_EN+0x790>
movsd  -0x48(%rbp),%xmm0
mulsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
divsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
call   1040 <sin@plt>
movaps %xmm0,%xmm2
movsd  -0x1d8(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  -0x1d0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1c8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x40(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x1e0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<GPS_Math_Bonne_LatLon_To_EN>:
push   %r14
push   %rbx
sub    $0xd8,%rsp
movsd  %xmm7,0x8(%rsp)
movsd  %xmm6,0x28(%rsp)
movsd  %xmm5,0x98(%rsp)
movsd  %xmm4,0x90(%rsp)
movsd  %xmm3,(%rsp)
movsd  %xmm2,0x10(%rsp)
mov    %rsi,%r14
mov    %rdi,%rbx
movsd  %xmm0,0x30(%rsp)
movaps %xmm1,%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movaps %xmm0,0xb0(%rsp)
movsd  0x30(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movaps %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movaps %xmm0,0xa0(%rsp)
movsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,(%rsp)
movsd  0x28(%rsp),%xmm0
mulsd  %xmm0,%xmm0
movsd  0x8(%rsp),%xmm2
mulsd  %xmm2,%xmm2
movapd %xmm0,%xmm1
subsd  %xmm2,%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,0x50(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x40(%rsp)
movsd  (%rsp),%xmm0
movapd %xmm0,%xmm1
mulsd  0x50(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0xe0c(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  0xe48(%rip),%xmm1
call   1060 <pow@plt>
movsd  %xmm0,0x60(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  %xmm0,%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x88(%rsp)
movsd  0xe25(%rip),%xmm0
mulsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0xe14(%rip),%xmm0
mulsd  0x10(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x80(%rsp)
movsd  0xda0(%rip),%xmm0
subsd  0x50(%rsp),%xmm0
movsd  0xdda(%rip),%xmm1
call   1060 <pow@plt>
movsd  (%rsp),%xmm2
movsd  0x28(%rsp),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x48(%rsp)
jne    12c4 <GPS_Math_Bonne_LatLon_To_EN+0x184>
jnp    12de <GPS_Math_Bonne_LatLon_To_EN+0x19e>
movsd  0x40(%rsp),%xmm0
divsd  0x60(%rsp),%xmm0
mulsd  %xmm1,%xmm0
divsd  %xmm2,%xmm0
movsd  %xmm0,0x48(%rsp)
movaps 0x30(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x40(%rsp)
movapd 0x30(%rsp),%xmm0
call   1050 <cos@plt>
movapd 0x30(%rsp),%xmm2
movapd %xmm2,%xmm1
movsd  0x10(%rsp),%xmm5
subsd  %xmm5,%xmm1
ucomisd 0xd9b(%rip),%xmm1
jne    131d <GPS_Math_Bonne_LatLon_To_EN+0x1dd>
jnp    1608 <GPS_Math_Bonne_LatLon_To_EN+0x4c8>
movsd  %xmm0,0x78(%rsp)
movapd 0x50(%rsp),%xmm0
movapd %xmm0,%xmm3
mulsd  %xmm0,%xmm3
movsd  0xce7(%rip),%xmm1
movapd %xmm0,%xmm6
mulsd  %xmm3,%xmm6
movapd %xmm3,%xmm7
movapd %xmm3,%xmm8
mulsd  %xmm1,%xmm7
movsd  0xcd2(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm1
movsd  0xcaa(%rip),%xmm4
mulsd  %xmm6,%xmm4
addsd  0xcbe(%rip),%xmm2
movsd  0xcbe(%rip),%xmm3
mulsd  %xmm7,%xmm3
addsd  %xmm2,%xmm3
movsd  0xcb6(%rip),%xmm2
mulsd  %xmm6,%xmm2
movsd  0xcb1(%rip),%xmm9
mulsd  0xcb1(%rip),%xmm1
mulsd  0xcb1(%rip),%xmm7
addsd  %xmm1,%xmm7
movapd %xmm7,%xmm1
mulsd  0xc61(%rip),%xmm4
mulsd  %xmm9,%xmm2
addsd  %xmm3,%xmm2
movsd  %xmm2,(%rsp)
movapd %xmm8,%xmm7
mulsd  0xc8e(%rip),%xmm7
movapd %xmm1,%xmm3
addsd  %xmm4,%xmm3
movapd %xmm3,0xc0(%rsp)
mulsd  %xmm9,%xmm7
addsd  %xmm4,%xmm7
movapd %xmm7,0x60(%rsp)
mulsd  0xc6e(%rip),%xmm6
mulsd  %xmm2,%xmm5
movsd  0x88(%rsp),%xmm1
mulsd  %xmm3,%xmm1
divsd  0xc5d(%rip),%xmm6
movapd %xmm6,0x10(%rsp)
subsd  %xmm1,%xmm5
movsd  0x8(%rsp),%xmm2
mulsd  %xmm7,%xmm2
addsd  %xmm5,%xmm2
movsd  0x80(%rsp),%xmm1
mulsd  %xmm6,%xmm1
subsd  %xmm1,%xmm2
xorpd  0xc7c(%rip),%xmm0
mulsd  0x28(%rsp),%xmm2
movsd  %xmm2,0x8(%rsp)
movsd  0x40(%rsp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  0xbca(%rip),%xmm0
movsd  0xc0a(%rip),%xmm1
call   1060 <pow@plt>
movsd  %xmm0,0x50(%rsp)
movapd 0x30(%rsp),%xmm1
movsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rsp)
movapd %xmm1,%xmm0
addsd  %xmm1,%xmm0
call   1040 <sin@plt>
mulsd  0xc0(%rsp),%xmm0
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  0xbc7(%rip),%xmm0
mulsd  0x30(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0x60(%rsp),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movapd 0x30(%rsp),%xmm0
mulsd  0xba6(%rip),%xmm0
call   1040 <sin@plt>
movsd  0x8(%rsp),%xmm5
movsd  0x28(%rsp),%xmm3
mulsd  0x10(%rsp),%xmm0
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  %xmm3,%xmm1
addsd  0x48(%rsp),%xmm5
subsd  %xmm1,%xmm5
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm5
jne    1520 <GPS_Math_Bonne_LatLon_To_EN+0x3e0>
jnp    15b9 <GPS_Math_Bonne_LatLon_To_EN+0x479>
movsd  0xae0(%rip),%xmm0
movsd  0xad0(%rip),%xmm1
movapd 0xa0(%rsp),%xmm4
addsd  %xmm4,%xmm1
movapd %xmm0,%xmm2
cmpltsd %xmm4,%xmm2
andpd  %xmm2,%xmm1
andnpd %xmm4,%xmm2
orpd   %xmm1,%xmm2
movapd 0xb0(%rsp),%xmm4
subsd  %xmm2,%xmm4
movsd  0xa99(%rip),%xmm1
addsd  %xmm4,%xmm1
cmpltsd %xmm4,%xmm0
andpd  %xmm0,%xmm1
andnpd %xmm4,%xmm0
orpd   %xmm1,%xmm0
movsd  0xb0c(%rip),%xmm1
movapd %xmm0,%xmm2
cmpltsd 0xb07(%rip),%xmm2
addsd  %xmm0,%xmm1
andpd  %xmm2,%xmm1
andnpd %xmm0,%xmm2
orpd   %xmm1,%xmm2
movsd  0x78(%rsp),%xmm0
divsd  0x50(%rsp),%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm5,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  %xmm5,0x8(%rsp)
call   1040 <sin@plt>
mulsd  0x8(%rsp),%xmm0
addsd  0x90(%rsp),%xmm0
movsd  %xmm0,(%rbx)
movsd  0x10(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
subsd  %xmm0,%xmm1
addsd  0x98(%rsp),%xmm1
movsd  %xmm1,(%r14)
jmp    1642 <GPS_Math_Bonne_LatLon_To_EN+0x502>
movapd 0xac0(%rip),%xmm3
andpd  %xmm2,%xmm3
ucomisd 0xa84(%rip),%xmm3
jbe    131d <GPS_Math_Bonne_LatLon_To_EN+0x1dd>
movsd  0xa7e(%rip),%xmm1
ucomisd %xmm3,%xmm1
jbe    131d <GPS_Math_Bonne_LatLon_To_EN+0x1dd>
movq   $0x0,(%r14)
movq   $0x0,(%rbx)
add    $0xd8,%rsp
pop    %rbx
pop    %r14
ret

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

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