// File: /workspace/github_cpp_makefile_star2_O1/DoubleString[P]RtConverter/src/Rnxobs/Com.cpp
// Function: bamboo::bl2Gaussxy(double, double, double*, double*, double, double, double, double)
bool bl2Gaussxy(double RadLat, double RadLon, double *x, double *y,
		double RadLon0, double eSquare, double a, double heightchange) {
	long double m0, t, etaSquare, RadDeltaLon;
	long double N, X0;
	long double ePrimeSquare;
	long double aa, da, db; //ykoky2k
	RadDeltaLon = RadLon - RadLon0;
	ePrimeSquare = eSquare / (1 - eSquare);
	N = (a / sqrt(1 - eSquare * sin(RadLat) * sin(RadLat))) + heightchange;
	aa = N * sqrt(1 - eSquare * sin(RadLat) * sin(RadLat));
	da = aa - a;
	db = eSquare * sin(RadLat) * cos(RadLat)
			* (1 - eSquare * sin(RadLat) * cos(RadLat)) * da
			/ (a * (1 - eSquare));
	RadLat = RadLat + db;
	a = aa;
	m0 = RadDeltaLon * cos(RadLat);
	t = tan(RadLat);
	etaSquare = ePrimeSquare * cos(RadLat) * cos(RadLat);
	X0 = GetX(RadLat, eSquare, aa);
	*x = X0 + 1 / 2.0 * N * t * pow(m0, 2)
			+ 1 / 24.0
					* (5.0 - pow(t, 2) + 9 * etaSquare + 4 * pow(etaSquare, 2))
					* N * t * pow(m0, 4)
			+ 1 / 720.0
					* (61.0 - 58 * pow(t, 2) + pow(t, 4) + 270 * etaSquare
							- 330 * etaSquare * pow(t, 2)) * N * t * pow(m0, 6)
			+ 1 / 40320 * N * t * pow(m0, 8)
					* (1385 - 3111 * pow(t, 2) + 543 * pow(t, 4) - pow(t, 6));
	*y = 500000.0 + N * m0
			+ 1 / 6.0 * (1.0 - pow(t, 2) + etaSquare) * N * pow(m0, 3)
			+ 1 / 120.0
					* (5.0 - 18.0 * pow(t, 2) + pow(t, 4) + 14.0 * etaSquare
							- 58.0 * pow(t, 2) * etaSquare) * N * pow(m0, 5)
			+ 1 / 5040.0 * pow(m0, 7)
					* (61 - 479 * pow(t, 2) + 179 * pow(t, 4) - pow(t, 6));
	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x150, %rsp            # imm = 0x150
movsd %xmm5, -0x60(%rbp)
movsd %xmm4, -0x50(%rbp)
movq %rsi, %rbx
movq %rdi, %r14
movsd %xmm0, -0x20(%rbp)
subsd %xmm2, %xmm1
movsd %xmm1, -0x140(%rbp)
fldl -0x140(%rbp)
fstpt -0xc0(%rbp)
movsd 0x4976d(%rip), %xmm1    # 0x69920
movapd %xmm3, %xmm2
movsd %xmm3, -0x30(%rbp)
subsd %xmm3, %xmm1
movsd %xmm1, -0x70(%rbp)
divsd %xmm1, %xmm2
movsd %xmm2, -0x138(%rbp)
fldl -0x138(%rbp)
fstpt -0x98(%rbp)
callq 0x8150
movsd %xmm0, -0x40(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8150
movsd -0x40(%rbp), %xmm1
mulsd -0x30(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd 0x49719(%rip), %xmm0    # 0x69920
subsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x2021b
sqrtsd %xmm0, %xmm0
jmp 0x20220
callq 0x84e0
movsd -0x50(%rbp), %xmm1
divsd %xmm0, %xmm1
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x130(%rbp)
fldl -0x130(%rbp)
fstpt -0x60(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8150
movsd %xmm0, -0x40(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8150
movsd -0x40(%rbp), %xmm1
mulsd -0x30(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd 0x496b2(%rip), %xmm0    # 0x69920
subsd %xmm1, %xmm0
ucomisd 0x4a68e(%rip), %xmm0    # 0x6a908
jb 0x20282
sqrtsd %xmm0, %xmm0
jmp 0x20287
callq 0x84e0
movsd %xmm0, -0x128(%rbp)
fldt -0x60(%rbp)
fmull -0x128(%rbp)
fld %st(0)
fstpt -0x40(%rbp)
movsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x120(%rbp)
fsubl -0x120(%rbp)
fstpt -0xb4(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8150
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8c00
mulsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8150
movsd %xmm0, -0x80(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8c00
movsd -0x80(%rbp), %xmm1
mulsd -0x30(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd 0x4960a(%rip), %xmm0    # 0x69920
subsd %xmm1, %xmm0
mulsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x100(%rbp)
fldt -0xb4(%rbp)
fmull -0x100(%rbp)
movsd -0x70(%rbp), %xmm0
mulsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x110(%rbp)
fdivl -0x110(%rbp)
movsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x118(%rbp)
faddl -0x118(%rbp)
fstpl -0xf8(%rbp)
movsd -0xf8(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
callq 0x8c00
movsd %xmm0, -0xf0(%rbp)
fldt -0xc0(%rbp)
fmull -0xf0(%rbp)
fstpt -0x50(%rbp)
movsd -0x70(%rbp), %xmm0
callq 0x83a0
movsd %xmm0, -0xe8(%rbp)
fldl -0xe8(%rbp)
fstpt -0x20(%rbp)
movsd -0x70(%rbp), %xmm0
callq 0x8c00
movsd %xmm0, -0xe0(%rbp)
fldt -0x98(%rbp)
fmull -0xe0(%rbp)
fstpt -0x98(%rbp)
movsd -0x70(%rbp), %xmm0
callq 0x8c00
movsd %xmm0, -0xd8(%rbp)
fldt -0x98(%rbp)
fmull -0xd8(%rbp)
fstpt -0x98(%rbp)
fldt -0x40(%rbp)
fstpl -0x108(%rbp)
movsd -0x108(%rbp), %xmm2
movsd -0x70(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0x1ff22
fldt -0x60(%rbp)
fld %st(0)
fmuls 0x4ae52(%rip)           # 0x6b270
fldt -0x20(%rbp)
fmul %st, %st(1)
fldt -0x50(%rbp)
fld %st(0)
fmul %st(1), %st
fmulp %st, %st(3)
fxch %st(2)
faddp %st, %st(4)
fxch %st(3)
fstpt -0x40(%rbp)
fld %st(2)
fmul %st(3), %st
fld %st(0)
fstpt -0x30(%rbp)
flds 0x4ae30(%rip)           # 0x6b274
fld %st(0)
fstpt -0xc0(%rbp)
fsubp %st, %st(1)
fldt -0x98(%rbp)
fld %st(0)
fmuls 0x4ae1c(%rip)           # 0x6b278
faddp %st, %st(2)
fmul %st, %st(0)
flds 0x4ae16(%rip)           # 0x6b27c
fld %st(0)
fstpt -0x70(%rbp)
fmul %st, %st(1)
fxch %st(1)
faddp %st, %st(2)
fxch %st(1)
fmull 0x4a5cf(%rip)           # 0x6aa48
fmulp %st, %st(3)
fxch %st(2)
fmulp %st, %st(3)
fxch %st(2)
fstpt -0xb4(%rbp)
fstpt 0x10(%rsp)
fstpt (%rsp)
callq 0x8aa0
fldt -0xb4(%rbp)
fmulp %st, %st(1)
fldt -0x40(%rbp)
faddp %st, %st(1)
fstpt -0x80(%rbp)
fldt -0x30(%rbp)
fmuls 0x4add4(%rip)           # 0x6b280
fld %st(0)
fstpt -0xa8(%rbp)
flds 0x4adca(%rip)           # 0x6b284
fld %st(0)
fstpt -0xb4(%rbp)
faddp %st, %st(1)
fstpt -0x40(%rbp)
fldt -0x70(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8aa0
fldt -0x40(%rbp)
faddp %st, %st(1)
fldt -0x98(%rbp)
fld %st(0)
fmuls 0x4ad9c(%rip)           # 0x6b288
faddp %st, %st(2)
fmuls 0x4ad98(%rip)           # 0x6b28c
fldt -0x30(%rbp)
fmulp %st, %st(1)
faddp %st, %st(1)
fmull 0x4a54f(%rip)           # 0x6aa50
fldt -0x60(%rbp)
fmulp %st, %st(1)
fldt -0x20(%rbp)
fmulp %st, %st(1)
fstpt -0x8c(%rbp)
flds 0x4ad79(%rip)           # 0x6b290
fld %st(0)
fstpt -0x40(%rbp)
fstpt 0x10(%rsp)
fldt -0x50(%rbp)
fstpt (%rsp)
callq 0x8aa0
fldt -0x8c(%rbp)
fmulp %st, %st(1)
fldt -0x80(%rbp)
faddp %st, %st(1)
fstpt -0x80(%rbp)
fldz
fldt -0x60(%rbp)
fmulp %st, %st(1)
fldt -0x20(%rbp)
fmulp %st, %st(1)
fstpt -0x8c(%rbp)
flds 0x4ad41(%rip)           # 0x6b294
fstpt 0x10(%rsp)
fldt -0x50(%rbp)
fstpt (%rsp)
callq 0x8aa0
fldt -0x8c(%rbp)
fmulp %st, %st(1)
fstpt -0x8c(%rbp)
fldt -0x30(%rbp)
fmuls 0x4ad1f(%rip)           # 0x6b298
fadds 0x4ad1d(%rip)           # 0x6b29c
fstpt -0xcc(%rbp)
fldt -0x70(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8aa0
fmuls 0x4ad03(%rip)           # 0x6b2a0
fldt -0xcc(%rbp)
faddp %st, %st(1)
fstpt -0xcc(%rbp)
fldt -0x40(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8aa0
fldt -0xcc(%rbp)
fsubp %st, %st(1)
fldt -0x8c(%rbp)
fmulp %st, %st(1)
fldt -0x80(%rbp)
faddp %st, %st(1)
fstpl (%r14)
fldt -0x60(%rbp)
fldt -0x50(%rbp)
fld %st(1)
fmul %st(1), %st
fadds 0x4acbf(%rip)           # 0x6b2a4
fstpt -0x80(%rbp)
fld1
fldt -0x30(%rbp)
fsubrp %st, %st(1)
fldt -0x98(%rbp)
faddp %st, %st(1)
fmull 0x4a45b(%rip)           # 0x6aa58
fmulp %st, %st(2)
fxch %st(1)
fstpt -0x8c(%rbp)
flds 0x4ac9b(%rip)           # 0x6b2a8
fstpt 0x10(%rsp)
fstpt (%rsp)
callq 0x8aa0
fldt -0x8c(%rbp)
fmulp %st, %st(1)
fldt -0x80(%rbp)
faddp %st, %st(1)
fstpt -0x80(%rbp)
fldt -0x30(%rbp)
fmuls 0x4ac7a(%rip)           # 0x6b2ac
fldt -0xc0(%rbp)
faddp %st, %st(1)
fstpt -0x8c(%rbp)
fldt -0x70(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8aa0
fldt -0x8c(%rbp)
faddp %st, %st(1)
fldt -0x98(%rbp)
fld %st(0)
fmuls 0x4ac48(%rip)           # 0x6b2b0
faddp %st, %st(2)
fldt -0xa8(%rbp)
fmulp %st, %st(1)
faddp %st, %st(1)
fmull 0x4a3e6(%rip)           # 0x6aa60
fldt -0x60(%rbp)
fmulp %st, %st(1)
fstpt -0x60(%rbp)
fldt -0xc0(%rbp)
fstpt 0x10(%rsp)
fldt -0x50(%rbp)
fstpt (%rsp)
callq 0x8aa0
fldt -0x60(%rbp)
fmulp %st, %st(1)
fldt -0x80(%rbp)
faddp %st, %st(1)
fstpt -0x60(%rbp)
flds 0x4ac0a(%rip)           # 0x6b2b4
fstpt 0x10(%rsp)
fldt -0x50(%rbp)
fstpt (%rsp)
callq 0x8aa0
fmull 0x4a3a9(%rip)           # 0x6aa68
fstpt -0x50(%rbp)
fldt -0x30(%rbp)
fmuls 0x4abed(%rip)           # 0x6b2b8
fldt -0xb4(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
fldt -0x70(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8aa0
fmuls 0x4abce(%rip)           # 0x6b2bc
fldt -0x30(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
fldt -0x40(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8aa0
fldt -0x30(%rbp)
fsubp %st, %st(1)
fldt -0x50(%rbp)
fmulp %st, %st(1)
fldt -0x60(%rbp)
faddp %st, %st(1)
fstpl (%rbx)
movb $0x1, %al
addq $0x150, %rsp            # imm = 0x150
popq %rbx
popq %r14
popq %rbp
retq