user: Please show me the C implementation that matches the assembly code listed below:

```asm
<baskaras>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  movss  %xmm0,-0x14(%rbp)
  movss  %xmm1,-0x18(%rbp)
  movss  %xmm2,-0x1c(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x10(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  ucomiss -0x14(%rbp),%xmm0
  jp     L2
  pxor   %xmm0,%xmm0
  ucomiss -0x14(%rbp),%xmm0
  jne    L2
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L53
L2:
  movss  -0x18(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  movss  -0x14(%rbp),%xmm2
  movss  D50(%rip),%xmm1
  mulss  %xmm2,%xmm1
  mulss  -0x1c(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  movd   %eax,%xmm0
  call   <sqrt@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x4(%rbp)
  pxor   %xmm0,%xmm0
  comiss -0x8(%rbp),%xmm0
  jbe    L67
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L53
L67:
  pxor   %xmm0,%xmm0
  ucomiss -0x8(%rbp),%xmm0
  jp     L20
  pxor   %xmm0,%xmm0
  ucomiss -0x8(%rbp),%xmm0
  jne    L20
  movss  -0x4(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  -0x18(%rbp),%xmm1
  movss  -0x14(%rbp),%xmm0
  movaps %xmm0,%xmm2
  addss  %xmm0,%xmm2
  divss  %xmm2,%xmm1
  movaps %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
  pxor   %xmm3,%xmm3
  cvtss2sd -0x10(%rbp),%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L53
L20:
  movss  -0x4(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  -0x18(%rbp),%xmm1
  movss  -0x14(%rbp),%xmm0
  movaps %xmm0,%xmm2
  addss  %xmm0,%xmm2
  divss  %xmm2,%xmm1
  movaps %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x18(%rbp),%xmm0
  movss  D27(%rip),%xmm1
  xorps  %xmm1,%xmm0
  movaps %xmm0,%xmm1
  subss  -0x4(%rbp),%xmm1
  movss  -0x14(%rbp),%xmm0
  movaps %xmm0,%xmm2
  addss  %xmm0,%xmm2
  divss  %xmm2,%xmm1
  movaps %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm4,%xmm4
  cvtss2sd -0x10(%rbp),%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm5,%xmm5
  cvtss2sd -0xc(%rbp),%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  lea    D10(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
L53:
  nop
  leave
  ret
```

tool_calls: name: read_data
arguments: data_label: D12
type: string
name: read_data
arguments: data_label: D50
type: byte[4]
name: read_data
arguments: data_label: D32
type: string
name: read_data
arguments: data_label: D21
type: string
name: read_data
arguments: data_label: D27
type: byte[4]
name: read_data
arguments: data_label: D25
type: string
name: read_data
arguments: data_label: D10
type: string

tool: D12: Nao e uma funcao do segundo grau. /n

tool: {"D50": [0x00,0x00,0x80,0x40]}

tool: D32: Nao ha raiz, pois delta menor do que 0 

tool: D21: x1 e x2 = %.2f 


tool: {"D27": [0x00,0x00,0x00,0x80]}

tool: D25: x1 = %.2f 


tool: D10: x2 = %.2f 


assistant: ```c
void baskaras(float a, float b, float c) {
  float x1 = 0, x2 = 0, delta = 0, sqrdelta;
  if (a == 0) {
    printf("Nao e uma funcao do segundo grau. /n");
  } else {
    delta = (b * b) - 4 * a * c;
    sqrdelta = sqrt(delta);
    if (delta < 0) {
      printf("Nao ha raiz, pois delta menor do que 0 \n");
    } else if (delta == 0) {
      x1 = (-b + sqrdelta) / (2 * a);
      printf("x1 e x2 = %.2f \n", x1);
    } else {
      x1 = (-b + sqrdelta) / (2 * a);
      x2 = (-b - sqrdelta) / (2 * a);
      printf("x1 = %.2f \n", x1);
      printf("x2 = %.2f \n", x2);
    }
  }
}
```