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

```asm
<main>:
  endbr64
  push   %r14
  lea    D76(%rip),%rdi
  push   %rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  lea    0x2e(%rsp),%rcx
  lea    0x2d(%rsp),%rdx
  lea    0x2c(%rsp),%rsi
  lea    0x2f(%rsp),%r8
  call   <scanf@plt>
  lea    0x40(%rsp),%rcx
  xor    %eax,%eax
  lea    0x38(%rsp),%rdx
  lea    0x30(%rsp),%rsi
  lea    D42(%rip),%rdi
  call   <scanf@plt>
  movzbl 0x2c(%rsp),%eax
  cmp    $0x43,%al
  je     L13
L52:
  cmp    $0x46,%al
  je     L9
L75:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L62
  add    $0x58,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %r14
  ret
L13:
  lea    D47(%rip),%rdi
  call   <puts@plt>
  movsd  D6(%rip),%xmm7
  movsd  0x38(%rsp),%xmm1
  movsd  0x30(%rsp),%xmm0
  addsd  %xmm7,%xmm1
  movq   %xmm7,%r14
  comisd %xmm0,%xmm1
  jb     L79
  movsd  D22(%rip),%xmm7
  lea    D8(%rip),%rbx
  movsd  %xmm7,(%rsp)
  movsd  D51(%rip),%xmm7
  movsd  %xmm7,0x8(%rsp)
  movsd  D37(%rip),%xmm7
  movsd  %xmm7,0x10(%rsp)
  cs nopw 0x0(%rax,%rax,1)
L64:
  movsd  (%rsp),%xmm1
  mov    %rbx,%rdi
  mov    $0x2,%eax
  movsd  %xmm0,0x18(%rsp)
  mulsd  %xmm0,%xmm1
  divsd  0x8(%rsp),%xmm1
  addsd  0x10(%rsp),%xmm1
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm0
  movq   %r14,%xmm1
  addsd  0x40(%rsp),%xmm0
  addsd  0x38(%rsp),%xmm1
  comisd %xmm0,%xmm1
  jae    L64
L79:
  movzbl 0x2c(%rsp),%eax
  jmp    L52
L9:
  lea    D4(%rip),%rdi
  call   <puts@plt>
  movsd  D6(%rip),%xmm7
  movsd  0x38(%rsp),%xmm1
  movsd  0x30(%rsp),%xmm0
  addsd  %xmm7,%xmm1
  movq   %xmm7,%r14
  comisd %xmm0,%xmm1
  jb     L75
  movsd  D22(%rip),%xmm7
  movsd  D51(%rip),%xmm2
  lea    D8(%rip),%rbx
  movsd  D37(%rip),%xmm3
  movsd  %xmm7,(%rsp)
  movsd  %xmm2,0x8(%rsp)
  movsd  %xmm3,0x10(%rsp)
  nopw   0x0(%rax,%rax,1)
L42:
  movapd %xmm0,%xmm1
  mov    %rbx,%rdi
  subsd  0x10(%rsp),%xmm1
  mov    $0x2,%eax
  mulsd  0x8(%rsp),%xmm1
  movsd  %xmm0,0x18(%rsp)
  divsd  (%rsp),%xmm1
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm0
  movq   %r14,%xmm1
  addsd  0x40(%rsp),%xmm0
  addsd  0x38(%rsp),%xmm1
  comisd %xmm0,%xmm1
  jae    L42
  jmp    L75
L62:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D76
type_guessed: string
name: extract_symbolic_data
arguments: label: D42
type_guessed: string
name: extract_symbolic_data
arguments: label: D47
type_guessed: string
name: extract_symbolic_data
arguments: label: D6
type_guessed: f64
name: extract_symbolic_data
arguments: label: D22
type_guessed: byte[8]
name: extract_symbolic_data
arguments: label: D8
type_guessed: string
name: extract_symbolic_data
arguments: label: D51
type_guessed: byte[8]
name: extract_symbolic_data
arguments: label: D37
type_guessed: byte[8]
name: extract_symbolic_data
arguments: label: D4
type_guessed: string

tool: D76: %c%c%c%c

tool: D42: %lf %lf %lf

tool: D47:    C  ->    F

tool: D6: 0.01

tool: {"D22": [0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x40]}

tool: D8: %5.1lf -> %5.1lf


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

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

tool: D4:    F  ->    C

assistant: ```c
int main() {
  double a, b, i, s;
  char w, x, y, z;
  scanf("%c%c%c%c", &w, &x, &y, &z);
  scanf("%lf %lf %lf", &a, &b, &s);
  if (w == 'C') {
    printf("   C  ->    F\n");
    for (i = a; i <= b + 0.01; i += s)
      printf("%5.1lf -> %5.1lf\n", i, (9 * i / 5 + 32));
  }
  if (w == 'F') {
    printf("   F  ->    C\n");
    for (i = a; i <= b + 0.01; i += s)
      printf("%5.1lf -> %5.1lf\n", i, ((i - 32) * 5 / 9));
  }
}
```