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

```asm
<VP8PlanarTo24b_SSE2>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %rdi,0x8(%rsp)
  mov    %rsi,%r15
  mov    %rdx,0x10(%rsp)
  mov    %rcx,%r14
  mov    %r8,%r12
  mov    %r9,%r13
  mov    $0xff,%edi
  call   <_mm_set1_epi16@plt>
  mov    %eax,%ebx
  mov    %eax,%esi
  mov    (%r15),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    0x8(%rsp),%rax
  mov    (%rax),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x1c(%rsp)
  mov    %ebx,%esi
  mov    (%r14),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    0x10(%rsp),%rcx
  mov    (%rcx),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x20(%rsp)
  mov    %ebx,%esi
  mov    0x0(%r13),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    (%r12),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,%ebp
  mov    $0x8,%esi
  mov    (%r15),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x8(%rsp),%rdx
  mov    (%rdx),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x24(%rsp)
  mov    $0x8,%esi
  mov    (%r14),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x10(%rsp),%rcx
  mov    (%rcx),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x28(%rsp)
  mov    $0x8,%esi
  mov    0x0(%r13),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    (%r12),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x2c(%rsp)
  mov    $0xff,%edi
  call   <_mm_set1_epi16@plt>
  mov    %eax,%ebx
  mov    %eax,%esi
  mov    0x20(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,0x30(%rsp)
  mov    %ebx,%esi
  mov    0x1c(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    0x30(%rsp),%esi
  call   <_mm_packus_epi16@plt>
  mov    0x8(%rsp),%rdx
  mov    %eax,(%rdx)
  mov    %ebx,%esi
  mov    0x24(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,0x30(%rsp)
  mov    %ebx,%esi
  mov    %ebp,%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    0x30(%rsp),%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,(%r15)
  mov    %ebx,%esi
  mov    0x2c(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,0x30(%rsp)
  mov    %ebx,%esi
  mov    0x28(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    0x30(%rsp),%esi
  call   <_mm_packus_epi16@plt>
  mov    0x10(%rsp),%rcx
  mov    %eax,(%rcx)
  mov    $0x8,%esi
  mov    0x20(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x1c(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,(%r14)
  mov    $0x8,%esi
  mov    0x24(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    %ebp,%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,(%r12)
  mov    $0x8,%esi
  mov    0x2c(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x28(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x0(%r13)
  mov    $0xff,%edi
  call   <_mm_set1_epi16@plt>
  mov    %eax,%ebx
  mov    %eax,%esi
  mov    (%r15),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    0x8(%rsp),%rdx
  mov    (%rdx),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x1c(%rsp)
  mov    %ebx,%esi
  mov    (%r14),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    0x10(%rsp),%rcx
  mov    (%rcx),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x20(%rsp)
  mov    %ebx,%esi
  mov    0x0(%r13),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    (%r12),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x24(%rsp)
  mov    $0x8,%esi
  mov    (%r15),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x8(%rsp),%rdx
  mov    (%rdx),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x28(%rsp)
  mov    $0x8,%esi
  mov    (%r14),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x10(%rsp),%rcx
  mov    (%rcx),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x2c(%rsp)
  mov    $0x8,%esi
  mov    0x0(%r13),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    (%r12),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x30(%rsp)
  mov    $0xff,%edi
  call   <_mm_set1_epi16@plt>
  mov    %eax,%ebx
  mov    %eax,%esi
  mov    0x20(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    0x1c(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x34(%rsp)
  mov    %ebx,%esi
  mov    0x28(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    0x24(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x38(%rsp)
  mov    %ebx,%esi
  mov    0x30(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%ebp
  mov    %ebx,%esi
  mov    0x2c(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %ebp,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x3c(%rsp)
  mov    $0x8,%esi
  mov    0x20(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x1c(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x1c(%rsp)
  mov    $0x8,%esi
  mov    0x28(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x24(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,%ebp
  mov    $0x8,%esi
  mov    0x30(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x2c(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x20(%rsp)
  mov    $0xff,%edi
  call   <_mm_set1_epi16@plt>
  mov    %eax,%ebx
  mov    %eax,%esi
  mov    0x38(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,0x24(%rsp)
  mov    %ebx,%esi
  mov    0x34(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    0x24(%rsp),%esi
  call   <_mm_packus_epi16@plt>
  mov    0x8(%rsp),%rdx
  mov    %eax,(%rdx)
  mov    %ebx,%esi
  mov    0x1c(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,0x8(%rsp)
  mov    %ebx,%esi
  mov    0x3c(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    0x8(%rsp),%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,(%r15)
  mov    %ebx,%esi
  mov    0x20(%rsp),%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%r15d
  mov    %ebx,%esi
  mov    %ebp,%edi
  call   <_mm_and_si128@plt>
  mov    %eax,%edi
  mov    %r15d,%esi
  call   <_mm_packus_epi16@plt>
  mov    0x10(%rsp),%rcx
  mov    %eax,(%rcx)
  mov    $0x8,%esi
  mov    0x38(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x34(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,(%r14)
  mov    $0x8,%esi
  mov    0x1c(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    0x3c(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,(%r12)
  mov    $0x8,%esi
  mov    0x20(%rsp),%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%ebx
  mov    $0x8,%esi
  mov    %ebp,%edi
  call   <_mm_srli_epi16@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <_mm_packus_epi16@plt>
  mov    %eax,0x0(%r13)
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void VP8PlanarTo24b_SSE2(__m128i *const in0, __m128i *const in1, __m128i *const in2, __m128i *const in3, __m128i *const in4, __m128i *const in5) {
  __m128i tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
  do {
    const __m128i v_mask = _mm_set1_epi16(0x00ff);
    (tmp0) = _mm_packus_epi16(_mm_and_si128((*in0), v_mask), _mm_and_si128((*in1), v_mask));
    (tmp1) = _mm_packus_epi16(_mm_and_si128((*in2), v_mask), _mm_and_si128((*in3), v_mask));
    (tmp2) = _mm_packus_epi16(_mm_and_si128((*in4), v_mask), _mm_and_si128((*in5), v_mask));
    (tmp3) = _mm_packus_epi16(_mm_srli_epi16((*in0), 8), _mm_srli_epi16((*in1), 8));
    (tmp4) = _mm_packus_epi16(_mm_srli_epi16((*in2), 8), _mm_srli_epi16((*in3), 8));
    (tmp5) = _mm_packus_epi16(_mm_srli_epi16((*in4), 8), _mm_srli_epi16((*in5), 8));
  } while (0);
  do {
    const __m128i v_mask = _mm_set1_epi16(0x00ff);
    (*in0) = _mm_packus_epi16(_mm_and_si128((tmp0), v_mask), _mm_and_si128((tmp1), v_mask));
    (*in1) = _mm_packus_epi16(_mm_and_si128((tmp2), v_mask), _mm_and_si128((tmp3), v_mask));
    (*in2) = _mm_packus_epi16(_mm_and_si128((tmp4), v_mask), _mm_and_si128((tmp5), v_mask));
    (*in3) = _mm_packus_epi16(_mm_srli_epi16((tmp0), 8), _mm_srli_epi16((tmp1), 8));
    (*in4) = _mm_packus_epi16(_mm_srli_epi16((tmp2), 8), _mm_srli_epi16((tmp3), 8));
    (*in5) = _mm_packus_epi16(_mm_srli_epi16((tmp4), 8), _mm_srli_epi16((tmp5), 8));
  } while (0);
  do {
    const __m128i v_mask = _mm_set1_epi16(0x00ff);
    (tmp0) = _mm_packus_epi16(_mm_and_si128((*in0), v_mask), _mm_and_si128((*in1), v_mask));
    (tmp1) = _mm_packus_epi16(_mm_and_si128((*in2), v_mask), _mm_and_si128((*in3), v_mask));
    (tmp2) = _mm_packus_epi16(_mm_and_si128((*in4), v_mask), _mm_and_si128((*in5), v_mask));
    (tmp3) = _mm_packus_epi16(_mm_srli_epi16((*in0), 8), _mm_srli_epi16((*in1), 8));
    (tmp4) = _mm_packus_epi16(_mm_srli_epi16((*in2), 8), _mm_srli_epi16((*in3), 8));
    (tmp5) = _mm_packus_epi16(_mm_srli_epi16((*in4), 8), _mm_srli_epi16((*in5), 8));
  } while (0);
  {
    __m128i out0, out1, out2, out3, out4, out5;
    do {
      const __m128i v_mask = _mm_set1_epi16(0x00ff);
      (out0) = _mm_packus_epi16(_mm_and_si128((tmp0), v_mask), _mm_and_si128((tmp1), v_mask));
      (out1) = _mm_packus_epi16(_mm_and_si128((tmp2), v_mask), _mm_and_si128((tmp3), v_mask));
      (out2) = _mm_packus_epi16(_mm_and_si128((tmp4), v_mask), _mm_and_si128((tmp5), v_mask));
      (out3) = _mm_packus_epi16(_mm_srli_epi16((tmp0), 8), _mm_srli_epi16((tmp1), 8));
      (out4) = _mm_packus_epi16(_mm_srli_epi16((tmp2), 8), _mm_srli_epi16((tmp3), 8));
      (out5) = _mm_packus_epi16(_mm_srli_epi16((tmp4), 8), _mm_srli_epi16((tmp5), 8));
    } while (0);
    do {
      const __m128i v_mask = _mm_set1_epi16(0x00ff);
      (*in0) = _mm_packus_epi16(_mm_and_si128((out0), v_mask), _mm_and_si128((out1), v_mask));
      (*in1) = _mm_packus_epi16(_mm_and_si128((out2), v_mask), _mm_and_si128((out3), v_mask));
      (*in2) = _mm_packus_epi16(_mm_and_si128((out4), v_mask), _mm_and_si128((out5), v_mask));
      (*in3) = _mm_packus_epi16(_mm_srli_epi16((out0), 8), _mm_srli_epi16((out1), 8));
      (*in4) = _mm_packus_epi16(_mm_srli_epi16((out2), 8), _mm_srli_epi16((out3), 8));
      (*in5) = _mm_packus_epi16(_mm_srli_epi16((out4), 8), _mm_srli_epi16((out5), 8));
    } while (0);
  }
}
```