user: 这段汇编代码用C语言表示是什么样的：

```asm
<yuv400pto422>:
  endbr64
  mov    %rsi,%rcx
  movslq %edx,%rsi
  lea    -0x10(%rdx,%rdx,1),%edx
  mov    %rdi,%rax
  movslq %edx,%rdx
  add    %rcx,%rsi
  lea    0x100(%rdi),%r9
  lea    0x10(%rdx),%r8
  xor    %edx,%edx
L16:
  mov    (%rax),%edi
  mov    $0xffffffff,%r10d
  cmp    $0xff,%edi
  jg     L2
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L2:
  mov    %r10b,(%rcx)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x1(%rcx)
  mov    0x4(%rax),%edi
  cmp    $0xff,%edi
  jg     L105
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L105:
  mov    %r10b,0x2(%rcx)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x3(%rcx)
  mov    0x20(%rax),%edi
  cmp    $0xff,%edi
  jg     L57
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L57:
  mov    %r10b,(%rsi)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x1(%rsi)
  mov    0x24(%rax),%edi
  cmp    $0xff,%edi
  jg     L55
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L55:
  mov    %r10b,0x2(%rsi)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x3(%rsi)
  mov    0x8(%rax),%edi
  cmp    $0xff,%edi
  jg     L41
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L41:
  mov    %r10b,0x4(%rcx)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x5(%rcx)
  mov    0xc(%rax),%edi
  cmp    $0xff,%edi
  jg     L152
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L152:
  mov    %r10b,0x6(%rcx)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x7(%rcx)
  mov    0x28(%rax),%edi
  cmp    $0xff,%edi
  jg     L162
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L162:
  mov    %r10b,0x4(%rsi)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x5(%rsi)
  mov    0x2c(%rax),%edi
  cmp    $0xff,%edi
  jg     L156
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L156:
  mov    %r10b,0x6(%rsi)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x7(%rsi)
  mov    0x10(%rax),%edi
  cmp    $0xff,%edi
  jg     L62
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L62:
  mov    %r10b,0x8(%rcx)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x9(%rcx)
  mov    0x14(%rax),%edi
  cmp    $0xff,%edi
  jg     L27
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L27:
  mov    %r10b,0xa(%rcx)
  mov    $0xffffffff,%r10d
  movb   $0x80,0xb(%rcx)
  mov    0x30(%rax),%edi
  cmp    $0xff,%edi
  jg     L95
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L95:
  mov    %r10b,0x8(%rsi)
  mov    $0xffffffff,%r10d
  movb   $0x80,0x9(%rsi)
  mov    0x34(%rax),%edi
  cmp    $0xff,%edi
  jg     L87
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L87:
  mov    %r10b,0xa(%rsi)
  mov    $0xffffffff,%r10d
  movb   $0x80,0xb(%rsi)
  mov    0x18(%rax),%edi
  cmp    $0xff,%edi
  jg     L121
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L121:
  mov    %r10b,0xc(%rcx)
  mov    $0xffffffff,%r10d
  movb   $0x80,0xd(%rcx)
  mov    0x1c(%rax),%edi
  cmp    $0xff,%edi
  jg     L141
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L141:
  mov    %r10b,0xe(%rcx)
  mov    $0xffffffff,%r10d
  movb   $0x80,0xf(%rcx)
  mov    0x38(%rax),%edi
  cmp    $0xff,%edi
  jg     L110
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L110:
  mov    %r10b,0xc(%rsi)
  mov    $0xffffffff,%r10d
  movb   $0x80,0xd(%rsi)
  mov    0x3c(%rax),%edi
  cmp    $0xff,%edi
  jg     L28
  test   %edi,%edi
  mov    %edi,%r10d
  cmovs  %edx,%r10d
L28:
  add    $0x40,%rax
  mov    %r10b,0xe(%rsi)
  add    %r8,%rcx
  movb   $0x80,0xf(%rsi)
  add    %r8,%rsi
  cmp    %r9,%rax
  jne    L16
  ret
```

assistant: ```c
void yuv400pto422(int *out, unsigned char *pic, int width) {
  int j, k;
  unsigned char *pic0, *pic1;
  int *outy;
  int outy1 = 0;
  int outy2 = 8;
  pic0 = pic;
  pic1 = pic + width;
  outy = out;
  for (j = 0; j < 4; j++) {
    for (k = 0; k < 4; k++) {
      *pic0++ = (unsigned char)(((outy[outy1]) > 0xFF) ? 0xff : (((outy[outy1]) < 0) ? 0 : (outy[outy1])));
      *pic0++ = 128;
      *pic0++ = (unsigned char)(((outy[outy1 + 1]) > 0xFF) ? 0xff : (((outy[outy1 + 1]) < 0) ? 0 : (outy[outy1 + 1])));
      *pic0++ = 128;
      *pic1++ = (unsigned char)(((outy[outy2]) > 0xFF) ? 0xff : (((outy[outy2]) < 0) ? 0 : (outy[outy2])));
      *pic1++ = 128;
      *pic1++ = (unsigned char)(((outy[outy2 + 1]) > 0xFF) ? 0xff : (((outy[outy2 + 1]) < 0) ? 0 : (outy[outy2 + 1])));
      *pic1++ = 128;
      outy1 += 2;
      outy2 += 2;
    }
    outy += 16;
    outy1 = 0;
    outy2 = 8;
    pic0 += 2 * (width - 8);
    pic1 += 2 * (width - 8);
  }
}
```