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

```asm
<IQuantize>:
  endbr64
  test   %rsi,%rsi
  je     L5
  lea    0x4(%rsi),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  cmp    $0x8,%rax
  jbe    L18
  movdqu (%rsi),%xmm2
  movdqu (%rdi),%xmm0
  movdqu (%rsi),%xmm3
  movdqu (%rdi),%xmm1
  psrlq  $0x20,%xmm2
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0x10(%rdi),%xmm0
  movups %xmm1,(%rdi)
  movdqu 0x10(%rsi),%xmm2
  movdqu 0x10(%rsi),%xmm4
  movdqu 0x10(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm4,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0x20(%rdi),%xmm0
  movups %xmm1,0x10(%rdi)
  movdqu 0x20(%rsi),%xmm2
  movdqu 0x20(%rsi),%xmm5
  movdqu 0x20(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm5,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0x30(%rdi),%xmm0
  movups %xmm1,0x20(%rdi)
  movdqu 0x30(%rsi),%xmm2
  movdqu 0x30(%rsi),%xmm6
  movdqu 0x30(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm6,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0x40(%rdi),%xmm0
  movups %xmm1,0x30(%rdi)
  movdqu 0x40(%rsi),%xmm2
  movdqu 0x40(%rsi),%xmm7
  movdqu 0x40(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm7,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0x50(%rdi),%xmm0
  movups %xmm1,0x40(%rdi)
  movdqu 0x50(%rsi),%xmm2
  movdqu 0x50(%rsi),%xmm3
  movdqu 0x50(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm3,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movups %xmm1,0x50(%rdi)
  movdqu 0x60(%rdi),%xmm1
  movdqu 0x60(%rsi),%xmm4
  movdqu 0x60(%rdi),%xmm0
  movdqu 0x60(%rsi),%xmm2
  pmuludq %xmm4,%xmm1
  psrlq  $0x20,%xmm2
  psrlq  $0x20,%xmm0
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0x70(%rdi),%xmm0
  movups %xmm1,0x60(%rdi)
  movdqu 0x70(%rsi),%xmm2
  movdqu 0x70(%rsi),%xmm5
  movdqu 0x70(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm5,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0x80(%rdi),%xmm0
  movups %xmm1,0x70(%rdi)
  movdqu 0x80(%rsi),%xmm2
  movdqu 0x80(%rsi),%xmm6
  movdqu 0x80(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm6,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0x90(%rdi),%xmm0
  movups %xmm1,0x80(%rdi)
  movdqu 0x90(%rsi),%xmm2
  movdqu 0x90(%rsi),%xmm7
  movdqu 0x90(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm7,%xmm1
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqu 0xa0(%rdi),%xmm0
  movups %xmm1,0x90(%rdi)
  movdqu 0xa0(%rsi),%xmm2
  movdqu 0xa0(%rsi),%xmm3
  movdqu 0xa0(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm2,%xmm0
  pmuludq %xmm3,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm0,%xmm1
  movdqu 0xb0(%rdi),%xmm0
  movups %xmm1,0xa0(%rdi)
  movdqu 0xb0(%rsi),%xmm2
  movdqu 0xb0(%rdi),%xmm1
  movdqu 0xb0(%rsi),%xmm4
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm2,%xmm0
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm0,%xmm1
  movdqu 0xc0(%rdi),%xmm0
  movups %xmm1,0xb0(%rdi)
  movdqu 0xc0(%rsi),%xmm2
  movdqu 0xc0(%rdi),%xmm1
  movdqu 0xc0(%rsi),%xmm5
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm2,%xmm0
  pmuludq %xmm5,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm0,%xmm1
  movups %xmm1,0xc0(%rdi)
  movdqu 0xd0(%rsi),%xmm2
  movdqu 0xd0(%rdi),%xmm0
  movdqu 0xd0(%rsi),%xmm6
  movdqu 0xd0(%rdi),%xmm1
  psrlq  $0x20,%xmm2
  psrlq  $0x20,%xmm0
  pmuludq %xmm2,%xmm0
  pmuludq %xmm6,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm0,%xmm1
  movdqu 0xe0(%rdi),%xmm0
  movups %xmm1,0xd0(%rdi)
  movdqu 0xe0(%rsi),%xmm2
  movdqu 0xe0(%rsi),%xmm7
  movdqu 0xe0(%rdi),%xmm1
  psrlq  $0x20,%xmm0
  psrlq  $0x20,%xmm2
  pmuludq %xmm2,%xmm0
  pmuludq %xmm7,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm0,%xmm1
  movdqu 0xf0(%rdi),%xmm0
  movups %xmm1,0xe0(%rdi)
  movdqu 0xf0(%rdi),%xmm1
  movdqu 0xf0(%rsi),%xmm2
  psrlq  $0x20,%xmm0
  pmuludq %xmm2,%xmm1
  psrlq  $0x20,%xmm2
  pmuludq %xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movups %xmm1,0xf0(%rdi)
  ret
L18:
  xor    %eax,%eax
  nop
L23:
  mov    (%rdi,%rax,1),%edx
  imul   (%rsi,%rax,1),%edx
  mov    %edx,(%rdi,%rax,1)
  add    $0x4,%rax
  cmp    $0x100,%rax
  jne    L23
  ret
L5:
  push   %rax
  mov    $0x13e,%ecx
  xor    %eax,%eax
  lea    D6(%rip),%rdx
  lea    D5(%rip),%rsi
  lea    D32(%rip),%rdi
  call   <printf@plt>
  lea    D25(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
```

tool_calls: name: parse_data
arguments: data_label: D5
datatype: string
name: parse_data
arguments: data_label: D32
datatype: string
name: parse_data
arguments: data_label: D25
datatype: string

tool: D5: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/aaalgo/ljpeg/refs/heads/master/jpegdir/transform.c

tool: D32: F>%s:R>%s:L>%d: 

tool: D25: No quantization matrix specified!

assistant: ```c
void IQuantize(matrix, qmatrix) int *matrix;
int *qmatrix;
{
  static char RoutineName[] = "IQuantize";
  int *mptr;
  if (!qmatrix) {
    printf("F>%s:R>%s:L>%d: ", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/aaalgo/ljpeg/refs/heads/master/jpegdir/transform.c", RoutineName, 318);
    printf("No quantization matrix specified!\n");
    exit(1);
  }
  for (mptr = matrix; mptr < matrix + 64; mptr++) {
    *mptr = *mptr * (*qmatrix);
    qmatrix++;
  }
}
```