user: Demonstrate the C code that generates the assembly output below:

```asm
<round_shift_8x8>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    $0x10,%edi
  call   <_mm_set1_epi16@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi16@plt>
  mov    -0x30(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x4(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x8(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x10(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x14(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x18(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x1c(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x5,%esi
  mov    %eax,%edi
  call   <_mm_srai_epi16@plt>
  mov    -0x30(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x30(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x4(%rdx),%rbx
  mov    $0x5,%esi
  mov    %eax,%edi
  call   <_mm_srai_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x8(%rdx),%rbx
  mov    $0x5,%esi
  mov    %eax,%edi
  call   <_mm_srai_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  mov    $0x5,%esi
  mov    %eax,%edi
  call   <_mm_srai_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x10(%rdx),%rbx
  mov    $0x5,%esi
  mov    %eax,%edi
  call   <_mm_srai_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x14(%rdx),%rbx
  mov    $0x5,%esi
  mov    %eax,%edi
  call   <_mm_srai_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x18(%rdx),%rbx
  mov    $0x5,%esi
  mov    %eax,%edi
  call   <_mm_srai_epi16@plt>
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  mov    -0x30(%rbp),%rdx
  lea    0x1c(%rdx),%rbx
  mov    $0x5,%esi
  mov    %eax,%edi
  call   <_mm_srai_epi16@plt>
  mov    %eax,(%rbx)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void round_shift_8x8(const __m128i *const in, __m128i *const out) {
  const __m128i final_rounding = _mm_set1_epi16(1 << 4);
  out[0] = _mm_add_epi16(in[0], final_rounding);
  out[1] = _mm_add_epi16(in[1], final_rounding);
  out[2] = _mm_add_epi16(in[2], final_rounding);
  out[3] = _mm_add_epi16(in[3], final_rounding);
  out[4] = _mm_add_epi16(in[4], final_rounding);
  out[5] = _mm_add_epi16(in[5], final_rounding);
  out[6] = _mm_add_epi16(in[6], final_rounding);
  out[7] = _mm_add_epi16(in[7], final_rounding);
  out[0] = _mm_srai_epi16(out[0], 5);
  out[1] = _mm_srai_epi16(out[1], 5);
  out[2] = _mm_srai_epi16(out[2], 5);
  out[3] = _mm_srai_epi16(out[3], 5);
  out[4] = _mm_srai_epi16(out[4], 5);
  out[5] = _mm_srai_epi16(out[5], 5);
  out[6] = _mm_srai_epi16(out[6], 5);
  out[7] = _mm_srai_epi16(out[7], 5);
}
```