int ngr2ll(char *ngr, double *latitude, double *longitude) {
  long E;
  long N;
  _ngr2en(ngr, &E, &N);
  double a = 6377563.396, b = 6356256.910;
  double F0 = 0.9996012717;
  double lat0 = 49 * 3.141592 / 180, lon0 = -2 * 3.141592 / 180;
  double N0 = -100000, E0 = 400000;
  double e2 = 1 - (b * b) / (a * a);
  double n = (a - b) / (a + b), n2 = n * n, n3 = n * n * n;
  double M = 0;
  double lat, lon;
  lat = lat0;
  do {
    lat = (N - N0 - M) / (a * F0) + lat;
    double Ma = (1 + n + (5 / 4) * n2 + (5 / 4) * n3) * (lat - lat0);
    double Mb =
        (3 * n + 3 * n * n + (21 / 8) * n3) * sin(lat - lat0) * cos(lat + lat0);
    double Mc = ((15 / 8) * n2 + (15 / 8) * n3) * sin(2 * (lat - lat0)) *
                cos(2 * (lat + lat0));
    double Md = (35 / 24) * n3 * sin(3 * (lat - lat0)) * cos(3 * (lat + lat0));
    M = b * F0 * (Ma - Mb + Mc - Md);
  } while (N - N0 - M >= 0.00001);
  double cosLat = cos(lat), sinLat = sin(lat);
  double nu = a * F0 / sqrt(1 - e2 * sinLat * sinLat);
  double rho = a * F0 * (1 - e2) / pow(1 - e2 * sinLat * sinLat, 1.5);
  double eta2 = nu / rho - 1;
  double tanLat = tan(lat);
  double tan2lat = tanLat * tanLat, tan4lat = tan2lat * tan2lat,
         tan6lat = tan4lat * tan2lat;
  double secLat = 1 / cosLat;
  double nu3 = nu * nu * nu, nu5 = nu3 * nu * nu, nu7 = nu5 * nu * nu;
  double VII = tanLat / (2 * rho * nu);
  double VIII =
      tanLat / (24 * rho * nu3) * (5 + 3 * tan2lat + eta2 - 9 * tan2lat * eta2);
  double IX = tanLat / (720 * rho * nu5) * (61 + 90 * tan2lat + 45 * tan4lat);
  double X = secLat / nu;
  double XI = secLat / (6 * nu3) * (nu / rho + 2 * tan2lat);
  double XII = secLat / (120 * nu5) * (5 + 28 * tan2lat + 24 * tan4lat);
  double XIIA = secLat / (5040 * nu7) *
                (61 + 662 * tan2lat + 1320 * tan4lat + 720 * tan6lat);
  double dE = (E - E0), dE2 = dE * dE, dE3 = dE2 * dE, dE4 = dE2 * dE2,
         dE5 = dE3 * dE2, dE6 = dE4 * dE2, dE7 = dE5 * dE2;
  lat = lat - VII * dE2 + VIII * dE4 - IX * dE6;
  lon = lon0 + X * dE - XI * dE3 + XII * dE5 - XIIA * dE7;
  *latitude = lat * 180 / 3.141592;
  *longitude = lon * 180 / 3.141592;
  return 1;
}


x86 assembly (clang, -O0):
<ngr2ll>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1d0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x8(%rbp),%rdi
lea    -0x20(%rbp),%rsi
lea    -0x28(%rbp),%rdx
mov    $0x0,%al
call   1030 <_ngr2en@plt>
movsd  0xea6(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe91(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe7c(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe67(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xe52(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xe3d(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xe28(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
divsd  %xmm0,%xmm1
movsd  0xdfb(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x30(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
cvtsi2sdq -0x28(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movsd  -0x30(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xd61(%rip),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
addsd  %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
addsd  %xmm1,%xmm0
movsd  -0x90(%rbp),%xmm1
ff
subsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
movsd  0xd64(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  0xd52(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0x48(%rbp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1c0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0x48(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x1b8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0xc96(%rip),%xmm1
mulsd  -0x80(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
subsd  -0x48(%rbp),%xmm1
movsd  0xcb8(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1b0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
addsd  -0x48(%rbp),%xmm1
movsd  0xc83(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xc13(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
subsd  -0x48(%rbp),%xmm1
movsd  0xc31(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1a0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
addsd  -0x48(%rbp),%xmm1
movsd  0xbfc(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x198(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0xa8(%rbp),%xmm1
ff
addsd  -0xb0(%rbp),%xmm1
ff
subsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
cvtsi2sdq -0x28(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movsd  0xb9b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jae    1266 <ngr2ll+0x106>
movsd  -0x90(%rbp),%xmm0
ff
call   1060 <cos@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
call   1040 <sin@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xacd(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x1d0(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0xa9b(%rip),%xmm1
subsd  -0x68(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xa52(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xb16(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1c8(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
divsd  -0xd8(%rbp),%xmm0
ff
movsd  0xa12(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
call   1050 <tan@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0x9a1(%rip),%xmm0
divsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x969(%rip),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x985(%rip),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  -0xf0(%rbp),%xmm2
ff
movsd  0x911(%rip),%xmm1
mulsd  %xmm1,%xmm2
movsd  0x965(%rip),%xmm1
addsd  %xmm1,%xmm2
addsd  -0xe0(%rbp),%xmm2
ff
movsd  0x979(%rip),%xmm1
mulsd  -0xf0(%rbp),%xmm1
ff
movsd  -0xe0(%rbp),%xmm3
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x8ce(%rip),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x118(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  -0xf0(%rbp),%xmm2
ff
movsd  0x902(%rip),%xmm1
mulsd  %xmm1,%xmm2
movsd  0x8b6(%rip),%xmm1
addsd  %xmm1,%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0x8da(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
divsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  0x896(%rip),%xmm1
mulsd  -0x110(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
divsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  0x846(%rip),%xmm1
mulsd  -0x118(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  -0xf0(%rbp),%xmm2
ff
movsd  0x81a(%rip),%xmm1
mulsd  %xmm1,%xmm2
movsd  0x816(%rip),%xmm1
addsd  %xmm1,%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0x7f2(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  0x7c6(%rip),%xmm1
mulsd  -0x120(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  -0xf0(%rbp),%xmm1
ff
movsd  0x79a(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x796(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0xf8(%rbp),%xmm2
ff
movsd  0x772(%rip),%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x100(%rbp),%xmm1
ff
movsd  0x752(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
cvtsi2sdq -0x20(%rbp),%xmm0
subsd  -0x60(%rbp),%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  -0x168(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x130(%rbp),%xmm1
ff
movsd  -0x178(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x140(%rbp),%xmm1
ff
movsd  -0x160(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x170(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x150(%rbp),%xmm1
ff
movsd  -0x180(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x190(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x56a(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  0x552(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x546(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  0x52e(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    $0x1,%eax
add    $0x1d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ngr2ll>:
push   %r14
push   %rbx
sub    $0x58,%rsp
mov    %rdx,%r14
mov    %rsi,%rbx
lea    0x50(%rsp),%rsi
lea    0x38(%rsp),%rdx
xor    %eax,%eax
call   1030 <_ngr2en@plt>
xorpd  %xmm3,%xmm3
movsd  0xe76(%rip),%xmm1
mov    0x38(%rsp),%rax
nop
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
movsd  0xe68(%rip),%xmm2
addsd  %xmm2,%xmm0
subsd  %xmm3,%xmm0
divsd  0xe60(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movapd %xmm1,%xmm0
addsd  0xe52(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
movapd %xmm0,%xmm1
mulsd  0xe48(%rip),%xmm1
movsd  %xmm1,0x10(%rsp)
call   1040 <sin@plt>
mulsd  0xe3d(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rsp),%xmm0
addsd  0xe02(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
call   1060 <cos@plt>
mulsd  (%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x28(%rsp),%xmm0
addsd  %xmm0,%xmm0
call   1040 <sin@plt>
movapd %xmm0,0x10(%rsp)
movsd  0x30(%rsp),%xmm0
addsd  %xmm0,%xmm0
call   1060 <cos@plt>
movapd %xmm0,0x40(%rsp)
movsd  0xde5(%rip),%xmm1
movsd  0x28(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <sin@plt>
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xe94(%rip),%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0x30(%rsp),%xmm0
mulsd  0xdb0(%rip),%xmm0
call   1060 <cos@plt>
movsd  (%rsp),%xmm3
movsd  0x8(%rsp),%xmm1
movapd 0x40(%rsp),%xmm2
unpcklpd %xmm0,%xmm2
mulpd  0x10(%rsp),%xmm2
addsd  %xmm2,%xmm3
unpckhpd %xmm2,%xmm2
subsd  %xmm2,%xmm3
mulsd  0xd84(%rip),%xmm3
mov    0x38(%rsp),%rax
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  0xd3f(%rip),%xmm0
subsd  %xmm3,%xmm0
ucomisd 0xd6b(%rip),%xmm0
jae    1190 <ngr2ll+0x30>
movapd %xmm1,%xmm0
call   1060 <cos@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0xd4b(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
addsd  0xd43(%rip),%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
jb     1320 <ngr2ll+0x1c0>
xorps  %xmm0,%xmm0
sqrtsd %xmm2,%xmm0
jmp    1335 <ngr2ll+0x1d5>
movapd %xmm2,%xmm0
movsd  %xmm2,0x10(%rsp)
call   1080 <sqrt@plt>
movsd  0x10(%rsp),%xmm2
movsd  0xcd3(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0xd09(%rip),%xmm1
movapd %xmm2,%xmm0
call   1070 <pow@plt>
movsd  0xd00(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x40(%rsp)
movsd  0x10(%rsp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0xce6(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <tan@plt>
movapd %xmm0,%xmm5
mulsd  %xmm0,%xmm5
movapd %xmm5,%xmm4
mulsd  %xmm5,%xmm4
movsd  0xca1(%rip),%xmm10
divsd  0x28(%rsp),%xmm10
movsd  0x10(%rsp),%xmm9
movapd %xmm9,%xmm12
mulsd  %xmm9,%xmm12
mulsd  %xmm9,%xmm12
movapd %xmm9,%xmm3
mulsd  %xmm12,%xmm3
mulsd  %xmm9,%xmm3
movsd  0xc8c(%rip),%xmm8
movsd  0x40(%rsp),%xmm14
movapd %xmm14,%xmm2
mulsd  %xmm8,%xmm2
mulsd  %xmm12,%xmm2
movapd %xmm0,%xmm6
divsd  %xmm2,%xmm6
movsd  0xc26(%rip),%xmm2
mulsd  %xmm5,%xmm2
addsd  0xc62(%rip),%xmm2
movsd  (%rsp),%xmm1
addsd  %xmm1,%xmm2
movsd  0xc59(%rip),%xmm7
mulsd  %xmm5,%xmm7
mulsd  %xmm1,%xmm7
addsd  %xmm2,%xmm7
mulsd  %xmm6,%xmm7
movsd  0xc51(%rip),%xmm2
mulsd  %xmm5,%xmm2
addsd  0xc4d(%rip),%xmm2
movsd  0xc4c(%rip),%xmm11
mulsd  %xmm4,%xmm11
addsd  %xmm2,%xmm11
movapd %xmm9,%xmm6
mulsd  %xmm3,%xmm6
mulsd  %xmm9,%xmm6
movapd %xmm14,%xmm2
addsd  %xmm14,%xmm2
mulsd  %xmm9,%xmm2
movapd %xmm10,%xmm13
divsd  %xmm9,%xmm13
movapd %xmm5,%xmm9
addsd  %xmm5,%xmm9
addsd  0x30(%rsp),%xmm9
movsd  0xbe9(%rip),%xmm15
mulsd  %xmm15,%xmm14
mulsd  %xmm3,%xmm14
mulsd  0xbff(%rip),%xmm3
movapd %xmm10,%xmm1
divsd  %xmm3,%xmm1
movsd  0xbf6(%rip),%xmm3
mulsd  %xmm5,%xmm3
addsd  0xbaa(%rip),%xmm3
mulsd  %xmm4,%xmm8
addsd  %xmm3,%xmm8
mulsd  %xmm1,%xmm8
movapd %xmm5,%xmm3
mulsd  0xbdf(%rip),%xmm5
addsd  0xba7(%rip),%xmm5
mulsd  %xmm4,%xmm3
mulsd  0xbd3(%rip),%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm15,%xmm3
xorps  %xmm5,%xmm5
cvtsi2sdq 0x50(%rsp),%xmm5
addsd  %xmm4,%xmm3
addsd  0xbbc(%rip),%xmm5
movapd %xmm5,%xmm4
mulsd  %xmm5,%xmm4
movapd %xmm0,%xmm1
divsd  %xmm2,%xmm1
movapd %xmm4,%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm4,%xmm1
movsd  0x8(%rsp),%xmm15
subsd  %xmm1,%xmm15
movapd %xmm4,%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm7,%xmm2
addsd  %xmm15,%xmm2
divsd  %xmm14,%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm1,%xmm0
mulsd  0xb3c(%rip),%xmm12
subsd  %xmm0,%xmm2
movapd %xmm5,%xmm0
mulsd  %xmm13,%xmm5
movapd %xmm10,%xmm1
divsd  %xmm12,%xmm1
mulsd  %xmm4,%xmm0
mulsd  %xmm9,%xmm1
movapd %xmm4,%xmm7
mulsd  %xmm0,%xmm7
addsd  0xb44(%rip),%xmm5
mulsd  %xmm0,%xmm1
addsd  %xmm5,%xmm1
mulsd  %xmm7,%xmm4
mulsd  %xmm8,%xmm7
addsd  %xmm1,%xmm7
mulsd  0xb07(%rip),%xmm6
divsd  %xmm6,%xmm10
mulsd  %xmm3,%xmm10
mulsd  %xmm4,%xmm10
addsd  %xmm7,%xmm10
movsd  0xb13(%rip),%xmm0
mulsd  %xmm0,%xmm2
movsd  0xb0f(%rip),%xmm1
divsd  %xmm1,%xmm2
movsd  %xmm2,(%rbx)
mulsd  %xmm0,%xmm10
divsd  %xmm1,%xmm10
movsd  %xmm10,(%r14)
mov    $0x1,%eax
add    $0x58,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
define i32 @ngr2ll(i8* %0, double* nocapture writeonly %1, double* nocapture writeonly %2) {
%4 = alloca i64
%5 = alloca i64
%6 = bitcast i64* %4 to i8*
%7 = bitcast i64* %5 to i8*
%8 = call i32 (i8*, i64*, i64*, ...) bitcast (i32 (...)* @_ngr2en to i32 (i8*, i64*, i64*, ...)*)(i8* %0, i64* %4, i64* %5)
%9 = load i64, i64* %5
br label %10
10: ; preds = %10, %3
%11 = phi i64 [ %9, %3 ], [ %46, %10 ]
%12 = phi double [ 0x3FEB5DE3C90922A6, %3 ], [ %18, %10 ]
%13 = phi double [ 0.000000e+00, %3 ], [ %45, %10 ]
%14 = sitofp i64 %11 to double
%15 = fadd double %14, 1.000000e+05
%16 = fsub double %15, %13
%17 = fdiv double %16, 0x4158519B1EC885F7
%18 = fadd double %12, %17
%19 = fadd double %18, 0xBFEB5DE3C90922A6
%20 = fmul double %19, 0x3FF006DD706D901A
%21 = call double @sin(double %19)
%22 = fmul double %21, 0x3F74985006C670D0
%23 = fadd double %18, 0x3FEB5DE3C90922A6
%24 = call double @cos(double %23)
%25 = fmul double %22, %24
%26 = fmul double %19, 2.000000e+00
%27 = call double @sin(double %26)
%28 = fmul double %23, 2.000000e+00
%29 = call double @cos(double %28)
%30 = fmul double %19, 3.000000e+00
%31 = call double @sin(double %30)
%32 = insertelement <2 x double> poison, double %27, i64 0
%33 = insertelement <2 x double> %32, double %31, i64 1
%34 = fmul <2 x double> %33, <double 0x3EC7864BF8C3D05C, double 0x3E341E9DAA7166AA>
%35 = fmul double %23, 3.000000e+00
%36 = call double @cos(double %35)
%37 = insertelement <2 x double> poison, double %29, i64 0
%38 = insertelement <2 x double> %37, double %36, i64 1
%39 = fmul <2 x double> %34, %38
%40 = fsub double %20, %25
%41 = extractelement <2 x double> %39, i64 0
%42 = fadd double %41, %40
%43 = extractelement <2 x double> %39, i64 1
%44 = fsub double %42, %43
%45 = fmul double %44, 0x41583CCE9F64276A
%46 = load i64, i64* %5
%47 = sitofp i64 %46 to double
%48 = fadd double %47, 1.000000e+05
%49 = fsub double %48, %45
%50 = fcmp ult double %49, 1.000000e-05
br i1 %50, label %51, label %10
51: ; preds = %10
%52 = call double @cos(double %18)
%53 = call double @sin(double %18)
%54 = fmul double %53, 0xBF7B529161F6B200
%55 = call double @llvm.fmuladd.f64(double %54, double %53, double 1.000000e+00)
%56 = call double @sqrt(double %55)
%57 = fdiv double 0x4158519B1EC885F7, %56
%58 = call double @pow(double %55, double 1.500000e+00)
%59 = fdiv double 0x41582813E9D12259, %58
%60 = fdiv double %57, %59
%61 = fadd double %60, -1.000000e+00
%62 = call double @tan(double %18)
%63 = fmul double %62, %62
%64 = fmul double %63, %63
%65 = fmul double %63, %64
%66 = fdiv double 1.000000e+00, %52
%67 = fmul double %57, %57
%68 = fmul double %57, %67
%69 = fmul double %57, %68
%70 = fmul double %57, %69
%71 = fmul double %57, %70
%72 = fmul double %57, %71
%73 = fmul double %59, 2.000000e+00
%74 = fmul double %57, %73
%75 = fmul double %59, 2.400000e+01
%76 = fmul double %75, %68
%77 = fdiv double %62, %76
%78 = call double @llvm.fmuladd.f64(double %63, double 3.000000e+00, double 5.000000e+00)
%79 = fadd double %78, %61
%80 = fmul double %63, -9.000000e+00
%81 = call double @llvm.fmuladd.f64(double %80, double %61, double %79)
%82 = fmul double %77, %81
%83 = fmul double %59, 7.200000e+02
%84 = fmul double %83, %70
%85 = call double @llvm.fmuladd.f64(double %63, double 9.000000e+01, double 6.100000e+01)
%86 = call double @llvm.fmuladd.f64(double %64, double 4.500000e+01, double %85)
%87 = fdiv double %66, %57
%88 = fmul double %68, 6.000000e+00
%89 = call double @llvm.fmuladd.f64(double %63, double 2.000000e+00, double %60)
%90 = fmul double %70, 1.200000e+02
%91 = fdiv double %66, %90
%92 = call double @llvm.fmuladd.f64(double %63, double 2.800000e+01, double 5.000000e+00)
%93 = call double @llvm.fmuladd.f64(double %64, double 2.400000e+01, double %92)
%94 = fmul double %93, %91
%95 = fmul double %72, 5.040000e+03
%96 = call double @llvm.fmuladd.f64(double %63, double 6.620000e+02, double 6.100000e+01)
%97 = call double @llvm.fmuladd.f64(double %64, double 1.320000e+03, double %96)
%98 = call double @llvm.fmuladd.f64(double %65, double 7.200000e+02, double %97)
%99 = load i64, i64* %4
%100 = sitofp i64 %99 to double
%101 = fadd double %100, -4.000000e+05
%102 = fmul double %101, %101
%103 = fmul double %101, %102
%104 = fmul double %102, %102
%105 = fmul double %102, %103
%106 = fmul double %102, %104
%107 = fmul double %102, %105
%108 = fneg double %62
%109 = fdiv double %108, %74
%110 = call double @llvm.fmuladd.f64(double %109, double %102, double %18)
%111 = call double @llvm.fmuladd.f64(double %82, double %104, double %110)
%112 = fdiv double %108, %84
%113 = fmul double %86, %112
%114 = call double @llvm.fmuladd.f64(double %113, double %106, double %111)
%115 = call double @llvm.fmuladd.f64(double %87, double %101, double 0xBFA1DF4663F11168)
%116 = fneg double %66
%117 = fdiv double %116, %88
%118 = fmul double %89, %117
%119 = call double @llvm.fmuladd.f64(double %118, double %103, double %115)
%120 = call double @llvm.fmuladd.f64(double %94, double %105, double %119)
%121 = fdiv double %116, %95
%122 = fmul double %98, %121
%123 = call double @llvm.fmuladd.f64(double %122, double %107, double %120)
%124 = fmul double %114, 1.800000e+02
%125 = fdiv double %124, 0x400921FAFC8B007A
store double %125, double* %1
%126 = fmul double %123, 1.800000e+02
%127 = fdiv double %126, 0x400921FAFC8B007A
store double %127, double* %2
ret i32 1
}