user: 请将以下的汇编代码转换成C语言代码:

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  lea    D132(%rip),%r12
  push   %rbp
  lea    D210(%rip),%rbp
  push   %rbx
  lea    D278(%rip),%rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  lea    0x20(%rsp),%r15
  call   <clearScreen@plt>
  lea    D10(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D218(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D54(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D269(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %r15,%rsi
  lea    D113(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  jmp    L154
  cs nopw 0x0(%rax,%rax,1)
L104:
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %r15,%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
L154:
  mov    %r15,%rdi
  call   <strlen@plt>
  cmp    $0x1e,%eax
  je     L104
  lea    D265(%rip),%rsi
  lea    D14(%rip),%rdi
  mov    $0x2,%r14d
  call   <fopen@plt>
  lea    D131(%rip),%r13
  lea    0x1c(%rsp),%r12
  mov    %rax,0x8(%rsp)
  lea    D226(%rip),%rbx
  nop
L69:
  lea    D69(%rip),%rdi
  xor    %eax,%eax
  mov    $0x1,%ebp
  call   <printf@plt>
  lea    D252(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D133(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L38:
  mov    %r13,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %r12,%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x1c(%rsp),%eax
  cmp    $0x2,%eax
  je     L27
  cmp    $0x3,%eax
  je     L105
  cmp    $0x1,%eax
  je     L15
  lea    D74(%rip),%rdi
  xor    %eax,%eax
  mov    $0x2,%ebp
  call   <printf@plt>
  jmp    L38
  cs nopw 0x0(%rax,%rax,1)
L15:
  mov    %eax,%ebp
  xor    %eax,%eax
  lea    0x1b(%rsp),%r13
  mov    $0x32,%ebx
  call   <clearScreen@plt>
  lea    D110(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
  call   <getchar@plt>
L107:
  xor    %eax,%eax
  call   <clearScreen@plt>
  mov    %ebp,%esi
  lea    D102(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  lea    D184(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  mov    %r14d,%edi
  call   <weather@plt>
  mov    %r14d,%edi
  mov    %eax,%esi
  call   <gameplay@plt>
  lea    (%rbx,%rax,1),%r12d
  xor    %eax,%eax
  call   <clearScreen@plt>
  mov    %r12d,%esi
  xor    %eax,%eax
  mov    %r12d,%ebx
  lea    D212(%rip),%rdi
  call   <printf@plt>
L137:
  lea    D238(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %r13,%rsi
  lea    D29(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  movzbl 0x1b(%rsp),%eax
  cmp    $0x6e,%al
  je     L102
  jg     L57
  cmp    $0x4e,%al
  je     L102
  cmp    $0x59,%al
  jne    L122
L99:
  add    $0x1,%ebp
  jmp    L107
  nopl   0x0(%rax,%rax,1)
L57:
  cmp    $0x79,%al
  je     L99
L122:
  lea    D231(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L137
  nopl   0x0(%rax)
L102:
  xor    %eax,%eax
  call   <clearScreen@plt>
  mov    %r12d,%esi
  lea    D80(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D219(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0x8(%rsp),%rbx
  mov    %r12d,%ecx
  mov    %r15,%rdx
  lea    D140(%rip),%rsi
  mov    %rbx,%rdi
  call   <fprintf@plt>
  mov    %rbx,%rdi
  call   <fclose@plt>
  lea    D96(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D105(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L146
  add    $0x58,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L105:
  mov    %r14d,%edi
  call   <optionsScreen@plt>
  mov    %eax,%r14d
  xor    %eax,%eax
  call   <clearScreen@plt>
  jmp    L69
  nopw   0x0(%rax,%rax,1)
L27:
  mov    %ebp,%edi
  call   <helpScreen@plt>
  xor    %eax,%eax
  call   <clearScreen@plt>
  jmp    L69
L146:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D132
type_guessed: string
name: parse_data
arguments: label: D210
type_guessed: string
name: parse_data
arguments: label: D278
type_guessed: string
name: parse_data
arguments: label: D10
type_guessed: string
name: parse_data
arguments: label: D218
type_guessed: string
name: parse_data
arguments: label: D54
type_guessed: string
name: parse_data
arguments: label: D269
type_guessed: string
name: parse_data
arguments: label: D113
type_guessed: string
name: parse_data
arguments: label: D265
type_guessed: string
name: parse_data
arguments: label: D14
type_guessed: string
name: parse_data
arguments: label: D131
type_guessed: string
name: parse_data
arguments: label: D226
type_guessed: string
name: parse_data
arguments: label: D69
type_guessed: string
name: parse_data
arguments: label: D252
type_guessed: string
name: parse_data
arguments: label: D133
type_guessed: string
name: parse_data
arguments: label: D74
type_guessed: string
name: parse_data
arguments: label: D110
type_guessed: string
name: parse_data
arguments: label: D102
type_guessed: string
name: parse_data
arguments: label: D184
type_guessed: string
name: parse_data
arguments: label: D212
type_guessed: string
name: parse_data
arguments: label: D238
type_guessed: string
name: parse_data
arguments: label: D29
type_guessed: string
name: parse_data
arguments: label: D231
type_guessed: string
name: parse_data
arguments: label: D80
type_guessed: string
name: parse_data
arguments: label: D219
type_guessed: string
name: parse_data
arguments: label: D140
type_guessed: string
name: parse_data
arguments: label: D96
type_guessed: string
name: parse_data
arguments: label: D105
type_guessed: string

tool: D132: 	Sorry, the name is too long. Try again...

tool: D210: 
	Enter your name: 

tool: D278:  %30[^
]

tool: D10: 
	   ---Welcome to LEMONADE STAND--- 

tool: D218: 
	A C version of the original game from the Apple II.

tool: D54: 
	Programmed by R

tool: D269: 
	Please, enter your name: 

tool: D113:  %[^
]s

tool: D265: a

tool: D14: scores.txt

tool: D131: 
	Enter: 

tool: D226:  %i

tool: D69: 
	1- Start a new game

tool: D252: 
	2- HELP and how to play

tool: D133: 
	3- Options

tool: D74: 	Option not recognised

tool: D110: 

	 Press ENTER to start the game.
	Enjoy and have fun!

tool: D102: 
	Day %i

tool: D184: 
	Money: %ic

tool: D212: 	Your total money is %i

tool: D238: 
	Do you want to continue? (Y/N) 

tool: D29:  %c

tool: D231: 	Option not recognised. Try again...

tool: D80: 
	Your total earnings were %i

tool: D219: 
	It will be saved to scores.txt

tool: D140: 
%s --- %i

tool: D96: 
	Thank you for playing!

tool: D105: 


	Press Enter to exit...


assistant: ```c
int main() {
  FILE *fp;
  int whr;
  int diff = 2;
  int slct1;
  int x, y = 0, i = 1;
  int totals = 50;
  char name[30];
  char c;
  clearScreen();
  printf("\n\t   ---Welcome to LEMONADE STAND--- ");
  printf("\n\tA C version of the original game from the Apple II.");
  printf("\n\tProgrammed by R");
  printf("\n");
  printf("\n\tPlease, enter your name: ");
  scanf(" %[^\n]s", name);
  while (strlen(name) == 30) {
    printf("\tSorry, the name is too long. Try again...");
    printf("\n\tEnter your name: ");
    scanf(" %30[^\n]", name);
  }
  fp = fopen("scores.txt", "a");
  int slct;
  do {
    printf("\n\t1- Start a new game");
    printf("\n\t2- HELP and how to play");
    printf("\n\t3- Options");
    do {
      printf("\n\tEnter: ");
      scanf(" %i", &slct);
      switch (slct) {
      case 1:
        x = 0;
        break;
      case 2:
        helpScreen(x);
        x = 1;
        clearScreen();
        break;
      case 3:
        diff = optionsScreen(diff);
        x = 1;
        clearScreen();
        break;
      default:
        printf("\tOption not recognised");
        x = 2;
        break;
      }
    } while (x == 2);
  } while (x == 1);
  clearScreen();
  printf("\n\n\t Press ENTER to start the game.\n\tEnjoy and have fun!");
  getchar();
  getchar();
  do {
    clearScreen();
    printf("\n\tDay %i", i);
    printf("\n\tMoney: %ic", totals);
    getchar();
    whr = weather(diff);
    totals += gameplay(diff, whr);
    clearScreen();
    printf("\tYour total money is %i", totals);
    do {
      printf("\n\tDo you want to continue? (Y/N) ");
      scanf(" %c", &c);
      switch (c) {
      case 'y':
      case 'Y':
        y = 1;
        break;
      case 'n':
      case 'N':
        y = 0;
        break;
      default:
        printf("\tOption not recognised. Try again...");
        y = 2;
        break;
      }
    } while (y == 2);
    i += 1;
  } while (y == 1);
  clearScreen();
  printf("\n\tYour total earnings were %i", totals);
  printf("\n\tIt will be saved to scores.txt");
  fprintf(fp, "\n%s --- %i", name, totals);
  fclose(fp);
  printf("\n\tThank you for playing!");
  printf("\n\n\n\tPress Enter to exit...\n\n");
  getchar();
  getchar();
  return;
}
```