user: Demonstrate the C code that generates the assembly output below:

```asm
<BuscaRegistrador>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  call   <parser_str_to_upper@plt>
  lea    D44(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  xor    %eax,%eax
  test   %r8,%r8
  jne    L80
L95:
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L80:
  lea    D52(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x1,%eax
  test   %r8,%r8
  je     L95
  lea    D77(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x2,%eax
  test   %r8,%r8
  je     L95
  lea    D40(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x3,%eax
  test   %r8,%r8
  je     L95
  lea    D5(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x4,%eax
  test   %r8,%r8
  je     L95
  lea    D20(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x5,%eax
  test   %r8,%r8
  je     L95
  lea    D65(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x6,%eax
  test   %r8,%r8
  je     L95
  lea    D72(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x7,%eax
  test   %r8,%r8
  je     L95
  lea    D23(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x8,%eax
  test   %r8,%r8
  je     L95
  lea    D95(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x9,%eax
  test   %r8,%r8
  je     L95
  lea    D93(%rip),%rdi
  call   <parser_Abort@plt>
  or     $0xffffffff,%eax
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D44
data_type: string
name: extract_symbolic_data
arguments: label: D52
data_type: string
name: extract_symbolic_data
arguments: label: D77
data_type: string
name: extract_symbolic_data
arguments: label: D40
data_type: string
name: extract_symbolic_data
arguments: label: D5
data_type: string
name: extract_symbolic_data
arguments: label: D20
data_type: string
name: extract_symbolic_data
arguments: label: D65
data_type: string
name: extract_symbolic_data
arguments: label: D72
data_type: string
name: extract_symbolic_data
arguments: label: D23
data_type: string
name: extract_symbolic_data
arguments: label: D95
data_type: string
name: extract_symbolic_data
arguments: label: D93
data_type: string

tool: D44: R0

tool: D52: R1

tool: D77: R2

tool: D40: R3

tool: D5: R4

tool: D20: R5

tool: D65: R6

tool: D72: R7

tool: D23: FR

tool: D95: SP

tool: D93: Registrador invalido!

assistant: ```c
int BuscaRegistrador(char *nome) {
  parser_str_to_upper(nome);
  if (strcmp(nome, "R0") == 0) {
    return 0;
  } else if (strcmp(nome, "R1") == 0) {
    return 1;
  } else if (strcmp(nome, "R2") == 0) {
    return 2;
  } else if (strcmp(nome, "R3") == 0) {
    return 3;
  } else if (strcmp(nome, "R4") == 0) {
    return 4;
  } else if (strcmp(nome, "R5") == 0) {
    return 5;
  } else if (strcmp(nome, "R6") == 0) {
    return 6;
  } else if (strcmp(nome, "R7") == 0) {
    return 7;
  } else if (strcmp(nome, "FR") == 0) {
    return 8;
  } else if (strcmp(nome, "SP") == 0) {
    return 9;
  } else {
    parser_Abort("Registrador invalido!");
  }
  return -1;
}
```