user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<RTjpeg_quant>:
  endbr64
  lea    0x4(%rsi),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  cmp    $0x8,%rax
  jbe    L9
  movdqu (%rsi),%xmm2
  movdqu (%rdi),%xmm0
  movdqu (%rsi),%xmm4
  movdqu (%rdi),%xmm1
  psrlq  $0x20,%xmm2
  psrlq  $0x20,%xmm0
  pmuludq %xmm4,%xmm1
  pmuludq %xmm2,%xmm0
  movdqu 0x10(%rdi),%xmm2
  psrlq  $0x20,%xmm2
  pshufd $0x8,%xmm0,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm0,%xmm1
  movdqa D6(%rip),%xmm0
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  movups %xmm1,(%rdi)
  movdqu 0x10(%rsi),%xmm3
  movdqu 0x10(%rsi),%xmm5
  movdqu 0x10(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm5,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0x20(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0x10(%rdi)
  movdqu 0x20(%rsi),%xmm3
  movdqu 0x20(%rsi),%xmm6
  movdqu 0x20(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm6,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0x30(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0x20(%rdi)
  movdqu 0x30(%rsi),%xmm3
  movdqu 0x30(%rsi),%xmm7
  movdqu 0x30(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm7,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0x40(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0x30(%rdi)
  movdqu 0x40(%rsi),%xmm3
  movdqu 0x40(%rsi),%xmm4
  movdqu 0x40(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm4,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0x50(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0x40(%rdi)
  movdqu 0x50(%rsi),%xmm3
  movdqu 0x50(%rsi),%xmm5
  movdqu 0x50(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm5,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  movups %xmm1,0x50(%rdi)
  movdqu 0x60(%rdi),%xmm1
  movdqu 0x60(%rsi),%xmm6
  movdqu 0x60(%rsi),%xmm3
  movdqu 0x60(%rdi),%xmm2
  pmuludq %xmm6,%xmm1
  psrlq  $0x20,%xmm3
  psrlq  $0x20,%xmm2
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0x70(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0x60(%rdi)
  movdqu 0x70(%rsi),%xmm3
  movdqu 0x70(%rsi),%xmm7
  movdqu 0x70(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm7,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0x80(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0x70(%rdi)
  movdqu 0x80(%rsi),%xmm3
  movdqu 0x80(%rsi),%xmm4
  movdqu 0x80(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm4,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0x90(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0x80(%rdi)
  movdqu 0x90(%rsi),%xmm3
  movdqu 0x90(%rsi),%xmm5
  movdqu 0x90(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm5,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0xa0(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0x90(%rdi)
  movdqu 0xa0(%rsi),%xmm3
  movdqu 0xa0(%rsi),%xmm6
  movdqu 0xa0(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm6,%xmm1
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0xb0(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0xa0(%rdi)
  movdqu 0xb0(%rsi),%xmm3
  movdqu 0xb0(%rdi),%xmm1
  movdqu 0xb0(%rsi),%xmm7
  psrlq  $0x20,%xmm3
  pmuludq %xmm3,%xmm2
  pmuludq %xmm7,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm2,%xmm1
  movdqu 0xc0(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0xb0(%rdi)
  movdqu 0xc0(%rdi),%xmm1
  movdqu 0xc0(%rsi),%xmm4
  movdqu 0xc0(%rsi),%xmm3
  pmuludq %xmm4,%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  movdqu 0xd0(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0xc0(%rdi)
  movdqu 0xd0(%rsi),%xmm3
  movdqu 0xd0(%rsi),%xmm5
  movdqu 0xd0(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm3,%xmm2
  pmuludq %xmm5,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm2,%xmm1
  movdqu 0xe0(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0xd0(%rdi)
  movdqu 0xe0(%rsi),%xmm3
  movdqu 0xe0(%rsi),%xmm6
  movdqu 0xe0(%rdi),%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm3,%xmm2
  pmuludq %xmm6,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm2,%xmm1
  movdqu 0xf0(%rdi),%xmm2
  paddd  %xmm0,%xmm1
  psrad  $0x10,%xmm1
  psrlq  $0x20,%xmm2
  movups %xmm1,0xe0(%rdi)
  movdqu 0xf0(%rdi),%xmm1
  movdqu 0xf0(%rsi),%xmm3
  pmuludq %xmm3,%xmm1
  psrlq  $0x20,%xmm3
  pmuludq %xmm3,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm1
  paddd  %xmm1,%xmm0
  psrad  $0x10,%xmm0
  movups %xmm0,0xf0(%rdi)
  ret
L9:
  xor    %edx,%edx
  xchg   %ax,%ax
L11:
  mov    (%rdi,%rdx,1),%eax
  imul   (%rsi,%rdx,1),%eax
  add    $0x7fff,%eax
  sar    $0x10,%eax
  mov    %eax,(%rdi,%rdx,1)
  add    $0x4,%rdx
  cmp    $0x100,%rdx
  jne    L11
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D6
data_type: byte[16]

tool: {"D6": [0xff,0x7f,0x00,0x00,0xff,0x7f,0x00,0x00,0xff,0x7f,0x00,0x00,0xff,0x7f,0x00,0x00]}

assistant: ```c
void RTjpeg_quant(int16_t *block, int32_t *qtbl) {
  int i;
  for (i = 0; i < 64; i++)
    block[i] = (int16_t)((block[i] * qtbl[i] + 32767) >> 16);
}
```