user: 请从给定的汇编指令推导出C源代码:

```asm
<in_chksum_udp6>:
  endbr64
  push   %rbx
  mov    %rdi,%rcx
  mov    %edx,%edi
  xor    %edx,%edx
  lea    -0x8(%rdi),%r9d
  sub    $0x8,%rsp
  movzwl 0x2(%rsi),%r8d
  movzwl (%rsi),%eax
  add    %r8d,%eax
  movzwl 0x4(%rsi),%r8d
  add    %r8d,%eax
  movzwl 0x6(%rsi),%r8d
  add    %r8d,%eax
  movzwl (%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x2(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x4(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x6(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x8(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0xa(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0xc(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0xe(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x10(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x12(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x14(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x16(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x18(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x1a(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x1c(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x1e(%rcx),%r8d
  add    %r8d,%eax
  movzwl 0x20(%rcx),%r8d
  movzwl 0x22(%rcx),%ecx
  add    %r8d,%eax
  lea    0x8(%rsi),%r8
  add    %eax,%ecx
  cmp    $0x1f,%r9d
  jle    L112
  sub    $0x28,%edi
  mov    %r8,%rax
  mov    %edi,%r11d
  shr    $0x5,%r11d
  lea    0x1(%r11),%r10d
  cmp    $0xdf,%edi
  jbe    L104
  mov    %r10d,%ebx
  pxor   %xmm3,%xmm3
  shr    $0x3,%ebx
  movaps %xmm3,-0x68(%rsp)
  sub    $0x1,%ebx
  shl    $0x8,%rbx
  lea    0x108(%rsi,%rbx,1),%rsi
  nopl   (%rax)
L49:
  movdqu (%rax),%xmm15
  movdqu 0x10(%rax),%xmm6
  add    $0x100,%rax
  movdqu -0xe0(%rax),%xmm14
  movdqu -0x80(%rax),%xmm12
  movdqa %xmm15,%xmm11
  movdqa %xmm15,%xmm0
  movdqu -0xd0(%rax),%xmm9
  punpcklwd %xmm6,%xmm15
  punpcklwd %xmm6,%xmm11
  punpckhwd %xmm6,%xmm0
  movdqa %xmm14,%xmm6
  movdqu -0xc0(%rax),%xmm1
  movdqa %xmm11,%xmm10
  punpcklwd %xmm9,%xmm6
  punpcklwd %xmm0,%xmm11
  movdqu -0xb0(%rax),%xmm8
  punpckhwd %xmm0,%xmm10
  punpcklwd %xmm0,%xmm15
  movdqa %xmm14,%xmm0
  movdqu -0xa0(%rax),%xmm13
  punpckhwd %xmm10,%xmm15
  punpckhwd %xmm9,%xmm0
  punpcklwd %xmm10,%xmm11
  movdqu -0x90(%rax),%xmm4
  movdqa %xmm6,%xmm10
  punpcklwd %xmm9,%xmm14
  punpcklwd %xmm0,%xmm6
  movdqu -0x70(%rax),%xmm5
  punpckhwd %xmm0,%xmm10
  punpcklwd %xmm0,%xmm14
  movdqa %xmm1,%xmm0
  movdqu -0x60(%rax),%xmm3
  punpcklwd %xmm10,%xmm6
  punpckhwd %xmm10,%xmm14
  movdqa %xmm1,%xmm10
  movdqu -0x40(%rax),%xmm7
  punpckhwd %xmm8,%xmm0
  punpcklwd %xmm8,%xmm10
  punpcklwd %xmm8,%xmm1
  movdqu -0x20(%rax),%xmm2
  movdqa %xmm10,%xmm9
  punpcklwd %xmm0,%xmm1
  punpcklwd %xmm0,%xmm10
  movaps %xmm14,-0x58(%rsp)
  punpckhwd %xmm0,%xmm9
  movdqa %xmm1,%xmm0
  movdqu -0x50(%rax),%xmm1
  punpcklwd %xmm9,%xmm10
  punpckhwd %xmm9,%xmm0
  movdqa %xmm13,%xmm9
  movaps %xmm0,-0x78(%rsp)
  punpcklwd %xmm4,%xmm9
  movdqa %xmm13,%xmm0
  punpcklwd %xmm4,%xmm13
  punpckhwd %xmm4,%xmm0
  movdqa %xmm9,%xmm8
  movdqa %xmm12,%xmm4
  punpckhwd %xmm0,%xmm8
  punpcklwd %xmm0,%xmm9
  punpcklwd %xmm0,%xmm13
  movdqa %xmm12,%xmm0
  punpcklwd %xmm8,%xmm9
  punpckhwd %xmm5,%xmm4
  punpcklwd %xmm5,%xmm0
  punpckhwd %xmm8,%xmm13
  punpcklwd %xmm5,%xmm12
  movdqu -0x50(%rax),%xmm5
  movdqa %xmm0,%xmm8
  punpcklwd %xmm4,%xmm12
  punpcklwd %xmm4,%xmm0
  movaps %xmm13,-0x48(%rsp)
  punpckhwd %xmm4,%xmm8
  movdqa %xmm3,%xmm4
  punpcklwd %xmm8,%xmm0
  punpckhwd %xmm8,%xmm12
  movdqa %xmm3,%xmm8
  punpcklwd %xmm5,%xmm8
  punpckhwd %xmm5,%xmm4
  punpcklwd %xmm1,%xmm3
  movdqu -0x30(%rax),%xmm1
  movdqa %xmm8,%xmm5
  punpcklwd %xmm4,%xmm3
  punpcklwd %xmm4,%xmm8
  punpckhwd %xmm4,%xmm5
  movdqa %xmm7,%xmm4
  punpcklwd %xmm5,%xmm8
  punpckhwd %xmm5,%xmm3
  movdqu -0x30(%rax),%xmm5
  punpckhwd %xmm5,%xmm4
  movdqa %xmm7,%xmm5
  punpcklwd %xmm1,%xmm5
  movdqa %xmm5,%xmm1
  punpcklwd %xmm4,%xmm5
  punpckhwd %xmm4,%xmm1
  punpcklwd %xmm1,%xmm5
  movdqa %xmm1,%xmm13
  movdqu -0x30(%rax),%xmm1
  punpcklwd %xmm1,%xmm7
  movdqa %xmm2,%xmm1
  punpcklwd %xmm4,%xmm7
  movdqu -0x10(%rax),%xmm4
  punpckhwd %xmm13,%xmm7
  punpckhwd %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  movdqa %xmm1,%xmm13
  movdqu -0x10(%rax),%xmm1
  punpcklwd %xmm1,%xmm4
  movdqa %xmm4,%xmm1
  punpcklwd %xmm13,%xmm4
  punpckhwd %xmm13,%xmm1
  punpcklwd %xmm1,%xmm4
  movdqa %xmm1,%xmm14
  movdqu -0x10(%rax),%xmm1
  punpcklwd %xmm1,%xmm2
  movdqa %xmm11,%xmm1
  punpckhwd %xmm6,%xmm1
  punpcklwd %xmm13,%xmm2
  movdqa %xmm1,%xmm13
  movdqa %xmm11,%xmm1
  punpcklwd %xmm6,%xmm11
  punpcklwd %xmm6,%xmm1
  punpckhwd %xmm14,%xmm2
  movdqa %xmm11,%xmm6
  movdqa %xmm1,%xmm14
  punpcklwd %xmm13,%xmm6
  punpckhwd %xmm13,%xmm1
  punpcklwd %xmm13,%xmm14
  punpckhwd %xmm1,%xmm6
  punpcklwd %xmm1,%xmm14
  movdqa %xmm10,%xmm1
  movaps %xmm6,-0x38(%rsp)
  punpckhwd %xmm9,%xmm1
  movdqa %xmm1,%xmm11
  movdqa %xmm10,%xmm1
  punpcklwd %xmm9,%xmm10
  punpcklwd %xmm9,%xmm1
  punpcklwd %xmm11,%xmm10
  movdqa %xmm1,%xmm6
  movdqa %xmm10,%xmm9
  punpckhwd %xmm11,%xmm1
  punpcklwd %xmm11,%xmm6
  punpckhwd %xmm1,%xmm9
  movdqa %xmm0,%xmm10
  movdqa -0x58(%rsp),%xmm11
  punpcklwd %xmm1,%xmm6
  movdqa %xmm0,%xmm1
  punpcklwd %xmm8,%xmm10
  movaps %xmm9,-0x28(%rsp)
  punpckhwd %xmm8,%xmm1
  punpcklwd %xmm8,%xmm0
  movdqa %xmm5,%xmm8
  movdqa %xmm1,%xmm9
  movdqa %xmm10,%xmm1
  punpckhwd %xmm4,%xmm8
  punpckhwd %xmm9,%xmm1
  punpcklwd %xmm9,%xmm10
  punpcklwd %xmm9,%xmm0
  punpcklwd %xmm1,%xmm10
  punpckhwd %xmm1,%xmm0
  movdqa %xmm5,%xmm1
  punpcklwd %xmm4,%xmm1
  punpcklwd %xmm4,%xmm5
  movdqa %xmm15,%xmm4
  movdqa %xmm1,%xmm9
  punpcklwd %xmm8,%xmm5
  punpckhwd %xmm8,%xmm1
  punpckhwd %xmm1,%xmm5
  punpckhwd %xmm11,%xmm4
  punpcklwd %xmm8,%xmm9
  punpcklwd %xmm1,%xmm9
  movaps %xmm5,-0x18(%rsp)
  movdqa %xmm15,%xmm1
  movdqa %xmm4,%xmm5
  movdqa %xmm15,%xmm4
  punpcklwd %xmm11,%xmm1
  movdqa -0x48(%rsp),%xmm15
  punpcklwd %xmm11,%xmm4
  movdqa %xmm1,%xmm13
  movdqa %xmm4,%xmm8
  punpcklwd %xmm5,%xmm13
  punpcklwd %xmm5,%xmm4
  punpckhwd %xmm5,%xmm8
  movdqa -0x78(%rsp),%xmm5
  punpcklwd %xmm8,%xmm4
  punpckhwd %xmm8,%xmm13
  movdqa %xmm5,%xmm1
  punpckhwd %xmm15,%xmm1
  movdqa %xmm1,%xmm8
  movdqa %xmm5,%xmm1
  punpcklwd %xmm15,%xmm1
  movdqa %xmm1,%xmm5
  movdqa %xmm1,%xmm11
  movdqa -0x78(%rsp),%xmm1
  punpckhwd %xmm8,%xmm11
  punpcklwd %xmm8,%xmm5
  punpcklwd %xmm15,%xmm1
  punpcklwd %xmm11,%xmm5
  punpcklwd %xmm8,%xmm1
  movdqa %xmm12,%xmm8
  punpckhwd %xmm11,%xmm1
  punpcklwd %xmm3,%xmm8
  movdqa %xmm12,%xmm11
  punpckhwd %xmm3,%xmm11
  movdqa %xmm8,%xmm15
  punpcklwd %xmm3,%xmm12
  movdqa %xmm7,%xmm3
  punpckhwd %xmm11,%xmm15
  punpcklwd %xmm11,%xmm8
  punpcklwd %xmm2,%xmm3
  punpcklwd %xmm11,%xmm12
  movdqa %xmm7,%xmm11
  punpckhwd %xmm2,%xmm11
  punpcklwd %xmm15,%xmm8
  punpckhwd %xmm15,%xmm12
  punpcklwd %xmm2,%xmm7
  movdqa %xmm3,%xmm15
  movdqa %xmm14,%xmm2
  punpckhwd %xmm11,%xmm15
  punpcklwd %xmm11,%xmm3
  punpcklwd %xmm11,%xmm7
  movdqa %xmm14,%xmm11
  punpcklwd %xmm6,%xmm14
  punpckhwd %xmm6,%xmm2
  punpcklwd %xmm6,%xmm11
  movdqa %xmm14,%xmm6
  punpcklwd %xmm15,%xmm3
  punpckhwd %xmm15,%xmm7
  punpcklwd %xmm2,%xmm6
  movdqa %xmm11,%xmm15
  punpckhwd %xmm2,%xmm15
  punpcklwd %xmm2,%xmm11
  movdqa %xmm6,%xmm2
  punpckhwd %xmm15,%xmm2
  movdqa %xmm10,%xmm6
  punpcklwd %xmm15,%xmm11
  punpcklwd %xmm9,%xmm6
  movaps %xmm2,-0x58(%rsp)
  movdqa %xmm10,%xmm2
  punpcklwd %xmm9,%xmm10
  punpckhwd %xmm9,%xmm2
  movdqa %xmm6,%xmm15
  punpckhwd %xmm2,%xmm15
  punpcklwd %xmm2,%xmm6
  punpcklwd %xmm2,%xmm10
  punpcklwd %xmm15,%xmm6
  punpckhwd %xmm15,%xmm10
  movdqa %xmm4,%xmm15
  punpcklwd %xmm5,%xmm15
  movdqa %xmm4,%xmm2
  movaps %xmm10,-0x48(%rsp)
  punpcklwd %xmm5,%xmm4
  punpckhwd %xmm5,%xmm2
  movdqa %xmm15,%xmm10
  movdqa -0x38(%rsp),%xmm14
  movdqa -0x28(%rsp),%xmm9
  punpckhwd %xmm2,%xmm15
  punpcklwd %xmm2,%xmm10
  punpcklwd %xmm2,%xmm4
  punpcklwd %xmm15,%xmm10
  punpckhwd %xmm15,%xmm4
  movdqa %xmm8,%xmm15
  punpcklwd %xmm3,%xmm15
  movdqa %xmm8,%xmm2
  punpcklwd %xmm3,%xmm8
  punpckhwd %xmm3,%xmm2
  movdqa %xmm15,%xmm5
  movdqa %xmm14,%xmm3
  punpckhwd %xmm2,%xmm15
  punpcklwd %xmm9,%xmm3
  punpcklwd %xmm2,%xmm5
  punpcklwd %xmm2,%xmm8
  movdqa %xmm14,%xmm2
  punpcklwd %xmm15,%xmm5
  punpckhwd %xmm9,%xmm2
  punpckhwd %xmm15,%xmm8
  movdqa %xmm3,%xmm15
  punpckhwd %xmm2,%xmm15
  punpcklwd %xmm9,%xmm14
  punpcklwd %xmm2,%xmm3
  movaps %xmm8,-0x8(%rsp)
  punpcklwd %xmm15,%xmm3
  movdqa %xmm15,%xmm8
  movdqa %xmm14,%xmm15
  movdqa -0x18(%rsp),%xmm14
  punpcklwd %xmm2,%xmm15
  movdqa %xmm0,%xmm9
  movdqa %xmm0,%xmm2
  punpcklwd %xmm14,%xmm0
  punpckhwd %xmm14,%xmm9
  punpcklwd %xmm14,%xmm2
  movdqa %xmm0,%xmm14
  movdqa %xmm13,%xmm0
  punpckhwd %xmm8,%xmm15
  punpckhwd %xmm1,%xmm0
  movdqa %xmm9,%xmm8
  movdqa %xmm2,%xmm9
  punpckhwd %xmm8,%xmm9
  punpcklwd %xmm8,%xmm2
  punpcklwd %xmm8,%xmm14
  movdqa %xmm0,%xmm8
  movdqa %xmm13,%xmm0
  punpcklwd %xmm1,%xmm13
  punpcklwd %xmm1,%xmm0
  movdqa %xmm12,%xmm1
  punpcklwd %xmm9,%xmm2
  punpckhwd %xmm9,%xmm14
  punpckhwd %xmm7,%xmm1
  movdqa %xmm0,%xmm9
  punpckhwd %xmm8,%xmm9
  punpcklwd %xmm8,%xmm0
  punpcklwd %xmm8,%xmm13
  movdqa %xmm1,%xmm8
  movdqa %xmm12,%xmm1
  punpcklwd %xmm9,%xmm0
  punpcklwd %xmm7,%xmm1
  punpckhwd %xmm9,%xmm13
  punpcklwd %xmm7,%xmm12
  movdqa %xmm1,%xmm9
  punpcklwd %xmm8,%xmm12
  punpcklwd %xmm8,%xmm1
  movaps %xmm13,-0x38(%rsp)
  punpckhwd %xmm8,%xmm9
  movdqa %xmm0,%xmm13
  punpcklwd %xmm9,%xmm1
  punpckhwd %xmm9,%xmm12
  movdqa %xmm11,%xmm9
  punpckhwd %xmm6,%xmm9
  movaps %xmm12,-0x78(%rsp)
  punpcklwd %xmm1,%xmm13
  movdqa %xmm0,%xmm12
  movdqa %xmm9,%xmm7
  movdqa %xmm11,%xmm9
  punpcklwd %xmm6,%xmm11
  punpcklwd %xmm6,%xmm9
  punpcklwd %xmm7,%xmm11
  movdqa %xmm10,%xmm6
  movdqa %xmm9,%xmm8
  punpckhwd %xmm7,%xmm9
  punpckhwd %xmm5,%xmm6
  punpcklwd %xmm7,%xmm8
  punpckhwd %xmm9,%xmm11
  punpckhwd %xmm1,%xmm12
  punpcklwd %xmm9,%xmm8
  movdqa %xmm10,%xmm9
  punpcklwd %xmm5,%xmm10
  movaps %xmm11,-0x28(%rsp)
  punpcklwd %xmm5,%xmm9
  punpcklwd %xmm6,%xmm10
  movdqa %xmm3,%xmm5
  movdqa -0x8(%rsp),%xmm11
  movdqa %xmm9,%xmm7
  punpcklwd %xmm6,%xmm9
  punpckhwd %xmm2,%xmm5
  punpckhwd %xmm6,%xmm7
  movdqa %xmm3,%xmm6
  punpcklwd %xmm2,%xmm3
  punpcklwd %xmm2,%xmm6
  punpcklwd %xmm7,%xmm9
  punpckhwd %xmm7,%xmm10
  movdqa %xmm6,%xmm7
  punpcklwd %xmm5,%xmm3
  punpcklwd %xmm5,%xmm6
  movaps %xmm10,-0x18(%rsp)
  punpckhwd %xmm5,%xmm7
  punpcklwd %xmm1,%xmm0
  movdqa %xmm13,%xmm5
  punpckhwd %xmm12,%xmm5
  punpcklwd %xmm12,%xmm13
  punpcklwd %xmm12,%xmm0
  punpcklwd %xmm5,%xmm13
  punpckhwd %xmm5,%xmm0
  movdqa -0x58(%rsp),%xmm5
  punpcklwd %xmm7,%xmm6
  punpckhwd %xmm7,%xmm3
  movdqa -0x48(%rsp),%xmm7
  movdqa %xmm5,%xmm12
  movdqa %xmm5,%xmm1
  punpcklwd %xmm7,%xmm12
  punpckhwd %xmm7,%xmm1
  punpcklwd %xmm7,%xmm5
  movdqa %xmm12,%xmm2
  movdqa %xmm4,%xmm7
  punpcklwd %xmm1,%xmm12
  punpckhwd %xmm1,%xmm2
  punpcklwd %xmm11,%xmm7
  punpcklwd %xmm1,%xmm5
  movdqa %xmm4,%xmm1
  punpcklwd %xmm2,%xmm12
  punpckhwd %xmm2,%xmm5
  punpckhwd %xmm11,%xmm1
  movdqa %xmm7,%xmm2
  punpcklwd %xmm11,%xmm4
  punpckhwd %xmm1,%xmm2
  punpcklwd %xmm1,%xmm7
  punpcklwd %xmm1,%xmm4
  movdqa %xmm15,%xmm1
  punpcklwd %xmm2,%xmm7
  punpckhwd %xmm2,%xmm4
  punpckhwd %xmm14,%xmm1
  movdqa %xmm1,%xmm2
  movdqa %xmm15,%xmm1
  punpcklwd %xmm14,%xmm1
  movdqa %xmm1,%xmm11
  punpckhwd %xmm2,%xmm1
  punpcklwd %xmm2,%xmm11
  movdqa %xmm1,%xmm10
  punpcklwd %xmm1,%xmm11
  movdqa %xmm15,%xmm1
  movdqa -0x78(%rsp),%xmm15
  punpcklwd %xmm14,%xmm1
  punpcklwd %xmm2,%xmm1
  movdqa -0x38(%rsp),%xmm2
  punpckhwd %xmm10,%xmm1
  movdqa %xmm2,%xmm10
  movdqa %xmm2,%xmm14
  punpcklwd -0x78(%rsp),%xmm2
  punpcklwd %xmm15,%xmm10
  punpckhwd %xmm15,%xmm14
  movdqa %xmm10,%xmm15
  punpcklwd %xmm14,%xmm2
  punpcklwd %xmm14,%xmm10
  punpckhwd %xmm14,%xmm15
  movdqa %xmm9,%xmm14
  punpcklwd %xmm15,%xmm10
  punpckhwd %xmm15,%xmm2
  pxor   %xmm15,%xmm15
  punpcklwd %xmm15,%xmm14
  punpckhwd %xmm15,%xmm9
  paddd  %xmm14,%xmm9
  movdqa %xmm8,%xmm14
  punpckhwd %xmm15,%xmm8
  punpcklwd %xmm15,%xmm14
  paddd  %xmm14,%xmm8
  paddd  %xmm9,%xmm8
  movdqa %xmm6,%xmm9
  punpckhwd %xmm15,%xmm6
  punpcklwd %xmm15,%xmm9
  paddd  %xmm9,%xmm6
  movdqa %xmm13,%xmm9
  punpckhwd %xmm15,%xmm13
  punpcklwd %xmm15,%xmm9
  paddd  %xmm9,%xmm6
  movdqa %xmm7,%xmm9
  punpckhwd %xmm15,%xmm7
  paddd  %xmm8,%xmm6
  movdqa %xmm12,%xmm8
  punpckhwd %xmm15,%xmm12
  punpcklwd %xmm15,%xmm8
  punpcklwd %xmm15,%xmm9
  paddd  %xmm13,%xmm8
  movdqa -0x18(%rsp),%xmm13
  paddd  %xmm12,%xmm8
  paddd  %xmm8,%xmm6
  movdqa %xmm7,%xmm8
  movdqa %xmm11,%xmm7
  punpcklwd %xmm15,%xmm7
  paddd  %xmm9,%xmm8
  punpckhwd %xmm15,%xmm11
  paddd  %xmm7,%xmm8
  movdqa %xmm6,%xmm7
  movdqa %xmm10,%xmm6
  punpcklwd %xmm15,%xmm6
  punpckhwd %xmm15,%xmm10
  paddd  %xmm8,%xmm7
  paddd  %xmm11,%xmm6
  paddd  %xmm10,%xmm6
  paddd  %xmm6,%xmm7
  movdqa -0x28(%rsp),%xmm6
  movdqa %xmm7,%xmm10
  movdqa %xmm6,%xmm7
  punpckhwd %xmm15,%xmm6
  punpcklwd %xmm15,%xmm7
  paddd  %xmm7,%xmm6
  movdqa %xmm13,%xmm7
  punpcklwd %xmm15,%xmm7
  paddd  %xmm7,%xmm6
  movdqa %xmm3,%xmm7
  punpckhwd %xmm15,%xmm3
  paddd  %xmm6,%xmm10
  movdqa %xmm13,%xmm6
  punpcklwd %xmm15,%xmm7
  punpckhwd %xmm15,%xmm6
  paddd  %xmm7,%xmm6
  paddd  %xmm6,%xmm3
  movdqa %xmm0,%xmm6
  punpckhwd %xmm15,%xmm0
  punpcklwd %xmm15,%xmm6
  paddd  %xmm10,%xmm3
  paddd  %xmm6,%xmm0
  movdqa %xmm5,%xmm6
  punpckhwd %xmm15,%xmm5
  punpcklwd %xmm15,%xmm6
  paddd  %xmm6,%xmm0
  paddd  %xmm3,%xmm0
  movdqa %xmm4,%xmm3
  punpckhwd %xmm15,%xmm4
  punpcklwd %xmm15,%xmm3
  paddd  %xmm5,%xmm3
  paddd  %xmm4,%xmm3
  movdqa %xmm0,%xmm4
  movdqa %xmm1,%xmm0
  punpcklwd %xmm15,%xmm0
  punpckhwd %xmm15,%xmm1
  paddd  %xmm3,%xmm4
  paddd  %xmm0,%xmm1
  movdqa %xmm2,%xmm0
  punpckhwd %xmm15,%xmm2
  punpcklwd %xmm15,%xmm0
  paddd  -0x68(%rsp),%xmm2
  paddd  %xmm0,%xmm1
  paddd  %xmm4,%xmm1
  paddd  %xmm2,%xmm1
  movaps %xmm1,-0x68(%rsp)
  cmp    %rsi,%rax
  jne    L49
  movdqa %xmm1,%xmm0
  mov    %r10d,%esi
  psrldq $0x8,%xmm0
  and    $0xfffffff8,%esi
  paddd  %xmm1,%xmm0
  mov    %esi,%ebx
  movdqa %xmm0,%xmm1
  shl    $0x5,%ebx
  psrldq $0x4,%xmm1
  sub    %ebx,%r9d
  paddd  %xmm1,%xmm0
  movd   %xmm0,%eax
  add    %eax,%ecx
  mov    %esi,%eax
  shl    $0x5,%rax
  add    %r8,%rax
  cmp    %r10d,%esi
  je     L15
L104:
  movzwl (%rax),%esi
  movzwl 0x2(%rax),%ebx
  add    %ebx,%esi
  add    %ecx,%esi
  movzwl 0x4(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x6(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x8(%rax),%ecx
  add    %ecx,%esi
  movzwl 0xa(%rax),%ecx
  add    %ecx,%esi
  movzwl 0xc(%rax),%ecx
  add    %ecx,%esi
  movzwl 0xe(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x10(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x12(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x14(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x16(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x18(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x1a(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x1c(%rax),%ecx
  add    %ecx,%esi
  movzwl 0x1e(%rax),%ecx
  add    %esi,%ecx
  lea    -0x20(%r9),%esi
  cmp    $0x1f,%esi
  jle    L15
  movzwl 0x22(%rax),%ebx
  movzwl 0x20(%rax),%esi
  add    %ebx,%esi
  movzwl 0x24(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x26(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x28(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x2a(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x2c(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x2e(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x30(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x32(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x34(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x36(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x38(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x3a(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x3c(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x3e(%rax),%ebx
  add    %ebx,%esi
  add    %esi,%ecx
  lea    -0x40(%r9),%esi
  cmp    $0x1f,%esi
  jle    L15
  movzwl 0x42(%rax),%ebx
  movzwl 0x40(%rax),%esi
  add    %ebx,%esi
  movzwl 0x44(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x46(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x48(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x4a(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x4c(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x4e(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x50(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x52(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x54(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x56(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x58(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x5a(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x5c(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x5e(%rax),%ebx
  add    %ebx,%esi
  add    %esi,%ecx
  lea    -0x60(%r9),%esi
  cmp    $0x1f,%esi
  jle    L15
  movzwl 0x62(%rax),%ebx
  movzwl 0x60(%rax),%esi
  add    %ebx,%esi
  movzwl 0x64(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x66(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x68(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x6a(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x6c(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x6e(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x70(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x72(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x74(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x76(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x78(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x7a(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x7c(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x7e(%rax),%ebx
  add    %ebx,%esi
  add    %esi,%ecx
  lea    -0x80(%r9),%esi
  cmp    $0x1f,%esi
  jle    L15
  movzwl 0x82(%rax),%ebx
  movzwl 0x80(%rax),%esi
  add    %ebx,%esi
  movzwl 0x84(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x86(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x88(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x8a(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x8c(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x8e(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x90(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x92(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x94(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x96(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x98(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x9a(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x9c(%rax),%ebx
  add    %ebx,%esi
  movzwl 0x9e(%rax),%ebx
  add    %ebx,%esi
  add    %esi,%ecx
  lea    -0xa0(%r9),%esi
  cmp    $0x1f,%esi
  jle    L15
  movzwl 0xa2(%rax),%ebx
  movzwl 0xa0(%rax),%esi
  add    %ebx,%esi
  movzwl 0xa4(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xa6(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xa8(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xaa(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xac(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xae(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xb0(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xb2(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xb4(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xb6(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xb8(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xba(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xbc(%rax),%ebx
  add    %ebx,%esi
  movzwl 0xbe(%rax),%ebx
  add    %ebx,%esi
  add    %esi,%ecx
  cmp    $0xdf,%r9d
  jle    L15
  movzwl 0xc0(%rax),%r9d
  movzwl 0xc2(%rax),%esi
  add    %r9d,%esi
  movzwl 0xc4(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xc6(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xc8(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xca(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xcc(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xce(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xd0(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xd2(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xd4(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xd6(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xd8(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xda(%rax),%r9d
  add    %r9d,%esi
  movzwl 0xdc(%rax),%r9d
  movzwl 0xde(%rax),%eax
  add    %r9d,%esi
  add    %esi,%eax
  add    %eax,%ecx
L15:
  shl    $0x5,%r11d
  shl    $0x5,%r10
  sub    %r11d,%edi
  add    %r10,%r8
  mov    %edi,%r9d
L112:
  cmp    $0x7,%r9d
  jle    L88
  movzwl 0x2(%r8),%esi
  movzwl (%r8),%eax
  add    %esi,%eax
  lea    -0x8(%r9),%esi
  add    %ecx,%eax
  movzwl 0x4(%r8),%ecx
  add    %ecx,%eax
  movzwl 0x6(%r8),%ecx
  add    %eax,%ecx
  cmp    $0x7,%esi
  jle    L7
  movzwl 0x8(%r8),%edi
  movzwl 0xa(%r8),%eax
  add    %edi,%eax
  movzwl 0xc(%r8),%edi
  add    %edi,%eax
  movzwl 0xe(%r8),%edi
  add    %edi,%eax
  add    %eax,%ecx
  cmp    $0x17,%r9d
  jle    L7
  movzwl 0x12(%r8),%edi
  movzwl 0x10(%r8),%eax
  add    %edi,%eax
  movzwl 0x14(%r8),%edi
  add    %edi,%eax
  movzwl 0x16(%r8),%edi
  add    %edi,%eax
  add    %eax,%ecx
L7:
  mov    %esi,%eax
  shr    $0x3,%eax
  lea    0x1(%rax),%edi
  neg    %eax
  lea    (%r8,%rdi,8),%r8
  lea    (%rsi,%rax,8),%r9d
L88:
  cmp    $0x1,%r9d
  jle    L82
  movzwl (%r8),%eax
  lea    -0x2(%r9),%esi
  add    %eax,%ecx
  cmp    $0x1,%esi
  jle    L165
  movzwl 0x2(%r8),%eax
  add    %eax,%ecx
  cmp    $0x5,%r9d
  jle    L165
  movzwl 0x4(%r8),%eax
  add    %eax,%ecx
L165:
  mov    %esi,%eax
  shr    %eax
  lea    0x1(%rax),%edi
  neg    %eax
  lea    (%r8,%rdi,2),%r8
  lea    (%rsi,%rax,2),%r9d
L82:
  cmp    $0x1,%r9d
  jne    L129
  mov    (%r8),%dl
  movzwl %dx,%edx
  add    %edx,%ecx
L129:
  mov    %ecx,%edx
  movzwl %cx,%ecx
  add    $0x8,%rsp
  shr    $0x10,%edx
  pop    %rbx
  add    %ecx,%edx
  mov    %edx,%eax
  shr    $0x10,%eax
  add    %edx,%eax
  not    %eax
  ret
```

assistant: ```c
unsigned short in_chksum_udp6(unsigned short *h, unsigned short *d, int dlen) {
  unsigned int cksum;
  unsigned short answer = 0;
  cksum = h[0];
  cksum += h[1];
  cksum += h[2];
  cksum += h[3];
  cksum += h[4];
  cksum += h[5];
  cksum += h[6];
  cksum += h[7];
  cksum += h[8];
  cksum += h[9];
  cksum += h[10];
  cksum += h[11];
  cksum += h[12];
  cksum += h[13];
  cksum += h[14];
  cksum += h[15];
  cksum += h[16];
  cksum += h[17];
  cksum += d[0];
  cksum += d[1];
  cksum += d[2];
  cksum += d[3];
  dlen -= 8;
  d += 4;
  while (dlen >= 32) {
    cksum += d[0];
    cksum += d[1];
    cksum += d[2];
    cksum += d[3];
    cksum += d[4];
    cksum += d[5];
    cksum += d[6];
    cksum += d[7];
    cksum += d[8];
    cksum += d[9];
    cksum += d[10];
    cksum += d[11];
    cksum += d[12];
    cksum += d[13];
    cksum += d[14];
    cksum += d[15];
    d += 16;
    dlen -= 32;
  }
  while (dlen >= 8) {
    cksum += d[0];
    cksum += d[1];
    cksum += d[2];
    cksum += d[3];
    d += 4;
    dlen -= 8;
  }
  while (dlen > 1) {
    cksum += *d++;
    dlen -= 2;
  }
  if (dlen == 1) {
    *(unsigned char *)(&answer) = (*(unsigned char *)d);
    cksum += answer;
  }
  cksum = (cksum >> 16) + (cksum & 0x0000ffff);
  cksum += (cksum >> 16);
  return (unsigned short)(~cksum);
}
```