user: Converte this assembly snippet into its equivalent C code:

```asm
<IQuantize>:
  endbr64
  lea    0x4(%rsi),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  cmp    $0x8,%rax
  jbe    L0
  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
L0:
  xor    %eax,%eax
  cs nopw 0x0(%rax,%rax,1)
L15:
  mov    (%rdi,%rax,1),%edx
  imul   (%rsi,%rax,1),%edx
  mov    %edx,(%rdi,%rax,1)
  add    $0x4,%rax
  cmp    $0x100,%rax
  jne    L15
  ret
```

assistant: ```c
void IQuantize(int *matrix, int *qmatrix) {
  int *mptr;
  for (mptr = matrix; mptr < matrix + 64; mptr++) {
    *mptr = *mptr * (*qmatrix);
    qmatrix++;
  }
}
```