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

```asm
<CopyOrSkip>:
  endbr64
  push   %r13
  mov    %rcx,%r13
  push   %r12
  mov    %rdx,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x8,%rsp
  movzbl (%rdi),%eax
  cmp    $0xa,%al
  jne    L438
  movzbl 0x1(%rdi),%eax
  lea    0x1(%rdi),%rbx
L438:
  cmp    $0x9,%al
  je     L95
  cmp    $0x20,%al
  jne    L19
  nopl   0x0(%rax)
L95:
  movzbl 0x1(%rbx),%eax
  add    $0x1,%rbx
  cmp    $0x20,%al
  je     L95
  cmp    $0x9,%al
  je     L95
L19:
  movl   $0x0,0x0(%r13)
  movl   $0x0,(%r12)
  movzbl (%rsi),%eax
  cmp    $0x72,%al
  je     L354
  jg     L236
  cmp    $0x68,%al
  je     L315
  cmp    $0x6c,%al
  jne    L358
  mov    $0x6,%edx
  lea    D124(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L217
L37:
  movl   $0x1,(%r12)
L32:
  mov    $0x6,%edx
  lea    D67(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L59
  mov    $0x7,%edx
  lea    D273(%rip),%rsi
L435:
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L384
  mov    $0x6,%edx
  lea    D97(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L59
L130:
  mov    $0x5,%edx
  lea    D136(%rip),%rsi
L185:
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x5,%edx
  test   %eax,%eax
  je     L384
  mov    $0x6,%edx
  lea    D125(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L59
  mov    (%r12),%eax
  mov    $0x6,%edx
  jmp    L195
  nopl   0x0(%rax)
L236:
  cmp    $0x73,%al
  jne    L358
  mov    $0x6,%edx
  lea    D124(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L319
L342:
  movl   $0x1,(%r12)
L81:
  mov    $0x6,%edx
  lea    D67(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L59
  mov    $0x7,%edx
  lea    D126(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L384
  mov    $0x6,%edx
  lea    D74(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L59
  jmp    L130
  nopw   0x0(%rax,%rax,1)
L358:
  xor    %eax,%eax
L402:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   (%rax)
L354:
  mov    $0x6,%edx
  lea    D124(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L3
L279:
  movl   $0x1,(%r12)
L289:
  mov    $0x6,%edx
  lea    D67(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L59
  mov    $0x7,%edx
  lea    D126(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L384
  mov    $0x6,%edx
  lea    D97(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L59
  mov    $0x5,%edx
  lea    D209(%rip),%rsi
  jmp    L185
  xchg   %ax,%ax
L315:
  mov    $0x6,%edx
  lea    D67(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L163
L400:
  movl   $0x1,(%r12)
L191:
  mov    $0x6,%edx
  lea    D124(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  lea    D126(%rip),%rsi
  test   %eax,%eax
  jne    L435
L59:
  mov    $0x6,%edx
L384:
  movl   $0x1,0x0(%r13)
  mov    (%r12),%eax
L195:
  test   %eax,%eax
  je     L402
  add    $0x8,%rsp
  sub    %rbp,%rbx
  lea    (%rdx,%rbx,1),%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L319:
  mov    $0x7,%edx
  lea    D273(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L342
  mov    $0x6,%edx
  lea    D97(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L342
  mov    $0x5,%edx
  lea    D209(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L342
  jmp    L81
  nop
L163:
  mov    $0x7,%edx
  lea    D273(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L400
  mov    $0x6,%edx
  lea    D74(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L400
  mov    $0x5,%edx
  lea    D209(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L400
  jmp    L191
  nopl   0x0(%rax)
L3:
  mov    $0x7,%edx
  lea    D273(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L279
  mov    $0x6,%edx
  lea    D74(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L279
  mov    $0x5,%edx
  lea    D136(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L279
  jmp    L289
  nopl   0x0(%rax)
L217:
  mov    $0x7,%edx
  lea    D126(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L37
  mov    $0x6,%edx
  lea    D74(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L37
  mov    $0x5,%edx
  lea    D209(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L37
  jmp    L32
```

tool_calls: name: unpack_data
arguments: data_tag: D124
datatype: string
name: unpack_data
arguments: data_tag: D67
datatype: string
name: unpack_data
arguments: data_tag: D273
datatype: string
name: unpack_data
arguments: data_tag: D97
datatype: string
name: unpack_data
arguments: data_tag: D136
datatype: string
name: unpack_data
arguments: data_tag: D125
datatype: string
name: unpack_data
arguments: data_tag: D126
datatype: string
name: unpack_data
arguments: data_tag: D74
datatype: string
name: unpack_data
arguments: data_tag: D209
datatype: string

tool: D124: -html-

tool: D67: +html+

tool: D273: -latex-

tool: D97: +sgml+

tool: D136: +rtf+

tool: D125: +none+

tool: D126: +latex+

tool: D74: -sgml-

tool: D209: -rtf-

assistant: ```c
int CopyOrSkip(char *string, char *type, int *copy, int *skip) {
  char *p = string;
  int s = 0;
  if (*p == '\n')
    p++;
  while (*p == ' ' || *p == '\t')
    p++;
  *copy = *skip = 0;
  switch (*type) {
  case 'h':
    if (!strncmp(p, "+html+", s = 6) || !strncmp(p, "-latex-", s = 7) || !strncmp(p, "-sgml-", s = 6) || !strncmp(p, "-rtf-", s = 5))
      *copy = 1;
    if (!strncmp(p, "-html-", s = 6) || !strncmp(p, "+latex+", s = 7) || !strncmp(p, "+sgml+", s = 6) || !strncmp(p, "+rtf+", s = 5) || !strncmp(p, "+none+", s = 6))
      *skip = 1;
    break;
  case 'l':
    if (!strncmp(p, "-html-", s = 6) || !strncmp(p, "+latex+", s = 7) || !strncmp(p, "-sgml-", s = 6) || !strncmp(p, "-rtf-", s = 5))
      *copy = 1;
    if (!strncmp(p, "+html+", s = 6) || !strncmp(p, "-latex-", s = 7) || !strncmp(p, "+sgml+", s = 6) || !strncmp(p, "+rtf+", s = 5) || !strncmp(p, "+none+", s = 6))
      *skip = 1;
    break;
  case 's':
    if (!strncmp(p, "-html-", s = 6) || !strncmp(p, "-latex-", s = 7) || !strncmp(p, "+sgml+", s = 6) || !strncmp(p, "-rtf-", s = 5))
      *copy = 1;
    if (!strncmp(p, "+html+", s = 6) || !strncmp(p, "+latex+", s = 7) || !strncmp(p, "-sgml-", s = 6) || !strncmp(p, "+rtf+", s = 5) || !strncmp(p, "+none+", s = 6))
      *skip = 1;
    break;
  case 'r':
    if (!strncmp(p, "-html-", s = 6) || !strncmp(p, "-latex-", s = 7) || !strncmp(p, "-sgml-", s = 6) || !strncmp(p, "+rtf+", s = 5))
      *copy = 1;
    if (!strncmp(p, "+html+", s = 6) || !strncmp(p, "+latex+", s = 7) || !strncmp(p, "+sgml+", s = 6) || !strncmp(p, "-rtf-", s = 5) || !strncmp(p, "+none+", s = 6))
      *skip = 1;
    break;
  }
  if (*copy)
    return (p - string + s);
  else
    return (0);
}
```