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

```asm
<String2SeqfileFormat>:
  endbr64
  push   %r12
  xor    %r12d,%r12d
  push   %rbp
  sub    $0x8,%rsp
  test   %rdi,%rdi
  je     L241
  mov    $0xffffffff,%esi
  call   <sre_strdup@plt>
  mov    %rax,%rbp
  mov    %rax,%rdi
  call   <s2upper@plt>
  lea    D134(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L15
L1:
  mov    $0x7,%r12d
L107:
  mov    %rbp,%rdi
  call   <free@plt>
L241:
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  ret
  nopl   (%rax)
L15:
  lea    D250(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1
  lea    D185(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L262
L6:
  mov    $0x12,%r12d
  jmp    L107
  nopl   0x0(%rax,%rax,1)
L262:
  lea    D261(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L6
  lea    D159(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L261
L86:
  mov    $0x2,%r12d
  jmp    L107
L261:
  lea    D43(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L86
  lea    D241(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x4,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D103(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x5,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D139(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x10,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D258(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xd,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D52(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x1,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D168(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x6,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D12(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x9,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D116(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x8,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D92(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xc,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D151(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xe,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D25(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L299
L114:
  mov    $0x65,%r12d
  jmp    L107
L299:
  lea    D137(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L114
  lea    D240(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L114
  lea    D229(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x66,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D87(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x67,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D244(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L143
L322:
  mov    $0x68,%r12d
  jmp    L107
L143:
  lea    D104(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L322
  lea    D62(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x69,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L107
  lea    D51(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L163
L40:
  mov    $0x6a,%r12d
  jmp    L107
L163:
  lea    D196(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L40
  lea    D236(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%rax
  sbb    %r12d,%r12d
  and    $0x6b,%r12d
  jmp    L107
```

tool_calls: name: retrieve_data
arguments: tag: D134
type_guessed: string
name: retrieve_data
arguments: tag: D250
type_guessed: string
name: retrieve_data
arguments: tag: D185
type_guessed: string
name: retrieve_data
arguments: tag: D261
type_guessed: string
name: retrieve_data
arguments: tag: D159
type_guessed: string
name: retrieve_data
arguments: tag: D43
type_guessed: string
name: retrieve_data
arguments: tag: D241
type_guessed: string
name: retrieve_data
arguments: tag: D103
type_guessed: string
name: retrieve_data
arguments: tag: D139
type_guessed: string
name: retrieve_data
arguments: tag: D258
type_guessed: string
name: retrieve_data
arguments: tag: D52
type_guessed: string
name: retrieve_data
arguments: tag: D168
type_guessed: string
name: retrieve_data
arguments: tag: D12
type_guessed: string
name: retrieve_data
arguments: tag: D116
type_guessed: string
name: retrieve_data
arguments: tag: D92
type_guessed: string
name: retrieve_data
arguments: tag: D151
type_guessed: string
name: retrieve_data
arguments: tag: D25
type_guessed: string
name: retrieve_data
arguments: tag: D137
type_guessed: string
name: retrieve_data
arguments: tag: D240
type_guessed: string
name: retrieve_data
arguments: tag: D229
type_guessed: string
name: retrieve_data
arguments: tag: D87
type_guessed: string
name: retrieve_data
arguments: tag: D244
type_guessed: string
name: retrieve_data
arguments: tag: D104
type_guessed: string
name: retrieve_data
arguments: tag: D62
type_guessed: string
name: retrieve_data
arguments: tag: D51
type_guessed: string
name: retrieve_data
arguments: tag: D196
type_guessed: string
name: retrieve_data
arguments: tag: D236
type_guessed: string

tool: D134: FASTA

tool: D250: FA

tool: D185: VIENNA

tool: D261: VIE

tool: D159: GENBANK

tool: D43: GB

tool: D241: EMBL

tool: D103: GCG

tool: D139: GCGDATA

tool: D258: RAW

tool: D52: IG

tool: D168: STRIDER

tool: D12: IDRAW

tool: D116: ZUKER

tool: D92: PIR

tool: D151: SQUID

tool: D25: STOCKHOLM

tool: D137: ST

tool: D240: STK

tool: D229: SELEX

tool: D87: MSF

tool: D244: CLUSTAL

tool: D104: CLU

tool: D62: A2M

tool: D51: PHYLIP

tool: D196: PHY

tool: D236: EPS

assistant: ```c
int String2SeqfileFormat(char *s) {
  char *s2;
  int code = 0;
  if (s == NULL)
    return 0;
  s2 = sre_strdup(s, -1);
  s2upper(s2);
  if (strcmp(s2, "FASTA") == 0)
    code = 7;
  else if (strcmp(s2, "FA") == 0)
    code = 7;
  else if (strcmp(s2, "VIENNA") == 0)
    code = 18;
  else if (strcmp(s2, "VIE") == 0)
    code = 18;
  else if (strcmp(s2, "GENBANK") == 0)
    code = 2;
  else if (strcmp(s2, "GB") == 0)
    code = 2;
  else if (strcmp(s2, "EMBL") == 0)
    code = 4;
  else if (strcmp(s2, "GCG") == 0)
    code = 5;
  else if (strcmp(s2, "GCGDATA") == 0)
    code = 16;
  else if (strcmp(s2, "RAW") == 0)
    code = 13;
  else if (strcmp(s2, "IG") == 0)
    code = 1;
  else if (strcmp(s2, "STRIDER") == 0)
    code = 6;
  else if (strcmp(s2, "IDRAW") == 0)
    code = 9;
  else if (strcmp(s2, "ZUKER") == 0)
    code = 8;
  else if (strcmp(s2, "PIR") == 0)
    code = 12;
  else if (strcmp(s2, "SQUID") == 0)
    code = 14;
  else if (strcmp(s2, "STOCKHOLM") == 0)
    code = 101;
  else if (strcmp(s2, "ST") == 0)
    code = 101;
  else if (strcmp(s2, "STK") == 0)
    code = 101;
  else if (strcmp(s2, "SELEX") == 0)
    code = 102;
  else if (strcmp(s2, "MSF") == 0)
    code = 103;
  else if (strcmp(s2, "CLUSTAL") == 0)
    code = 104;
  else if (strcmp(s2, "CLU") == 0)
    code = 104;
  else if (strcmp(s2, "A2M") == 0)
    code = 105;
  else if (strcmp(s2, "PHYLIP") == 0)
    code = 106;
  else if (strcmp(s2, "PHY") == 0)
    code = 106;
  else if (strcmp(s2, "EPS") == 0)
    code = 107;
  else
    code = 0;
  free(s2);
  return code;
}
```