// File: /workspace/github_c_makefile_star2_O3/josch[P]stride/nsc.c
// Function: divarc
void divarc(double x1, double y1, double z1,
            double x2, double y2, double z2,
            int div1, int div2, double *xr, double *yr, double *zr) {

  double xd, yd, zd, dd, d1, d2, s, x, y, z;
  double phi, sphi, cphi;

  xd = y1*z2-y2*z1;
  yd = z1*x2-z2*x1;
  zd = x1*y2-x2*y1;
  dd = sqrt(xd*xd+yd*yd+zd*zd);
  if (dd < DP_TOL) ERROR("divarc: rotation axis of length %f", dd);

  d1 = x1*x1+y1*y1+z1*z1;
  if (d1 < 0.5) ERROR("divarc: vector 1 of sq.length %f", d1);
  d2 = x2*x2+y2*y2+z2*z2;
  if (d2 < 0.5) ERROR("divarc: vector 2 of sq.length %f", d2);

  phi = ASIN(dd/sqrt(d1*d2));
  phi = phi*((double)div1)/((double)div2);
  sphi = sin(phi); cphi = cos(phi);
  s  = (x1*xd+y1*yd+z1*zd)/dd;

  x = xd*s*(1.-cphi)/dd + x1 * cphi + (yd*z1-y1*zd)*sphi/dd;
  y = yd*s*(1.-cphi)/dd + y1 * cphi + (zd*x1-z1*xd)*sphi/dd;
  z = zd*s*(1.-cphi)/dd + z1 * cphi + (xd*y1-x1*yd)*sphi/dd;
  dd = sqrt(x*x+y*y+z*z);
  *xr = x/dd; *yr = y/dd; *zr = z/dd;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
movq %r8, %rbx
movq %rcx, %r14
movq %rdx, %r15
movl %esi, %ebp
movl %edi, %r12d
movapd %xmm4, %xmm6
mulsd %xmm2, %xmm6
movapd %xmm1, %xmm8
mulsd %xmm5, %xmm8
subsd %xmm6, %xmm8
movapd %xmm5, %xmm6
mulsd %xmm0, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movapd %xmm3, %xmm9
mulsd %xmm1, %xmm9
movapd %xmm0, %xmm6
mulsd %xmm4, %xmm6
subsd %xmm9, %xmm6
movsd %xmm7, 0x50(%rsp)
movapd %xmm7, %xmm9
mulsd %xmm7, %xmm9
movsd %xmm8, 0x58(%rsp)
movapd %xmm8, %xmm7
mulsd %xmm8, %xmm7
addsd %xmm9, %xmm7
movsd %xmm6, 0x48(%rsp)
mulsd %xmm6, %xmm6
addsd %xmm7, %xmm6
xorps %xmm7, %xmm7
sqrtsd %xmm6, %xmm7
movsd 0x90a0(%rip), %xmm6     # 0x1a868
movsd %xmm7, 0x28(%rsp)
ucomisd %xmm7, %xmm6
movsd %xmm2, 0x40(%rsp)
movsd %xmm1, 0x38(%rsp)
movsd %xmm0, 0x30(%rsp)
ja 0x11a12
movapd %xmm1, %xmm6
mulsd %xmm1, %xmm6
movapd %xmm0, %xmm1
mulsd %xmm0, %xmm1
addsd %xmm6, %xmm1
mulsd %xmm2, %xmm2
addsd %xmm1, %xmm2
movsd 0x839a(%rip), %xmm0     # 0x19ba8
ucomisd %xmm2, %xmm0
ja 0x11a79
mulsd %xmm4, %xmm4
mulsd %xmm3, %xmm3
addsd %xmm4, %xmm3
mulsd %xmm5, %xmm5
addsd %xmm3, %xmm5
ucomisd %xmm5, %xmm0
ja 0x11ae0
mulsd %xmm5, %xmm2
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm2
jb 0x1184d
xorps %xmm0, %xmm0
sqrtsd %xmm2, %xmm0
jmp 0x11856
movapd %xmm2, %xmm0
callq 0x2250
movsd 0x28(%rsp), %xmm1
divsd %xmm0, %xmm1
movapd %xmm1, %xmm0
callq 0x11504
xorps %xmm1, %xmm1
cvtsi2sd %r12d, %xmm1
mulsd %xmm1, %xmm0
xorps %xmm1, %xmm1
cvtsi2sd %ebp, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rsp)
callq 0x21d0
movsd %xmm0, 0x8(%rsp)
movsd 0x10(%rsp), %xmm0
callq 0x2100
movsd 0x50(%rsp), %xmm11
movapd %xmm11, %xmm1
movsd 0x38(%rsp), %xmm9
mulsd %xmm9, %xmm1
movsd 0x30(%rsp), %xmm10
movapd %xmm10, %xmm3
movsd 0x58(%rsp), %xmm7
mulsd %xmm7, %xmm3
addsd %xmm1, %xmm3
movsd 0x40(%rsp), %xmm8
movapd %xmm8, %xmm2
movsd 0x48(%rsp), %xmm12
mulsd %xmm12, %xmm2
addsd %xmm3, %xmm2
movsd 0x28(%rsp), %xmm13
divsd %xmm13, %xmm2
movapd %xmm7, %xmm1
mulsd %xmm2, %xmm1
movsd 0x7f62(%rip), %xmm3     # 0x19868
subsd %xmm0, %xmm3
mulsd %xmm3, %xmm1
divsd %xmm13, %xmm1
movapd %xmm10, %xmm4
mulsd %xmm0, %xmm4
addsd %xmm1, %xmm4
movapd %xmm12, %xmm5
mulsd %xmm9, %xmm5
movapd %xmm11, %xmm1
mulsd %xmm8, %xmm1
subsd %xmm5, %xmm1
movsd 0x8(%rsp), %xmm14
mulsd %xmm14, %xmm1
divsd %xmm13, %xmm1
addsd %xmm4, %xmm1
movapd %xmm11, %xmm4
mulsd %xmm2, %xmm4
mulsd %xmm3, %xmm4
divsd %xmm13, %xmm4
movapd %xmm9, %xmm5
mulsd %xmm0, %xmm5
addsd %xmm4, %xmm5
movapd %xmm7, %xmm6
mulsd %xmm8, %xmm6
movapd %xmm12, %xmm4
mulsd %xmm10, %xmm4
subsd %xmm6, %xmm4
mulsd %xmm14, %xmm4
divsd %xmm13, %xmm4
addsd %xmm5, %xmm4
mulsd %xmm12, %xmm2
mulsd %xmm3, %xmm2
divsd %xmm13, %xmm2
mulsd %xmm0, %xmm8
addsd %xmm2, %xmm8
mulsd %xmm10, %xmm11
mulsd %xmm9, %xmm7
subsd %xmm11, %xmm7
mulsd %xmm14, %xmm7
divsd %xmm13, %xmm7
addsd %xmm8, %xmm7
movapd %xmm4, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm1, %xmm2
mulsd %xmm1, %xmm2
addsd %xmm0, %xmm2
movapd %xmm7, %xmm0
mulsd %xmm7, %xmm0
addsd %xmm2, %xmm0
sqrtsd %xmm0, %xmm0
divsd %xmm0, %xmm1
movsd %xmm1, (%r15)
divsd %xmm0, %xmm4
movsd %xmm4, (%r14)
divsd %xmm0, %xmm7
movsd %xmm7, (%rbx)
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x8f30(%rip), %rax      # 0x1a949
movq %rax, 0x10c20(%rip)     # 0x22640
movl $0x9b, 0x10c0e(%rip)    # 0x22638
leaq 0x8f86(%rip), %rdi      # 0x1a9b7
movsd 0x28(%rsp), %xmm0
movb $0x1, %al
movsd %xmm5, 0x8(%rsp)
movsd %xmm3, 0x10(%rsp)
movsd %xmm4, 0x20(%rsp)
callq 0x24b8
movsd 0x20(%rsp), %xmm4
movsd 0x10(%rsp), %xmm3
movsd 0x8(%rsp), %xmm5
movsd 0x30(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
jmp 0x117ea
leaq 0x8ec9(%rip), %rax      # 0x1a949
movq %rax, 0x10bb9(%rip)     # 0x22640
movl $0x9e, 0x10ba7(%rip)    # 0x22638
leaq 0x8f42(%rip), %rdi      # 0x1a9da
movapd %xmm2, %xmm0
movb $0x1, %al
movsd %xmm5, 0x8(%rsp)
movsd %xmm3, 0x10(%rsp)
movsd %xmm4, 0x20(%rsp)
movsd %xmm2, 0x18(%rsp)
callq 0x24b8
movsd 0x80e5(%rip), %xmm0     # 0x19ba8
movsd 0x18(%rsp), %xmm2
movsd 0x20(%rsp), %xmm4
movsd 0x10(%rsp), %xmm3
movsd 0x8(%rsp), %xmm5
jmp 0x11818
leaq 0x8e62(%rip), %rax      # 0x1a949
movq %rax, 0x10b52(%rip)     # 0x22640
movl $0xa0, 0x10b40(%rip)    # 0x22638
leaq 0x8efc(%rip), %rdi      # 0x1a9fb
movapd %xmm5, %xmm0
movb $0x1, %al
movsd %xmm5, 0x8(%rsp)
movsd %xmm2, 0x18(%rsp)
callq 0x24b8
movsd 0x18(%rsp), %xmm2
movsd 0x8(%rsp), %xmm5
jmp 0x11836