user: What is the c source code of the assembly code below?

```asm
<compress016>:
  endbr64
  lea    0x10(%rsi),%rdx
  mov    %rdi,%rcx
  mov    %rsi,%rax
  cmp    %rdx,%rdi
  jae    L14
  lea    0x40(%rdi),%rdx
  cmp    %rdx,%rsi
  jb     L9
L14:
  movdqa D14(%rip),%xmm6
  movdqa D16(%rip),%xmm2
  movups %xmm6,(%rax)
  movdqu (%rcx),%xmm7
  movdqa %xmm2,%xmm1
  movdqu 0x10(%rcx),%xmm4
  movdqa %xmm2,%xmm8
  movdqu 0x20(%rcx),%xmm3
  movdqu 0x30(%rcx),%xmm0
  pand   %xmm7,%xmm1
  pand   %xmm4,%xmm8
  movdqa %xmm1,%xmm5
  psrlw  $0x8,%xmm4
  movdqa %xmm7,%xmm1
  psrlw  $0x8,%xmm1
  movdqa %xmm2,%xmm7
  packuswb %xmm8,%xmm5
  packuswb %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  pand   %xmm0,%xmm7
  pand   %xmm3,%xmm4
  psrlw  $0x8,%xmm0
  psrlw  $0x8,%xmm3
  packuswb %xmm7,%xmm4
  movdqa %xmm2,%xmm7
  packuswb %xmm0,%xmm3
  movdqa %xmm2,%xmm0
  pand   %xmm4,%xmm7
  pand   %xmm5,%xmm0
  psrlw  $0x8,%xmm4
  packuswb %xmm7,%xmm0
  movdqa %xmm2,%xmm7
  pand   %xmm3,%xmm2
  pand   %xmm1,%xmm7
  psrlw  $0x8,%xmm3
  paddb  %xmm0,%xmm0
  packuswb %xmm2,%xmm7
  movdqa %xmm1,%xmm2
  movdqa %xmm5,%xmm1
  psrlw  $0x8,%xmm2
  psrlw  $0x8,%xmm1
  paddb  %xmm7,%xmm0
  paddb  %xmm0,%xmm0
  packuswb %xmm3,%xmm2
  packuswb %xmm4,%xmm1
  paddb  %xmm0,%xmm0
  paddb  %xmm6,%xmm2
  paddb  %xmm2,%xmm0
  paddb  %xmm1,%xmm1
  paddb  %xmm1,%xmm0
  movups %xmm0,(%rax)
  ret
L9:
  movb   $0x30,(%rsi)
  movzbl (%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,(%rsi)
  movzbl 0x1(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,(%rax)
  movzbl 0x2(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,(%rax)
  add    0x3(%rdi),%dl
  mov    %dl,(%rax)
  movb   $0x30,0x1(%rax)
  movzbl 0x4(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x1(%rax)
  movzbl 0x5(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x1(%rax)
  movzbl 0x6(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x1(%rax)
  add    0x7(%rdi),%dl
  mov    %dl,0x1(%rax)
  movb   $0x30,0x2(%rax)
  movzbl 0x8(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x2(%rax)
  movzbl 0x9(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x2(%rax)
  movzbl 0xa(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x2(%rax)
  add    0xb(%rdi),%dl
  mov    %dl,0x2(%rax)
  movb   $0x30,0x3(%rax)
  movzbl 0xc(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x3(%rax)
  movzbl 0xd(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x3(%rax)
  movzbl 0xe(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x3(%rax)
  add    0xf(%rdi),%dl
  mov    %dl,0x3(%rax)
  movb   $0x30,0x4(%rax)
  movzbl 0x10(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x4(%rax)
  movzbl 0x11(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x4(%rax)
  movzbl 0x12(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x4(%rax)
  add    0x13(%rdi),%dl
  mov    %dl,0x4(%rax)
  movb   $0x30,0x5(%rax)
  movzbl 0x14(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x5(%rax)
  movzbl 0x15(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x5(%rax)
  movzbl 0x16(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x5(%rax)
  add    0x17(%rdi),%dl
  mov    %dl,0x5(%rax)
  movb   $0x30,0x6(%rax)
  movzbl 0x18(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x6(%rax)
  movzbl 0x19(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x6(%rax)
  movzbl 0x1a(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x6(%rax)
  add    0x1b(%rdi),%dl
  mov    %dl,0x6(%rax)
  movb   $0x30,0x7(%rax)
  movzbl 0x1c(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x7(%rax)
  movzbl 0x1d(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x7(%rax)
  movzbl 0x1e(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x7(%rax)
  add    0x1f(%rdi),%dl
  mov    %dl,0x7(%rax)
  movb   $0x30,0x8(%rax)
  movzbl 0x20(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x8(%rax)
  movzbl 0x21(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x8(%rax)
  movzbl 0x22(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x8(%rax)
  add    0x23(%rdi),%dl
  mov    %dl,0x8(%rax)
  movb   $0x30,0x9(%rax)
  movzbl 0x24(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0x9(%rax)
  movzbl 0x25(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0x9(%rax)
  movzbl 0x26(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0x9(%rax)
  add    0x27(%rdi),%dl
  mov    %dl,0x9(%rax)
  movb   $0x30,0xa(%rax)
  movzbl 0x28(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0xa(%rax)
  movzbl 0x29(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0xa(%rax)
  movzbl 0x2a(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0xa(%rax)
  add    0x2b(%rdi),%dl
  mov    %dl,0xa(%rax)
  movb   $0x30,0xb(%rax)
  movzbl 0x2c(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0xb(%rax)
  movzbl 0x2d(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0xb(%rax)
  movzbl 0x2e(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0xb(%rax)
  add    0x2f(%rdi),%dl
  mov    %dl,0xb(%rax)
  movb   $0x30,0xc(%rax)
  movzbl 0x30(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0xc(%rax)
  movzbl 0x31(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0xc(%rax)
  movzbl 0x32(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0xc(%rax)
  add    0x33(%rdi),%dl
  mov    %dl,0xc(%rax)
  movb   $0x30,0xd(%rax)
  movzbl 0x34(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0xd(%rax)
  movzbl 0x35(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0xd(%rax)
  movzbl 0x36(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0xd(%rax)
  add    0x37(%rdi),%dl
  mov    %dl,0xd(%rax)
  movb   $0x30,0xe(%rax)
  movzbl 0x38(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0xe(%rax)
  movzbl 0x39(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0xe(%rax)
  movzbl 0x3a(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0xe(%rax)
  add    0x3b(%rdi),%dl
  mov    %dl,0xe(%rax)
  movb   $0x30,0xf(%rax)
  movzbl 0x3c(%rdi),%edx
  lea    0x30(,%rdx,8),%edx
  mov    %dl,0xf(%rax)
  movzbl 0x3d(%rdi),%esi
  lea    (%rdx,%rsi,4),%esi
  mov    %sil,0xf(%rax)
  movzbl 0x3e(%rdi),%edx
  lea    (%rsi,%rdx,2),%edx
  mov    %dl,0xf(%rax)
  add    0x3f(%rdi),%dl
  mov    %dl,0xf(%rax)
  ret
```

tool_calls: name: parse_data
arguments: data_label: D14
data_type: byte[16]
name: parse_data
arguments: data_label: D16
data_type: byte[16]

tool: {"D14": [0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30]}

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

assistant: ```c
void compress016(unsigned char *out, unsigned char *in) {
  int times;
  int i, j;
  for (i = 0; i < 16; i++) {
    times = 0x8;
    in[i] = '0';
    for (j = 0; j < 4; j++) {
      in[i] += (*out++) * times;
      times /= 2;
    }
  }
}
```