// File: cjlin1[P]liblinear/blas/daxpy.c
// Function: daxpy_
int daxpy_(int *n, double *sa, double *sx, int *incx, double *sy,
           int *incy)
{
  long int i, m, ix, iy, nn, iincx, iincy;
  register double ssa;

  /* constant times a vector plus a vector.
     uses unrolled loop for increments equal to one.
     jack dongarra, linpack, 3/11/78.
     modified 12/3/93, array(1) declarations changed to array(*) */

  /* Dereference inputs */
  nn = *n;
  ssa = *sa;
  iincx = *incx;
  iincy = *incy;

  if( nn > 0 && ssa != 0.0 )
  {
    if (iincx == 1 && iincy == 1) /* code for both increments equal to 1 */
    {
      m = nn-3;
      for (i = 0; i < m; i += 4)
      {
        sy[i] += ssa * sx[i];
        sy[i+1] += ssa * sx[i+1];
        sy[i+2] += ssa * sx[i+2];
        sy[i+3] += ssa * sx[i+3];
      }
      for ( ; i < nn; ++i) /* clean-up loop */
        sy[i] += ssa * sx[i];
    }
    else /* code for unequal increments or equal increments not equal to 1 */
    {
      ix = iincx >= 0 ? 0 : (1 - nn) * iincx;
      iy = iincy >= 0 ? 0 : (1 - nn) * iincy;
      for (i = 0; i < nn; i++)
      {
        sy[iy] += ssa * sx[ix];
        ix += iincx;
        iy += iincy;
      }
    }
  }

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rax
movslq (%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
movq -0x20(%rbp), %rax
movslq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x30(%rbp), %rax
movslq (%rax), %rax
movq %rax, -0x68(%rbp)
cmpq $0x0, -0x58(%rbp)
jle 0x11ba1
movsd -0x70(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1199a
jp 0x1199a
jmp 0x11ba1
cmpq $0x1, -0x60(%rbp)
jne 0x11ae7
cmpq $0x1, -0x68(%rbp)
jne 0x11ae7
movq -0x58(%rbp), %rax
subq $0x3, %rax
movq %rax, -0x40(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x40(%rbp), %rax
jge 0x11a9c
movsd -0x70(%rbp), %xmm0
movq -0x18(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x70(%rbp), %xmm0
movq -0x18(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd 0x8(%rax,%rcx,8), %xmm2
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd 0x8(%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax,%rcx,8)
movsd -0x70(%rbp), %xmm0
movq -0x18(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd 0x10(%rax,%rcx,8), %xmm2
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd 0x10(%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rax,%rcx,8)
movsd -0x70(%rbp), %xmm0
movq -0x18(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd 0x18(%rax,%rcx,8), %xmm2
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd 0x18(%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rax,%rcx,8)
movq -0x38(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x38(%rbp)
jmp 0x119c4
jmp 0x11a9e
movq -0x38(%rbp), %rax
cmpq -0x58(%rbp), %rax
jge 0x11ae2
movsd -0x70(%rbp), %xmm0
movq -0x18(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x11a9e
jmp 0x11b9f
cmpq $0x0, -0x60(%rbp)
jl 0x11af6
xorl %eax, %eax
movq %rax, -0x78(%rbp)
jmp 0x11b08
movl $0x1, %eax
subq -0x58(%rbp), %rax
imulq -0x60(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x68(%rbp)
jl 0x11b1f
xorl %eax, %eax
movq %rax, -0x80(%rbp)
jmp 0x11b31
movl $0x1, %eax
subq -0x58(%rbp), %rax
imulq -0x68(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x50(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x58(%rbp), %rax
jge 0x11b9d
movsd -0x70(%rbp), %xmm0
movq -0x18(%rbp), %rax
movq -0x48(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x28(%rbp), %rax
movq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x60(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x68(%rbp), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x11b41
jmp 0x11b9f
jmp 0x11ba1
xorl %eax, %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop