user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<main>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  movl   $0x0,0xc(%rsp)
  movl   $0x0,0x10(%rsp)
  movl   $0x0,0x14(%rsp)
  lea    D124(%rip),%rdi
  call   <puts@plt>
  lea    0xa(%rsp),%rdi
  call   <get_input@plt>
  cmpb   $0x4c,0xa(%rsp)
  jne    L102
L209:
  lea    D65(%rip),%rdi
  call   <puts@plt>
  mov    $0xffffffd8,%ebx
  lea    0x14(%rsp),%r13
  lea    0x10(%rsp),%r12
  lea    D174(%rip),%rbp
L79:
  pxor   %xmm0,%xmm0
  cvtsi2ss %ebx,%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  %xmm0,0x10(%rsp)
  mov    %r13,%rdi
  call   <To_Celsius@plt>
  mov    %r12,%rdi
  call   <To_Celsius@plt>
  pxor   %xmm1,%xmm1
  cvtss2sd 0x10(%rsp),%xmm1
  addsd  D126(%rip),%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x10(%rsp)
  pxor   %xmm0,%xmm0
  cvtss2sd 0x14(%rsp),%xmm0
  cvtss2sd %xmm1,%xmm1
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  add    $0x14,%ebx
  cmp    $0xdc,%ebx
  jne    L79
  jmp    L17
L102:
  lea    D269(%rip),%rdi
  call   <puts@plt>
  lea    0xb(%rsp),%rdi
  call   <get_input@plt>
  movzbl 0xa(%rsp),%eax
  cmp    $0x46,%al
  je     L213
  jle    L70
  cmp    $0x4b,%al
  jne    L178
  movzbl 0xb(%rsp),%eax
  cmp    $0x46,%al
  je     L134
  cmp    $0x43,%al
  je     L148
  cmp    $0x4b,%al
  jne    L17
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rdi
  call   <get_num@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  lea    D90(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L70:
  cmp    $0x43,%al
  jne    L246
  movzbl 0xb(%rsp),%eax
  cmp    $0x46,%al
  je     L80
  cmp    $0x4b,%al
  je     L85
  cmp    $0x43,%al
  jne    L17
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rdi
  call   <get_num@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  lea    D119(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L178:
  cmp    $0x4c,%al
  je     L209
L246:
  lea    D181(%rip),%rdi
  call   <puts@plt>
L17:
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L205
  mov    $0x0,%eax
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L213:
  movzbl 0xb(%rsp),%eax
  cmp    $0x43,%al
  je     L237
  cmp    $0x4b,%al
  je     L269
  cmp    $0x46,%al
  jne    L17
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rdi
  call   <get_num@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  lea    D107(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L237:
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rbx
  mov    %rbx,%rdi
  call   <get_num@plt>
  mov    %rbx,%rdi
  call   <To_Celsius@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  lea    D76(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L269:
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rbx
  mov    %rbx,%rdi
  call   <get_num@plt>
  mov    %rbx,%rdi
  call   <To_Celsius@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  addsd  D126(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0xc(%rsp)
  cvtss2sd %xmm0,%xmm0
  lea    D69(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L80:
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rbx
  mov    %rbx,%rdi
  call   <get_num@plt>
  mov    %rbx,%rdi
  call   <To_Fahr@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  lea    D152(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L85:
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rdi
  call   <get_num@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  addsd  D126(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0xc(%rsp)
  cvtss2sd %xmm0,%xmm0
  lea    D69(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L134:
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rbx
  mov    %rbx,%rdi
  call   <get_num@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  subsd  D126(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0xc(%rsp)
  mov    %rbx,%rdi
  call   <To_Fahr@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  lea    D7(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L148:
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    0xc(%rsp),%rdi
  call   <get_num@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  subsd  D126(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0xc(%rsp)
  cvtss2sd %xmm0,%xmm0
  lea    D214(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L17
L205:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: label: D124
type_infered: string
name: retrieve_data
arguments: label: D65
type_infered: string
name: retrieve_data
arguments: label: D174
type_infered: string
name: retrieve_data
arguments: label: D126
type_infered: f64
name: retrieve_data
arguments: label: D269
type_infered: string
name: retrieve_data
arguments: label: D92
type_infered: string
name: retrieve_data
arguments: label: D90
type_infered: string
name: retrieve_data
arguments: label: D119
type_infered: string
name: retrieve_data
arguments: label: D181
type_infered: string
name: retrieve_data
arguments: label: D107
type_infered: string
name: retrieve_data
arguments: label: D76
type_infered: string
name: retrieve_data
arguments: label: D69
type_infered: string
name: retrieve_data
arguments: label: D152
type_infered: string
name: retrieve_data
arguments: label: D7
type_infered: string
name: retrieve_data
arguments: label: D214
type_infered: string

tool: D124: 
Would you like to convert from (F)ahrenheit, (C)elsius, (K)elvin, or see a (L)ist of conversions?

tool: D65: Fahrenheit	Celcius	Kelvin


tool: D174: 
	%3d	%06.3f	%06.3f


tool: D126: 273.15

tool: D269: Convert to (F)ahrenheit, (C)elsius, or (K)elvin?

tool: D92: Enter Temperature to convert:

tool: D90: %06.3f Kelvin, Duh


tool: D119: %06.3f Degrees Celsius, Duh


tool: D181: Something went wrong.

tool: D107: %06.3f Degrees Fahrenheit, Duh


tool: D76: %06.3f Degrees Celsius


tool: D69: %06.3f Kelvin


tool: D152: %06.3f Degrees Fahrenheit


tool: D7: %06.3f Degrees Fehrenheit


tool: D214: %06.3f Celsius


assistant: ```c
int main() {
  char deg_in, deg_out;
  float deg_num = 0.0;
  float kelvin_loop = 0.0;
  float celsius_loop = 0.0;
  int i;
  printf("\nWould you like to convert from (F)ahrenheit, (C)elsius, (K)elvin, or see a (L)ist of conversions?\n");
  get_input(&deg_in);
  if (deg_in != 'L') {
    printf("Convert to (F)ahrenheit, (C)elsius, or (K)elvin?\n");
    get_input(&deg_out);
  }
  switch (deg_in) {
  case 'F':
    if (deg_out == 'C') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      To_Celsius(&deg_num);
      printf("%06.3f Degrees Celsius\n", deg_num);
    } else if (deg_out == 'K') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      To_Celsius(&deg_num);
      deg_num += 273.15;
      printf("%06.3f Kelvin\n", deg_num);
    } else if (deg_out == 'F') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      printf("%06.3f Degrees Fahrenheit, Duh\n", deg_num);
    }
    break;
  case 'C':
    if (deg_out == 'F') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      To_Fahr(&deg_num);
      printf("%06.3f Degrees Fahrenheit\n", deg_num);
    } else if (deg_out == 'K') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      deg_num += 273.15;
      printf("%06.3f Kelvin\n", deg_num);
    } else if (deg_out == 'C') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      printf("%06.3f Degrees Celsius, Duh\n", deg_num);
    }
    break;
  case 'K':
    if (deg_out == 'F') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      deg_num -= 273.15;
      To_Fahr(&deg_num);
      printf("%06.3f Degrees Fehrenheit\n", deg_num);
    } else if (deg_out == 'C') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      deg_num -= 273.15;
      printf("%06.3f Celsius\n", deg_num);
    } else if (deg_out == 'K') {
      printf("Enter Temperature to convert:\n");
      get_num(&deg_num);
      printf("%06.3f Kelvin, Duh\n", deg_num);
    }
    break;
  case 'L':
    printf("Fahrenheit\tCelcius\tKelvin\n\n");
    for (i = -40; i <= 200; i += 20) {
      celsius_loop = i;
      kelvin_loop = i;
      To_Celsius(&celsius_loop);
      To_Celsius(&kelvin_loop);
      kelvin_loop += 273.15;
      printf("\n\t%3d\t%06.3f\t%06.3f\n", i, celsius_loop, kelvin_loop);
    }
    break;
  default:
    printf("Something went wrong.\n");
    break;
  }
}
```