// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/libraries/libwebp/src/dec/frame_dec.c
// Function: DoFilter
static void DoFilter(const VP8Decoder* const dec, int mb_x, int mb_y) {
  const VP8ThreadContext* const ctx = &dec->thread_ctx_;
  const int cache_id = ctx->id_;
  const int y_bps = dec->cache_y_stride_;
  const VP8FInfo* const f_info = ctx->f_info_ + mb_x;
  uint8_t* const y_dst = dec->cache_y_ + cache_id * 16 * y_bps + mb_x * 16;
  const int ilevel = f_info->f_ilevel_;
  const int limit = f_info->f_limit_;
  if (limit == 0) {
    return;
  }
  assert(limit >= 3);
  if (dec->filter_type_ == 1) {   // simple
    if (mb_x > 0) {
      VP8SimpleHFilter16(y_dst, y_bps, limit + 4);
    }
    if (f_info->f_inner_) {
      VP8SimpleHFilter16i(y_dst, y_bps, limit);
    }
    if (mb_y > 0) {
      VP8SimpleVFilter16(y_dst, y_bps, limit + 4);
    }
    if (f_info->f_inner_) {
      VP8SimpleVFilter16i(y_dst, y_bps, limit);
    }
  } else {    // complex
    const int uv_bps = dec->cache_uv_stride_;
    uint8_t* const u_dst = dec->cache_u_ + cache_id * 8 * uv_bps + mb_x * 8;
    uint8_t* const v_dst = dec->cache_v_ + cache_id * 8 * uv_bps + mb_x * 8;
    const int hev_thresh = f_info->hev_thresh_;
    if (mb_x > 0) {
      VP8HFilter16(y_dst, y_bps, limit + 4, ilevel, hev_thresh);
      VP8HFilter8(u_dst, v_dst, uv_bps, limit + 4, ilevel, hev_thresh);
    }
    if (f_info->f_inner_) {
      VP8HFilter16i(y_dst, y_bps, limit, ilevel, hev_thresh);
      VP8HFilter8i(u_dst, v_dst, uv_bps, limit, ilevel, hev_thresh);
    }
    if (mb_y > 0) {
      VP8VFilter16(y_dst, y_bps, limit + 4, ilevel, hev_thresh);
      VP8VFilter8(u_dst, v_dst, uv_bps, limit + 4, ilevel, hev_thresh);
    }
    if (f_info->f_inner_) {
      VP8VFilter16i(y_dst, y_bps, limit, ilevel, hev_thresh);
      VP8VFilter8i(u_dst, v_dst, uv_bps, limit, ilevel, hev_thresh);
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rax
addq $0xd8, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movl 0xb40(%rax), %eax
movl %eax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xc(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0xb28(%rax), %rax
movl -0x1c(%rbp), %ecx
shll $0x4, %ecx
imull -0x20(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movl -0xc(%rbp), %ecx
shll $0x4, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movzbl 0x1(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
movl %eax, -0x38(%rbp)
cmpl $0x0, -0x38(%rbp)
jne 0x13fe08
jmp 0x14005b
cmpl $0x3, -0x38(%rbp)
jl 0x13fe10
jmp 0x13fe2f
leaq 0x7ccfb(%rip), %rdi     # 0x1bcb12
leaq 0x7cb1e(%rip), %rsi     # 0x1bc93c
movl $0xd6, %edx
leaq 0x7ccf3(%rip), %rcx     # 0x1bcb1d
callq 0x598a0
movq -0x8(%rbp), %rax
cmpl $0x1, 0xb68(%rax)
jne 0x13fec3
cmpl $0x0, -0xc(%rbp)
jle 0x13fe5f
leaq 0xd91ab(%rip), %rax     # 0x218ff8
movq (%rax), %rax
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x38(%rbp), %edx
addl $0x4, %edx
callq *%rax
movq -0x28(%rbp), %rax
cmpb $0x0, 0x2(%rax)
je 0x13fe7f
leaq 0xd9198(%rip), %rax     # 0x219008
movq (%rax), %rax
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x38(%rbp), %edx
callq *%rax
cmpl $0x0, -0x10(%rbp)
jle 0x13fe9e
leaq 0xd9164(%rip), %rax     # 0x218ff0
movq (%rax), %rax
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x38(%rbp), %edx
addl $0x4, %edx
callq *%rax
movq -0x28(%rbp), %rax
cmpb $0x0, 0x2(%rax)
je 0x13febe
leaq 0xd9151(%rip), %rax     # 0x219000
movq (%rax), %rax
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x38(%rbp), %edx
callq *%rax
jmp 0x14005b
movq -0x8(%rbp), %rax
movl 0xb44(%rax), %eax
movl %eax, -0x3c(%rbp)
movq -0x8(%rbp), %rax
movq 0xb30(%rax), %rax
movl -0x1c(%rbp), %ecx
shll $0x3, %ecx
imull -0x3c(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movl -0xc(%rbp), %ecx
shll $0x3, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq 0xb38(%rax), %rax
movl -0x1c(%rbp), %ecx
shll $0x3, %ecx
imull -0x3c(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movl -0xc(%rbp), %ecx
shll $0x3, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rax
movzbl 0x3(%rax), %eax
movl %eax, -0x54(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x13ff7c
leaq 0xd907a(%rip), %rax     # 0x218fb8
movq (%rax), %rax
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x38(%rbp), %edx
addl $0x4, %edx
movl -0x34(%rbp), %ecx
movl -0x54(%rbp), %r8d
callq *%rax
leaq 0xd906a(%rip), %rax     # 0x218fc8
movq (%rax), %rax
movq -0x48(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x3c(%rbp), %edx
movl -0x38(%rbp), %ecx
addl $0x4, %ecx
movl -0x34(%rbp), %r8d
movl -0x54(%rbp), %r9d
callq *%rax
movq -0x28(%rbp), %rax
cmpb $0x0, 0x2(%rax)
je 0x13ffc5
leaq 0xd904b(%rip), %rax     # 0x218fd8
movq (%rax), %rax
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x38(%rbp), %edx
movl -0x34(%rbp), %ecx
movl -0x54(%rbp), %r8d
callq *%rax
leaq 0xd903e(%rip), %rax     # 0x218fe8
movq (%rax), %rax
movq -0x48(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x3c(%rbp), %edx
movl -0x38(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x54(%rbp), %r9d
callq *%rax
cmpl $0x0, -0x10(%rbp)
jle 0x140010
leaq 0xd8fde(%rip), %rax     # 0x218fb0
movq (%rax), %rax
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x38(%rbp), %edx
addl $0x4, %edx
movl -0x34(%rbp), %ecx
movl -0x54(%rbp), %r8d
callq *%rax
leaq 0xd8fce(%rip), %rax     # 0x218fc0
movq (%rax), %rax
movq -0x48(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x3c(%rbp), %edx
movl -0x38(%rbp), %ecx
addl $0x4, %ecx
movl -0x34(%rbp), %r8d
movl -0x54(%rbp), %r9d
callq *%rax
movq -0x28(%rbp), %rax
cmpb $0x0, 0x2(%rax)
je 0x140059
leaq 0xd8faf(%rip), %rax     # 0x218fd0
movq (%rax), %rax
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x38(%rbp), %edx
movl -0x34(%rbp), %ecx
movl -0x54(%rbp), %r8d
callq *%rax
leaq 0xd8fa2(%rip), %rax     # 0x218fe0
movq (%rax), %rax
movq -0x48(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl -0x3c(%rbp), %edx
movl -0x38(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x54(%rbp), %r9d
callq *%rax
jmp 0x14005b
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)