// File: /workspace/github_c_makefile_star2_O0/Alessandro-Barbieri[P]SpaceLib/src/SPACELIB.c
// Function: jtoJ
void jtoJ(real mass, real jxx, real jyy, real jzz, real jxy, real jyz,
	  real jxz, real xg, real yg, real zg, MAT4 J)
{
	J[X][X]=(-jxx+jyy+jzz)/2+mass*xg*xg;
	J[Y][Y]=( jxx-jyy+jzz)/2+mass*yg*yg;
	J[Z][Z]=( jxx+jyy-jzz)/2+mass*zg*zg;

	J[X][Y]=J[Y][X]= -jxy+mass*xg*yg;
	J[X][Z]=J[Z][X]= -jxz+mass*xg*zg;
	J[Y][Z]=J[Z][Y]= -jyz+mass*yg*zg;

	J[U][U]=mass;
	J[U][X]=J[X][U]=mass*xg;
	J[U][Y]=J[Y][U]=mass*yg;
	J[U][Z]=J[Z][U]=mass*zg;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movsd 0x18(%rbp), %xmm8
movsd 0x10(%rbp), %xmm8
movsd %xmm0, -0x8(%rbp)
movsd %xmm1, -0x10(%rbp)
movsd %xmm2, -0x18(%rbp)
movsd %xmm3, -0x20(%rbp)
movsd %xmm4, -0x28(%rbp)
movsd %xmm5, -0x30(%rbp)
movsd %xmm6, -0x38(%rbp)
movsd %xmm7, -0x40(%rbp)
movq %rdi, -0x48(%rbp)
movsd -0x10(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
addsd -0x18(%rbp), %xmm1
addsd -0x20(%rbp), %xmm1
movsd 0x332e(%rip), %xmm0     # 0xf228
divsd %xmm0, %xmm1
movsd -0x8(%rbp), %xmm0
mulsd -0x40(%rbp), %xmm0
movsd -0x40(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x10(%rbp), %xmm1
subsd -0x18(%rbp), %xmm1
addsd -0x20(%rbp), %xmm1
movsd 0x32f4(%rip), %xmm0     # 0xf228
divsd %xmm0, %xmm1
movsd -0x8(%rbp), %xmm0
mulsd 0x10(%rbp), %xmm0
movsd 0x10(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x28(%rax)
movsd -0x10(%rbp), %xmm1
addsd -0x18(%rbp), %xmm1
subsd -0x20(%rbp), %xmm1
movsd 0x32b9(%rip), %xmm0     # 0xf228
divsd %xmm0, %xmm1
movsd -0x8(%rbp), %xmm0
mulsd 0x18(%rbp), %xmm0
movsd 0x18(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x50(%rax)
movsd -0x28(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
movsd -0x8(%rbp), %xmm0
mulsd -0x40(%rbp), %xmm0
movsd 0x10(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x20(%rax)
movq -0x48(%rbp), %rax
movsd %xmm0, 0x8(%rax)
movsd -0x38(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
movsd -0x8(%rbp), %xmm0
mulsd -0x40(%rbp), %xmm0
movsd 0x18(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x40(%rax)
movq -0x48(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movsd -0x30(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
movsd -0x8(%rbp), %xmm0
mulsd 0x10(%rbp), %xmm0
movsd 0x18(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x48(%rax)
movq -0x48(%rbp), %rax
movsd %xmm0, 0x30(%rax)
movsd -0x8(%rbp), %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x78(%rax)
movsd -0x8(%rbp), %xmm0
mulsd -0x40(%rbp), %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x18(%rax)
movq -0x48(%rbp), %rax
movsd %xmm0, 0x60(%rax)
movsd -0x8(%rbp), %xmm0
mulsd 0x10(%rbp), %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x38(%rax)
movq -0x48(%rbp), %rax
movsd %xmm0, 0x68(%rax)
movsd -0x8(%rbp), %xmm0
mulsd 0x18(%rbp), %xmm0
movq -0x48(%rbp), %rax
movsd %xmm0, 0x58(%rax)
movq -0x48(%rbp), %rax
movsd %xmm0, 0x70(%rax)
popq %rbp
retq
nopw %cs:(%rax,%rax)