user: What would the C source look like for the assembly code provided here:

```asm
<rearmar_bitmap>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  mov    %rsi,%rdi
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x8,%rsp
  call   <malloc@plt>
  mov    %rax,%r8
  test   %rbx,%rbx
  je     L26
  lea    -0x1(%rbx),%rax
  cmp    $0xe,%rax
  jbe    L41
  mov    %rbx,%rsi
  movdqa D2(%rip),%xmm1
  mov    %rbp,%rax
  mov    %r8,%rcx
  shr    $0x4,%rsi
  shl    $0x7,%rsi
  add    %rbp,%rsi
  xchg   %ax,%ax
L20:
  movdqu (%rax),%xmm4
  movdqu (%rax),%xmm2
  sub    $0xffffffffffffff80,%rax
  add    $0x10,%rcx
  movdqu -0x70(%rax),%xmm0
  movdqu -0x60(%rax),%xmm9
  movdqa %xmm1,%xmm10
  movdqa %xmm1,%xmm11
  pand   %xmm1,%xmm4
  psrlw  $0x8,%xmm2
  movdqu -0x60(%rax),%xmm7
  movdqu -0x40(%rax),%xmm5
  pand   %xmm1,%xmm0
  pand   %xmm1,%xmm9
  movdqu -0x40(%rax),%xmm3
  movdqu -0x20(%rax),%xmm6
  packuswb %xmm0,%xmm4
  movdqu -0x70(%rax),%xmm0
  pand   %xmm1,%xmm5
  movdqu -0x10(%rax),%xmm8
  psrlw  $0x8,%xmm7
  psrlw  $0x8,%xmm3
  pand   %xmm1,%xmm6
  psrlw  $0x8,%xmm0
  psrlw  $0x8,%xmm8
  packuswb %xmm0,%xmm2
  movdqu -0x50(%rax),%xmm0
  pand   %xmm1,%xmm0
  packuswb %xmm0,%xmm9
  movdqu -0x50(%rax),%xmm0
  pand   %xmm9,%xmm10
  psrlw  $0x8,%xmm9
  psrlw  $0x8,%xmm0
  packuswb %xmm0,%xmm7
  movdqu -0x30(%rax),%xmm0
  pand   %xmm1,%xmm0
  packuswb %xmm0,%xmm5
  movdqu -0x30(%rax),%xmm0
  psrlw  $0x8,%xmm0
  packuswb %xmm0,%xmm3
  movdqu -0x10(%rax),%xmm0
  pand   %xmm1,%xmm0
  packuswb %xmm0,%xmm6
  movdqu -0x20(%rax),%xmm0
  psrlw  $0x8,%xmm0
  packuswb %xmm8,%xmm0
  movdqa %xmm1,%xmm8
  pand   %xmm4,%xmm8
  psrlw  $0x8,%xmm4
  packuswb %xmm10,%xmm8
  packuswb %xmm9,%xmm4
  movdqa %xmm1,%xmm10
  movdqa %xmm1,%xmm9
  pand   %xmm6,%xmm10
  pand   %xmm5,%xmm9
  psrlw  $0x8,%xmm6
  psrlw  $0x8,%xmm5
  packuswb %xmm10,%xmm9
  movdqa %xmm1,%xmm10
  packuswb %xmm6,%xmm5
  movdqa %xmm1,%xmm6
  pand   %xmm7,%xmm10
  pand   %xmm2,%xmm6
  psrlw  $0x8,%xmm7
  psrlw  $0x8,%xmm2
  packuswb %xmm10,%xmm6
  movdqa %xmm1,%xmm10
  packuswb %xmm7,%xmm2
  movdqa %xmm1,%xmm7
  pand   %xmm0,%xmm10
  pand   %xmm3,%xmm7
  psrlw  $0x8,%xmm0
  psrlw  $0x8,%xmm3
  packuswb %xmm10,%xmm7
  movdqa %xmm1,%xmm10
  packuswb %xmm0,%xmm3
  movdqa %xmm1,%xmm0
  pand   %xmm9,%xmm10
  pand   %xmm8,%xmm0
  psrlw  $0x8,%xmm9
  pand   %xmm7,%xmm11
  psrlw  $0x8,%xmm8
  psrlw  $0x8,%xmm7
  packuswb %xmm10,%xmm0
  movdqa %xmm1,%xmm10
  paddb  %xmm0,%xmm0
  packuswb %xmm9,%xmm8
  pand   %xmm6,%xmm10
  psrlw  $0x8,%xmm6
  packuswb %xmm11,%xmm10
  movdqa %xmm1,%xmm11
  packuswb %xmm7,%xmm6
  paddb  %xmm10,%xmm0
  movdqa %xmm1,%xmm10
  pand   %xmm5,%xmm11
  pand   %xmm4,%xmm10
  psrlw  $0x8,%xmm5
  paddb  %xmm0,%xmm0
  packuswb %xmm11,%xmm10
  psrlw  $0x8,%xmm4
  movdqa %xmm1,%xmm11
  paddb  %xmm10,%xmm0
  movdqa %xmm1,%xmm10
  pand   %xmm3,%xmm11
  pand   %xmm2,%xmm10
  paddb  %xmm0,%xmm0
  packuswb %xmm5,%xmm4
  psrlw  $0x8,%xmm2
  psrlw  $0x8,%xmm3
  packuswb %xmm11,%xmm10
  paddb  %xmm10,%xmm0
  packuswb %xmm3,%xmm2
  paddb  %xmm0,%xmm0
  paddb  %xmm8,%xmm0
  paddb  %xmm0,%xmm0
  paddb  %xmm6,%xmm0
  paddb  %xmm0,%xmm0
  paddb  %xmm4,%xmm0
  paddb  %xmm0,%xmm0
  paddb  %xmm2,%xmm0
  movups %xmm0,-0x10(%rcx)
  cmp    %rsi,%rax
  jne    L20
  mov    %rbx,%rcx
  and    $0xfffffffffffffff0,%rcx
  lea    0x0(,%rcx,8),%rax
  cmp    %rcx,%rbx
  je     L26
L34:
  lea    0x0(%rbp,%rax,1),%rdx
  xchg   %ax,%ax
L6:
  movzbl 0x1(%rdx),%esi
  movzbl (%rdx),%eax
  add    $0x8,%rdx
  lea    (%rsi,%rax,2),%eax
  movzbl -0x6(%rdx),%esi
  lea    (%rsi,%rax,2),%eax
  movzbl -0x5(%rdx),%esi
  lea    (%rsi,%rax,2),%eax
  movzbl -0x4(%rdx),%esi
  lea    (%rsi,%rax,2),%eax
  movzbl -0x3(%rdx),%esi
  lea    (%rsi,%rax,2),%eax
  movzbl -0x2(%rdx),%esi
  lea    (%rsi,%rax,2),%eax
  movzbl -0x1(%rdx),%esi
  lea    (%rsi,%rax,2),%eax
  mov    %al,(%r8,%rcx,1)
  add    $0x1,%rcx
  cmp    %rcx,%rbx
  ja     L6
L26:
  add    $0x8,%rsp
  mov    %r8,%rax
  pop    %rbx
  pop    %rbp
  ret
L41:
  xor    %ecx,%ecx
  xor    %eax,%eax
  jmp    L34
```

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

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

assistant: ```c
char *rearmar_bitmap(char *bitmap, size_t tam) {
  char *bloque = malloc(tam);
  size_t z = 0;
  for (size_t i = 0; i < tam; i++) {
    bloque[i] = 0;
    for (size_t j = 0; j < 8; j++) {
      bloque[i] = bloque[i] * 2 + bitmap[z++];
    }
  }
  return bloque;
}
```