// File: redpony[P]libpopt/./lbfgs.h
// Function: void scitbx::lbfgs::detail::daxpy<double, unsigned long>(unsigned long, double, double const*, unsigned long, unsigned long, double*, unsigned long, unsigned long)
void daxpy(
      SizeType n,
      FloatType da,
      const FloatType* dx,
      SizeType ix0,
      SizeType incx,
      FloatType* dy,
      SizeType iy0,
      SizeType incy)
    {
      SizeType i, ix, iy, m;
      if (n == 0) return;
      if (da == FloatType(0)) return;
      if  (!(incx == 1 && incy == 1)) {
        ix = 0;
        iy = 0;
        for (i = 0; i < n; i++) {
          dy[iy0+iy] += da * dx[ix0+ix];
          ix += incx;
          iy += incy;
        }
        return;
      }
      m = n % 4;
      for (i = 0; i < m; i++) {
        dy[iy0+i] += da * dx[ix0+i];
      }
      for (; i < n;) {
        dy[iy0+i] += da * dx[ix0+i]; i++;
        dy[iy0+i] += da * dx[ix0+i]; i++;
        dy[iy0+i] += da * dx[ix0+i]; i++;
        dy[iy0+i] += da * dx[ix0+i]; i++;
      }
    }

// Assembly:
movq 0x8(%rsp), %rax
movq %rdi, -0x8(%rsp)
movsd %xmm0, -0x10(%rsp)
movq %rsi, -0x18(%rsp)
movq %rdx, -0x20(%rsp)
movq %rcx, -0x28(%rsp)
movq %r8, -0x30(%rsp)
movq %r9, -0x38(%rsp)
cmpq $0x0, -0x8(%rsp)
jne 0xbf36
jmp 0xc19e
movsd -0x10(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xbf4c
jp 0xbf4c
jmp 0xc19e
cmpq $0x1, -0x28(%rsp)
jne 0xbf60
cmpq $0x1, 0x8(%rsp)
je 0xbff5
movq $0x0, -0x48(%rsp)
movq $0x0, -0x50(%rsp)
movq $0x0, -0x40(%rsp)
movq -0x40(%rsp), %rax
cmpq -0x8(%rsp), %rax
jae 0xbff0
movsd -0x10(%rsp), %xmm0
movq -0x18(%rsp), %rax
movq -0x20(%rsp), %rcx
addq -0x48(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x30(%rsp), %rax
movq -0x38(%rsp), %rcx
addq -0x50(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x28(%rsp), %rax
addq -0x48(%rsp), %rax
movq %rax, -0x48(%rsp)
movq 0x8(%rsp), %rax
addq -0x50(%rsp), %rax
movq %rax, -0x50(%rsp)
movq -0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rsp)
jmp 0xbf7b
jmp 0xc19e
movq -0x8(%rsp), %rax
andq $0x3, %rax
movq %rax, -0x58(%rsp)
movq $0x0, -0x40(%rsp)
movq -0x40(%rsp), %rax
cmpq -0x58(%rsp), %rax
jae 0xc063
movsd -0x10(%rsp), %xmm0
movq -0x18(%rsp), %rax
movq -0x20(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x30(%rsp), %rax
movq -0x38(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rsp)
jmp 0xc00c
jmp 0xc065
movq -0x40(%rsp), %rax
cmpq -0x8(%rsp), %rax
jae 0xc19e
movsd -0x10(%rsp), %xmm0
movq -0x18(%rsp), %rax
movq -0x20(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x30(%rsp), %rax
movq -0x38(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rsp)
movsd -0x10(%rsp), %xmm0
movq -0x18(%rsp), %rax
movq -0x20(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x30(%rsp), %rax
movq -0x38(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rsp)
movsd -0x10(%rsp), %xmm0
movq -0x18(%rsp), %rax
movq -0x20(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x30(%rsp), %rax
movq -0x38(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rsp)
movsd -0x10(%rsp), %xmm0
movq -0x18(%rsp), %rax
movq -0x20(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x30(%rsp), %rax
movq -0x38(%rsp), %rcx
addq -0x40(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rsp)
jmp 0xc065
retq
nop