// File: /workspace/github_c_makefile_star2_O2/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 %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %r8, %rbx
movq %rcx, %r14
movq %rdx, %r15
movl %esi, %ebp
movl %edi, %r12d
movapd %xmm4, %xmm7
mulsd %xmm2, %xmm7
movapd %xmm1, %xmm6
mulsd %xmm5, %xmm6
subsd %xmm7, %xmm6
movsd %xmm5, (%rsp)
movapd %xmm5, %xmm7
mulsd %xmm0, %xmm7
movsd %xmm2, 0x30(%rsp)
movapd %xmm2, %xmm5
mulsd %xmm3, %xmm5
subsd %xmm7, %xmm5
movsd %xmm3, 0x8(%rsp)
movapd %xmm3, %xmm2
movsd %xmm1, 0x28(%rsp)
mulsd %xmm1, %xmm2
movsd %xmm0, 0x20(%rsp)
movapd %xmm0, %xmm3
movsd %xmm4, 0x38(%rsp)
mulsd %xmm4, %xmm3
subsd %xmm2, %xmm3
movsd %xmm5, 0x48(%rsp)
movapd %xmm5, %xmm0
mulsd %xmm5, %xmm0
movsd %xmm6, 0x50(%rsp)
movapd %xmm6, %xmm1
mulsd %xmm6, %xmm1
addsd %xmm0, %xmm1
movsd %xmm3, 0x40(%rsp)
movapd %xmm3, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm1
movsd 0x813d(%rip), %xmm0     # 0x19818
movsd %xmm1, 0x10(%rsp)
ucomisd %xmm1, %xmm0
leaq 0x820d(%rip), %r13      # 0x198f9
jbe 0x11713
movq %r13, 0xff5b(%rip)      # 0x21650
movl $0x9b, 0xff49(%rip)     # 0x21648
leaq 0x8261(%rip), %rdi      # 0x19967
movsd 0x10(%rsp), %xmm0
movb $0x1, %al
callq 0x11240
movsd 0x28(%rsp), %xmm0
mulsd %xmm0, %xmm0
movsd 0x20(%rsp), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm0, %xmm1
movsd 0x30(%rsp), %xmm2
mulsd %xmm2, %xmm2
addsd %xmm1, %xmm2
movsd 0x7467(%rip), %xmm3     # 0x18ba8
ucomisd %xmm2, %xmm3
movsd %xmm2, 0x18(%rsp)
jbe 0x1177e
movq %r13, 0xfefc(%rip)      # 0x21650
movl $0x9e, 0xfeea(%rip)     # 0x21648
leaq 0x8225(%rip), %rdi      # 0x1998a
movapd %xmm2, %xmm0
movb $0x1, %al
callq 0x11240
movsd 0x7430(%rip), %xmm3     # 0x18ba8
movsd 0x18(%rsp), %xmm2
movsd 0x38(%rsp), %xmm0
mulsd %xmm0, %xmm0
movsd 0x8(%rsp), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm0, %xmm1
movsd (%rsp), %xmm0
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd %xmm0, %xmm3
jbe 0x117d8
movq %r13, 0xfea0(%rip)      # 0x21650
movl $0xa0, 0xfe8e(%rip)     # 0x21648
leaq 0x81ea(%rip), %rdi      # 0x199ab
movb $0x1, %al
movsd %xmm0, (%rsp)
callq 0x11240
movsd 0x18(%rsp), %xmm2
movsd (%rsp), %xmm0
mulsd %xmm0, %xmm2
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm2
jb 0x117ec
sqrtsd %xmm2, %xmm0
jmp 0x117f5
movapd %xmm2, %xmm0
callq 0x2260
movsd 0x10(%rsp), %xmm1
divsd %xmm0, %xmm1
movapd %xmm1, %xmm0
callq 0x11401
cvtsi2sd %r12d, %xmm1
mulsd %xmm1, %xmm0
cvtsi2sd %ebp, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
callq 0x21e0
movsd %xmm0, (%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x2100
movsd 0x48(%rsp), %xmm11
movapd %xmm11, %xmm1
movsd 0x28(%rsp), %xmm9
mulsd %xmm9, %xmm1
movsd 0x20(%rsp), %xmm10
movapd %xmm10, %xmm3
movsd 0x50(%rsp), %xmm7
mulsd %xmm7, %xmm3
addsd %xmm1, %xmm3
movsd 0x30(%rsp), %xmm8
movapd %xmm8, %xmm2
movsd 0x40(%rsp), %xmm12
mulsd %xmm12, %xmm2
addsd %xmm3, %xmm2
movsd 0x10(%rsp), %xmm13
divsd %xmm13, %xmm2
movapd %xmm7, %xmm1
mulsd %xmm2, %xmm1
movsd 0x6fca(%rip), %xmm3     # 0x18868
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 (%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 $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq