// File: DoubleString[P]RtConverter/src/Rnxobs/Com.cpp
// Function: bamboo::GetX(double, double, double)
long double GetX(double RadLat, double eSquare, double a) {
	long double X;
	long double A0;
	long double A2;
	long double A4;
	long double A6;
	long double A8;	///*  from hsq
	A0 = 1 + 3.0 / 4.0 * eSquare + 45.0 / 64.0 * eSquare * eSquare
			+ 350.0 / 512.0 * eSquare * eSquare * eSquare
			+ 11025.0 / 16384.0 * eSquare * eSquare * eSquare * eSquare;
	A2 =
			-1.0 / 2.0
					* (3.0 / 4.0 * eSquare + 60.0 / 64.0 * eSquare * eSquare
							+ 525.0 / 512.0 * eSquare * eSquare * eSquare
							+ 17640.0 / 16384.0 * eSquare * eSquare * eSquare
									* eSquare);
	A4 = 1.0 / 4.0
			* (15.0 / 64.0 * eSquare * eSquare
					+ 210.0 / 512.0 * eSquare * eSquare * eSquare
					+ 8820.0 / 16384.0 * eSquare * eSquare * eSquare * eSquare);
	A6 = -1.0 / 6.0
			* (35.0 / 512.0 * eSquare * eSquare * eSquare
					+ 2520.0 / 16384.0 * eSquare * eSquare * eSquare * eSquare);
	A8 = 1.0 / 8.0 * 315.0 / 16384.0 * eSquare * eSquare * eSquare * eSquare;
	X = a * (1 - eSquare)
			* (A0 * RadLat + A2 * sin(2 * RadLat) + A4 * sin(4 * RadLat)
					+ A6 * sin(6 * RadLat) + A8 * sin(8 * RadLat));
	return X;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movsd %xmm0, -0x8(%rbp)
movsd %xmm1, -0x10(%rbp)
movsd %xmm2, -0x18(%rbp)
movsd -0x10(%rbp), %xmm3
movsd 0x86089(%rip), %xmm4    # 0xbcef0
movaps %xmm3, %xmm2
mulsd %xmm4, %xmm2
movsd 0x84fea(%rip), %xmm1    # 0xbbe60
addsd %xmm1, %xmm2
movsd 0x86076(%rip), %xmm5    # 0xbcef8
movaps %xmm3, %xmm0
mulsd %xmm5, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
movsd 0x86067(%rip), %xmm5    # 0xbcf00
movaps %xmm3, %xmm2
mulsd %xmm5, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm0, %xmm2
movsd 0x86054(%rip), %xmm5    # 0xbcf08
movaps %xmm3, %xmm0
mulsd %xmm5, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, -0x88(%rbp)
fldl -0x88(%rbp)
fstpt -0x40(%rbp)
movsd -0x10(%rbp), %xmm3
movsd 0x86027(%rip), %xmm0    # 0xbcf10
movaps %xmm3, %xmm2
mulsd %xmm0, %xmm2
mulsd %xmm3, %xmm2
movaps %xmm3, %xmm0
mulsd %xmm4, %xmm0
addsd %xmm2, %xmm0
movsd 0x86011(%rip), %xmm4    # 0xbcf18
movaps %xmm3, %xmm2
mulsd %xmm4, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm0, %xmm2
movsd 0x85ffe(%rip), %xmm4    # 0xbcf20
movaps %xmm3, %xmm0
mulsd %xmm4, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
movsd 0x85fe7(%rip), %xmm2    # 0xbcf28
mulsd %xmm2, %xmm0
movsd %xmm0, -0x90(%rbp)
fldl -0x90(%rbp)
fstpt -0x50(%rbp)
movsd -0x10(%rbp), %xmm3
movsd 0x85fcd(%rip), %xmm0    # 0xbcf30
movaps %xmm3, %xmm2
mulsd %xmm0, %xmm2
movsd 0x85fc6(%rip), %xmm4    # 0xbcf38
movaps %xmm3, %xmm0
mulsd %xmm4, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm3, %xmm2
addsd %xmm0, %xmm2
movsd 0x85faf(%rip), %xmm4    # 0xbcf40
movaps %xmm3, %xmm0
mulsd %xmm4, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
movsd 0x85f98(%rip), %xmm2    # 0xbcf48
mulsd %xmm2, %xmm0
movsd %xmm0, -0x98(%rbp)
fldl -0x98(%rbp)
fstpt -0x60(%rbp)
movsd -0x10(%rbp), %xmm3
movsd 0x85f7e(%rip), %xmm2    # 0xbcf50
movaps %xmm3, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm3, %xmm0
movsd 0x85f73(%rip), %xmm4    # 0xbcf58
movaps %xmm3, %xmm2
mulsd %xmm4, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
movsd 0x85f58(%rip), %xmm2    # 0xbcf60
mulsd %xmm2, %xmm0
movsd %xmm0, -0xa0(%rbp)
fldl -0xa0(%rbp)
fstpt -0x70(%rbp)
movsd -0x10(%rbp), %xmm2
movsd 0x85f3e(%rip), %xmm3    # 0xbcf68
movaps %xmm2, %xmm0
mulsd %xmm3, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm0
movsd %xmm0, -0xa8(%rbp)
fldl -0xa8(%rbp)
fstpt -0x80(%rbp)
movsd -0x18(%rbp), %xmm0
movsd -0x10(%rbp), %xmm2
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
fldl -0xb8(%rbp)
fstpt -0xe4(%rbp)
fldt -0x40(%rbp)
fstpt -0x138(%rbp)
movsd -0x8(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
fldl -0xb0(%rbp)
fstpt -0x144(%rbp)
fldt -0x50(%rbp)
fstpt -0x150(%rbp)
addsd %xmm0, %xmm0
callq 0x91a0
fldt -0x150(%rbp)
fldt -0x144(%rbp)
fldt -0x138(%rbp)
movsd %xmm0, -0xc0(%rbp)
fldl -0xc0(%rbp)
fmulp %st, %st(3)
fmulp %st, %st(1)
faddp %st, %st(1)
fstpt -0x120(%rbp)
fldt -0x60(%rbp)
fstpt -0x12c(%rbp)
movsd -0x8(%rbp), %xmm0
movsd 0x85d06(%rip), %xmm1    # 0xbcdf0
mulsd %xmm1, %xmm0
callq 0x91a0
fldt -0x12c(%rbp)
fldt -0x120(%rbp)
movsd %xmm0, -0xc8(%rbp)
fldl -0xc8(%rbp)
fmulp %st, %st(2)
faddp %st, %st(1)
fstpt -0x108(%rbp)
fldt -0x70(%rbp)
fstpt -0x114(%rbp)
movsd -0x8(%rbp), %xmm0
movsd 0x85e43(%rip), %xmm1    # 0xbcf70
mulsd %xmm1, %xmm0
callq 0x91a0
fldt -0x114(%rbp)
fldt -0x108(%rbp)
movsd %xmm0, -0xd0(%rbp)
fldl -0xd0(%rbp)
fmulp %st, %st(2)
faddp %st, %st(1)
fstpt -0xf0(%rbp)
fldt -0x80(%rbp)
fstpt -0xfc(%rbp)
movsd -0x8(%rbp), %xmm0
movsd 0x85e08(%rip), %xmm1    # 0xbcf78
mulsd %xmm1, %xmm0
callq 0x91a0
fldt -0xfc(%rbp)
fldt -0xf0(%rbp)
fldt -0xe4(%rbp)
movsd %xmm0, -0xd8(%rbp)
fldl -0xd8(%rbp)
fmulp %st, %st(3)
fxch %st(2)
faddp %st, %st(1)
fmulp %st, %st(1)
fstpt -0x30(%rbp)
fldt -0x30(%rbp)
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq