user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    $0x0,%esi
  lea    D199(%rip),%rbp
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <strecat@plt>
  mov    %rax,%rbx
  mov    %rbp,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L46
  mov    %rbp,%rcx
  mov    $0x13,%edx
  lea    D60(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
L14:
  mov    %rbx,%rdi
  call   <free@plt>
  mov    $0x0,%edx
  lea    D88(%rip),%rsi
  lea    D199(%rip),%rdi
  mov    $0x0,%eax
  call   <strecat@plt>
  mov    %rax,%rbx
  lea    D7(%rip),%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L56
  lea    D7(%rip),%rcx
  mov    $0x14,%edx
  lea    D60(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
L53:
  mov    %rbx,%rdi
  call   <free@plt>
  mov    $0x0,%ecx
  lea    D75(%rip),%rdx
  lea    D123(%rip),%rsi
  lea    D192(%rip),%rdi
  mov    $0x0,%eax
  call   <strecat@plt>
  mov    %rax,%rbx
  lea    D30(%rip),%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L44
  lea    D30(%rip),%rcx
  mov    $0x15,%edx
  lea    D60(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
L29:
  mov    %rbx,%rdi
  call   <free@plt>
  mov    $0x0,%eax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L46:
  mov    %rbx,%rcx
  mov    $0x13,%edx
  lea    D60(%rip),%rsi
  lea    D92(%rip),%rdi
  call   <printf@plt>
  jmp    L14
L56:
  mov    %rbx,%rcx
  mov    $0x14,%edx
  lea    D60(%rip),%rsi
  lea    D92(%rip),%rdi
  call   <printf@plt>
  jmp    L53
L44:
  mov    %rbx,%rcx
  mov    $0x15,%edx
  lea    D60(%rip),%rsi
  lea    D92(%rip),%rdi
  call   <printf@plt>
  jmp    L29
```

tool_calls: name: unpack_data
arguments: label: D199
type_guessed: string
name: unpack_data
arguments: label: D60
type_guessed: string
name: unpack_data
arguments: label: D21
type_guessed: string
name: unpack_data
arguments: label: D88
type_guessed: string
name: unpack_data
arguments: label: D7
type_guessed: string
name: unpack_data
arguments: label: D75
type_guessed: string
name: unpack_data
arguments: label: D123
type_guessed: string
name: unpack_data
arguments: label: D192
type_guessed: string
name: unpack_data
arguments: label: D30
type_guessed: string
name: unpack_data
arguments: label: D92
type_guessed: string

tool: D199: a

tool: D60: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/arsv/u2ps/refs/heads/master/test/ct_strecat.c

tool: D21: %s:%i: OK %s


tool: D88: bbb

tool: D7: abbb

tool: D75: cc

tool: D123: /

tool: D192: aa

tool: D30: aa/cc

tool: D92: %s:%i: FAIL %s


assistant: ```c
int main(void) {
  char *r;
  r = strecat("a", NULL);
  if (!strcmp(r, "a"))
    printf("%s:%i: OK %s\n", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/arsv/u2ps/refs/heads/master/test/ct_strecat.c", 19, "a");
  else
    printf("%s:%i: FAIL %s\n", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/arsv/u2ps/refs/heads/master/test/ct_strecat.c", 19, r);
  free(r);
  ;
  r = strecat("a", "bbb", NULL);
  if (!strcmp(r, "abbb"))
    printf("%s:%i: OK %s\n", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/arsv/u2ps/refs/heads/master/test/ct_strecat.c", 20, "abbb");
  else
    printf("%s:%i: FAIL %s\n", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/arsv/u2ps/refs/heads/master/test/ct_strecat.c", 20, r);
  free(r);
  ;
  r = strecat("aa", "/", "cc", NULL);
  if (!strcmp(r, "aa/cc"))
    printf("%s:%i: OK %s\n", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/arsv/u2ps/refs/heads/master/test/ct_strecat.c", 21, "aa/cc");
  else
    printf("%s:%i: FAIL %s\n", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/arsv/u2ps/refs/heads/master/test/ct_strecat.c", 21, r);
  free(r);
  ;
  return 0;
}
```