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

```asm
<main>:
  endbr64
  push   %r14
  lea    D114(%rip),%rdi
  push   %rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  lea    0x2f(%rsp),%rdx
  lea    0x2e(%rsp),%rsi
  call   <scanf@plt>
  xor    %eax,%eax
  lea    0x40(%rsp),%rcx
  lea    0x30(%rsp),%rdx
  lea    0x38(%rsp),%rsi
  lea    D107(%rip),%rdi
  call   <scanf@plt>
  cmpb   $0x43,0x2e(%rsp)
  jne    L23
  cmpb   $0x46,0x2f(%rsp)
  je     L6
L23:
  lea    D31(%rip),%rdi
  call   <puts@plt>
  movsd  D134(%rip),%xmm5
  movsd  0x30(%rsp),%xmm1
  movsd  0x38(%rsp),%xmm0
  addsd  %xmm5,%xmm1
  movq   %xmm5,%r14
  comisd %xmm0,%xmm1
  jb     L76
  movsd  D125(%rip),%xmm6
  movsd  D88(%rip),%xmm7
  lea    D105(%rip),%rbx
  movsd  %xmm6,0x8(%rsp)
  movsd  D99(%rip),%xmm6
  movsd  %xmm7,0x10(%rsp)
  movsd  %xmm6,0x18(%rsp)
L37:
  movapd %xmm0,%xmm1
  mov    %rbx,%rdi
  subsd  0x18(%rsp),%xmm1
  mov    $0x2,%eax
  mulsd  0x10(%rsp),%xmm1
  divsd  0x8(%rsp),%xmm1
  call   <printf@plt>
  movq   %r14,%xmm1
  movsd  0x38(%rsp),%xmm0
  addsd  0x30(%rsp),%xmm1
  addsd  0x40(%rsp),%xmm0
  comisd %xmm0,%xmm1
  movsd  %xmm0,0x38(%rsp)
  jae    L37
L76:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L15
  add    $0x58,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %r14
  ret
L6:
  lea    D24(%rip),%rdi
  call   <puts@plt>
  movsd  D134(%rip),%xmm7
  movsd  0x30(%rsp),%xmm1
  movsd  0x38(%rsp),%xmm0
  addsd  %xmm7,%xmm1
  movq   %xmm7,%r14
  comisd %xmm0,%xmm1
  jb     L76
  movsd  D125(%rip),%xmm7
  lea    D105(%rip),%rbx
  movsd  %xmm7,0x8(%rsp)
  movsd  D88(%rip),%xmm7
  movsd  %xmm7,0x10(%rsp)
  movsd  D99(%rip),%xmm7
  movsd  %xmm7,0x18(%rsp)
  nopl   0x0(%rax)
L46:
  movsd  0x8(%rsp),%xmm1
  mov    %rbx,%rdi
  mov    $0x2,%eax
  mulsd  %xmm0,%xmm1
  divsd  0x10(%rsp),%xmm1
  addsd  0x18(%rsp),%xmm1
  call   <printf@plt>
  movsd  0x38(%rsp),%xmm0
  movq   %r14,%xmm1
  addsd  0x40(%rsp),%xmm0
  addsd  0x30(%rsp),%xmm1
  movsd  %xmm0,0x38(%rsp)
  comisd %xmm0,%xmm1
  jae    L46
  jmp    L76
L15:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: tag: D114
data_type: string
name: parse_data
arguments: tag: D107
data_type: string
name: parse_data
arguments: tag: D31
data_type: string
name: parse_data
arguments: tag: D134
data_type: f64
name: parse_data
arguments: tag: D125
data_type: byte[8]
name: parse_data
arguments: tag: D88
data_type: byte[8]
name: parse_data
arguments: tag: D105
data_type: string
name: parse_data
arguments: tag: D99
data_type: byte[8]
name: parse_data
arguments: tag: D24
data_type: string

tool: D114: %c->%c

tool: D107: %lf%lf%lf

tool: D31:    F  ->    C

tool: D134: 0.01

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

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

tool: D105: %5.1lf ->%6.1lf


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

tool: D24:    C  ->    F

assistant: ```c
int main() {
  double h, l, a, b, d;
  char c, f;
  scanf("%c->%c", &c, &f);
  scanf("%lf%lf%lf", &l, &h, &a);
  if (c == 'C' && f == 'F') {
    printf("   C  ->    F\n");
    for (; l <= h + 0.01; l = l + a) {
      b = 9 * l / 5 + 32;
      printf("%5.1lf ->%6.1lf\n", l, b);
    }
  } else {
    printf("   F  ->    C\n");
    for (; l <= h + 0.01; l = l + a) {
      b = (l - 32) * 5 / 9;
      printf("%5.1lf ->%6.1lf\n", l, b);
    }
  }
  return 0;
}
```