user: Converte this assembly snippet into its equivalent C code:

```asm
<raices_c>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  lea    D133(%rip),%rdi
  call   <puts@plt>
  lea    D52(%rip),%rdi
  call   <puts@plt>
  lea    D145(%rip),%rdi
  call   <puts@plt>
  lea    0x34(%rsp),%rsi
  lea    D68(%rip),%rbp
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D35(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x1c(%rsp),%rsi
  lea    D84(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D15(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D139(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x24(%rsp),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D75(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x2c(%rsp),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    0x1c(%rsp),%ebx
  lea    D131(%rip),%rdi
  call   <system@plt>
  mov    0x34(%rsp),%eax
  cmp    $0x1,%eax
  je     L6
  cmp    $0x2,%eax
  je     L4
  lea    D131(%rip),%rdi
  call   <system@plt>
  lea    D129(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <raices@plt>
  jmp    L28
L6:
  lea    0x28(%rsp),%rdx
  lea    0x30(%rsp),%rsi
  movd   %ebx,%xmm3
  mov    0x2c(%rsp),%edi
  movss  0x24(%rsp),%xmm2
  movss  0x20(%rsp),%xmm1
  movss  0x1c(%rsp),%xmm0
  call   <Bisect@plt>
  movss  %xmm0,0xc(%rsp)
L28:
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  lea    D94(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0x28(%rsp),%xmm0
  lea    D77(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    0x30(%rsp),%esi
  lea    D126(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L42
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  ret
L4:
  lea    0x28(%rsp),%rdx
  lea    0x30(%rsp),%rsi
  movd   %ebx,%xmm3
  mov    0x2c(%rsp),%edi
  movss  0x24(%rsp),%xmm2
  movss  0x20(%rsp),%xmm1
  movss  0x1c(%rsp),%xmm0
  call   <falsa_posicion@plt>
  movss  %xmm0,0xc(%rsp)
  jmp    L28
L42:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D133
data_type: string
name: parse_data
arguments: label: D52
data_type: string
name: parse_data
arguments: label: D145
data_type: string
name: parse_data
arguments: label: D68
data_type: string
name: parse_data
arguments: label: D35
data_type: string
name: parse_data
arguments: label: D84
data_type: string
name: parse_data
arguments: label: D15
data_type: string
name: parse_data
arguments: label: D139
data_type: string
name: parse_data
arguments: label: D75
data_type: string
name: parse_data
arguments: label: D131
data_type: string
name: parse_data
arguments: label: D129
data_type: string
name: parse_data
arguments: label: D94
data_type: string
name: parse_data
arguments: label: D77
data_type: string
name: parse_data
arguments: label: D126
data_type: string

tool: D133: Elegir el metodo

tool: D52: 1.- Biseccion

tool: D145: 2.- Falsa posicion

tool: D68: %d

tool: D35: 
Dar el valor inical XL: 

tool: D84: %f

tool: D15: 
Dar el valor inical XU: 

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

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

tool: D131: cls

tool: D129: Opcion incorrecta, introducir una opcion correcta

tool: D94: 
La raiz es: %f

tool: D77: 
El error es: %f

tool: D126: 
En %d iteraciones

assistant: ```c
void raices_c() {
  float xl, xu, es, ea, raiz, xr;
  int imax, iter, metodo;
  printf("Elegir el metodo\n");
  printf("1.- Biseccion\n");
  printf("2.- Falsa posicion\n");
  scanf("%d", &metodo);
  printf("\nDar el valor inical XL: ");
  scanf("%f", &xl);
  printf("\nDar el valor inical XU: ");
  scanf("%f", &xu);
  printf("\nDar el valor maximo del error es: ");
  scanf("%f", &es);
  printf("\nDar el numero max de iteraciones imax: ");
  scanf("%d", &imax);
  xr = xl;
  system("cls");
  switch (metodo) {
  case 1:
    raiz = Bisect(xl, xu, es, imax, xr, &iter, &ea);
    break;
  case 2:
    raiz = falsa_posicion(xl, xu, es, imax, xr, &iter, &ea);
    break;
  default:
    system("cls");
    printf("Opcion incorrecta, introducir una opcion correcta");
    raices();
    break;
  }
  printf("\nLa raiz es: %f", raiz);
  printf("\nEl error es: %f", ea);
  printf("\nEn %d iteraciones", iter);
}
```