#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 cos(double);
scalar_t__ malloc(int);
double sin(int);
double sqrt(int);
double tan(double);
double *GaussProjCal(double L, double B, double L0) {
  double a, b, N;
  double f, l, t;
  double e, e1, e2;
  double *xy = (double *)malloc(2 * sizeof(double));
  double A0, A2, A4, A6, A8;
  double X, yt;
  a = 6378137;
  b = 6356752.3142;
  f = 1 / 298.257;
  e1 = 0.006694385;
  e2 = 0.00673950;
  double db = 3.141592653589793 / 180.0;
  B = B * db;
  l = (L - L0) * db;
  L = L * db;
  e = (a * a - b * b) / (a * a);
  N = a / sqrt(1 - e * sin(B) * sin(B));
  t = tan(B);
  yt = e2 * cos(B);
  A0 = 1 + e * 3 / 4 + e * e * 45 / 64 + e * e * e * 350 / 512 +
       e * e * e * e * 11025 / 16384;
  A2 = -(1.0 / 2) * (e * 3 / 4 + e * e * 60 / 64 + e * e * e * 525 / 512 +
                     e * e * e * e * 17640 / 16384);
  A4 = (1.0 / 4) *
       (e * e * 15 / 64 + e * e * e * 210 / 512 + e * e * e * e * 8820 / 16384);
  A6 = -(1.0 / 6) * (e * e * e * 35 / 512 + e * e * e * e * 2520 / 16384);
  A8 = (1.0 / 8) * (e * e * e * e * 315 / 16384);
  X = a * (1 - e) *
      (A0 * B + A2 * sin(B * 2) + A4 * sin(4 * B) + A6 * sin(6 * B) +
       A8 * sin(8 * B));
  xy[0] = X + (N / 2) * t * cos(B) * cos(B) * l * l +
          (N / 24) * t * cos(B) * cos(B) * cos(B) * cos(B) *
              (5 - t * t + 9 * yt * yt + 4 * yt * yt * yt * yt) * l * l * l *
              l +
          (N / 720) * t * cos(B) * cos(B) * cos(B) * cos(B) * cos(B) * cos(B) *
              (61 - 58 * t * t + t * t * t * t + 270 * yt * yt -
               330 * yt * yt * t * t) *
              l * l * l * l * l * l;
  xy[1] =
      500000 + N * cos(B) * l +
      (N / 6) * cos(B) * cos(B) * cos(B) * (1 - t * t + yt * yt) * l * l * l +
      (N / 120) * cos(B) * cos(B) * cos(B) * cos(B) * cos(B) *
          (5 - 18 * t * t + t * t * t * t + 14 * yt * yt -
           58 * t * t * yt * yt) *
          l * l * l * l * l;
  return xy;
}


x86 assembly (clang, -O0):
<GaussProjCal>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1f0,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
mov    $0x10,%edi
call   1040 <malloc@plt>
mov    %rax,-0x68(%rbp)
movsd  0xfd0(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xfbb(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xfa6(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xf91(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xf7c(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xf67(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x8(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm1
mulsd  -0x20(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
cvttsd2si -0x10(%rbp),%edi
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1e8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
cvttsd2si -0x10(%rbp),%edi
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x1e0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xd6b(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1070 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x1d8(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1050 <tan@plt>
movsd  %xmm0,-0x48(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x1d0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xde5(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xd30(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0xcec(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xdce(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd7a(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xd9b(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd27(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xd63(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xcd7(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xd3a(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xc85(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xd0f(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xcdb(%rip),%xmm2
divsd  %xmm2,%xmm0
addsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xcdc(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xc88(%rip),%xmm2
divsd  %xmm2,%xmm0
addsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xca4(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xc38(%rip),%xmm2
divsd  %xmm2,%xmm0
addsd  %xmm0,%xmm1
movsd  0xc80(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xc5d(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xc49(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xc26(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xbfa(%rip),%xmm2
divsd  %xmm2,%xmm0
addsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xbee(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xbaa(%rip),%xmm2
divsd  %xmm2,%xmm0
addsd  %xmm0,%xmm1
movsd  0xbca(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xba2(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xb8e(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xb66(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xb42(%rip),%xmm2
divsd  %xmm2,%xmm0
addsd  %xmm0,%xmm1
movsd  0xb42(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movsd  0xb12(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xafe(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0xaea(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xa71(%rip),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  0xa81(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <sin@plt>
movsd  -0x1c8(%rbp),%xmm1
ff
movsd  -0x1c0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x1b8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  0xa17(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <sin@plt>
movsd  -0x1b0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
movsd  0x99e(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <sin@plt>
movsd  -0x1a0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x198(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0x9a5(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <sin@plt>
movsd  -0x190(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x180(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  0x943(%rip),%xmm1
divsd  %xmm1,%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x178(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movsd  -0x170(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x168(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  0x8c1(%rip),%xmm1
divsd  %xmm1,%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x160(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x158(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x150(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movsd  -0x148(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x140(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
movsd  0x79f(%rip),%xmm3
addsd  %xmm3,%xmm2
movsd  0x7eb(%rip),%xmm3
mulsd  -0xa0(%rbp),%xmm3
ff
movsd  -0xa0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  0x7c3(%rip),%xmm2
mulsd  -0xa0(%rbp),%xmm2
ff
mulsd  -0xa0(%rbp),%xmm2
ff
mulsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  0x75e(%rip),%xmm1
divsd  %xmm1,%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movsd  -0x110(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x108(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  0x627(%rip),%xmm3
mulsd  -0x48(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm2
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm2,%xmm3
movsd  0x64a(%rip),%xmm2
addsd  %xmm2,%xmm3
movsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x61a(%rip),%xmm3
mulsd  -0xa0(%rbp),%xmm3
ff
movsd  -0xa0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  0x5f2(%rip),%xmm2
mulsd  -0xa0(%rbp),%xmm2
ff
mulsd  -0xa0(%rbp),%xmm2
ff
mulsd  -0x48(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x68(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x548(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  0x527(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movsd  -0xe8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0x48(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm2
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm2,%xmm3
movsd  0x483(%rip),%xmm2
addsd  %xmm2,%xmm3
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  0x42f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1060 <cos@plt>
movsd  -0xb8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  0x36e(%rip),%xmm3
mulsd  -0x48(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm2
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm2,%xmm3
movsd  0x339(%rip),%xmm2
addsd  %xmm2,%xmm3
movsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x309(%rip),%xmm3
mulsd  -0xa0(%rbp),%xmm3
ff
movsd  -0xa0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  0x2e1(%rip),%xmm2
mulsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
mulsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm4
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x68(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x68(%rbp),%rax
add    $0x1f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<GaussProjCal>:
push   %rbp
push   %rbx
sub    $0x78,%rsp
movsd  %xmm2,0x18(%rsp)
movsd  %xmm1,0x8(%rsp)
movsd  %xmm0,0x30(%rsp)
mov    $0x10,%edi
call   1040 <malloc@plt>
mov    %rax,%rbx
movsd  0xe83(%rip),%xmm0
movsd  0x8(%rsp),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,0x8(%rsp)
movsd  0x30(%rsp),%xmm1
subsd  0x18(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x30(%rsp)
cvttsd2si %xmm2,%ebp
mov    %ebp,%edi
call   1030 <sin@plt>
movsd  %xmm0,0x18(%rsp)
mov    %ebp,%edi
call   1030 <sin@plt>
movsd  0x18(%rsp),%xmm1
mulsd  0xe3f(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xe3b(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1070 <sqrt@plt>
movsd  0xe32(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <tan@plt>
movaps %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0xe0d(%rip),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x8(%rsp),%xmm0
addsd  %xmm0,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <sin@plt>
mulsd  0xdf4(%rip),%xmm0
movsd  0xdf4(%rip),%xmm2
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,0x20(%rsp)
movapd %xmm1,%xmm0
mulsd  0xddc(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <sin@plt>
mulsd  0xdd3(%rip),%xmm0
addsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  0xdc1(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <sin@plt>
mulsd  0xdb8(%rip),%xmm0
addsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0xdac(%rip),%xmm0
mulsd  0x8(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <sin@plt>
mulsd  0xd9d(%rip),%xmm0
addsd  0x20(%rsp),%xmm0
mulsd  0xd97(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0xd91(%rip),%xmm0
mulsd  0x18(%rsp),%xmm0
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x18(%rsp),%xmm0
divsd  0xd37(%rip),%xmm0
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x20(%rsp),%xmm0
movapd 0xd35(%rip),%xmm2
movapd 0x50(%rsp),%xmm1
xorpd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm2,0x20(%rsp)
movapd %xmm1,%xmm4
movapd %xmm2,%xmm1
addsd  0xcb1(%rip),%xmm1
movsd  0xcb1(%rip),%xmm2
movsd  0x40(%rsp),%xmm3
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0xc47(%rip),%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x30(%rsp),%xmm0
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x48(%rsp)
movsd  0x18(%rsp),%xmm0
divsd  0xc57(%rip),%xmm0
mulsd  %xmm4,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0xbc9(%rip),%xmm3
movapd 0x50(%rsp),%xmm2
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
movsd  %xmm3,0x10(%rsp)
movsd  0xbb5(%rip),%xmm1
addsd  %xmm3,%xmm1
movapd %xmm2,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
movapd %xmm3,0x60(%rsp)
movapd %xmm2,%xmm4
addsd  %xmm3,%xmm1
movsd  0xb93(%rip),%xmm2
movsd  0x40(%rsp),%xmm3
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0xb81(%rip),%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm4,%xmm1
mulsd  %xmm4,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x30(%rsp),%xmm0
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  0x48(%rsp),%xmm1
movsd  %xmm1,(%rbx)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
movsd  0x18(%rsp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  0x30(%rsp),%xmm0
addsd  0xb26(%rip),%xmm0
movsd  %xmm0,0x48(%rsp)
divsd  0xaa8(%rip),%xmm1
movsd  %xmm1,0x38(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x38(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x38(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x38(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
addsd  0xa1d(%rip),%xmm1
movsd  0x40(%rsp),%xmm2
mulsd  %xmm2,%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
movsd  0x30(%rsp),%xmm0
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
addsd  0x48(%rsp),%xmm2
movsd  %xmm2,0x20(%rsp)
movsd  0x18(%rsp),%xmm0
divsd  0xa8f(%rip),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  0xa1c(%rip),%xmm1
movapd 0x50(%rsp),%xmm2
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  0x9be(%rip),%xmm1
addsd  0x60(%rsp),%xmm1
movsd  0xa00(%rip),%xmm2
movsd  0x40(%rsp),%xmm3
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0x10(%rsp),%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x30(%rsp),%xmm0
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  0x20(%rsp),%xmm1
movsd  %xmm1,0x8(%rbx)
mov    %rbx,%rax
add    $0x78,%rsp
pop    %rbx
pop    %rbp
ret

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

LLVM IR (-O2):
define double* @GaussProjCal(double %0, double %1, double %2) {
%4 = tail call i64 @malloc(i32 16)
%5 = inttoptr i64 %4 to double*
%6 = fmul double %1, 0x3F91DF46A2529D39
%7 = fsub double %0, %2
%8 = fmul double %7, 0x3F91DF46A2529D39
%9 = fptosi double %6 to i32
%10 = tail call double @sin(i32 %9)
%11 = tail call double @sin(i32 %9)
%12 = fmul double %10, 0xBF7B6B90F2F6F98F
%13 = tail call double @llvm.fmuladd.f64(double %12, double %11, double 1.000000e+00)
%14 = fptosi double %13 to i32
%15 = tail call double @sqrt(i32 %14)
%16 = fdiv double 0x415854A640000000, %15
%17 = tail call double @tan(double %6)
%18 = tail call double @cos(double %6)
%19 = fmul double %18, 0x3F7B9AE0C1765775
%20 = fmul double %6, 2.000000e+00
%21 = fptosi double %20 to i32
%22 = tail call double @sin(i32 %21)
%23 = fmul double %22, 0xBF64BD0DDD2C8AA4
%24 = tail call double @llvm.fmuladd.f64(double %6, double 0x3FF014B1EE9F36F2, double %23)
%25 = fmul double %6, 4.000000e+00
%26 = fptosi double %25 to i32
%27 = tail call double @sin(i32 %26)
%28 = tail call double @llvm.fmuladd.f64(double %27, double 0x3EC649A3B402B668, double %24)
%29 = fmul double %6, 6.000000e+00
%30 = fptosi double %29 to i32
%31 = tail call double @sin(i32 %30)
%32 = tail call double @llvm.fmuladd.f64(double %31, double 0xBE2DCD93B6B4B139, double %28)
%33 = fmul double %6, 8.000000e+00
%34 = fptosi double %33 to i32
%35 = tail call double @sin(i32 %34)
%36 = tail call double @llvm.fmuladd.f64(double %35, double 0x3D953A472E6DC8DA, double %32)
%37 = fmul double %36, 0x41582AF3D4F0E3DD
%38 = fmul double %16, 5.000000e-01
%39 = fmul double %17, %38
%40 = tail call double @cos(double %6)
%41 = fmul double %39, %40
%42 = tail call double @cos(double %6)
%43 = fmul double %41, %42
%44 = fmul double %8, %43
%45 = tail call double @llvm.fmuladd.f64(double %44, double %8, double %37)
%46 = fdiv double %16, 2.400000e+01
%47 = fmul double %17, %46
%48 = tail call double @cos(double %6)
%49 = fmul double %47, %48
%50 = tail call double @cos(double %6)
%51 = fmul double %49, %50
%52 = tail call double @cos(double %6)
%53 = fmul double %51, %52
%54 = tail call double @cos(double %6)
%55 = fmul double %53, %54
%56 = fneg double %17
%57 = tail call double @llvm.fmuladd.f64(double %56, double %17, double 5.000000e+00)
%58 = fmul double %19, 9.000000e+00
%59 = tail call double @llvm.fmuladd.f64(double %58, double %19, double %57)
%60 = fmul double %19, 4.000000e+00
%61 = fmul double %19, %60
%62 = fmul double %19, %61
%63 = tail call double @llvm.fmuladd.f64(double %62, double %19, double %59)
%64 = fmul double %63, %55
%65 = fmul double %8, %64
%66 = fmul double %8, %65
%67 = fmul double %8, %66
%68 = tail call double @llvm.fmuladd.f64(double %67, double %8, double %45)
%69 = fdiv double %16, 7.200000e+02
%70 = fmul double %17, %69
%71 = tail call double @cos(double %6)
%72 = fmul double %70, %71
%73 = tail call double @cos(double %6)
%74 = fmul double %72, %73
%75 = tail call double @cos(double %6)
%76 = fmul double %74, %75
%77 = tail call double @cos(double %6)
%78 = fmul double %76, %77
%79 = tail call double @cos(double %6)
%80 = fmul double %78, %79
%81 = tail call double @cos(double %6)
%82 = fmul double %80, %81
%83 = fmul double %17, -5.800000e+01
%84 = tail call double @llvm.fmuladd.f64(double %83, double %17, double 6.100000e+01)
%85 = fmul double %17, %17
%86 = fmul double %17, %85
%87 = tail call double @llvm.fmuladd.f64(double %86, double %17, double %84)
%88 = fmul double %19, 2.700000e+02
%89 = tail call double @llvm.fmuladd.f64(double %88, double %19, double %87)
%90 = fmul double %19, -3.300000e+02
%91 = fmul double %19, %90
%92 = fmul double %17, %91
%93 = tail call double @llvm.fmuladd.f64(double %92, double %17, double %89)
%94 = fmul double %93, %82
%95 = fmul double %8, %94
%96 = fmul double %8, %95
%97 = fmul double %8, %96
%98 = fmul double %8, %97
%99 = fmul double %8, %98
%100 = tail call double @llvm.fmuladd.f64(double %99, double %8, double %68)
store double %100, double* %5
%101 = tail call double @cos(double %6)
%102 = fmul double %16, %101
%103 = tail call double @llvm.fmuladd.f64(double %102, double %8, double 5.000000e+05)
%104 = fdiv double %16, 6.000000e+00
%105 = tail call double @cos(double %6)
%106 = fmul double %104, %105
%107 = tail call double @cos(double %6)
%108 = fmul double %106, %107
%109 = tail call double @cos(double %6)
%110 = fmul double %108, %109
%111 = tail call double @llvm.fmuladd.f64(double %56, double %17, double 1.000000e+00)
%112 = tail call double @llvm.fmuladd.f64(double %19, double %19, double %111)
%113 = fmul double %112, %110
%114 = fmul double %8, %113
%115 = fmul double %8, %114
%116 = tail call double @llvm.fmuladd.f64(double %115, double %8, double %103)
%117 = fdiv double %16, 1.200000e+02
%118 = tail call double @cos(double %6)
%119 = fmul double %117, %118
%120 = tail call double @cos(double %6)
%121 = fmul double %119, %120
%122 = tail call double @cos(double %6)
%123 = fmul double %121, %122
%124 = tail call double @cos(double %6)
%125 = fmul double %123, %124
%126 = tail call double @cos(double %6)
%127 = fmul double %125, %126
%128 = fmul double %17, -1.800000e+01
%129 = tail call double @llvm.fmuladd.f64(double %128, double %17, double 5.000000e+00)
%130 = tail call double @llvm.fmuladd.f64(double %86, double %17, double %129)
%131 = fmul double %19, 1.400000e+01
%132 = tail call double @llvm.fmuladd.f64(double %131, double %19, double %130)
%133 = fmul double %17, %83
%134 = fmul double %133, %19
%135 = tail call double @llvm.fmuladd.f64(double %134, double %19, double %132)
%136 = fmul double %135, %127
%137 = fmul double %8, %136
%138 = fmul double %8, %137
%139 = fmul double %8, %138
%140 = fmul double %8, %139
%141 = tail call double @llvm.fmuladd.f64(double %140, double %8, double %116)
%142 = getelementptr inbounds double, double* %5, i64 1
store double %141, double* %142
ret double* %5
}