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

```asm
<qc_imag_bay2rgb_cottnoip10>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %ecx,-0x30(%rbp)
  mov    %r8d,-0x3c(%rbp)
  mov    %r9d,-0x40(%rbp)
  mov    -0x3c(%rbp),%eax
  sar    %eax
  sub    $0x1,%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x40(%rbp),%eax
  sar    %eax
  sub    $0x1,%eax
  mov    %eax,-0x40(%rbp)
  mov    -0x2c(%rbp),%eax
  add    %eax,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x30(%rbp),%eax
  add    %eax,%eax
  mov    %eax,-0x14(%rbp)
L22:
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x38(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
L3:
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x10(%rbp),%rax
  movzwl (%rax),%eax
  movzwl %ax,%ecx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x8(%rbp),%rax
  mov    %esi,%r8d
  mov    0x10(%rbp),%esi
  mov    %rax,%rdi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    0x10(%rbp),%ecx
  movslq %ecx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x18(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x18(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rdi
  mov    0x10(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rcx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  addq   $0x4,-0x10(%rbp)
  mov    0x10(%rbp),%eax
  add    %eax,%eax
  cltq
  add    %rax,-0x8(%rbp)
  subl   $0x1,-0x3c(%rbp)
  cmpl   $0x0,-0x3c(%rbp)
  jne    L3
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x10(%rbp),%rax
  movzwl (%rax),%eax
  movzwl %ax,%ecx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x8(%rbp),%rax
  mov    %esi,%r8d
  mov    0x10(%rbp),%esi
  mov    %rax,%rdi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    0x10(%rbp),%ecx
  movslq %ecx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x18(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x18(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rdi
  mov    0x10(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rcx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x18(%rbp),%eax
  cltq
  add    %rax,%rax
  add    %rax,-0x28(%rbp)
  mov    -0x14(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
  subl   $0x1,-0x40(%rbp)
  cmpl   $0x0,-0x40(%rbp)
  jne    L22
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x38(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
L21:
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x10(%rbp),%rax
  movzwl (%rax),%eax
  movzwl %ax,%ecx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x8(%rbp),%rax
  mov    %esi,%r8d
  mov    0x10(%rbp),%esi
  mov    %rax,%rdi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    0x10(%rbp),%ecx
  movslq %ecx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rdi
  mov    0x10(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rcx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  addq   $0x4,-0x10(%rbp)
  mov    0x10(%rbp),%eax
  add    %eax,%eax
  cltq
  add    %rax,-0x8(%rbp)
  subl   $0x1,-0x3c(%rbp)
  cmpl   $0x0,-0x3c(%rbp)
  jne    L21
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x10(%rbp),%rax
  movzwl (%rax),%eax
  movzwl %ax,%ecx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x8(%rbp),%rax
  mov    %esi,%r8d
  mov    0x10(%rbp),%esi
  mov    %rax,%rdi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    0x10(%rbp),%ecx
  movslq %ecx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%esi
  mov    -0x2c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rdi
  mov    0x10(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rcx,%rdi
  mov    -0x8(%rbp),%rcx
  add    %rcx,%rdi
  mov    %esi,%r8d
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    0x10(%rbp),%esi
  call   <qc_imag_writergb10@plt>
  nop
  leave
  ret
```

assistant: ```c
void qc_imag_bay2rgb_cottnoip10(unsigned short *bay, int bay_line, unsigned char *rgb, int rgb_line, int columns, int rows, int bpp) {
  unsigned short *cur_bay;
  unsigned char *cur_rgb;
  int bay_line2, rgb_line2;
  int total_columns;
  total_columns = (columns >> 1) - 1;
  rows = (rows >> 1) - 1;
  bay_line2 = 2 * bay_line;
  rgb_line2 = 2 * rgb_line;
  do {
    cur_bay = bay;
    cur_rgb = rgb;
    columns = total_columns;
    do {
      qc_imag_writergb10(cur_rgb + 0, bpp, cur_bay[1], cur_bay[0], cur_bay[bay_line]);
      qc_imag_writergb10(cur_rgb + bpp, bpp, cur_bay[1], cur_bay[2], cur_bay[bay_line + 2]);
      qc_imag_writergb10(cur_rgb + rgb_line, bpp, cur_bay[bay_line2 + 1], cur_bay[bay_line + 1], cur_bay[bay_line]);
      qc_imag_writergb10(cur_rgb + rgb_line + bpp, bpp, cur_bay[bay_line2 + 1], cur_bay[bay_line + 1], cur_bay[bay_line + 2]);
      cur_bay += 2;
      cur_rgb += 2 * bpp;
    } while (--columns);
    qc_imag_writergb10(cur_rgb + 0, bpp, cur_bay[1], cur_bay[0], cur_bay[bay_line]);
    qc_imag_writergb10(cur_rgb + bpp, bpp, cur_bay[1], cur_bay[bay_line + 1], cur_bay[bay_line]);
    qc_imag_writergb10(cur_rgb + rgb_line, bpp, cur_bay[bay_line2 + 1], cur_bay[bay_line + 1], cur_bay[bay_line]);
    qc_imag_writergb10(cur_rgb + rgb_line + bpp, bpp, cur_bay[bay_line2 + 1], cur_bay[bay_line + 1], cur_bay[bay_line]);
    bay += bay_line2;
    rgb += rgb_line2;
  } while (--rows);
  cur_bay = bay;
  cur_rgb = rgb;
  columns = total_columns;
  do {
    qc_imag_writergb10(cur_rgb + 0, bpp, cur_bay[1], cur_bay[0], cur_bay[bay_line]);
    qc_imag_writergb10(cur_rgb + bpp, bpp, cur_bay[1], cur_bay[2], cur_bay[bay_line + 2]);
    qc_imag_writergb10(cur_rgb + rgb_line, bpp, cur_bay[1], cur_bay[bay_line + 1], cur_bay[bay_line]);
    qc_imag_writergb10(cur_rgb + rgb_line + bpp, bpp, cur_bay[1], cur_bay[bay_line + 1], cur_bay[bay_line + 2]);
    cur_bay += 2;
    cur_rgb += 2 * bpp;
  } while (--columns);
  qc_imag_writergb10(cur_rgb + 0, bpp, cur_bay[1], cur_bay[0], cur_bay[bay_line]);
  qc_imag_writergb10(cur_rgb + bpp, bpp, cur_bay[1], cur_bay[bay_line + 1], cur_bay[bay_line]);
  qc_imag_writergb10(cur_rgb + rgb_line, bpp, cur_bay[1], cur_bay[bay_line + 1], cur_bay[bay_line]);
  qc_imag_writergb10(cur_rgb + rgb_line + bpp, bpp, cur_bay[1], cur_bay[bay_line + 1], cur_bay[bay_line]);
}
```