// File: /workspace/github_c_makefile_star2_O3/markpeerdeman[P]mbemm/src/general/matrices.c
// Function: eigenval
void eigenval( matrix s, vector t)
{ double a, b, c, d, m, n, alpha, r;

  a = -M(s,1,1)-M(s,2,2)-M(s,3,3);
  b =  M(s,1,1)*M(s,2,2)-M(s,1,2)*M(s,1,2)+M(s,1,1)*M(s,3,3)-M(s,1,3)*M(s,1,3)+M(s,2,2)*M(s,3,3)-M(s,2,3)*M(s,2,3);
  c = -M(s,1,1)*( M(s,2,2)*M(s,3,3)-M(s,2,3)*M(s,2,3) ) + M(s,1,2)*( M(s,1,2)*M(s,3,3) - M(s,1,3)*M(s,3,2) )
      -M(s,1,3)*( M(s,1,2)*M(s,2,3)-M(s,2,2)*M(s,1,3) );
  m = a*a/3.0 - b;
  n = c + 2.0/27.0*a*a*a - a*b/3.0;
  alpha = 3.0*n*sqrt( 3.0/m )/m;

  r = acos(-alpha/2.0)/3.0; d = sqrt(m/3.0); 

  V(t,1) = 2.0*d*cos(r+2.0*PI/3.0)-a/3.0;
  V(t,2) = 2.0*d*cos(r-2.0*PI/3.0)-a/3.0;
  V(t,3) = 2.0*d*cos(r)-a/3.0;

}

// Assembly:
pushq %rbx
subq $0x30, %rsp
movq %rsi, %rbx
movq 0x8(%rdi), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
movsd (%rcx), %xmm3
movsd 0x8(%rcx), %xmm2
movapd 0x1906(%rip), %xmm9     # 0xe020
xorpd %xmm3, %xmm9
movsd 0x8(%rdx), %xmm4
movsd 0x10(%rdx), %xmm5
subsd %xmm4, %xmm9
movq 0x10(%rax), %rax
movsd 0x10(%rax), %xmm0
subsd %xmm0, %xmm9
movapd %xmm2, %xmm1
mulsd %xmm2, %xmm1
movapd %xmm3, %xmm6
mulsd %xmm4, %xmm6
subsd %xmm1, %xmm6
movapd %xmm3, %xmm1
mulsd %xmm0, %xmm1
addsd %xmm6, %xmm1
movsd 0x10(%rcx), %xmm6
movapd %xmm6, %xmm7
mulsd %xmm4, %xmm7
mulsd %xmm0, %xmm4
movsd 0x8(%rax), %xmm8
mulsd %xmm6, %xmm8
mulsd %xmm2, %xmm0
subsd %xmm8, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm5, %xmm2
subsd %xmm7, %xmm2
mulsd %xmm6, %xmm2
mulsd %xmm6, %xmm6
subsd %xmm6, %xmm1
addsd %xmm4, %xmm1
mulsd %xmm5, %xmm5
subsd %xmm5, %xmm1
subsd %xmm5, %xmm4
mulsd %xmm3, %xmm4
subsd %xmm4, %xmm0
subsd %xmm2, %xmm0
movapd %xmm9, %xmm2
mulsd %xmm9, %xmm2
movsd 0x1c91(%rip), %xmm3     # 0xe458
divsd %xmm3, %xmm2
subsd %xmm1, %xmm2
movsd 0x3c69(%rip), %xmm4     # 0x10440
mulsd %xmm9, %xmm4
mulsd %xmm9, %xmm4
mulsd %xmm9, %xmm4
addsd %xmm0, %xmm4
movapd %xmm9, 0x20(%rsp)
mulsd %xmm9, %xmm1
divsd %xmm3, %xmm1
subsd %xmm1, %xmm4
movapd %xmm3, %xmm0
movapd %xmm2, 0x10(%rsp)
divsd %xmm2, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xc81c
sqrtsd %xmm0, %xmm0
jmp 0xc82d
movsd %xmm4, 0x8(%rsp)
callq 0x11b0
movsd 0x8(%rsp), %xmm4
mulsd 0x3c13(%rip), %xmm4     # 0x10448
mulsd %xmm0, %xmm4
divsd 0x10(%rsp), %xmm4
mulsd 0x1c19(%rip), %xmm4     # 0xe460
movapd %xmm4, %xmm0
callq 0x10f0
movapd %xmm0, %xmm2
movapd 0x10(%rsp), %xmm0
movsd 0x1bf6(%rip), %xmm1     # 0xe458
divsd %xmm1, %xmm2
movsd %xmm2, 0x8(%rsp)
divsd %xmm1, %xmm0
ucomisd 0x1c08(%rip), %xmm0     # 0xe480
jb 0xc880
sqrtsd %xmm0, %xmm0
jmp 0xc885
callq 0x11b0
addsd %xmm0, %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x3bb9(%rip), %xmm0     # 0x10450
addsd 0x8(%rsp), %xmm0
callq 0x10d0
movapd 0x20(%rsp), %xmm1
divsd 0x3b98(%rip), %xmm1     # 0x10448
movapd %xmm1, 0x20(%rsp)
mulsd 0x10(%rsp), %xmm0
addsd %xmm1, %xmm0
movq 0x8(%rbx), %rax
movsd %xmm0, (%rax)
movsd 0x3b88(%rip), %xmm0     # 0x10458
addsd 0x8(%rsp), %xmm0
callq 0x10d0
mulsd 0x10(%rsp), %xmm0
addsd 0x20(%rsp), %xmm0
movq 0x8(%rbx), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x8(%rsp), %xmm0
callq 0x10d0
mulsd 0x10(%rsp), %xmm0
addsd 0x20(%rsp), %xmm0
movq 0x8(%rbx), %rax
movsd %xmm0, 0x10(%rax)
addq $0x30, %rsp
popq %rbx
retq
nop