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

  if (row == 0) {
    // Very first top-left pixel is copied.
    out[0] = in[0];
    // Rest of top scan-line is left-predicted.
    PredictLine_C(in + 1, preds, out + 1, width - 1, inverse);
    row = 1;
    in += stride;
    out += stride;
  } else {
    // We are starting from in-between. Make sure 'preds' points to prev row.
    preds -= stride;
  }

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq 0x18(%rbp), %rax
movl 0x10(%rbp), %eax
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, -0x30(%rbp)
movl -0x18(%rbp), %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x34(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x14dbd3
jmp 0x14dbf2
leaq 0x71b04(%rip), %rdi     # 0x1bf6de
leaq 0x719c6(%rip), %rsi     # 0x1bf5a7
movl $0x5b, %edx
leaq 0x71bba(%rip), %rcx     # 0x1bf7a7
callq 0x598a0
cmpq $0x0, 0x18(%rbp)
je 0x14dbfb
jmp 0x14dc1a
leaq 0x71b3d(%rip), %rdi     # 0x1bf73f
leaq 0x7199e(%rip), %rsi     # 0x1bf5a7
movl $0x5b, %edx
leaq 0x71b92(%rip), %rcx     # 0x1bf7a7
callq 0x598a0
cmpl $0x0, -0xc(%rbp)
jle 0x14dc22
jmp 0x14dc41
leaq 0x71b24(%rip), %rdi     # 0x1bf74d
leaq 0x71977(%rip), %rsi     # 0x1bf5a7
movl $0x5b, %edx
leaq 0x71b6b(%rip), %rcx     # 0x1bf7a7
callq 0x598a0
cmpl $0x0, -0x10(%rbp)
jle 0x14dc49
jmp 0x14dc68
leaq 0x71b07(%rip), %rdi     # 0x1bf757
leaq 0x71950(%rip), %rsi     # 0x1bf5a7
movl $0x5b, %edx
leaq 0x71b44(%rip), %rcx     # 0x1bf7a7
callq 0x598a0
movl -0x14(%rbp), %eax
cmpl -0xc(%rbp), %eax
jl 0x14dc72
jmp 0x14dc91
leaq 0x71ae9(%rip), %rdi     # 0x1bf762
leaq 0x71927(%rip), %rsi     # 0x1bf5a7
movl $0x5b, %edx
leaq 0x71b1b(%rip), %rcx     # 0x1bf7a7
callq 0x598a0
cmpl $0x0, -0x18(%rbp)
jl 0x14dcaa
cmpl $0x0, -0x1c(%rbp)
jle 0x14dcaa
movl -0x18(%rbp), %eax
addl -0x1c(%rbp), %eax
cmpl -0x10(%rbp), %eax
jg 0x14dcaa
jmp 0x14dcc9
leaq 0x71ac1(%rip), %rdi     # 0x1bf772
leaq 0x718ef(%rip), %rsi     # 0x1bf5a7
movl $0x5b, %edx
leaq 0x71ae3(%rip), %rcx     # 0x1bf7a7
callq 0x598a0
movq -0x30(%rbp), %rax
addq -0x8(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x30(%rbp), %rax
addq 0x18(%rbp), %rax
movq %rax, 0x18(%rbp)
cmpl $0x0, 0x10(%rbp)
je 0x14dcf1
movq 0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x14dcf9
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpl $0x0, -0x18(%rbp)
jne 0x14dd61
movq -0x8(%rbp), %rax
movb (%rax), %cl
movq 0x18(%rbp), %rax
movb %cl, (%rax)
movq -0x8(%rbp), %rdi
addq $0x1, %rdi
movq -0x28(%rbp), %rsi
movq 0x18(%rbp), %rdx
addq $0x1, %rdx
movl -0xc(%rbp), %ecx
subl $0x1, %ecx
movl 0x10(%rbp), %r8d
callq 0x14dae0
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 0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x18(%rbp)
jmp 0x14dd77
movl -0x14(%rbp), %ecx
movq -0x28(%rbp), %rax
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
jmp 0x14dd79
movl -0x18(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x14ddd7
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq 0x18(%rbp), %rdx
movl -0xc(%rbp), %ecx
movl 0x10(%rbp), %r8d
callq 0x14dae0
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %ecx
movq -0x28(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movl -0x14(%rbp), %ecx
movq -0x8(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x8(%rbp)
movl -0x14(%rbp), %ecx
movq 0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x18(%rbp)
jmp 0x14dd79
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)