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

```asm
<CopyOrSkip>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbp
  mov    %rdx,%r12
  mov    %rcx,%r13
  cmpb   $0xa,(%rdi)
  sete   %bl
  movzbl %bl,%ebx
  add    %rdi,%rbx
  movzbl (%rbx),%eax
  cmp    $0x20,%al
  je     L276
  cmp    $0x9,%al
  jne    L409
L276:
  add    $0x1,%rbx
  movzbl (%rbx),%eax
  cmp    $0x20,%al
  je     L276
  cmp    $0x9,%al
  je     L276
L409:
  movl   $0x0,0x0(%r13)
  movl   $0x0,(%r12)
  movzbl (%rsi),%eax
  cmp    $0x72,%al
  je     L360
  jg     L467
  cmp    $0x68,%al
  je     L333
  cmp    $0x6c,%al
  jne    L22
  mov    $0x6,%edx
  lea    D164(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L408
L73:
  movl   $0x1,(%r12)
L28:
  mov    $0x6,%edx
  lea    D249(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  jne    L502
L411:
  movl   $0x1,0x0(%r13)
  jmp    L399
L22:
  mov    $0x0,%eax
  jmp    L375
L467:
  cmp    $0x73,%al
  jne    L258
  mov    $0x6,%edx
  lea    D164(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L34
L171:
  movl   $0x1,(%r12)
L272:
  mov    $0x6,%edx
  lea    D249(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  jne    L579
L397:
  movl   $0x1,0x0(%r13)
  jmp    L399
L258:
  mov    $0x0,%eax
  jmp    L375
L333:
  mov    $0x6,%edx
  lea    D249(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L554
L552:
  movl   $0x1,(%r12)
L221:
  mov    $0x6,%edx
  lea    D164(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  jne    L288
L469:
  movl   $0x1,0x0(%r13)
L399:
  mov    (%r12),%eax
  sub    %rbp,%rbx
  add    %ebx,%edx
  test   %eax,%eax
  cmovne %edx,%eax
L375:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L554:
  mov    $0x7,%edx
  lea    D292(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L552
  mov    $0x6,%edx
  lea    D274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L552
  mov    $0x5,%edx
  lea    D138(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L221
  jmp    L552
L288:
  mov    $0x7,%edx
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L469
  mov    $0x6,%edx
  lea    D190(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  je     L469
  mov    $0x5,%edx
  lea    D336(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x5,%edx
  test   %eax,%eax
  je     L469
  mov    $0x6,%edx
  lea    D183(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  jne    L399
  jmp    L469
L408:
  mov    $0x7,%edx
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L73
  mov    $0x6,%edx
  lea    D274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L73
  mov    $0x5,%edx
  lea    D138(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L28
  jmp    L73
L502:
  mov    $0x7,%edx
  lea    D292(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L411
  mov    $0x6,%edx
  lea    D190(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  je     L411
  mov    $0x5,%edx
  lea    D336(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x5,%edx
  test   %eax,%eax
  je     L411
  mov    $0x6,%edx
  lea    D183(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  jne    L399
  jmp    L411
L34:
  mov    $0x7,%edx
  lea    D292(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L171
  mov    $0x6,%edx
  lea    D190(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L171
  mov    $0x5,%edx
  lea    D138(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L272
  jmp    L171
L579:
  mov    $0x7,%edx
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L397
  mov    $0x6,%edx
  lea    D274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  je     L397
  mov    $0x5,%edx
  lea    D336(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x5,%edx
  test   %eax,%eax
  je     L397
  mov    $0x6,%edx
  lea    D183(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  jne    L399
  jmp    L397
L360:
  mov    $0x6,%edx
  lea    D164(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L285
L127:
  movl   $0x1,(%r12)
L413:
  mov    $0x6,%edx
  lea    D249(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  jne    L453
L295:
  movl   $0x1,0x0(%r13)
  jmp    L399
L285:
  mov    $0x7,%edx
  lea    D292(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L127
  mov    $0x6,%edx
  lea    D274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L127
  mov    $0x5,%edx
  lea    D336(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L413
  jmp    L127
L453:
  mov    $0x7,%edx
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x7,%edx
  test   %eax,%eax
  je     L295
  mov    $0x6,%edx
  lea    D190(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  je     L295
  mov    $0x5,%edx
  lea    D138(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x5,%edx
  test   %eax,%eax
  je     L295
  mov    $0x6,%edx
  lea    D183(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    $0x6,%edx
  test   %eax,%eax
  jne    L399
  jmp    L295
```

tool_calls: name: parse_data
arguments: label: D164
datatype: string
name: parse_data
arguments: label: D249
datatype: string
name: parse_data
arguments: label: D292
datatype: string
name: parse_data
arguments: label: D274
datatype: string
name: parse_data
arguments: label: D138
datatype: string
name: parse_data
arguments: label: D147
datatype: string
name: parse_data
arguments: label: D190
datatype: string
name: parse_data
arguments: label: D336
datatype: string
name: parse_data
arguments: label: D183
datatype: string

tool: D164: -html-

tool: D249: +html+

tool: D292: -latex-

tool: D274: -sgml-

tool: D138: -rtf-

tool: D147: +latex+

tool: D190: +sgml+

tool: D336: +rtf+

tool: D183: +none+

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