user: What would the C source look like for the assembly code provided here?

```asm
<ex5>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D86(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    D102(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  jmp    L32
L57:
  lea    D66(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
L32:
  mov    -0x1c(%rbp),%eax
  test   %eax,%eax
  jle    L57
  lea    D157(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  jmp    L68
L11:
  lea    D66(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
L68:
  mov    -0x18(%rbp),%eax
  test   %eax,%eax
  jle    L11
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  jmp    L55
L47:
  lea    D66(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
L55:
  mov    -0x14(%rbp),%eax
  test   %eax,%eax
  jle    L47
  mov    -0x1c(%rbp),%edx
  mov    -0x18(%rbp),%eax
  add    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D101(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x10(%rbp)
  mov    -0x1c(%rbp),%eax
  pxor   %xmm1,%xmm1
  cvtsi2ss %eax,%xmm1
  movss  -0x10(%rbp),%xmm0
  subss  %xmm1,%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x10(%rbp),%xmm1
  mov    -0x18(%rbp),%eax
  pxor   %xmm2,%xmm2
  cvtsi2ss %eax,%xmm2
  movss  -0x10(%rbp),%xmm0
  subss  %xmm2,%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x14(%rbp),%eax
  pxor   %xmm2,%xmm2
  cvtsi2ss %eax,%xmm2
  movss  -0x10(%rbp),%xmm0
  subss  %xmm2,%xmm0
  mulss  %xmm0,%xmm1
  movd   %xmm1,%eax
  movd   %eax,%xmm0
  call   <sqrt@plt>
  movd   %xmm0,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  movd   %eax,%xmm0
  lea    D122(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D86(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L46
  call   <__stack_chk_fail@plt>
L46:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D86
data_type: string
name: parse_data
arguments: label: D102
data_type: string
name: parse_data
arguments: label: D98
data_type: string
name: parse_data
arguments: label: D66
data_type: string
name: parse_data
arguments: label: D157
data_type: string
name: parse_data
arguments: label: D58
data_type: string
name: parse_data
arguments: label: D101
data_type: f64
name: parse_data
arguments: label: D122
data_type: string

tool: D86: 
------------------------------


tool: D102: Informe a medida do lado a:

tool: D98: %d

tool: D66: Valor invalido, tente novamente:

tool: D157: Informe a medida do lado b:

tool: D58: Informe a medida do lado c:

tool: D101: 2

tool: D122: A area do triangulo e: %.2f u.a.


assistant: ```c
void ex5() {
  print("\n------------------------------\n");
  int a, b, c;
  print("Informe a medida do lado a:");
  scanf("%d", &a);
  while (!(a > 0)) {
    print("Valor invalido, tente novamente:");
    scanf("%d", &a);
  }
  print("Informe a medida do lado b:");
  scanf("%d", &b);
  while (!(b > 0)) {
    print("Valor invalido, tente novamente:");
    scanf("%d", &b);
  }
  print("Informe a medida do lado c:");
  scanf("%d", &c);
  while (!(c > 0)) {
    print("Valor invalido, tente novamente:");
    scanf("%d", &c);
  }
  float s = (a + b + c) / 2.;
  float area = sqrt(s * (s - a) * (s - b) * (s - c));
  printf("A area do triangulo e: %.2f u.a.\n", area);
  print("\n------------------------------\n");
}
```