// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/libraries/libwebp/src/dsp/filters_sse2.c
// Function: DoVerticalFilter_SSE2
static WEBP_INLINE void DoVerticalFilter_SSE2(const uint8_t* in,
                                              int width, int height, int stride,
                                              int row, int num_rows,
                                              uint8_t* out) {
  const size_t start_offset = row * stride;
  const int last_row = row + num_rows;
  DCHECK(in, out);
  in += start_offset;
  out += start_offset;

  if (row == 0) {
    // Very first top-left pixel is copied.
    out[0] = in[0];
    // Rest of top scan-line is left-predicted.
    PredictLineLeft_SSE2(in + 1, out + 1, width - 1);
    row = 1;
    in += stride;
    out += stride;
  }

  // Filter line-by-line.
  while (row < last_row) {
    PredictLineTop_SSE2(in, in - stride, out, width);
    ++row;
    in += stride;
    out += stride;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movl %r8d, -0x18(%rbp)
movl %r9d, -0x1c(%rbp)
movl -0x18(%rbp), %eax
imull -0x14(%rbp), %eax
cltq
movq %rax, -0x28(%rbp)
movl -0x18(%rbp), %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x2c(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x164760
jmp 0x16477f
leaq 0x5af77(%rip), %rdi     # 0x1bf6de
leaq 0x5c106(%rip), %rsi     # 0x1c0874
movl $0x74, %edx
leaq 0x5c1f7(%rip), %rcx     # 0x1c0971
callq 0x598a0
cmpq $0x0, 0x10(%rbp)
je 0x164788
jmp 0x1647a7
leaq 0x5afb0(%rip), %rdi     # 0x1bf73f
leaq 0x5c0de(%rip), %rsi     # 0x1c0874
movl $0x74, %edx
leaq 0x5c1cf(%rip), %rcx     # 0x1c0971
callq 0x598a0
cmpl $0x0, -0xc(%rbp)
jle 0x1647af
jmp 0x1647ce
leaq 0x5af97(%rip), %rdi     # 0x1bf74d
leaq 0x5c0b7(%rip), %rsi     # 0x1c0874
movl $0x74, %edx
leaq 0x5c1a8(%rip), %rcx     # 0x1c0971
callq 0x598a0
cmpl $0x0, -0x10(%rbp)
jle 0x1647d6
jmp 0x1647f5
leaq 0x5af7a(%rip), %rdi     # 0x1bf757
leaq 0x5c090(%rip), %rsi     # 0x1c0874
movl $0x74, %edx
leaq 0x5c181(%rip), %rcx     # 0x1c0971
callq 0x598a0
movl -0x14(%rbp), %eax
cmpl -0xc(%rbp), %eax
jl 0x1647ff
jmp 0x16481e
leaq 0x5af5c(%rip), %rdi     # 0x1bf762
leaq 0x5c067(%rip), %rsi     # 0x1c0874
movl $0x74, %edx
leaq 0x5c158(%rip), %rcx     # 0x1c0971
callq 0x598a0
cmpl $0x0, -0x18(%rbp)
jl 0x164837
cmpl $0x0, -0x1c(%rbp)
jle 0x164837
movl -0x18(%rbp), %eax
addl -0x1c(%rbp), %eax
cmpl -0x10(%rbp), %eax
jg 0x164837
jmp 0x164856
leaq 0x5af34(%rip), %rdi     # 0x1bf772
leaq 0x5c02f(%rip), %rsi     # 0x1c0874
movl $0x74, %edx
leaq 0x5c120(%rip), %rcx     # 0x1c0971
callq 0x598a0
movq -0x28(%rbp), %rax
addq -0x8(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x28(%rbp), %rax
addq 0x10(%rbp), %rax
movq %rax, 0x10(%rbp)
cmpl $0x0, -0x18(%rbp)
jne 0x1648c4
movq -0x8(%rbp), %rax
movb (%rax), %cl
movq 0x10(%rbp), %rax
movb %cl, (%rax)
movq -0x8(%rbp), %rdi
addq $0x1, %rdi
movq 0x10(%rbp), %rsi
addq $0x1, %rsi
movl -0xc(%rbp), %edx
subl $0x1, %edx
callq 0x1644b0
movl $0x1, -0x18(%rbp)
movl -0x14(%rbp), %ecx
movq -0x8(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x8(%rbp)
movl -0x14(%rbp), %ecx
movq 0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x10(%rbp)
jmp 0x1648c6
movl -0x18(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x16491b
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
movslq -0x14(%rbp), %rcx
xorl %eax, %eax
subq %rcx, %rax
addq %rax, %rsi
movq 0x10(%rbp), %rdx
movl -0xc(%rbp), %ecx
callq 0x164930
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %ecx
movq -0x8(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x8(%rbp)
movl -0x14(%rbp), %ecx
movq 0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x10(%rbp)
jmp 0x1648c6
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)