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

```asm
<poly1305_mulmod>:
  endbr64
  push   %rbx
  mov    %rdi,%r9
  xor    %r8d,%r8d
  mov    %rsi,%rdi
  mov    $0x11,%r10d
  mov    $0xf,%r11d
  sub    $0x50,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  xchg   %ax,%ax
L108:
  mov    %r8d,%ebx
  mov    %r9,%rcx
  mov    %r8d,%eax
  xor    %esi,%esi
  nopl   0x0(%rax,%rax,1)
L34:
  mov    %eax,%edx
  add    $0x4,%rcx
  mov    (%rdi,%rdx,4),%edx
  imul   -0x4(%rcx),%edx
  add    %edx,%esi
  sub    $0x1,%eax
  jae    L34
  lea    0x1(%rbx),%edx
  sub    $0x1,%r10d
  je     L20
  mov    %r11d,%eax
  lea    0x11(%rbx),%ecx
  sub    %ebx,%eax
  cmp    $0x2,%eax
  jbe    L11
  movdqu 0x34(%rdi),%xmm4
  movdqu 0x4(%r9,%r8,4),%xmm2
  mov    %r10d,%eax
  shr    $0x2,%eax
  pshufd $0x1b,%xmm4,%xmm0
  psrlq  $0x20,%xmm2
  movdqa %xmm0,%xmm1
  pslld  $0x2,%xmm1
  paddd  %xmm0,%xmm1
  movdqu 0x4(%r9,%r8,4),%xmm0
  pslld  $0x6,%xmm1
  pmuludq %xmm1,%xmm0
  psrlq  $0x20,%xmm1
  pmuludq %xmm2,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  cmp    $0x1,%eax
  je     L15
  movdqu 0x24(%rdi),%xmm5
  movdqu 0x14(%r9,%r8,4),%xmm3
  pshufd $0x1b,%xmm5,%xmm2
  psrlq  $0x20,%xmm3
  movdqa %xmm2,%xmm1
  pslld  $0x2,%xmm1
  paddd  %xmm2,%xmm1
  movdqu 0x14(%r9,%r8,4),%xmm2
  pslld  $0x6,%xmm1
  pmuludq %xmm1,%xmm2
  psrlq  $0x20,%xmm1
  pmuludq %xmm3,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm2
  paddd  %xmm2,%xmm0
  cmp    $0x2,%eax
  je     L15
  movdqu 0x14(%rdi),%xmm6
  movdqu 0x24(%r9,%r8,4),%xmm3
  pshufd $0x1b,%xmm6,%xmm2
  psrlq  $0x20,%xmm3
  movdqa %xmm2,%xmm1
  pslld  $0x2,%xmm1
  paddd  %xmm2,%xmm1
  movdqu 0x24(%r9,%r8,4),%xmm2
  pslld  $0x6,%xmm1
  pmuludq %xmm1,%xmm2
  psrlq  $0x20,%xmm1
  pmuludq %xmm3,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm2
  paddd  %xmm2,%xmm0
  cmp    $0x4,%eax
  jne    L15
  movdqu 0x4(%rdi),%xmm7
  movdqu 0x34(%r9,%r8,4),%xmm3
  pshufd $0x1b,%xmm7,%xmm2
  psrlq  $0x20,%xmm3
  movdqa %xmm2,%xmm1
  pslld  $0x2,%xmm1
  paddd  %xmm2,%xmm1
  movdqu 0x34(%r9,%r8,4),%xmm2
  pslld  $0x6,%xmm1
  pmuludq %xmm1,%xmm2
  psrlq  $0x20,%xmm1
  pmuludq %xmm3,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm2
  paddd  %xmm2,%xmm0
L15:
  movdqa %xmm0,%xmm1
  psrldq $0x8,%xmm1
  paddd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x4,%xmm1
  paddd  %xmm1,%xmm0
  movd   %xmm0,%eax
  add    %eax,%esi
  mov    %r10d,%eax
  and    $0xfffffffc,%eax
  add    %eax,%edx
  cmp    %r10d,%eax
  je     L91
L11:
  mov    %ecx,%eax
  mov    %edx,%ebx
  sub    %edx,%eax
  mov    (%rdi,%rax,4),%eax
  imul   (%r9,%rbx,4),%eax
  lea    (%rax,%rax,4),%eax
  shl    $0x6,%eax
  add    %eax,%esi
  lea    0x1(%rdx),%eax
  cmp    $0x10,%edx
  je     L91
  mov    %ecx,%ebx
  sub    %eax,%ebx
  mov    (%rdi,%rbx,4),%ebx
  imul   (%r9,%rax,4),%ebx
  lea    (%rbx,%rbx,4),%eax
  shl    $0x6,%eax
  add    %eax,%esi
  lea    0x2(%rdx),%eax
  cmp    $0xf,%edx
  je     L91
  sub    %eax,%ecx
  mov    (%rdi,%rcx,4),%edx
  imul   (%r9,%rax,4),%edx
  lea    (%rdx,%rdx,4),%eax
  shl    $0x6,%eax
  add    %eax,%esi
L91:
  mov    %esi,(%rsp,%r8,4)
  add    $0x1,%r8
  jmp    L108
  nopl   0x0(%rax)
L20:
  movdqa (%rsp),%xmm7
  movdqa 0x10(%rsp),%xmm6
  mov    %esi,0x40(%rsp)
  mov    %esi,0x40(%r9)
  movups %xmm7,(%r9)
  movdqa 0x20(%rsp),%xmm7
  movups %xmm6,0x10(%r9)
  movdqa 0x30(%rsp),%xmm6
  movups %xmm7,0x20(%r9)
  movups %xmm6,0x30(%r9)
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L23
  add    $0x50,%rsp
  mov    %r9,%rdi
  pop    %rbx
  jmp    1070 <poly1305_squeeze@plt>
L23:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void poly1305_mulmod(unsigned int h[17], const unsigned int r[17]) {
  unsigned int hr[17];
  unsigned int i;
  unsigned int j;
  unsigned int u;
  for (i = 0; i < 17; ++i) {
    u = 0;
    for (j = 0; j <= i; ++j)
      u += h[j] * r[i - j];
    for (j = i + 1; j < 17; ++j)
      u += 320 * h[j] * r[i + 17 - j];
    hr[i] = u;
  }
  for (i = 0; i < 17; ++i)
    h[i] = hr[i];
  poly1305_squeeze(h);
}
```