user: Translate the below assembly code into C programming language:

```asm
<BuscaRegistrador>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  call   <parser_str_to_upper@plt>
  lea    D100(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  xor    %eax,%eax
  test   %r8,%r8
  jne    L20
L60:
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L20:
  lea    D76(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x1,%eax
  test   %r8,%r8
  je     L60
  lea    D88(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x2,%eax
  test   %r8,%r8
  je     L60
  lea    D2(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x3,%eax
  test   %r8,%r8
  je     L60
  lea    D103(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x4,%eax
  test   %r8,%r8
  je     L60
  lea    D22(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x5,%eax
  test   %r8,%r8
  je     L60
  lea    D102(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x6,%eax
  test   %r8,%r8
  je     L60
  lea    D3(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x7,%eax
  test   %r8,%r8
  je     L60
  lea    D20(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x8,%eax
  test   %r8,%r8
  je     L60
  lea    D44(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x9,%eax
  test   %r8,%r8
  je     L60
  lea    D53(%rip),%rdi
  call   <parser_Abort@plt>
  or     $0xffffffff,%eax
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D100
datatype: string
name: extract_symbolic_data
arguments: tag: D76
datatype: string
name: extract_symbolic_data
arguments: tag: D88
datatype: string
name: extract_symbolic_data
arguments: tag: D2
datatype: string
name: extract_symbolic_data
arguments: tag: D103
datatype: string
name: extract_symbolic_data
arguments: tag: D22
datatype: string
name: extract_symbolic_data
arguments: tag: D102
datatype: string
name: extract_symbolic_data
arguments: tag: D3
datatype: string
name: extract_symbolic_data
arguments: tag: D20
datatype: string
name: extract_symbolic_data
arguments: tag: D44
datatype: string
name: extract_symbolic_data
arguments: tag: D53
datatype: string

tool: D100: R0

tool: D76: R1

tool: D88: R2

tool: D2: R3

tool: D103: R4

tool: D22: R5

tool: D102: R6

tool: D3: R7

tool: D20: FR

tool: D44: SP

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