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    L208
  movzbl 0x1(%rdi),%eax
  lea    0x1(%rdi),%rbx
L208:
  cmp    $0x9,%al
  je     L456
  cmp    $0x20,%al
  jne    L57
  nopl   0x0(%rax)
L456:
  movzbl 0x1(%rbx),%eax
  add    $0x1,%rbx
  cmp    $0x20,%al
  je     L456
  cmp    $0x9,%al
  je     L456
L57:
  movl   $0x0,0x0(%r13)
  movl   $0x0,(%r12)
  movzbl (%rsi),%eax
  cmp    $0x72,%al
  je     L372
  jg     L98
  cmp    $0x68,%al
  je     L55
  cmp    $0x6c,%al
  jne    L358
  mov    $0x6,%edx
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L375
L312:
  movl   $0x1,(%r12)
L395:
  mov    $0x6,%edx
  lea    D195(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L276
  mov    $0x7,%edx
  lea    D260(%rip),%rsi
L58:
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L153
  mov    $0x6,%edx
  lea    D228(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L276
L408:
  mov    $0x5,%edx
  lea    D15(%rip),%rsi
L305:
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x5,%edx
  test   %eax,%eax
  je     L153
  mov    $0x6,%edx
  lea    D102(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L276
  mov    (%r12),%eax
  mov    $0x6,%edx
  jmp    L403
  nopl   0x0(%rax)
L98:
  cmp    $0x73,%al
  jne    L358
  mov    $0x6,%edx
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L392
L101:
  movl   $0x1,(%r12)
L378:
  mov    $0x6,%edx
  lea    D195(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L276
  mov    $0x7,%edx
  lea    D241(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L153
  mov    $0x6,%edx
  lea    D262(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L276
  jmp    L408
  nopw   0x0(%rax,%rax,1)
L358:
  xor    %eax,%eax
L201:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   (%rax)
L372:
  mov    $0x6,%edx
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L221
L438:
  movl   $0x1,(%r12)
L18:
  mov    $0x6,%edx
  lea    D195(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L276
  mov    $0x7,%edx
  lea    D241(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L153
  mov    $0x6,%edx
  lea    D228(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L276
  mov    $0x5,%edx
  lea    D109(%rip),%rsi
  jmp    L305
  xchg   %ax,%ax
L55:
  mov    $0x6,%edx
  lea    D195(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L191
L365:
  movl   $0x1,(%r12)
L366:
  mov    $0x6,%edx
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  lea    D241(%rip),%rsi
  test   %eax,%eax
  jne    L58
L276:
  mov    $0x6,%edx
L153:
  movl   $0x1,0x0(%r13)
  mov    (%r12),%eax
L403:
  test   %eax,%eax
  je     L201
  add    $0x8,%rsp
  sub    %rbp,%rbx
  lea    (%rdx,%rbx,1),%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L392:
  mov    $0x7,%edx
  lea    D260(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L101
  mov    $0x6,%edx
  lea    D228(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L101
  mov    $0x5,%edx
  lea    D109(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L101
  jmp    L378
  nop
L191:
  mov    $0x7,%edx
  lea    D260(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L365
  mov    $0x6,%edx
  lea    D262(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L365
  mov    $0x5,%edx
  lea    D109(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L365
  jmp    L366
  nopl   0x0(%rax)
L221:
  mov    $0x7,%edx
  lea    D260(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L438
  mov    $0x6,%edx
  lea    D262(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L438
  mov    $0x5,%edx
  lea    D15(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L438
  jmp    L18
  nopl   0x0(%rax)
L375:
  mov    $0x7,%edx
  lea    D241(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L312
  mov    $0x6,%edx
  lea    D262(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L312
  mov    $0x5,%edx
  lea    D109(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L312
  jmp    L395
```

tool_calls: name: disassemble_data
arguments: data_label: D147
type: string
name: disassemble_data
arguments: data_label: D195
type: string
name: disassemble_data
arguments: data_label: D260
type: string
name: disassemble_data
arguments: data_label: D228
type: string
name: disassemble_data
arguments: data_label: D15
type: string
name: disassemble_data
arguments: data_label: D102
type: string
name: disassemble_data
arguments: data_label: D241
type: string
name: disassemble_data
arguments: data_label: D262
type: string
name: disassemble_data
arguments: data_label: D109
type: string

tool: D147: -html-

tool: D195: +html+

tool: D260: -latex-

tool: D228: +sgml+

tool: D15: +rtf+

tool: D102: +none+

tool: D241: +latex+

tool: D262: -sgml-

tool: D109: -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);
}
```