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

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  call   <clearScreen@plt>
  lea    D69(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D135(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D251(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D183(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x20(%rsp),%rsi
  lea    D66(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    0x20(%rsp),%rbx
  lea    D210(%rip),%r13
  lea    D47(%rip),%r12
  lea    D209(%rip),%rbp
  jmp    L102
L132:
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
L102:
  mov    %rbx,%rdi
  call   <strlen@plt>
  cmp    $0x1e,%eax
  je     L132
  lea    D235(%rip),%rsi
  lea    D93(%rip),%rdi
  call   <fopen@plt>
  mov    %rax,0x8(%rsp)
  mov    $0x2,%r12d
  lea    D144(%rip),%r15
  jmp    L146
L137:
  mov    0x4(%rsp),%edi
  call   <helpScreen@plt>
  mov    $0x0,%eax
  call   <clearScreen@plt>
L146:
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D208(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D152(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,0x4(%rsp)
  lea    D154(%rip),%r14
  lea    0x1c(%rsp),%r13
  lea    D215(%rip),%rbp
L67:
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    0x1c(%rsp),%ebx
  cmp    $0x2,%ebx
  je     L137
  cmp    $0x3,%ebx
  je     L54
  cmp    $0x1,%ebx
  je     L156
  lea    D169(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x2,0x4(%rsp)
  jmp    L67
L54:
  mov    %r12d,%edi
  call   <optionsScreen@plt>
  mov    %eax,%r12d
  mov    $0x0,%eax
  call   <clearScreen@plt>
  jmp    L146
L156:
  mov    $0x0,%eax
  call   <clearScreen@plt>
  lea    D247(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x32,%ebp
L48:
  mov    $0x0,%eax
  call   <clearScreen@plt>
  mov    %ebx,%esi
  lea    D26(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebp,%esi
  lea    D140(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    %r12d,%edi
  call   <weather@plt>
  mov    %eax,%esi
  mov    %r12d,%edi
  call   <gameplay@plt>
  lea    0x0(%rbp,%rax,1),%r13d
  mov    %r13d,%ebp
  mov    $0x0,%eax
  call   <clearScreen@plt>
  mov    %r13d,%esi
  lea    D150(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D88(%rip),%r15
  lea    0x1b(%rsp),%r14
  lea    D119(%rip),%r13
L5:
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r14,%rsi
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movzbl 0x1b(%rsp),%eax
  cmp    $0x6e,%al
  je     L3
  jg     L139
  cmp    $0x4e,%al
  je     L3
  cmp    $0x59,%al
  jne    L83
L154:
  add    $0x1,%ebx
  jmp    L48
L139:
  cmp    $0x79,%al
  je     L154
L83:
  lea    D41(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L5
L3:
  mov    $0x0,%eax
  call   <clearScreen@plt>
  mov    %ebp,%esi
  lea    D252(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D68(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x20(%rsp),%rdx
  mov    %ebp,%ecx
  lea    D87(%rip),%rsi
  mov    0x8(%rsp),%rbx
  mov    %rbx,%rdi
  call   <fprintf@plt>
  mov    %rbx,%rdi
  call   <fclose@plt>
  lea    D258(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D37(%rip),%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L129
  mov    $0x0,%eax
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L129:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D69
datatype: string
name: unpack_data
arguments: label: D135
datatype: string
name: unpack_data
arguments: label: D251
datatype: string
name: unpack_data
arguments: label: D183
datatype: string
name: unpack_data
arguments: label: D66
datatype: string
name: unpack_data
arguments: label: D210
datatype: string
name: unpack_data
arguments: label: D47
datatype: string
name: unpack_data
arguments: label: D209
datatype: string
name: unpack_data
arguments: label: D235
datatype: string
name: unpack_data
arguments: label: D93
datatype: string
name: unpack_data
arguments: label: D144
datatype: string
name: unpack_data
arguments: label: D208
datatype: string
name: unpack_data
arguments: label: D152
datatype: string
name: unpack_data
arguments: label: D154
datatype: string
name: unpack_data
arguments: label: D215
datatype: string
name: unpack_data
arguments: label: D169
datatype: string
name: unpack_data
arguments: label: D247
datatype: string
name: unpack_data
arguments: label: D26
datatype: string
name: unpack_data
arguments: label: D140
datatype: string
name: unpack_data
arguments: label: D150
datatype: string
name: unpack_data
arguments: label: D88
datatype: string
name: unpack_data
arguments: label: D119
datatype: string
name: unpack_data
arguments: label: D41
datatype: string
name: unpack_data
arguments: label: D252
datatype: string
name: unpack_data
arguments: label: D68
datatype: string
name: unpack_data
arguments: label: D87
datatype: string
name: unpack_data
arguments: label: D258
datatype: string
name: unpack_data
arguments: label: D37
datatype: string

tool: D69: 
	   ---Welcome to LEMONADE STAND--- 

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

tool: D251: 
	Programmed by R

tool: D183: 
	Please, enter your name: 

tool: D66:  %[^
]s

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

tool: D47: 
	Enter your name: 

tool: D209:  %30[^
]

tool: D235: a

tool: D93: scores.txt

tool: D144: 
	1- Start a new game

tool: D208: 
	2- HELP and how to play

tool: D152: 
	3- Options

tool: D154: 
	Enter: 

tool: D215:  %i

tool: D169: 	Option not recognised

tool: D247: 

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

tool: D26: 
	Day %i

tool: D140: 
	Money: %ic

tool: D150: 	Your total money is %i

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

tool: D119:  %c

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

tool: D252: 
	Your total earnings were %i

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

tool: D87: 
%s --- %i

tool: D258: 
	Thank you for playing!

tool: D37: 


	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;
}
```