user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<YUV422_to_RGB>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8d,-0x44(%rbp)
  mov    %r9d,-0x48(%rbp)
  movl   $0x0,-0x20(%rbp)
  jmp    L202
L3:
  movl   $0x0,-0x1c(%rbp)
  jmp    L252
L113:
  mov    -0x28(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x28(%rbp)
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  add    $0xffffff80,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  add    $0xffffff80,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x18(%rbp),%eax
  imul   $0x12a,%eax,%edx
  mov    -0x10(%rbp),%eax
  imul   $0x199,%eax,%eax
  add    %edx,%eax
  sub    $0xffffff80,%eax
  sar    $0x8,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  imul   $0x12a,%eax,%edx
  mov    -0x14(%rbp),%eax
  imul   $0xffffff9c,%eax,%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  imul   $0xffffff30,%eax,%eax
  add    %edx,%eax
  sub    $0xffffff80,%eax
  sar    $0x8,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x18(%rbp),%eax
  imul   $0x12a,%eax,%edx
  mov    -0x14(%rbp),%eax
  imul   $0x204,%eax,%eax
  add    %edx,%eax
  sub    $0xffffff80,%eax
  sar    $0x8,%eax
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  js     L1
  cmpl   $0xff,-0xc(%rbp)
  jg     L168
  mov    -0xc(%rbp),%eax
  mov    %eax,%edx
  jmp    L36
L168:
  mov    $0xffffffff,%edx
  jmp    L36
L1:
  mov    $0x0,%edx
L36:
  mov    -0x40(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x40(%rbp)
  mov    %dl,(%rax)
  cmpl   $0x0,-0x8(%rbp)
  js     L52
  cmpl   $0xff,-0x8(%rbp)
  jg     L262
  mov    -0x8(%rbp),%eax
  mov    %eax,%edx
  jmp    L57
L262:
  mov    $0xffffffff,%edx
  jmp    L57
L52:
  mov    $0x0,%edx
L57:
  mov    -0x40(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x40(%rbp)
  mov    %dl,(%rax)
  cmpl   $0x0,-0x4(%rbp)
  js     L270
  cmpl   $0xff,-0x4(%rbp)
  jg     L98
  mov    -0x4(%rbp),%eax
  mov    %eax,%edx
  jmp    L244
L98:
  mov    $0xffffffff,%edx
  jmp    L244
L270:
  mov    $0x0,%edx
L244:
  mov    -0x40(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x40(%rbp)
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x28(%rbp)
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x30(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x30(%rbp)
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  add    $0xffffff80,%eax
  sar    %eax
  mov    %eax,-0x14(%rbp)
  mov    -0x38(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x38(%rbp)
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  add    $0xffffff80,%eax
  sar    %eax
  mov    %eax,-0x10(%rbp)
  mov    -0x18(%rbp),%eax
  imul   $0x12a,%eax,%edx
  mov    -0x10(%rbp),%eax
  imul   $0x199,%eax,%eax
  add    %edx,%eax
  sub    $0xffffff80,%eax
  sar    $0x8,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  imul   $0x12a,%eax,%edx
  mov    -0x14(%rbp),%eax
  imul   $0xffffff9c,%eax,%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  imul   $0xffffff30,%eax,%eax
  add    %edx,%eax
  sub    $0xffffff80,%eax
  sar    $0x8,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x18(%rbp),%eax
  imul   $0x12a,%eax,%edx
  mov    -0x14(%rbp),%eax
  imul   $0x204,%eax,%eax
  add    %edx,%eax
  sub    $0xffffff80,%eax
  sar    $0x8,%eax
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  js     L278
  cmpl   $0xff,-0xc(%rbp)
  jg     L220
  mov    -0xc(%rbp),%eax
  mov    %eax,%edx
  jmp    L198
L220:
  mov    $0xffffffff,%edx
  jmp    L198
L278:
  mov    $0x0,%edx
L198:
  mov    -0x40(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x40(%rbp)
  mov    %dl,(%rax)
  cmpl   $0x0,-0x8(%rbp)
  js     L236
  cmpl   $0xff,-0x8(%rbp)
  jg     L63
  mov    -0x8(%rbp),%eax
  mov    %eax,%edx
  jmp    L237
L63:
  mov    $0xffffffff,%edx
  jmp    L237
L236:
  mov    $0x0,%edx
L237:
  mov    -0x40(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x40(%rbp)
  mov    %dl,(%rax)
  cmpl   $0x0,-0x4(%rbp)
  js     L97
  cmpl   $0xff,-0x4(%rbp)
  jg     L9
  mov    -0x4(%rbp),%eax
  mov    %eax,%edx
  jmp    L67
L9:
  mov    $0xffffffff,%edx
  jmp    L67
L97:
  mov    $0x0,%edx
L67:
  mov    -0x40(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x40(%rbp)
  mov    %dl,(%rax)
  addl   $0x2,-0x1c(%rbp)
L252:
  mov    -0x1c(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L113
  addl   $0x1,-0x20(%rbp)
L202:
  mov    -0x20(%rbp),%eax
  cmp    -0x48(%rbp),%eax
  jl     L3
  mov    $0x0,%eax
  pop    %rbp
  ret
```

assistant: ```c
int YUV422_to_RGB(unsigned char *y_input, unsigned char *u_input, unsigned char *v_input, unsigned char *rgb_output, int width, int height) {
  int R, G, B;
  int Y, U, V;
  int row;
  int col;
  for (row = 0; row < height; row++) {
    for (col = 0; col < width; col = col + 2) {
      Y = (int)(*(y_input++));
      U = (int)(*(u_input)) - 128;
      V = (int)(*(v_input)) - 128;
      R = ((298 * Y + 409 * V + 128) >> 8);
      G = ((298 * Y - 100 * U - 208 * V + 128) >> 8);
      B = ((298 * Y + 516 * U + 128) >> 8);
      *(rgb_output++) = (unsigned char)((R < 0) ? 0 : ((R > 255) ? 255 : R));
      *(rgb_output++) = (unsigned char)((G < 0) ? 0 : ((G > 255) ? 255 : G));
      *(rgb_output++) = (unsigned char)((B < 0) ? 0 : ((B > 255) ? 255 : B));
      Y = (int)(*(y_input++));
      U = (U + (int)(*(u_input++)) - 128) >> 1;
      V = (V + (int)(*(v_input++)) - 128) >> 1;
      R = ((298 * Y + 409 * V + 128) >> 8);
      G = ((298 * Y - 100 * U - 208 * V + 128) >> 8);
      B = ((298 * Y + 516 * U + 128) >> 8);
      *(rgb_output++) = (unsigned char)((R < 0) ? 0 : ((R > 255) ? 255 : R));
      *(rgb_output++) = (unsigned char)((G < 0) ? 0 : ((G > 255) ? 255 : G));
      *(rgb_output++) = (unsigned char)((B < 0) ? 0 : ((B > 255) ? 255 : B));
    }
  }
  return 0;
}
```