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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x24(%rbp),%rdx
  lea    -0x28(%rbp),%rax
  mov    %rax,%rsi
  lea    D186(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movsd  D198(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x24(%rbp),%eax
  cmp    $0xa,%eax
  jle    L135
  mov    -0x24(%rbp),%eax
  cmp    $0x14,%eax
  jg     L135
  mov    -0x24(%rbp),%eax
  sub    $0xa,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D49(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
L135:
  mov    -0x24(%rbp),%eax
  cmp    $0x14,%eax
  jle    L104
  mov    -0x24(%rbp),%eax
  cmp    $0x32,%eax
  jg     L104
  movsd  -0x20(%rbp),%xmm1
  movsd  D151(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x24(%rbp),%eax
  sub    $0x14,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D163(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
L104:
  mov    -0x24(%rbp),%eax
  cmp    $0x32,%eax
  jle    L182
  movsd  -0x20(%rbp),%xmm1
  movsd  D151(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D47(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x24(%rbp),%eax
  sub    $0x32,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D119(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
L182:
  mov    -0x24(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mov    -0x28(%rbp),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  movsd  D196(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D165(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  comisd D236(%rip),%xmm0
  jbe    L166
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L166
  movsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L122
L166:
  movsd  D236(%rip),%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L63
  movsd  -0x10(%rbp),%xmm0
  comisd D17(%rip),%xmm0
  jbe    L63
  movsd  -0x20(%rbp),%xmm1
  movsd  D215(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L122
L63:
  movsd  D17(%rip),%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L158
  movsd  -0x10(%rbp),%xmm0
  comisd D10(%rip),%xmm0
  jbe    L158
  movsd  -0x20(%rbp),%xmm1
  movsd  D104(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L122
L158:
  movsd  D10(%rip),%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L107
  movsd  -0x20(%rbp),%xmm1
  movsd  D76(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L122
L107:
  movsd  D129(%rip),%xmm0
  comisd -0x10(%rbp),%xmm0
  jbe    L119
  movsd  -0x20(%rbp),%xmm1
  movsd  D61(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L122
L119:
  movsd  -0x10(%rbp),%xmm0
  comisd D129(%rip),%xmm0
  jb     L122
  movsd  -0x20(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
L122:
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  lea    D167(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L3
  call   <__stack_chk_fail@plt>
L3:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D186
type_guessed: string
name: unpack_data
arguments: tag: D198
type_guessed: f64
name: unpack_data
arguments: tag: D49
type_guessed: f64
name: unpack_data
arguments: tag: D151
type_guessed: byte[8]
name: unpack_data
arguments: tag: D163
type_guessed: f64
name: unpack_data
arguments: tag: D47
type_guessed: byte[8]
name: unpack_data
arguments: tag: D119
type_guessed: f64
name: unpack_data
arguments: tag: D196
type_guessed: byte[8]
name: unpack_data
arguments: tag: D165
type_guessed: byte[8]
name: unpack_data
arguments: tag: D236
type_guessed: byte[16]
name: unpack_data
arguments: tag: D17
type_guessed: byte[16]
name: unpack_data
arguments: tag: D215
type_guessed: f64
name: unpack_data
arguments: tag: D10
type_guessed: byte[16]
name: unpack_data
arguments: tag: D104
type_guessed: f64
name: unpack_data
arguments: tag: D76
type_guessed: f64
name: unpack_data
arguments: tag: D129
type_guessed: byte[16]
name: unpack_data
arguments: tag: D61
type_guessed: f64
name: unpack_data
arguments: tag: D167
type_guessed: string
name: unpack_data
arguments: tag: D127
type_guessed: string

tool: D186: %d %d

tool: D198: 17.34

tool: D49: 2.41

tool: {"D151": [0x9a,0x99,0x99,0x99,0x99,0x19,0x38,0x40]}

tool: D163: 3.7

tool: {"D47": [0x00,0x00,0x00,0x00,0x00,0xc0,0x5b,0x40]}

tool: D119: 4.43

tool: {"D196": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D165": [0x00,0x00,0x00,0x00,0x00,0x00,0x59,0x40]}

tool: {"D236": [0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0xc0]}

tool: {"D17": [0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0xc0,0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0xec,0x3f]}

tool: D215: 0.9

tool: {"D10": [0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xc0,0x9a,0x99,0x99,0x99,0x99,0x99,0xe9,0x3f]}

tool: D104: 0.8

tool: D76: 0.7

tool: {"D129": [0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x40,0x66,0x66,0x66,0x66,0x66,0x66,0xf6,0x3f]}

tool: D61: 1.4

tool: D167: Valor original = %.2lf


tool: D127: Valor final = %.2lf


assistant: ```c
int main() {
  int consumo1, consumo2;
  double var, valori, valorf;
  scanf("%d %d", &consumo1, &consumo2);
  valori = 17.34;
  if ((consumo2 > 10) && (consumo2 <= 20)) {
    valori = valori + (consumo2 - 10) * 2.41;
  }
  if ((consumo2 > 20) && (consumo2 <= 50)) {
    valori = valori + 10 * 2.41;
    valori = valori + (consumo2 - 20) * 3.70;
  }
  if (consumo2 > 50) {
    valori = valori + 10 * 2.41 + 30 * 3.70;
    valori = valori + (consumo2 - 50) * 4.43;
  }
  var = (double)consumo2 / consumo1;
  var = (var - 1) * 100;
  if ((var > -10) && (var <= 0))
    valorf = valori;
  else if ((var <= -10) && (var > -15))
    valorf = valori * 0.9;
  else if ((var <= -15) && (var > -20))
    valorf = valori * 0.8;
  else if (var <= -20)
    valorf = valori * 0.7;
  else if (var < 20)
    valorf = valori * 1.4;
  else if (var >= 20)
    valorf = valori * 2;
  printf("Valor original = %.2lf\n", valori);
  printf("Valor final = %.2lf\n", valorf);
  return 0;
}
```