user: 下面的汇编指令对应的C源代码是什么：

```asm
<main>:
  endbr64
  push   %r15
  lea    D85(%rip),%r15
  push   %r14
  lea    D103(%rip),%r14
  push   %r13
  lea    D16(%rip),%r13
  push   %r12
  lea    D81(%rip),%r12
  push   %rbp
  xor    %ebp,%ebp
  push   %rbx
  lea    D41(%rip),%rbx
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  lea    0x10(%rsp),%rax
  mov    %rax,0x8(%rsp)
  nopl   0x0(%rax)
L19:
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <percorrer_nos@plt>
  lea    D74(%rip),%rdi
  call   <printf@plt>
  lea    D80(%rip),%rdi
  call   <printf@plt>
  mov    0x8(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  mov    0x10(%rsp),%eax
  cmp    $0x1,%eax
  je     L34
L68:
  cmp    $0x2,%eax
  je     L62
  lea    D30(%rip),%rdi
  call   <printf@plt>
  mov    0x10(%rsp),%eax
  test   %eax,%eax
  jne    L19
L55:
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L33
  add    $0x28,%rsp
  mov    $0x1,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L62:
  lea    D67(%rip),%rdi
  call   <printf@plt>
  lea    0x14(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  mov    0x14(%rsp),%esi
  mov    %rbp,%rdi
  call   <remover@plt>
  lea    D30(%rip),%rdi
  mov    %rax,%rbp
  call   <printf@plt>
  mov    0x10(%rsp),%edx
  test   %edx,%edx
  jne    L19
  jmp    L55
  nopw   0x0(%rax,%rax,1)
L34:
  lea    D67(%rip),%rdi
  call   <printf@plt>
  lea    0x14(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  mov    0x14(%rsp),%esi
  mov    %rbp,%rdi
  call   <incluir@plt>
  mov    %rax,%rbp
  mov    0x10(%rsp),%eax
  jmp    L68
L33:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D85
data_type: string
name: retrieve_data
arguments: data_label: D103
data_type: string
name: retrieve_data
arguments: data_label: D16
data_type: string
name: retrieve_data
arguments: data_label: D81
data_type: string
name: retrieve_data
arguments: data_label: D41
data_type: string
name: retrieve_data
arguments: data_label: D74
data_type: string
name: retrieve_data
arguments: data_label: D80
data_type: string
name: retrieve_data
arguments: data_label: D30
data_type: string
name: retrieve_data
arguments: data_label: D67
data_type: string

tool: D85: 0- Sair


tool: D103: 1- Incluir


tool: D16: 2- Remover


tool: D81: -----


tool: D41: %d

tool: D74: 

-----


tool: D80: Opcao: 

tool: D30: 


tool: D67: Valor = 

assistant: ```c
int main(void) {
  int opcao_menu, valor_entrada;
  struct no *raiz;
  raiz = NULL;
  do {
    printf("0- Sair\n");
    printf("1- Incluir\n");
    printf("2- Remover\n");
    printf("-----\n");
    percorrer_nos(raiz, 0);
    printf("\n\n-----\n");
    printf("Opcao: ");
    scanf("%d", &opcao_menu);
    if (opcao_menu == 1) {
      printf("Valor = ");
      scanf("%d", &valor_entrada);
      raiz = incluir(raiz, valor_entrada);
    }
    if (opcao_menu == 2) {
      printf("Valor = ");
      scanf("%d", &valor_entrada);
      raiz = remover(raiz, valor_entrada);
    }
    printf("\n");
  } while (opcao_menu);
  return 1;
}
```