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

```asm
<avg_422_downsample_r_g_b_vectors_n_save_previous_sse2>:
  endbr64
  push   %r15
  push   %r14
  mov    %rdx,%r14
  push   %r13
  mov    %rsi,%r13
  mov    $0xe,%esi
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  lea    0x8(%rbx),%r15
  sub    $0x8,%rsp
  mov    0x0(%r13),%rdi
  call   <_mm_srli_si128@plt>
  mov    (%rbx),%rdi
  mov    $0x10,%esi
  mov    %rax,%rbp
  call   <_mm_srli_epi32@plt>
  mov    $0x4,%esi
  mov    %rax,%rdi
  mov    %rax,%r12
  call   <_mm_slli_si128@plt>
  mov    %rbp,%rdi
  mov    %rax,%rsi
  call   <_mm_or_si128@plt>
  mov    %r12,%rsi
  mov    %rax,%rdi
  call   <_mm_avg_epu16@plt>
  mov    (%rbx),%rsi
  mov    %rax,%rdi
  call   <_mm_avg_epu16@plt>
  mov    %rbx,%rdi
  mov    %rax,%rbp
  call   <_mm_load_si128@plt>
  mov    %rbp,%rdi
  mov    $0xa0,%esi
  mov    %rax,0x0(%r13)
  call   <_mm_shufflehi_epi16@plt>
  mov    $0xa0,%esi
  mov    %rax,%rdi
  call   <_mm_shufflelo_epi16@plt>
  mov    $0xe,%esi
  mov    %rax,(%r14)
  mov    0x8(%r13),%rdi
  call   <_mm_srli_si128@plt>
  mov    0x8(%rbx),%rdi
  mov    $0x10,%esi
  mov    %rax,%rbp
  call   <_mm_srli_epi32@plt>
  mov    $0x4,%esi
  mov    %rax,%rdi
  mov    %rax,%r12
  call   <_mm_slli_si128@plt>
  mov    %rbp,%rdi
  mov    %rax,%rsi
  call   <_mm_or_si128@plt>
  mov    %r12,%rsi
  mov    %rax,%rdi
  call   <_mm_avg_epu16@plt>
  mov    0x8(%rbx),%rsi
  mov    %rax,%rdi
  call   <_mm_avg_epu16@plt>
  mov    %r15,%rdi
  lea    0x10(%rbx),%r15
  mov    %rax,%rbp
  call   <_mm_load_si128@plt>
  mov    %rbp,%rdi
  mov    $0xa0,%esi
  mov    %rax,0x8(%r13)
  call   <_mm_shufflehi_epi16@plt>
  mov    $0xa0,%esi
  mov    %rax,%rdi
  call   <_mm_shufflelo_epi16@plt>
  mov    $0xe,%esi
  mov    %rax,0x8(%r14)
  mov    0x10(%r13),%rdi
  call   <_mm_srli_si128@plt>
  mov    0x10(%rbx),%rdi
  mov    $0x10,%esi
  mov    %rax,%rbp
  call   <_mm_srli_epi32@plt>
  mov    $0x4,%esi
  mov    %rax,%rdi
  mov    %rax,%r12
  call   <_mm_slli_si128@plt>
  mov    %rbp,%rdi
  mov    %rax,%rsi
  call   <_mm_or_si128@plt>
  mov    %r12,%rsi
  mov    %rax,%rdi
  call   <_mm_avg_epu16@plt>
  mov    0x10(%rbx),%rsi
  mov    %rax,%rdi
  call   <_mm_avg_epu16@plt>
  mov    %r15,%rdi
  mov    %rax,%rbp
  call   <_mm_load_si128@plt>
  mov    %rbp,%rdi
  mov    $0xa0,%esi
  mov    %rax,0x10(%r13)
  call   <_mm_shufflehi_epi16@plt>
  mov    $0xa0,%esi
  mov    %rax,%rdi
  call   <_mm_shufflelo_epi16@plt>
  mov    %rax,0x10(%r14)
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
extern void avg_422_downsample_r_g_b_vectors_n_save_previous_sse2(__m128i *in_3_v16i_current_r_g_b_vectors, __m128i *in_3_v16i_previous_r_g_b_vectors, __m128i *out_3_v16i_avg_422_r_g_b_vectors) {
  __m128i scratch1 = {0x0LL, 0x0LL};
  __m128i scratch2 = {0x0LL, 0x0LL};
  __m128i scratch3 = {0x0LL, 0x0LL};
  (scratch1) = _mm_srli_si128(in_3_v16i_previous_r_g_b_vectors[0], 14);
  (scratch2) = _mm_srli_epi32(in_3_v16i_current_r_g_b_vectors[0], 16);
  (scratch3) = _mm_slli_si128((scratch2), 4);
  (scratch1) = _mm_or_si128((scratch1), (scratch3));
  (scratch1) = _mm_avg_epu16((scratch1), (scratch2));
  (scratch1) = _mm_avg_epu16((scratch1), in_3_v16i_current_r_g_b_vectors[0]);
  in_3_v16i_previous_r_g_b_vectors[0] = _mm_load_si128(&in_3_v16i_current_r_g_b_vectors[0]);
  (scratch1) = _mm_shufflehi_epi16((scratch1), 0xA0);
  out_3_v16i_avg_422_r_g_b_vectors[0] = _mm_shufflelo_epi16((scratch1), 0xA0);
  (scratch1) = _mm_srli_si128(in_3_v16i_previous_r_g_b_vectors[1], 14);
  (scratch2) = _mm_srli_epi32(in_3_v16i_current_r_g_b_vectors[1], 16);
  (scratch3) = _mm_slli_si128((scratch2), 4);
  (scratch1) = _mm_or_si128((scratch1), (scratch3));
  (scratch1) = _mm_avg_epu16((scratch1), (scratch2));
  (scratch1) = _mm_avg_epu16((scratch1), in_3_v16i_current_r_g_b_vectors[1]);
  in_3_v16i_previous_r_g_b_vectors[1] = _mm_load_si128(&in_3_v16i_current_r_g_b_vectors[1]);
  (scratch1) = _mm_shufflehi_epi16((scratch1), 0xA0);
  out_3_v16i_avg_422_r_g_b_vectors[1] = _mm_shufflelo_epi16((scratch1), 0xA0);
  (scratch1) = _mm_srli_si128(in_3_v16i_previous_r_g_b_vectors[2], 14);
  (scratch2) = _mm_srli_epi32(in_3_v16i_current_r_g_b_vectors[2], 16);
  (scratch3) = _mm_slli_si128((scratch2), 4);
  (scratch1) = _mm_or_si128((scratch1), (scratch3));
  (scratch1) = _mm_avg_epu16((scratch1), (scratch2));
  (scratch1) = _mm_avg_epu16((scratch1), in_3_v16i_current_r_g_b_vectors[2]);
  in_3_v16i_previous_r_g_b_vectors[2] = _mm_load_si128(&in_3_v16i_current_r_g_b_vectors[2]);
  (scratch1) = _mm_shufflehi_epi16((scratch1), 0xA0);
  out_3_v16i_avg_422_r_g_b_vectors[2] = _mm_shufflelo_epi16((scratch1), 0xA0);
}
```