user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rsi
  lea    D182(%rip),%rdi
  call   <scanf@plt>
  lea    D224(%rip),%rdi
  call   <puts@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D217(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L244
L89:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L89
  movsd  %xmm0,(%rsp)
L319:
  lea    D119(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D40(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L73
L336:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L336
  movsd  %xmm0,(%rsp)
L117:
  lea    D8(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D6(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L106
L365:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L365
  movsd  %xmm0,(%rsp)
L43:
  lea    D181(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D242(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L50
L355:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L355
  movsd  %xmm0,(%rsp)
L251:
  lea    D152(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D207(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L217
L59:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L59
  movsd  %xmm0,(%rsp)
L218:
  lea    D247(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D4(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L151
L366:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L366
  movsd  %xmm0,(%rsp)
L79:
  lea    D120(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D84(%rip),%rdi
  call   <puts@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D36(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L194
L323:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L323
  movsd  %xmm0,(%rsp)
L80:
  lea    D223(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D142(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L163
L39:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L39
  movsd  %xmm0,(%rsp)
L320:
  lea    D22(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D153(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L17
L49:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L49
  movsd  %xmm0,(%rsp)
L252:
  lea    D68(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D57(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L122
L84:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L84
  movsd  %xmm0,(%rsp)
L161:
  lea    D122(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D203(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L135
L327:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L327
  movsd  %xmm0,(%rsp)
L167:
  lea    D124(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  (%rsp),%xmm0
  mov    $0x0,%esi
  movsd  D170(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L293
L63:
  subsd  %xmm1,%xmm0
  add    $0x1,%esi
  comisd %xmm1,%xmm0
  jae    L63
  movsd  %xmm0,(%rsp)
L270:
  lea    D253(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L183
  mov    $0x0,%eax
  add    $0x18,%rsp
  ret
L244:
  mov    $0x0,%esi
  jmp    L319
L73:
  mov    $0x0,%esi
  jmp    L117
L106:
  mov    $0x0,%esi
  jmp    L43
L50:
  mov    $0x0,%esi
  jmp    L251
L217:
  mov    $0x0,%esi
  jmp    L218
L151:
  mov    $0x0,%esi
  jmp    L79
L194:
  mov    $0x0,%esi
  jmp    L80
L163:
  mov    $0x0,%esi
  jmp    L320
L17:
  mov    $0x0,%esi
  jmp    L252
L122:
  mov    $0x0,%esi
  jmp    L161
L135:
  mov    $0x0,%esi
  jmp    L167
L293:
  mov    $0x0,%esi
  jmp    L270
L183:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D182
datatype: string
name: extract_symbolic_data
arguments: tag: D224
datatype: string
name: extract_symbolic_data
arguments: tag: D217
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D119
datatype: string
name: extract_symbolic_data
arguments: tag: D40
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D8
datatype: string
name: extract_symbolic_data
arguments: tag: D6
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D181
datatype: string
name: extract_symbolic_data
arguments: tag: D242
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D152
datatype: string
name: extract_symbolic_data
arguments: tag: D207
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D247
datatype: string
name: extract_symbolic_data
arguments: tag: D4
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D120
datatype: string
name: extract_symbolic_data
arguments: tag: D84
datatype: string
name: extract_symbolic_data
arguments: tag: D36
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D223
datatype: string
name: extract_symbolic_data
arguments: tag: D142
datatype: f64
name: extract_symbolic_data
arguments: tag: D22
datatype: string
name: extract_symbolic_data
arguments: tag: D153
datatype: f64
name: extract_symbolic_data
arguments: tag: D68
datatype: string
name: extract_symbolic_data
arguments: tag: D57
datatype: f64
name: extract_symbolic_data
arguments: tag: D122
datatype: string
name: extract_symbolic_data
arguments: tag: D203
datatype: f64
name: extract_symbolic_data
arguments: tag: D124
datatype: string
name: extract_symbolic_data
arguments: tag: D170
datatype: f64
name: extract_symbolic_data
arguments: tag: D253
datatype: string

tool: D182: %lf

tool: D224: NOTAS:

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

tool: D119: %d nota(s) de R$ 100.00


tool: {"D40": [0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x40]}

tool: D8: %d nota(s) de R$ 50.00


tool: {"D6": [0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x40]}

tool: D181: %d nota(s) de R$ 20.00


tool: {"D242": [0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x40]}

tool: D152: %d nota(s) de R$ 10.00


tool: {"D207": [0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x40]}

tool: D247: %d nota(s) de R$ 5.00


tool: {"D4": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: D120: %d nota(s) de R$ 2.00


tool: D84: MOEDAS:

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

tool: D223: %d moeda(s) de R$ 1.00


tool: D142: 0.5

tool: D22: %d moeda(s) de R$ 0.50


tool: D153: 0.25

tool: D68: %d moeda(s) de R$ 0.25


tool: D57: 0.1

tool: D122: %d moeda(s) de R$ 0.10


tool: D203: 0.05

tool: D124: %d moeda(s) de R$ 0.05


tool: D170: 0.01

tool: D253: %d moeda(s) de R$ 0.01


assistant: ```c
int main() {
  double N;
  int cont = 0;
  scanf("%lf", &N);
  printf("NOTAS:\n");
  while (N >= 100) {
    N = N - 100;
    cont++;
  }
  printf("%d nota(s) de R$ 100.00\n", cont);
  cont = 0;
  while (N >= 50) {
    N = N - 50;
    cont++;
  }
  printf("%d nota(s) de R$ 50.00\n", cont);
  cont = 0;
  while (N >= 20) {
    N = N - 20;
    cont++;
  }
  printf("%d nota(s) de R$ 20.00\n", cont);
  cont = 0;
  while (N >= 10) {
    N = N - 10;
    cont++;
  }
  printf("%d nota(s) de R$ 10.00\n", cont);
  cont = 0;
  while (N >= 5) {
    N = N - 5;
    cont++;
  }
  printf("%d nota(s) de R$ 5.00\n", cont);
  cont = 0;
  while (N >= 2) {
    N = N - 2;
    cont++;
  }
  printf("%d nota(s) de R$ 2.00\n", cont);
  cont = 0;
  printf("MOEDAS:\n");
  while (N >= 1) {
    N = N - 1;
    cont++;
  }
  printf("%d moeda(s) de R$ 1.00\n", cont);
  cont = 0;
  while (N >= 0.50) {
    N = N - 0.50;
    cont++;
  }
  printf("%d moeda(s) de R$ 0.50\n", cont);
  cont = 0;
  while (N >= 0.25) {
    N = N - 0.25;
    cont++;
  }
  printf("%d moeda(s) de R$ 0.25\n", cont);
  cont = 0;
  while (N >= 0.10) {
    N = N - 0.10;
    cont++;
  }
  printf("%d moeda(s) de R$ 0.10\n", cont);
  cont = 0;
  while (N >= 0.05) {
    N = N - 0.05;
    cont++;
  }
  printf("%d moeda(s) de R$ 0.05\n", cont);
  cont = 0;
  while (N >= 0.01) {
    N = N - 0.01;
    cont++;
  }
  printf("%d moeda(s) de R$ 0.01\n", cont);
  return 0;
}
```