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

```asm
<raices_a>:
  endbr64
  push   %r14
  lea    D66(%rip),%rdi
  lea    D76(%rip),%r14
  push   %r13
  push   %r12
  lea    D56(%rip),%r12
  push   %rbp
  lea    D39(%rip),%rbp
  sub    $0x38,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  lea    0x10(%rsp),%r13
  call   <printf@plt>
  lea    D47(%rip),%rdi
  call   <printf@plt>
  lea    D40(%rip),%rdi
  call   <printf@plt>
  lea    D27(%rip),%rdi
  call   <printf@plt>
  lea    0xc(%rsp),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  lea    D4(%rip),%rdi
  call   <printf@plt>
  lea    0x18(%rsp),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  lea    D54(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  lea    0x4(%rsp),%rsi
  xor    %eax,%eax
  call   <scanf@plt>
  lea    D64(%rip),%r12
  mov    %r12,%rdi
  call   <system@plt>
  mov    0xc(%rsp),%eax
  cmp    $0x2,%eax
  je     L20
  cmp    $0x3,%eax
  je     L30
  cmp    $0x1,%eax
  je     L61
  mov    %r12,%rdi
  call   <system@plt>
  lea    D52(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <raices_a>
L40:
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L62
  add    $0x38,%rsp
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax)
L20:
  mov    0x4(%rsp),%esi
  movsd  0x18(%rsp),%xmm1
  lea    0x8(%rsp),%rdx
  lea    0x20(%rsp),%rdi
  movsd  0x10(%rsp),%xmm0
  call   <newtonrap@plt>
  jmp    L40
  nopl   0x0(%rax)
L61:
  mov    0x4(%rsp),%esi
  movsd  0x18(%rsp),%xmm1
  lea    0x8(%rsp),%rdx
  lea    0x20(%rsp),%rdi
  movsd  0x10(%rsp),%xmm0
  call   <pfijo@plt>
  jmp    L40
  nopl   0x0(%rax)
L30:
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x4(%rsp),%esi
  movsd  0x18(%rsp),%xmm2
  lea    0x8(%rsp),%rdx
  movsd  0x10(%rsp),%xmm0
  lea    0x20(%rsp),%rdi
  pxor   %xmm1,%xmm1
  call   <secante@plt>
  jmp    L40
L62:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D66
data_type: string
name: parse_data
arguments: data_tag: D76
data_type: string
name: parse_data
arguments: data_tag: D56
data_type: string
name: parse_data
arguments: data_tag: D39
data_type: string
name: parse_data
arguments: data_tag: D47
data_type: string
name: parse_data
arguments: data_tag: D40
data_type: string
name: parse_data
arguments: data_tag: D27
data_type: string
name: parse_data
arguments: data_tag: D4
data_type: string
name: parse_data
arguments: data_tag: D54
data_type: string
name: parse_data
arguments: data_tag: D64
data_type: string
name: parse_data
arguments: data_tag: D52
data_type: string

tool: D66: Elegir el metodo


tool: D76: 
Dar el valor inical X0: 

tool: D56: %d

tool: D39: %lf

tool: D47: 1.- Puntofijo


tool: D40: 2.- Newton Rapson


tool: D27: 3.- Secante 


tool: D4: 
Dar el valor maximo del error es: 

tool: D54: 
Dar el numero max de iteraciones imax: 

tool: D64: cls

tool: D52: Opcion incorrecta, introducir una opcion correcta

assistant: ```c
void raices_a() {
  double x0, es, ea, xl = 0, raiz;
  int imax, iter, metodo;
  printf("Elegir el metodo\n");
  printf("1.- Puntofijo\n");
  printf("2.- Newton Rapson\n");
  printf("3.- Secante \n");
  scanf("%d", &metodo);
  printf("\nDar el valor inical X0: ");
  scanf("%lf", &x0);
  printf("\nDar el valor maximo del error es: ");
  scanf("%lf", &es);
  printf("\nDar el numero max de iteraciones imax: ");
  scanf("%d", &imax);
  system("cls");
  switch (metodo) {
  case 1:
    raiz = pfijo(x0, es, &ea, imax, &iter);
    break;
  case 2:
    raiz = newtonrap(x0, es, &ea, imax, &iter);
    break;
  case 3:
    printf("\nDar el valor inical X0: ");
    scanf("%lf", &x0);
    raiz = secante(x0, xl, es, &ea, imax, &iter);
    break;
  default:
    system("cls");
    printf("Opcion incorrecta, introducir una opcion correcta");
    raices_a();
    break;
  }
}
```