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

  // Filter line-by-line.
  while (row < last_row) {
    // Leftmost pixel is predicted from above.
    out[0] = in[0] - in[-stride];
    PredictLineLeft_SSE2(in + 1, out + 1, width - 1);
    ++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 0x1642d0
jmp 0x1642ef
leaq 0x5b407(%rip), %rdi     # 0x1bf6de
leaq 0x5c596(%rip), %rsi     # 0x1c0874
movl $0x53, %edx
leaq 0x5c5ee(%rip), %rcx     # 0x1c08d8
callq 0x598a0
cmpq $0x0, 0x10(%rbp)
je 0x1642f8
jmp 0x164317
leaq 0x5b440(%rip), %rdi     # 0x1bf73f
leaq 0x5c56e(%rip), %rsi     # 0x1c0874
movl $0x53, %edx
leaq 0x5c5c6(%rip), %rcx     # 0x1c08d8
callq 0x598a0
cmpl $0x0, -0xc(%rbp)
jle 0x16431f
jmp 0x16433e
leaq 0x5b427(%rip), %rdi     # 0x1bf74d
leaq 0x5c547(%rip), %rsi     # 0x1c0874
movl $0x53, %edx
leaq 0x5c59f(%rip), %rcx     # 0x1c08d8
callq 0x598a0
cmpl $0x0, -0x10(%rbp)
jle 0x164346
jmp 0x164365
leaq 0x5b40a(%rip), %rdi     # 0x1bf757
leaq 0x5c520(%rip), %rsi     # 0x1c0874
movl $0x53, %edx
leaq 0x5c578(%rip), %rcx     # 0x1c08d8
callq 0x598a0
movl -0x14(%rbp), %eax
cmpl -0xc(%rbp), %eax
jl 0x16436f
jmp 0x16438e
leaq 0x5b3ec(%rip), %rdi     # 0x1bf762
leaq 0x5c4f7(%rip), %rsi     # 0x1c0874
movl $0x53, %edx
leaq 0x5c54f(%rip), %rcx     # 0x1c08d8
callq 0x598a0
cmpl $0x0, -0x18(%rbp)
jl 0x1643a7
cmpl $0x0, -0x1c(%rbp)
jle 0x1643a7
movl -0x18(%rbp), %eax
addl -0x1c(%rbp), %eax
cmpl -0x10(%rbp), %eax
jg 0x1643a7
jmp 0x1643c6
leaq 0x5b3c4(%rip), %rdi     # 0x1bf772
leaq 0x5c4bf(%rip), %rsi     # 0x1c0874
movl $0x53, %edx
leaq 0x5c517(%rip), %rcx     # 0x1c08d8
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 0x164434
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 0x164436
movl -0x18(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x1644a7
movq -0x8(%rbp), %rax
movzbl (%rax), %eax
movq -0x8(%rbp), %rcx
xorl %edx, %edx
subl -0x14(%rbp), %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
subl %ecx, %eax
movb %al, %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 -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 0x164436
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)