// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/libraries/libwebp/src/dsp/filters.c
// Function: DoHorizontalFilter_C
static WEBP_INLINE void DoHorizontalFilter_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) {
    // Leftmost pixel is the same as input for topmost scanline.
    out[0] = in[0];
    PredictLine_C(in + 1, preds, out + 1, width - 1, inverse);
    row = 1;
    preds += stride;
    in += stride;
    out += stride;
  }

  // Filter line-by-line.
  while (row < last_row) {
    // Leftmost pixel is predicted from above.
    PredictLine_C(in, preds - stride, out, 1, inverse);
    PredictLine_C(in + 1, preds, out + 1, width - 1, 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 0x14d8a3
jmp 0x14d8c2
leaq 0x71e34(%rip), %rdi     # 0x1bf6de
leaq 0x71cf6(%rip), %rsi     # 0x1bf5a7
movl $0x36, %edx
leaq 0x71e2e(%rip), %rcx     # 0x1bf6eb
callq 0x598a0
cmpq $0x0, 0x18(%rbp)
je 0x14d8cb
jmp 0x14d8ea
leaq 0x71e6d(%rip), %rdi     # 0x1bf73f
leaq 0x71cce(%rip), %rsi     # 0x1bf5a7
movl $0x36, %edx
leaq 0x71e06(%rip), %rcx     # 0x1bf6eb
callq 0x598a0
cmpl $0x0, -0xc(%rbp)
jle 0x14d8f2
jmp 0x14d911
leaq 0x71e54(%rip), %rdi     # 0x1bf74d
leaq 0x71ca7(%rip), %rsi     # 0x1bf5a7
movl $0x36, %edx
leaq 0x71ddf(%rip), %rcx     # 0x1bf6eb
callq 0x598a0
cmpl $0x0, -0x10(%rbp)
jle 0x14d919
jmp 0x14d938
leaq 0x71e37(%rip), %rdi     # 0x1bf757
leaq 0x71c80(%rip), %rsi     # 0x1bf5a7
movl $0x36, %edx
leaq 0x71db8(%rip), %rcx     # 0x1bf6eb
callq 0x598a0
movl -0x14(%rbp), %eax
cmpl -0xc(%rbp), %eax
jl 0x14d942
jmp 0x14d961
leaq 0x71e19(%rip), %rdi     # 0x1bf762
leaq 0x71c57(%rip), %rsi     # 0x1bf5a7
movl $0x36, %edx
leaq 0x71d8f(%rip), %rcx     # 0x1bf6eb
callq 0x598a0
cmpl $0x0, -0x18(%rbp)
jl 0x14d97a
cmpl $0x0, -0x1c(%rbp)
jle 0x14d97a
movl -0x18(%rbp), %eax
addl -0x1c(%rbp), %eax
cmpl -0x10(%rbp), %eax
jg 0x14d97a
jmp 0x14d999
leaq 0x71df1(%rip), %rdi     # 0x1bf772
leaq 0x71c1f(%rip), %rsi     # 0x1bf5a7
movl $0x36, %edx
leaq 0x71d57(%rip), %rcx     # 0x1bf6eb
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 0x14d9c1
movq 0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x14d9c9
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpl $0x0, -0x18(%rbp)
jne 0x14da40
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 -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 0x14da42
movl -0x18(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x14dad8
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
movslq -0x14(%rbp), %rcx
xorl %eax, %eax
subq %rcx, %rax
addq %rax, %rsi
movq 0x18(%rbp), %rdx
movl 0x10(%rbp), %r8d
movl $0x1, %ecx
callq 0x14dae0
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 -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 0x14da42
addq $0x40, %rsp
popq %rbp
retq
nop