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

```asm
<copy_out>:
  endbr64
  mov    %rdi,%r8
  sub    $0x50,%rsp
  pxor   %xmm14,%xmm14
  mov    %rsi,%rdi
  movdqa D6(%rip),%xmm10
  lea    0x80(%rsi),%r9
  lea    0x200(%r8),%r10
  jmp    L35
  nop
L1:
  movdqu (%rdi),%xmm2
  movdqu 0x10(%rdi),%xmm0
  movdqa %xmm10,%xmm9
  movdqa %xmm10,%xmm11
  movdqu 0x10(%rdi),%xmm1
  movdqu 0x20(%rdi),%xmm8
  movdqa %xmm10,%xmm12
  movdqa %xmm10,%xmm13
  pand   %xmm10,%xmm0
  pand   %xmm10,%xmm2
  movdqu 0x20(%rdi),%xmm6
  movdqu 0x40(%rdi),%xmm7
  packuswb %xmm0,%xmm2
  movdqu (%rdi),%xmm0
  psrlw  $0x8,%xmm1
  pand   %xmm10,%xmm8
  psrlw  $0x8,%xmm6
  pand   %xmm10,%xmm7
  movdqu 0x50(%rdi),%xmm3
  movdqu 0x60(%rdi),%xmm4
  psrlw  $0x8,%xmm0
  movdqu 0x60(%rdi),%xmm5
  sub    $0xffffffffffffff80,%r9
  sub    $0xffffffffffffff80,%rdi
  packuswb %xmm1,%xmm0
  movdqu -0x50(%rdi),%xmm1
  psrlw  $0x8,%xmm3
  pand   %xmm10,%xmm4
  psrlw  $0x8,%xmm5
  movdqa %xmm10,%xmm15
  pand   %xmm10,%xmm1
  packuswb %xmm1,%xmm8
  movdqu -0x50(%rdi),%xmm1
  pand   %xmm8,%xmm9
  psrlw  $0x8,%xmm8
  psrlw  $0x8,%xmm1
  packuswb %xmm1,%xmm6
  movdqu -0x30(%rdi),%xmm1
  pand   %xmm10,%xmm1
  packuswb %xmm1,%xmm7
  movdqu -0x40(%rdi),%xmm1
  psrlw  $0x8,%xmm1
  packuswb %xmm3,%xmm1
  movdqu -0x10(%rdi),%xmm3
  pand   %xmm10,%xmm3
  packuswb %xmm3,%xmm4
  movdqu -0x10(%rdi),%xmm3
  psrlw  $0x8,%xmm3
  packuswb %xmm3,%xmm5
  movdqa %xmm10,%xmm3
  pand   %xmm2,%xmm3
  psrlw  $0x8,%xmm2
  packuswb %xmm9,%xmm3
  packuswb %xmm8,%xmm2
  movdqa %xmm10,%xmm9
  movdqa %xmm10,%xmm8
  pand   %xmm4,%xmm9
  pand   %xmm3,%xmm11
  pand   %xmm7,%xmm8
  psrlw  $0x8,%xmm4
  pand   %xmm2,%xmm13
  psrlw  $0x8,%xmm7
  psrlw  $0x8,%xmm2
  packuswb %xmm9,%xmm8
  packuswb %xmm4,%xmm7
  movdqa %xmm10,%xmm9
  movdqa %xmm10,%xmm4
  pand   %xmm6,%xmm9
  psrlw  $0x8,%xmm6
  pand   %xmm0,%xmm4
  psrlw  $0x8,%xmm0
  psrlw  $0x8,%xmm3
  packuswb %xmm9,%xmm4
  packuswb %xmm6,%xmm0
  movdqa %xmm10,%xmm9
  movdqa %xmm10,%xmm6
  pand   %xmm5,%xmm9
  pand   %xmm1,%xmm6
  pand   %xmm4,%xmm12
  psrlw  $0x8,%xmm5
  psrlw  $0x8,%xmm1
  packuswb %xmm9,%xmm6
  packuswb %xmm5,%xmm1
  movdqa %xmm10,%xmm5
  pand   %xmm0,%xmm15
  psrlw  $0x8,%xmm0
  psrlw  $0x8,%xmm4
  pand   %xmm8,%xmm5
  packuswb %xmm5,%xmm11
  psrlw  $0x8,%xmm8
  movdqa %xmm10,%xmm5
  pand   %xmm6,%xmm5
  psrlw  $0x8,%xmm6
  packuswb %xmm8,%xmm3
  packuswb %xmm5,%xmm12
  movdqa %xmm10,%xmm5
  packuswb %xmm6,%xmm4
  pand   %xmm7,%xmm5
  psrlw  $0x8,%xmm7
  movdqa %xmm4,%xmm8
  packuswb %xmm5,%xmm13
  movdqa %xmm10,%xmm5
  packuswb %xmm7,%xmm2
  pand   %xmm1,%xmm5
  psrlw  $0x8,%xmm1
  movdqa %xmm2,%xmm9
  packuswb %xmm5,%xmm15
  packuswb %xmm1,%xmm0
  pxor   %xmm5,%xmm5
  pcmpgtb %xmm0,%xmm5
  movdqa %xmm0,%xmm1
  movdqa %xmm15,%xmm6
  punpckhbw %xmm5,%xmm0
  punpcklbw %xmm5,%xmm1
  pxor   %xmm5,%xmm5
  pcmpgtb %xmm2,%xmm5
  psllw  $0x8,%xmm1
  movdqa %xmm0,%xmm7
  psllw  $0x8,%xmm7
  movaps %xmm7,-0x78(%rsp)
  movdqa %xmm3,%xmm7
  punpcklbw %xmm5,%xmm9
  punpckhbw %xmm5,%xmm2
  pxor   %xmm5,%xmm5
  pcmpgtb %xmm4,%xmm5
  punpcklbw %xmm5,%xmm8
  punpckhbw %xmm5,%xmm4
  pxor   %xmm5,%xmm5
  pcmpgtb %xmm3,%xmm5
  punpcklbw %xmm5,%xmm7
  punpckhbw %xmm5,%xmm3
  pxor   %xmm5,%xmm5
  pcmpgtb %xmm15,%xmm5
  punpcklbw %xmm5,%xmm6
  punpckhbw %xmm5,%xmm15
  pxor   %xmm5,%xmm5
  pcmpgtb %xmm13,%xmm5
  movaps %xmm15,-0x68(%rsp)
  movdqa %xmm5,%xmm15
  movdqa %xmm13,%xmm5
  punpckhbw %xmm15,%xmm13
  punpcklbw %xmm15,%xmm5
  movdqa %xmm12,%xmm15
  movaps %xmm13,-0x58(%rsp)
  pxor   %xmm13,%xmm13
  pcmpgtb %xmm12,%xmm13
  punpcklbw %xmm13,%xmm15
  punpckhbw %xmm13,%xmm12
  pxor   %xmm13,%xmm13
  pcmpgtb %xmm11,%xmm13
  movdqa %xmm15,%xmm0
  movdqa %xmm11,%xmm15
  movaps %xmm12,-0x48(%rsp)
  movdqa %xmm9,%xmm12
  movaps %xmm0,-0x28(%rsp)
  punpcklbw %xmm13,%xmm15
  punpckhbw %xmm13,%xmm11
  movdqa %xmm14,%xmm13
  pcmpgtw %xmm9,%xmm13
  movaps %xmm11,-0x38(%rsp)
  movdqa %xmm14,%xmm11
  pcmpgtw %xmm1,%xmm11
  movaps %xmm13,-0x18(%rsp)
  punpcklwd %xmm13,%xmm12
  movdqa %xmm1,%xmm13
  punpckhwd -0x18(%rsp),%xmm9
  punpcklwd %xmm11,%xmm13
  movaps %xmm11,-0x8(%rsp)
  punpckhwd -0x8(%rsp),%xmm1
  movdqa %xmm13,%xmm11
  movdqa %xmm8,%xmm13
  por    %xmm12,%xmm11
  movdqa %xmm14,%xmm12
  por    %xmm9,%xmm1
  pcmpgtw %xmm8,%xmm12
  pslld  $0x8,%xmm11
  movdqa %xmm14,%xmm9
  pslld  $0x8,%xmm1
  pcmpgtw %xmm3,%xmm9
  punpcklwd %xmm12,%xmm13
  movaps %xmm12,0x8(%rsp)
  movdqa %xmm7,%xmm12
  punpckhwd 0x8(%rsp),%xmm8
  por    %xmm13,%xmm11
  movdqa %xmm14,%xmm13
  pcmpgtw %xmm7,%xmm13
  pslld  $0x8,%xmm11
  por    %xmm8,%xmm1
  pslld  $0x8,%xmm1
  movdqa %xmm14,%xmm8
  punpcklwd %xmm13,%xmm12
  movaps %xmm13,0x18(%rsp)
  movdqa %xmm6,%xmm13
  por    %xmm12,%xmm11
  movdqa %xmm14,%xmm12
  pcmpgtw %xmm6,%xmm12
  pslld  $0x8,%xmm11
  punpcklwd %xmm12,%xmm13
  movaps %xmm12,0x28(%rsp)
  movdqa %xmm5,%xmm12
  por    %xmm13,%xmm11
  movdqa %xmm14,%xmm13
  pcmpgtw %xmm5,%xmm13
  pslld  $0x8,%xmm11
  punpcklwd %xmm13,%xmm12
  movaps %xmm13,0x38(%rsp)
  movdqa %xmm14,%xmm13
  pcmpgtw %xmm0,%xmm13
  por    %xmm12,%xmm11
  movdqa %xmm0,%xmm12
  pslld  $0x8,%xmm11
  movdqa %xmm15,%xmm0
  punpcklwd %xmm13,%xmm12
  por    %xmm12,%xmm11
  movdqa %xmm14,%xmm12
  pcmpgtw %xmm15,%xmm12
  pslld  $0x8,%xmm11
  punpcklwd %xmm12,%xmm0
  punpckhwd %xmm12,%xmm15
  por    %xmm0,%xmm11
  movups %xmm11,(%rax)
  punpckhwd 0x18(%rsp),%xmm7
  punpckhwd 0x28(%rsp),%xmm6
  punpckhwd 0x38(%rsp),%xmm5
  movdqa -0x28(%rsp),%xmm0
  por    %xmm7,%xmm1
  movdqa -0x78(%rsp),%xmm7
  pslld  $0x8,%xmm1
  punpckhwd %xmm13,%xmm0
  por    %xmm6,%xmm1
  movdqa -0x58(%rsp),%xmm6
  pslld  $0x8,%xmm1
  por    %xmm5,%xmm1
  pslld  $0x8,%xmm1
  por    %xmm0,%xmm1
  movdqa %xmm14,%xmm0
  pcmpgtw %xmm2,%xmm0
  pslld  $0x8,%xmm1
  por    %xmm1,%xmm15
  movups %xmm15,0x10(%rax)
  movdqa -0x38(%rsp),%xmm15
  movdqa %xmm0,%xmm13
  movdqa %xmm2,%xmm0
  punpcklwd %xmm13,%xmm0
  punpckhwd %xmm13,%xmm2
  movdqa %xmm0,%xmm5
  movdqa %xmm14,%xmm0
  pcmpgtw %xmm7,%xmm0
  movdqa %xmm0,%xmm12
  movdqa %xmm7,%xmm0
  movdqa -0x68(%rsp),%xmm7
  punpcklwd %xmm12,%xmm0
  movdqa %xmm0,%xmm1
  pcmpgtw %xmm7,%xmm8
  movdqa %xmm14,%xmm0
  pcmpgtw %xmm4,%xmm0
  por    %xmm5,%xmm1
  movdqa -0x48(%rsp),%xmm5
  pslld  $0x8,%xmm1
  movdqa %xmm0,%xmm11
  movdqa %xmm4,%xmm0
  punpcklwd %xmm11,%xmm0
  punpckhwd %xmm11,%xmm4
  por    %xmm0,%xmm1
  movdqa %xmm3,%xmm0
  punpckhwd %xmm9,%xmm3
  punpcklwd %xmm9,%xmm0
  pslld  $0x8,%xmm1
  por    %xmm0,%xmm1
  movdqa %xmm7,%xmm0
  movdqa %xmm14,%xmm7
  pcmpgtw %xmm6,%xmm7
  pslld  $0x8,%xmm1
  punpcklwd %xmm8,%xmm0
  por    %xmm0,%xmm1
  movdqa %xmm6,%xmm0
  movdqa %xmm14,%xmm6
  pcmpgtw %xmm5,%xmm6
  pslld  $0x8,%xmm1
  punpcklwd %xmm7,%xmm0
  por    %xmm0,%xmm1
  movdqa %xmm5,%xmm0
  punpcklwd %xmm6,%xmm0
  pslld  $0x8,%xmm1
  por    %xmm0,%xmm1
  movdqa %xmm14,%xmm0
  pcmpgtw %xmm15,%xmm0
  pslld  $0x8,%xmm1
  movdqa %xmm0,%xmm5
  movdqa %xmm15,%xmm0
  punpcklwd %xmm5,%xmm0
  por    %xmm0,%xmm1
  movdqa -0x78(%rsp),%xmm0
  movups %xmm1,0x20(%rax)
  movdqa -0x68(%rsp),%xmm1
  punpckhwd %xmm12,%xmm0
  por    %xmm2,%xmm0
  punpckhwd %xmm8,%xmm1
  pslld  $0x8,%xmm0
  por    %xmm4,%xmm0
  pslld  $0x8,%xmm0
  por    %xmm3,%xmm0
  pslld  $0x8,%xmm0
  por    %xmm1,%xmm0
  movdqa -0x58(%rsp),%xmm1
  pslld  $0x8,%xmm0
  punpckhwd %xmm7,%xmm1
  por    %xmm1,%xmm0
  movdqa -0x48(%rsp),%xmm1
  pslld  $0x8,%xmm0
  punpckhwd %xmm6,%xmm1
  por    %xmm1,%xmm0
  movdqa -0x38(%rsp),%xmm1
  pslld  $0x8,%xmm0
  punpckhwd %xmm5,%xmm1
  por    %xmm1,%xmm0
  movups %xmm0,0x30(%rax)
  cmp    %r10,%r8
  je     L24
L35:
  mov    %r8,%rax
  mov    %r8,%rsi
  add    $0x40,%r8
  cmp    %r8,%rdi
  jae    L1
  cmp    %r9,%rax
  jae    L1
  mov    %rdi,%rax
  nopl   0x0(%rax,%rax,1)
L7:
  movsbl 0x7(%rax),%edx
  movsbl 0x6(%rax),%ecx
  add    $0x8,%rax
  add    $0x4,%rsi
  shl    $0x8,%edx
  or     %edx,%ecx
  movsbl -0x3(%rax),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  movsbl -0x4(%rax),%ecx
  shl    $0x8,%edx
  or     %edx,%ecx
  movsbl -0x5(%rax),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  movsbl -0x6(%rax),%ecx
  shl    $0x8,%edx
  or     %edx,%ecx
  movsbl -0x7(%rax),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  movsbl -0x8(%rax),%ecx
  shl    $0x8,%edx
  or     %ecx,%edx
  mov    %edx,-0x4(%rsi)
  cmp    %rax,%r9
  jne    L7
  sub    $0xffffffffffffff80,%r9
  sub    $0xffffffffffffff80,%rdi
  cmp    %r10,%r8
  jne    L35
L24:
  add    $0x50,%rsp
  ret
```

tool_calls: name: unpack_data
arguments: tag: D6
type_guessed: byte[16]

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

assistant: ```c
void copy_out(uint64_t *large_E, char *part_buf_E) {
  int i, j;
  for (i = 0; i < ((512) / (64)); i++) {
    for (j = 0; j < 16; j++) {
#pragma HLS PIPELINE
      uint64_t curr = part_buf_E[i * 128 + j * 8 + 7];
      curr = (curr << 8) | part_buf_E[i * 128 + j * 8 + 6];
      curr = (curr << 8) | part_buf_E[i * 128 + j * 8 + 5];
      curr = (curr << 8) | part_buf_E[i * 128 + j * 8 + 4];
      curr = (curr << 8) | part_buf_E[i * 128 + j * 8 + 3];
      curr = (curr << 8) | part_buf_E[i * 128 + j * 8 + 2];
      curr = (curr << 8) | part_buf_E[i * 128 + j * 8 + 1];
      curr = (curr << 8) | part_buf_E[i * 128 + j * 8 + 0];
      large_E[i * 16 + j] = curr;
    }
  }
}
```