// File: /workspace/github_cpp_makefile_star2_O2/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 0x4330d(%rip), %xmm1    # 0x5f920
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 0x8160
movsd %xmm0, -0x40(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8160
movsd -0x40(%rbp), %xmm1
mulsd -0x30(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd 0x432b9(%rip), %xmm0    # 0x5f920
subsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x1c67b
sqrtsd %xmm0, %xmm0
jmp 0x1c680
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 0x8160
movsd %xmm0, -0x40(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8160
movsd -0x40(%rbp), %xmm1
mulsd -0x30(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd 0x43252(%rip), %xmm0    # 0x5f920
subsd %xmm1, %xmm0
ucomisd 0x4421e(%rip), %xmm0    # 0x608f8
jb 0x1c6e2
sqrtsd %xmm0, %xmm0
jmp 0x1c6e7
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 0x8160
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8bf0
mulsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8160
movsd %xmm0, -0x80(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x8bf0
movsd -0x80(%rbp), %xmm1
mulsd -0x30(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd 0x431aa(%rip), %xmm0    # 0x5f920
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 0x8bf0
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 0x8bf0
movsd %xmm0, -0xe0(%rbp)
fldt -0x98(%rbp)
fmull -0xe0(%rbp)
fstpt -0x98(%rbp)
movsd -0x70(%rbp), %xmm0
callq 0x8bf0
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 0x1c382
fldt -0x60(%rbp)
fld %st(0)
fmuls 0x449e2(%rip)           # 0x61260
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 0x449c0(%rip)           # 0x61264
fld %st(0)
fstpt -0xc0(%rbp)
fsubp %st, %st(1)
fldt -0x98(%rbp)
fld %st(0)
fmuls 0x449ac(%rip)           # 0x61268
faddp %st, %st(2)
fmul %st, %st(0)
flds 0x449a6(%rip)           # 0x6126c
fld %st(0)
fstpt -0x70(%rbp)
fmul %st, %st(1)
fxch %st(1)
faddp %st, %st(2)
fxch %st(1)
fmull 0x4415f(%rip)           # 0x60a38
fmulp %st, %st(3)
fxch %st(2)
fmulp %st, %st(3)
fxch %st(2)
fstpt -0xb4(%rbp)
fstpt 0x10(%rsp)
fstpt (%rsp)
callq 0x8a90
fldt -0xb4(%rbp)
fmulp %st, %st(1)
fldt -0x40(%rbp)
faddp %st, %st(1)
fstpt -0x80(%rbp)
fldt -0x30(%rbp)
fmuls 0x44964(%rip)           # 0x61270
fld %st(0)
fstpt -0xa8(%rbp)
flds 0x4495a(%rip)           # 0x61274
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 0x8a90
fldt -0x40(%rbp)
faddp %st, %st(1)
fldt -0x98(%rbp)
fld %st(0)
fmuls 0x4492c(%rip)           # 0x61278
faddp %st, %st(2)
fmuls 0x44928(%rip)           # 0x6127c
fldt -0x30(%rbp)
fmulp %st, %st(1)
faddp %st, %st(1)
fmull 0x440df(%rip)           # 0x60a40
fldt -0x60(%rbp)
fmulp %st, %st(1)
fldt -0x20(%rbp)
fmulp %st, %st(1)
fstpt -0x8c(%rbp)
flds 0x44909(%rip)           # 0x61280
fld %st(0)
fstpt -0x40(%rbp)
fstpt 0x10(%rsp)
fldt -0x50(%rbp)
fstpt (%rsp)
callq 0x8a90
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 0x448d1(%rip)           # 0x61284
fstpt 0x10(%rsp)
fldt -0x50(%rbp)
fstpt (%rsp)
callq 0x8a90
fldt -0x8c(%rbp)
fmulp %st, %st(1)
fstpt -0x8c(%rbp)
fldt -0x30(%rbp)
fmuls 0x448af(%rip)           # 0x61288
fadds 0x448ad(%rip)           # 0x6128c
fstpt -0xcc(%rbp)
fldt -0x70(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8a90
fmuls 0x44893(%rip)           # 0x61290
fldt -0xcc(%rbp)
faddp %st, %st(1)
fstpt -0xcc(%rbp)
fldt -0x40(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8a90
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 0x4484f(%rip)           # 0x61294
fstpt -0x80(%rbp)
fld1
fldt -0x30(%rbp)
fsubrp %st, %st(1)
fldt -0x98(%rbp)
faddp %st, %st(1)
fmull 0x43feb(%rip)           # 0x60a48
fmulp %st, %st(2)
fxch %st(1)
fstpt -0x8c(%rbp)
flds 0x4482b(%rip)           # 0x61298
fstpt 0x10(%rsp)
fstpt (%rsp)
callq 0x8a90
fldt -0x8c(%rbp)
fmulp %st, %st(1)
fldt -0x80(%rbp)
faddp %st, %st(1)
fstpt -0x80(%rbp)
fldt -0x30(%rbp)
fmuls 0x4480a(%rip)           # 0x6129c
fldt -0xc0(%rbp)
faddp %st, %st(1)
fstpt -0x8c(%rbp)
fldt -0x70(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8a90
fldt -0x8c(%rbp)
faddp %st, %st(1)
fldt -0x98(%rbp)
fld %st(0)
fmuls 0x447d8(%rip)           # 0x612a0
faddp %st, %st(2)
fldt -0xa8(%rbp)
fmulp %st, %st(1)
faddp %st, %st(1)
fmull 0x43f76(%rip)           # 0x60a50
fldt -0x60(%rbp)
fmulp %st, %st(1)
fstpt -0x60(%rbp)
fldt -0xc0(%rbp)
fstpt 0x10(%rsp)
fldt -0x50(%rbp)
fstpt (%rsp)
callq 0x8a90
fldt -0x60(%rbp)
fmulp %st, %st(1)
fldt -0x80(%rbp)
faddp %st, %st(1)
fstpt -0x60(%rbp)
flds 0x4479a(%rip)           # 0x612a4
fstpt 0x10(%rsp)
fldt -0x50(%rbp)
fstpt (%rsp)
callq 0x8a90
fmull 0x43f39(%rip)           # 0x60a58
fstpt -0x50(%rbp)
fldt -0x30(%rbp)
fmuls 0x4477d(%rip)           # 0x612a8
fldt -0xb4(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
fldt -0x70(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8a90
fmuls 0x4475e(%rip)           # 0x612ac
fldt -0x30(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
fldt -0x40(%rbp)
fstpt 0x10(%rsp)
fldt -0x20(%rbp)
fstpt (%rsp)
callq 0x8a90
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