user: 下面的汇编指令对应的C源代码是什么:

```asm
<vc_image_resize_bytes>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    0x90(%rsp),%eax
  mov    %ecx,(%rsp)
  mov    0x80(%rsp),%r15d
  mov    0x88(%rsp),%r10d
  mov    %eax,0x18(%rsp)
  test   %edx,%edx
  jle    L76
  test   %r15d,%r15d
  jle    L76
  mov    %esi,%ebx
  test   %esi,%esi
  jle    L76
  mov    %r9d,%r14d
  test   %r9d,%r9d
  jle    L76
  mov    %rdi,%rbp
  mov    %edx,%r12d
  mov    %r8,%r13
  cmp    %r9d,%esi
  jne    L5
  cmp    %r15d,%edx
  jne    L5
  cmp    %r8,%rdi
  je     L185
  cmp    (%rsp),%esi
  jne    L9
  cmp    %r10d,%r9d
  jne    L9
  imul   %esi,%edx
  add    $0x48,%rsp
  mov    %r8,%rsi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1110 <vclib_memcpy@plt>
  nopw   0x0(%rax,%rax,1)
L9:
  movslq (%rsp),%r15
  movslq %r10d,%r14
  nopw   0x0(%rax,%rax,1)
L149:
  mov    %r13,%rsi
  mov    %rbp,%rdi
  mov    %ebx,%edx
  add    %r15,%rbp
  call   <vclib_memcpy@plt>
  add    %r14,%r13
  sub    $0x1,%r12d
  jne    L149
L76:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L5:
  cmp    %r15d,%r12d
  jge    L199
  cmp    %r14d,%ebx
  jge    L24
  lea    (%r12,%r12,1),%eax
  cmp    %r15d,%eax
  jne    L78
  lea    (%rbx,%rbx,1),%eax
  cmp    %r14d,%eax
  jne    L78
  mov    %r10d,%eax
  or     %r13d,%eax
  or     (%rsp),%eax
  or     %ebp,%eax
  or     %ebx,%eax
  or     %r15d,%eax
  test   $0xf,%al
  jne    L78
  mov    (%rsp),%eax
  mov    %r10d,%r14d
  shl    $0x4,%r14d
  lea    0x0(,%rax,8),%r15d
  movslq %r14d,%r14
  movslq %r15d,%r15
  mov    %r14,0x10(%rsp)
  mov    %r12d,%r14d
  mov    %r10d,%r12d
  mov    %r15,0x8(%rsp)
  mov    %r13,%r15
  mov    0x18(%rsp),%r13d
  nopl   0x0(%rax,%rax,1)
L92:
  mov    (%rsp),%ecx
  mov    %r15,%rsi
  mov    %rbp,%rdi
  mov    %r13d,%r9d
  mov    %r12d,%r8d
  mov    %ebx,%edx
  sub    $0x8,%r14d
  call   <vcir8_down2_8@plt>
  add    0x8(%rsp),%rbp
  add    0x10(%rsp),%r15
  test   %r14d,%r14d
  jg     L92
  jmp    L76
  cs nopw 0x0(%rax,%rax,1)
L199:
  mov    (%rsp),%eax
  mov    %r12d,%edi
  mov    0x18(%rsp),%ecx
  mov    %r14d,%r9d
  sub    %r15d,%edi
  mov    %r13,%r8
  mov    %r15d,%edx
  mov    %ebx,%esi
  imul   %eax,%edi
  push   %rcx
  mov    %eax,%ecx
  mov    %eax,%r14d
  push   %r10
  movslq %edi,%rdi
  add    %rbp,%rdi
  mov    %rdi,0x10(%rsp)
  call   <vcir8_hzoom@plt>
  pop    %rdi
  pop    %r8
  cmp    %r15d,%r12d
  je     L76
  mov    0x18(%rsp),%ecx
  lea    -0x1(%r15),%eax
  mov    %r14d,%r9d
  mov    %ebx,%esi
  mov    %rbp,%rdi
  push   %rcx
  mov    %r14d,%ecx
  push   %rax
  mov    %r15d,%eax
  shl    $0x10,%eax
  cltd
  idiv   %r12d
  mov    %r12d,%edx
  push   %rax
  push   $0x0
  mov    0x20(%rsp),%r8
  call   <vcir8_vzoom2@plt>
  add    $0x20,%rsp
  jmp    L76
  nopw   0x0(%rax,%rax,1)
L78:
  xor    %edi,%edi
  mov    %r10d,0x1c(%rsp)
  call   <vclib_obtain_tmp_buf@plt>
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <vclib_get_tmp_buf_size@plt>
  lea    0xf(%r14),%edx
  mov    0x1c(%rsp),%r10d
  mov    $0x40,%r11d
  and    $0xfffffff0,%edx
  mov    %edx,0x10(%rsp)
  mov    %edx,%ecx
  shl    $0x6,%edx
  cmp    %eax,%edx
  jg     L89
L96:
  mov    %r15d,%eax
  lea    -0x1(%r15),%esi
  movl   $0x0,0x1c(%rsp)
  mov    %ebx,%r15d
  shl    $0x10,%eax
  mov    %esi,0x24(%rsp)
  mov    %r14d,%ebx
  mov    %r11d,%r14d
  cltd
  idiv   %r12d
  mov    (%rsp),%edx
  imul   %r11d,%edx
  movslq %edx,%rsi
  mov    %rsi,0x38(%rsp)
  mov    %eax,0x20(%rsp)
  mov    0x20(%rsp),%edi
  xor    %eax,%eax
  imul   %r11d,%edi
  mov    %r13,%r11
  mov    %ebx,%r13d
  mov    %edi,0x34(%rsp)
L37:
  lea    (%r14,%rax,1),%ebx
  cmp    %r12d,%ebx
  jle    L15
  mov    %r15d,%ebx
  mov    0x18(%rsp),%r15d
  sub    %eax,%r12d
  mov    %r13d,%r14d
  mov    %r10d,%r9d
  mov    %r11,%r8
  mov    %r12d,%edx
  mov    %r14d,%esi
  push   %r15
  mov    0x2c(%rsp),%eax
  push   %rax
  mov    0x30(%rsp),%eax
  push   %rax
  mov    0x34(%rsp),%eax
  push   %rax
  mov    0x30(%rsp),%r13d
  mov    0x28(%rsp),%rdi
  mov    %r13d,%ecx
  call   <vcir8_vzoom2@plt>
  add    $0x20,%rsp
  mov    %ebx,%esi
  mov    %r14d,%r9d
  push   %r15
  mov    %r12d,%edx
  mov    %rbp,%rdi
  push   %r13
  mov    0x18(%rsp),%r8
  mov    0x10(%rsp),%ecx
  call   <vcir8_hzoom@plt>
  pop    %rcx
  pop    %rsi
L127:
  mov    0x8(%rsp),%rdi
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1100 <vclib_release_tmp_buf@plt>
  nopw   0x0(%rax,%rax,1)
L15:
  mov    0x18(%rsp),%eax
  mov    %r10d,%r9d
  mov    %r11,%r8
  mov    %r14d,%edx
  mov    %r13d,%esi
  push   %rax
  mov    0x2c(%rsp),%ecx
  push   %rcx
  mov    0x30(%rsp),%ecx
  push   %rcx
  mov    0x34(%rsp),%eax
  push   %rax
  mov    0x28(%rsp),%rdi
  mov    0x30(%rsp),%ecx
  mov    %r10d,0x50(%rsp)
  mov    %r11,0x48(%rsp)
  call   <vcir8_vzoom2@plt>
  mov    0x38(%rsp),%esi
  add    $0x20,%rsp
  mov    %r14d,%edx
  mov    %rbp,%rdi
  mov    %r13d,%r9d
  push   %rsi
  mov    0x18(%rsp),%ecx
  mov    %r15d,%esi
  push   %rcx
  mov    0x18(%rsp),%r8
  mov    0x10(%rsp),%ecx
  call   <vcir8_hzoom@plt>
  mov    0x44(%rsp),%esi
  add    0x48(%rsp),%rbp
  add    %esi,0x2c(%rsp)
  cmp    %r12d,%ebx
  pop    %rax
  pop    %rdx
  mov    0x28(%rsp),%r11
  mov    0x30(%rsp),%r10d
  jge    L127
  mov    %ebx,%eax
  jmp    L37
  nopl   0x0(%rax)
L89:
  shl    $0x5,%ecx
  mov    $0x20,%r11d
  cmp    %eax,%ecx
  jle    L96
  cltd
  mov    %r10d,0x20(%rsp)
  idivl  0x10(%rsp)
  mov    $0x10,%edx
  cmp    %edx,%eax
  cmovle %eax,%edx
  xor    %edi,%edi
  test   %eax,%eax
  setg   %dil
  mov    %edx,0x1c(%rsp)
  call   <assert@plt>
  mov    0x20(%rsp),%r10d
  mov    0x1c(%rsp),%r11d
  jmp    L96
  nopl   (%rax)
L185:
  xor    %edi,%edi
  cmp    %r10d,%ecx
  sete   %dil
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    10d0 <assert@plt>
  nopl   0x0(%rax)
L24:
  mov    0x18(%rsp),%eax
  mov    %ebx,%edi
  mov    %r10d,%r9d
  mov    %r13,%r8
  sub    %r14d,%edi
  mov    %r14d,%esi
  push   %rax
  lea    -0x1(%r15),%eax
  movslq %edi,%rdi
  push   %rax
  mov    %r15d,%eax
  add    %rbp,%rdi
  shl    $0x10,%eax
  cltd
  idiv   %r12d
  mov    %r12d,%edx
  push   %rax
  push   $0x0
  mov    0x20(%rsp),%r15d
  mov    %r15d,%ecx
  mov    %rdi,0x20(%rsp)
  call   <vcir8_vzoom2@plt>
  add    $0x20,%rsp
  cmp    %r14d,%ebx
  je     L76
  mov    0x18(%rsp),%eax
  mov    (%rsp),%r8
  mov    %r15d,%ecx
  mov    %r14d,%r9d
  mov    %r15d,0x80(%rsp)
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    %eax,0x88(%rsp)
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    10c0 <vcir8_hzoom@plt>
```

assistant: ```c
void vc_image_resize_bytes(unsigned char *dest, int destw, int desth, int dest_pitch, const unsigned char *src, int srcw, int srch, int src_pitch, int smooth_flag) {
  if (desth <= 0 || srch <= 0 || destw <= 0 || srcw <= 0)
    return;
  if (destw == srcw && desth == srch) {
    if (dest == src) {
      assert(dest_pitch == src_pitch);
      return;
    }
    if (dest_pitch == destw && src_pitch == srcw) {
      vclib_memcpy(dest, src, destw * desth);
    } else {
      do {
        vclib_memcpy(dest, src, destw);
        dest += dest_pitch;
        src += src_pitch;
      } while (--desth > 0);
    }
  } else if (desth >= srch) {
    unsigned char *ptr = dest + dest_pitch * (desth - srch);
    vcir8_hzoom(ptr, destw, srch, dest_pitch, src, srcw, src_pitch, smooth_flag);
    if (desth != srch) {
      vcir8_vzoom2(dest, destw, desth, dest_pitch, ptr, dest_pitch, 0, (srch << 16) / desth, srch - 1, smooth_flag);
    }
  } else if (destw >= srcw) {
    unsigned char *ptr = dest + (destw - srcw);
    vcir8_vzoom2(ptr, srcw, desth, dest_pitch, src, src_pitch, 0, (srch << 16) / desth, srch - 1, smooth_flag);
    if (destw != srcw) {
      vcir8_hzoom(dest, destw, desth, dest_pitch, ptr, srcw, dest_pitch, smooth_flag);
    }
  } else {
    int i, j, step, pos, buf_pitch, buf_size;
    unsigned char *bufptr;
    if (desth * 2 == srch && destw * 2 == srcw && ((destw | srch | dest_pitch | src_pitch | ((int)dest) | ((int)src)) & 15) == 0) {
      while (desth > 0) {
        vcir8_down2_8(dest, src, destw, dest_pitch, src_pitch, smooth_flag);
        dest += dest_pitch << 3;
        src += src_pitch << 4;
        desth -= 8;
      }
      return;
    }
    bufptr = vclib_obtain_tmp_buf(0);
    buf_size = vclib_get_tmp_buf_size();
    buf_pitch = (srcw + 15) & ~15;
    j = 64;
    if (buf_pitch * j > buf_size) {
      j = 32;
      if (buf_pitch * j > buf_size) {
        j = buf_size / buf_pitch;
        if (j > 16)
          j = 16;
        assert(j > 0);
      }
    }
    pos = 0;
    step = (srch << 16) / desth;
    for (i = 0; i < desth; i += j) {
      if (i + j > desth) {
        j = desth - i;
      }
      vcir8_vzoom2(bufptr, srcw, j, buf_pitch, src, src_pitch, pos, step, srch - 1, smooth_flag);
      vcir8_hzoom(dest, destw, j, dest_pitch, bufptr, srcw, buf_pitch, smooth_flag);
      pos += j * step;
      dest += j * dest_pitch;
    }
    vclib_release_tmp_buf(bufptr);
  }
}
```