// File: /workspace/github_c_makefile_star2_O1/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, %xmm7
mulsd %xmm5, %xmm7
subsd %xmm6, %xmm7
movapd %xmm5, %xmm8
mulsd %xmm0, %xmm8
movsd %xmm2, 0x30(%rsp)
movapd %xmm2, %xmm6
mulsd %xmm3, %xmm6
subsd %xmm8, %xmm6
movapd %xmm3, %xmm2
movsd %xmm1, 0x28(%rsp)
mulsd %xmm1, %xmm2
movsd %xmm0, 0x48(%rsp)
movapd %xmm0, %xmm8
mulsd %xmm4, %xmm8
subsd %xmm2, %xmm8
movsd %xmm6, 0x58(%rsp)
movapd %xmm6, %xmm0
mulsd %xmm6, %xmm0
movapd %xmm7, %xmm1
mulsd %xmm7, %xmm1
addsd %xmm0, %xmm1
movsd %xmm8, 0x50(%rsp)
movapd %xmm8, %xmm0
mulsd %xmm8, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movsd %xmm7, 0x40(%rsp)
jb 0x1160b
xorps %xmm2, %xmm2
sqrtsd %xmm0, %xmm2
jmp 0x11638
movsd %xmm5, 0x8(%rsp)
movsd %xmm3, 0x10(%rsp)
movsd %xmm4, 0x18(%rsp)
callq 0x2250
movsd 0x18(%rsp), %xmm4
movsd 0x10(%rsp), %xmm3
movsd 0x8(%rsp), %xmm5
movapd %xmm0, %xmm2
movsd 0x9238(%rip), %xmm0     # 0x1a878
ucomisd %xmm2, %xmm0
movsd %xmm2, 0x20(%rsp)
ja 0x118ba
movsd 0x28(%rsp), %xmm0
mulsd %xmm0, %xmm0
movsd 0x48(%rsp), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm0, %xmm1
movsd 0x30(%rsp), %xmm6
mulsd %xmm6, %xmm6
addsd %xmm1, %xmm6
movsd 0x851a(%rip), %xmm0     # 0x19b98
ucomisd %xmm6, %xmm0
ja 0x11913
mulsd %xmm4, %xmm4
mulsd %xmm3, %xmm3
addsd %xmm4, %xmm3
mulsd %xmm5, %xmm5
addsd %xmm3, %xmm5
ucomisd %xmm5, %xmm0
ja 0x11980
mulsd %xmm5, %xmm6
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm6
jb 0x116bd
xorps %xmm0, %xmm0
sqrtsd %xmm6, %xmm0
jmp 0x116cc
movapd %xmm6, %xmm0
callq 0x2250
movsd 0x20(%rsp), %xmm2
divsd %xmm0, %xmm2
movapd %xmm2, %xmm0
callq 0x11330
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 0x58(%rsp), %xmm9
movapd %xmm9, %xmm1
movsd 0x28(%rsp), %xmm7
mulsd %xmm7, %xmm1
movsd 0x48(%rsp), %xmm8
movapd %xmm8, %xmm2
movsd 0x40(%rsp), %xmm5
mulsd %xmm5, %xmm2
addsd %xmm1, %xmm2
movsd 0x30(%rsp), %xmm6
movapd %xmm6, %xmm1
movsd 0x50(%rsp), %xmm10
mulsd %xmm10, %xmm1
addsd %xmm2, %xmm1
movsd 0x20(%rsp), %xmm13
divsd %xmm13, %xmm1
movapd %xmm5, %xmm3
mulsd %xmm1, %xmm3
movsd 0x80f6(%rip), %xmm2     # 0x19868
subsd %xmm0, %xmm2
mulsd %xmm2, %xmm3
divsd %xmm13, %xmm3
movapd %xmm8, %xmm4
mulsd %xmm0, %xmm4
addsd %xmm3, %xmm4
movapd %xmm10, %xmm3
mulsd %xmm7, %xmm3
movapd %xmm9, %xmm12
mulsd %xmm6, %xmm12
subsd %xmm3, %xmm12
movsd 0x8(%rsp), %xmm11
mulsd %xmm11, %xmm12
divsd %xmm13, %xmm12
addsd %xmm4, %xmm12
movapd %xmm9, %xmm3
mulsd %xmm1, %xmm3
mulsd %xmm2, %xmm3
divsd %xmm13, %xmm3
movapd %xmm7, %xmm4
mulsd %xmm0, %xmm4
addsd %xmm3, %xmm4
movapd %xmm5, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm10, %xmm14
mulsd %xmm8, %xmm14
subsd %xmm3, %xmm14
mulsd %xmm11, %xmm14
divsd %xmm13, %xmm14
addsd %xmm4, %xmm14
mulsd %xmm10, %xmm1
mulsd %xmm2, %xmm1
divsd %xmm13, %xmm1
mulsd %xmm0, %xmm6
addsd %xmm1, %xmm6
mulsd %xmm8, %xmm9
mulsd %xmm7, %xmm5
subsd %xmm9, %xmm5
mulsd %xmm11, %xmm5
divsd %xmm13, %xmm5
addsd %xmm6, %xmm5
movapd %xmm14, %xmm0
mulsd %xmm14, %xmm0
movapd %xmm12, %xmm1
mulsd %xmm12, %xmm1
addsd %xmm0, %xmm1
movapd %xmm5, %xmm0
mulsd %xmm5, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x9034(%rip), %xmm0     # 0x1a890
jb 0x11864
sqrtsd %xmm0, %xmm0
jmp 0x11891
movsd %xmm5, 0x40(%rsp)
movsd %xmm12, 0x30(%rsp)
movsd %xmm14, 0x28(%rsp)
callq 0x2250
movsd 0x28(%rsp), %xmm14
movsd 0x30(%rsp), %xmm12
movsd 0x40(%rsp), %xmm5
divsd %xmm0, %xmm12
movsd %xmm12, (%r15)
divsd %xmm0, %xmm14
movsd %xmm14, (%r14)
divsd %xmm0, %xmm5
movsd %xmm5, (%rbx)
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9098(%rip), %rax      # 0x1a959
movq %rax, 0x10d78(%rip)     # 0x22640
movl $0x9b, 0x10d66(%rip)    # 0x22638
leaq 0x90ee(%rip), %rdi      # 0x1a9c7
movapd %xmm2, %xmm0
movb $0x1, %al
movsd %xmm5, 0x8(%rsp)
movsd %xmm3, 0x10(%rsp)
movsd %xmm4, 0x18(%rsp)
callq 0x24b8
movsd 0x18(%rsp), %xmm4
movsd 0x10(%rsp), %xmm3
movsd 0x8(%rsp), %xmm5
movsd 0x20(%rsp), %xmm2
jmp 0x11650
leaq 0x903f(%rip), %rax      # 0x1a959
movq %rax, 0x10d1f(%rip)     # 0x22640
movl $0x9e, 0x10d0d(%rip)    # 0x22638
leaq 0x90b8(%rip), %rdi      # 0x1a9ea
movapd %xmm6, %xmm0
movb $0x1, %al
movsd %xmm5, 0x8(%rsp)
movsd %xmm3, 0x10(%rsp)
movsd %xmm4, 0x18(%rsp)
movsd %xmm6, 0x38(%rsp)
callq 0x24b8
movsd 0x823b(%rip), %xmm0     # 0x19b98
movsd 0x38(%rsp), %xmm6
movsd 0x18(%rsp), %xmm4
movsd 0x10(%rsp), %xmm3
movsd 0x8(%rsp), %xmm5
movsd 0x20(%rsp), %xmm2
jmp 0x11688
leaq 0x8fd2(%rip), %rax      # 0x1a959
movq %rax, 0x10cb2(%rip)     # 0x22640
movl $0xa0, 0x10ca0(%rip)    # 0x22638
leaq 0x906c(%rip), %rdi      # 0x1aa0b
movapd %xmm5, %xmm0
movb $0x1, %al
movsd %xmm5, 0x8(%rsp)
movsd %xmm6, 0x38(%rsp)
callq 0x24b8
movsd 0x38(%rsp), %xmm6
movsd 0x8(%rsp), %xmm5
movsd 0x20(%rsp), %xmm2
jmp 0x116a6