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

```asm
<BuscaRegistrador>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <parser_str_to_upper@plt>
  mov    -0x8(%rbp),%rax
  lea    D83(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L14
  mov    $0x0,%eax
  jmp    L194
L14:
  mov    -0x8(%rbp),%rax
  lea    D71(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L114
  mov    $0x1,%eax
  jmp    L194
L114:
  mov    -0x8(%rbp),%rax
  lea    D50(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L171
  mov    $0x2,%eax
  jmp    L194
L171:
  mov    -0x8(%rbp),%rax
  lea    D103(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L141
  mov    $0x3,%eax
  jmp    L194
L141:
  mov    -0x8(%rbp),%rax
  lea    D79(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L9
  mov    $0x4,%eax
  jmp    L194
L9:
  mov    -0x8(%rbp),%rax
  lea    D6(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L70
  mov    $0x5,%eax
  jmp    L194
L70:
  mov    -0x8(%rbp),%rax
  lea    D54(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L44
  mov    $0x6,%eax
  jmp    L194
L44:
  mov    -0x8(%rbp),%rax
  lea    D36(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L49
  mov    $0x7,%eax
  jmp    L194
L49:
  mov    -0x8(%rbp),%rax
  lea    D22(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L195
  mov    $0x8,%eax
  jmp    L194
L195:
  mov    -0x8(%rbp),%rax
  lea    D61(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L103
  mov    $0x9,%eax
  jmp    L194
L103:
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <parser_Abort@plt>
  mov    $0xffffffff,%eax
L194:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D83
datatype: string
name: unpack_data
arguments: data_tag: D71
datatype: string
name: unpack_data
arguments: data_tag: D50
datatype: string
name: unpack_data
arguments: data_tag: D103
datatype: string
name: unpack_data
arguments: data_tag: D79
datatype: string
name: unpack_data
arguments: data_tag: D6
datatype: string
name: unpack_data
arguments: data_tag: D54
datatype: string
name: unpack_data
arguments: data_tag: D36
datatype: string
name: unpack_data
arguments: data_tag: D22
datatype: string
name: unpack_data
arguments: data_tag: D61
datatype: string
name: unpack_data
arguments: data_tag: D48
datatype: string

tool: D83: R0

tool: D71: R1

tool: D50: R2

tool: D103: R3

tool: D79: R4

tool: D6: R5

tool: D54: R6

tool: D36: R7

tool: D22: FR

tool: D61: SP

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