// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/libraries/libwebp/src/dec/frame_dec.c
// Function: VP8ProcessRow
int VP8ProcessRow(VP8Decoder* const dec, VP8Io* const io) {
  int ok = 1;
  VP8ThreadContext* const ctx = &dec->thread_ctx_;
  const int filter_row =
      (dec->filter_type_ > 0) &&
      (dec->mb_y_ >= dec->tl_mb_y_) && (dec->mb_y_ <= dec->br_mb_y_);
  if (dec->mt_method_ == 0) {
    // ctx->id_ and ctx->f_info_ are already set
    ctx->mb_y_ = dec->mb_y_;
    ctx->filter_row_ = filter_row;
    ReconstructRow(dec, ctx);
    ok = FinishRow(dec, io);
  } else {
    WebPWorker* const worker = &dec->worker_;
    // Finish previous job *before* updating context
    ok &= WebPGetWorkerInterface()->Sync(worker);
    assert(worker->status_ == OK);
    if (ok) {   // spawn a new deblocking/output job
      ctx->io_ = *io;
      ctx->id_ = dec->cache_id_;
      ctx->mb_y_ = dec->mb_y_;
      ctx->filter_row_ = filter_row;
      if (dec->mt_method_ == 2) {  // swap macroblock data
        VP8MBData* const tmp = ctx->mb_data_;
        ctx->mb_data_ = dec->mb_data_;
        dec->mb_data_ = tmp;
      } else {
        // perform reconstruction directly in main thread
        ReconstructRow(dec, ctx);
      }
      if (filter_row) {            // swap filter info
        VP8FInfo* const tmp = ctx->f_info_;
        ctx->f_info_ = dec->f_info_;
        dec->f_info_ = tmp;
      }
      // (reconstruct)+filter in parallel
      WebPGetWorkerInterface()->Launch(worker);
      if (++dec->cache_id_ == dec->num_caches_) {
        dec->cache_id_ = 0;
      }
    }
  }
  return ok;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
cmpl $0x0, 0xb68(%rdi)
jle 0xceda3
movl 0xb5c(%rbx), %eax
cmpl 0x1a4(%rbx), %eax
jge 0xceda7
xorl %eax, %eax
jmp 0xcedb0
cmpl 0x1ac(%rbx), %eax
setle %al
leaq 0xd8(%rbx), %r12
movzbl %al, %ebp
cmpl $0x0, 0xc8(%rbx)
je 0xcee4e
leaq 0x98(%rbx), %r15
callq 0x56690
movq %r15, %rdi
callq *0x10(%rax)
cmpl $0x1, 0xa0(%rbx)
jne 0xceedb
movl %eax, %ecx
xorl %eax, %eax
testb $0x1, %cl
je 0xceed2
leaq 0xf8(%rbx), %rdi
movl $0xa0, %edx
movq %r14, %rsi
callq 0x552d0
movl 0xc8(%rbx), %eax
movl 0xcc(%rbx), %ecx
movl %ecx, 0xd8(%rbx)
movl 0xb5c(%rbx), %ecx
movl %ecx, 0xdc(%rbx)
movl %ebp, 0xe0(%rbx)
cmpl $0x2, %eax
jne 0xcee7e
movq 0xf0(%rbx), %rax
movq 0xb60(%rbx), %rcx
movq %rcx, 0xf0(%rbx)
movq %rax, 0xb60(%rbx)
jmp 0xcee89
movl 0xb5c(%rbx), %eax
movl %eax, 0xdc(%rbx)
movl %ebp, 0xe0(%rbx)
movq %rbx, %rdi
movq %r12, %rsi
callq 0xceefa
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xcf46e
movq %rbx, %rdi
movq %r12, %rsi
callq 0xceefa
testl %ebp, %ebp
je 0xceea9
movq 0xe8(%rbx), %rax
movq 0xb18(%rbx), %rcx
movq %rcx, 0xe8(%rbx)
movq %rax, 0xb18(%rbx)
callq 0x56690
movq %r15, %rdi
callq *0x18(%rax)
movl 0xcc(%rbx), %eax
incl %eax
xorl %ecx, %ecx
cmpl 0xd0(%rbx), %eax
cmovnel %eax, %ecx
movl %ecx, 0xcc(%rbx)
movl $0x1, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5a06b(%rip), %rdi     # 0x128f4d
leaq 0x5a006(%rip), %rsi     # 0x128eef
leaq 0x5a073(%rip), %rcx     # 0x128f63
movl $0x205, %edx            # imm = 0x205
callq 0x55710