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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  movb   $0x43,-0x19(%rbp)
  movl   $0x14,-0x18(%rbp)
  movl   $0x15e,-0x14(%rbp)
  movl   $0x1383,-0x10(%rbp)
  movss  D137(%rip),%xmm0
  movss  %xmm0,-0xc(%rbp)
  movss  D21(%rip),%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  D61(%rip),%xmm0
  movss  %xmm0,-0x4(%rbp)
  lea    D179(%rip),%rax
  mov    %rax,%rsi
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsbl -0x19(%rbp),%edx
  mov    -0x18(%rbp),%eax
  mov    %eax,%esi
  lea    D162(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    -0x10(%rbp),%ecx
  mov    -0x14(%rbp),%edx
  mov    -0x18(%rbp),%eax
  mov    %eax,%esi
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D58(%rip),%rax
  mov    %rax,%rcx
  lea    D28(%rip),%rax
  mov    %rax,%rdx
  lea    D134(%rip),%rax
  mov    %rax,%rsi
  lea    D39(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  pxor   %xmm1,%xmm1
  cvtss2sd -0x4(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x8(%rbp),%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd -0xc(%rbp),%xmm3
  movq   %xmm3,%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  movss  -0x4(%rbp),%xmm0
  addss  %xmm0,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movss  -0x8(%rbp),%xmm0
  movss  D53(%rip),%xmm1
  divss  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movss  -0xc(%rbp),%xmm0
  addss  -0x8(%rbp),%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd %xmm0,%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  lea    D49(%rip),%rax
  mov    %rax,%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  lea    D23(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movss  -0xc(%rbp),%xmm0
  addss  -0x8(%rbp),%xmm0
  movss  -0x4(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm5,%xmm5
  cvtss2sd -0x4(%rbp),%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  lea    D106(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D137
type_infered: f32
name: parse_data
arguments: label: D21
type_infered: byte[4]
name: parse_data
arguments: label: D61
type_infered: f32
name: parse_data
arguments: label: D42
type_infered: string
name: parse_data
arguments: label: D162
type_infered: string
name: parse_data
arguments: label: D36
type_infered: string
name: parse_data
arguments: label: D38
type_infered: string
name: parse_data
arguments: label: D58
type_infered: string
name: parse_data
arguments: label: D28
type_infered: string
name: parse_data
arguments: label: D134
type_infered: string
name: parse_data
arguments: label: D39
type_infered: string
name: parse_data
arguments: label: D64
type_infered: string
name: parse_data
arguments: label: D30
type_infered: string
name: parse_data
arguments: label: D53
type_infered: byte[4]
name: parse_data
arguments: label: D49
type_infered: string
name: parse_data
arguments: label: D23
type_infered: string
name: parse_data
arguments: label: D106
type_infered: string

tool: D137: 34.5

tool: {"D21": [0x00,0x40,0x9a,0x44]}

tool: D61: 1.248

tool: D42: 
%s es de 

tool: D162: %d grados %c


tool: D36: a = %6d	b = %6d	c = %6d


tool: D38: 
Los resultados son los siguientes:

tool: D58: z

tool: D28: y

tool: D134: x

tool: D39: 
%5s		%5s		%5s


tool: D64: ________________________________________

tool: D30: 
%8.2f	%8.2f	%8.2f

tool: {"D53": [0x00,0x00,0xa0,0x40]}

tool: D49: 
%8.2f	%8.2f	%8.2f


tool: D23: 


tool: D106: Valor resultante: %.3f


assistant: ```c
main() {
  char car;
  static char nombre[] = "La temperatura ambiente";
  int a, b, c;
  float x, y, z;
  car = 'C';
  a = 20;
  b = 350;
  c = 4995;
  x = 34.5;
  y = 1234;
  z = 1.248;
  printf("\n%s es de ", nombre);
  printf("%d grados %c\n", a, car);
  printf("\n");
  printf("a = %6d\tb = %6d\tc = %6d\n", a, b, c);
  printf("\nLos resultados son los siguientes:\n");
  printf("\n%5s\t\t%5s\t\t%5s\n", "x", "y", "z");
  printf("________________________________________\n");
  printf("\n%8.2f\t%8.2f\t%8.2f", x, y, z);
  printf("\n%8.2f\t%8.2f\t%8.2f\n", x + y, y / 5, z * 2);
  printf("\n\n");
  z *= (x + y);
  printf("Valor resultante: %.3f\n", z);
}
```