user: What is the c source code of the assembly code below:

```asm
<ex4>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    D95(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    D6(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    D83(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x30(%rbp),%rax
  mov    %rax,%rsi
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x2c(%rbp),%rax
  mov    %rax,%rsi
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x28(%rbp),%rax
  mov    %rax,%rsi
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x2c(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <pow@plt>
  mov    -0x30(%rbp),%ecx
  mov    -0x28(%rbp),%edx
  imul   %ecx,%edx
  shl    $0x2,%edx
  sub    %edx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x24(%rbp)
  pxor   %xmm0,%xmm0
  comiss -0x24(%rbp),%xmm0
  jbe    L10
  mov    -0x28(%rbp),%ecx
  mov    -0x2c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  mov    %eax,%esi
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L22
L10:
  mov    -0x24(%rbp),%eax
  movd   %eax,%xmm0
  call   <sqrt@plt>
  mov    -0x2c(%rbp),%edx
  sub    %edx,%eax
  mov    -0x30(%rbp),%edx
  lea    (%rdx,%rdx,1),%ebx
  cltd
  idiv   %ebx
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x20(%rbp)
  mov    -0x2c(%rbp),%eax
  neg    %eax
  mov    %eax,%ebx
  mov    -0x24(%rbp),%eax
  movd   %eax,%xmm0
  call   <sqrt@plt>
  mov    %eax,%edx
  mov    %ebx,%eax
  sub    %edx,%eax
  mov    -0x30(%rbp),%edx
  lea    (%rdx,%rdx,1),%ebx
  cltd
  idiv   %ebx
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movss  -0x20(%rbp),%xmm0
  ucomiss -0x1c(%rbp),%xmm0
  jp     L2
  movss  -0x20(%rbp),%xmm0
  ucomiss -0x1c(%rbp),%xmm0
  jne    L2
  pxor   %xmm2,%xmm2
  cvtss2sd -0x20(%rbp),%xmm2
  movq   %xmm2,%rsi
  mov    -0x28(%rbp),%ecx
  mov    -0x2c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  movq   %rsi,%xmm0
  mov    %eax,%esi
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L22
L2:
  pxor   %xmm0,%xmm0
  cvtss2sd -0x1c(%rbp),%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd -0x20(%rbp),%xmm3
  movq   %xmm3,%rsi
  mov    -0x28(%rbp),%ecx
  mov    -0x2c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  movapd %xmm0,%xmm1
  movq   %rsi,%xmm0
  mov    %eax,%esi
  lea    D102(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
L22:
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L53
  call   <__stack_chk_fail@plt>
L53:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D24
datatype: string
name: unpack_data
arguments: data_tag: D95
datatype: string
name: unpack_data
arguments: data_tag: D6
datatype: string
name: unpack_data
arguments: data_tag: D83
datatype: string
name: unpack_data
arguments: data_tag: D80
datatype: string
name: unpack_data
arguments: data_tag: D34
datatype: string
name: unpack_data
arguments: data_tag: D59
datatype: string
name: unpack_data
arguments: data_tag: D90
datatype: string
name: unpack_data
arguments: data_tag: D11
datatype: string
name: unpack_data
arguments: data_tag: D102
datatype: string

tool: D24: 
------------------------------


tool: D95: Leia, em um algoritmo, os coeficientes de uma equacao do segundo grau. Calcule suas raizes e informe-as.

tool: D6: Equacao do 2o grau: [ A x^2 + B x + C = 0 ]

tool: D83: Informe o valor do coeficiente A:

tool: D80: %d

tool: D34: Informe o valor do coeficiente B:

tool: D59: Informe o valor do coeficiente C:

tool: D90: A equacao %dx^2 + %dx + %d nao possui raizes reais.


tool: D11: A equacao %dx^2 + %dx + %d uma raiz real.
	x1 = x2 = %.2f.


tool: D102: A equacao %dx^2 + %dx + %d possui duas raizes reais.
	x1 = %.2f
	x2 = %.2f


assistant: ```c
void ex4() {
  print("\n------------------------------\n");
  print("Leia, em um algoritmo, os coeficientes de uma equacao do segundo grau. Calcule suas raizes e informe-as.");
  print("Equacao do 2o grau: [ A x^2 + B x + C = 0 ]");
  int a, b, c;
  float raiz1, raiz2, delta;
  print("Informe o valor do coeficiente A:");
  scanf("%d", &a);
  print("Informe o valor do coeficiente B:");
  scanf("%d", &b);
  print("Informe o valor do coeficiente C:");
  scanf("%d", &c);
  delta = pow(b, 2) - (4 * a * c);
  if (delta < 0) {
    printf("A equacao %dx^2 + %dx + %d nao possui raizes reais.\n", a, b, c);
  } else {
    raiz1 = (-b + sqrt(delta)) / (2 * a);
    raiz2 = (-b - sqrt(delta)) / (2 * a);
    if (raiz1 == raiz2) {
      printf("A equacao %dx^2 + %dx + %d uma raiz real.\n\tx1 = x2 = %.2f.\n", a, b, c, raiz1);
    } else {
      printf("A equacao %dx^2 + %dx + %d possui duas raizes reais.\n\tx1 = %.2f\n\tx2 = %.2f\n", a, b, c, raiz1, raiz2);
    }
  }
  print("\n------------------------------\n");
}
```