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

```asm
<gameplay>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %edi,-0x44(%rbp)
  mov    %esi,-0x48(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  cmpl   $0x3,-0x44(%rbp)
  je     L167
  cmpl   $0x3,-0x44(%rbp)
  jg     L112
  cmpl   $0x1,-0x44(%rbp)
  je     L29
  cmpl   $0x2,-0x44(%rbp)
  je     L78
  jmp    L112
L29:
  movl   $0x5,-0x28(%rbp)
  movl   $0x1e,-0x18(%rbp)
  movl   $0x14,-0x24(%rbp)
  jmp    L112
L78:
  movl   $0x7,-0x28(%rbp)
  movl   $0x28,-0x18(%rbp)
  movl   $0xf,-0x24(%rbp)
  jmp    L112
L167:
  movl   $0x9,-0x28(%rbp)
  movl   $0x32,-0x18(%rbp)
  movl   $0xc,-0x24(%rbp)
  nop
L112:
  mov    $0x0,%eax
  call   <clearScreen@plt>
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D204(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D119(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x28(%rbp),%eax
  mov    %eax,%esi
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%esi
  lea    D132(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x24(%rbp),%eax
  mov    %eax,%esi
  lea    D220(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  cmpl   $0x4,-0x48(%rbp)
  je     L291
  cmpl   $0x4,-0x48(%rbp)
  jg     L219
  cmpl   $0x3,-0x48(%rbp)
  je     L206
  cmpl   $0x3,-0x48(%rbp)
  jg     L219
  cmpl   $0x1,-0x48(%rbp)
  je     L152
  cmpl   $0x2,-0x48(%rbp)
  je     L210
  jmp    L219
L152:
  lea    D263(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L219
L210:
  lea    D161(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L219
L206:
  lea    D162(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L219
L291:
  lea    D87(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L219:
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L296:
  movl   $0x0,-0x20(%rbp)
  lea    D221(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x30(%rbp),%rax
  mov    %rax,%rsi
  lea    D147(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x34(%rbp),%rax
  mov    %rax,%rsi
  lea    D147(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D139(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x2c(%rbp),%rax
  mov    %rax,%rsi
  lea    D147(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D193(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L236:
  lea    -0x35(%rbp),%rax
  mov    %rax,%rsi
  lea    D153(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movl   $0x1,-0x1c(%rbp)
  movzbl -0x35(%rbp),%eax
  movsbl %al,%eax
  cmp    $0x79,%eax
  je     L22
  cmp    $0x79,%eax
  jg     L298
  cmp    $0x6e,%eax
  je     L150
  cmp    $0x6e,%eax
  jg     L298
  cmp    $0x4e,%eax
  je     L150
  cmp    $0x59,%eax
  jne    L298
L22:
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x0,-0x20(%rbp)
  movl   $0x1,-0x1c(%rbp)
  jmp    L34
L150:
  lea    D142(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,-0x20(%rbp)
  movl   $0x1,-0x1c(%rbp)
  mov    $0x0,%eax
  call   <getchar@plt>
  jmp    L34
L298:
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x0,-0x1c(%rbp)
  nop
L34:
  cmpl   $0x0,-0x1c(%rbp)
  je     L236
  cmpl   $0x1,-0x20(%rbp)
  je     L296
  mov    $0x0,%eax
  call   <clearScreen@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x30(%rbp),%edx
  mov    -0x2c(%rbp),%esi
  mov    -0x34(%rbp),%eax
  mov    -0x24(%rbp),%r8d
  mov    -0x48(%rbp),%edi
  mov    -0x44(%rbp),%ecx
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <cslls@plt>
  mov    %eax,-0x10(%rbp)
  mov    -0x2c(%rbp),%eax
  imul   -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x30(%rbp),%eax
  imul   -0x14(%rbp),%eax
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0xc(%rbp)
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%esi
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  cmpl   $0x0,-0xc(%rbp)
  jns    L279
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L266
L279:
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L266:
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    -0xc(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L202
  call   <__stack_chk_fail@plt>
L202:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D80
type_guessed: string
name: unpack_data
arguments: tag: D204
type_guessed: string
name: unpack_data
arguments: tag: D119
type_guessed: string
name: unpack_data
arguments: tag: D74
type_guessed: string
name: unpack_data
arguments: tag: D132
type_guessed: string
name: unpack_data
arguments: tag: D220
type_guessed: string
name: unpack_data
arguments: tag: D42
type_guessed: string
name: unpack_data
arguments: tag: D263
type_guessed: string
name: unpack_data
arguments: tag: D161
type_guessed: string
name: unpack_data
arguments: tag: D162
type_guessed: string
name: unpack_data
arguments: tag: D87
type_guessed: string
name: unpack_data
arguments: tag: D27
type_guessed: string
name: unpack_data
arguments: tag: D221
type_guessed: string
name: unpack_data
arguments: tag: D147
type_guessed: string
name: unpack_data
arguments: tag: D35
type_guessed: string
name: unpack_data
arguments: tag: D139
type_guessed: string
name: unpack_data
arguments: tag: D193
type_guessed: string
name: unpack_data
arguments: tag: D153
type_guessed: string
name: unpack_data
arguments: tag: D0
type_guessed: string
name: unpack_data
arguments: tag: D142
type_guessed: string
name: unpack_data
arguments: tag: D31
type_guessed: string
name: unpack_data
arguments: tag: D44
type_guessed: string
name: unpack_data
arguments: tag: D25
type_guessed: string
name: unpack_data
arguments: tag: D84
type_guessed: string
name: unpack_data
arguments: tag: D59
type_guessed: string

tool: D80: 

	  Manage your stand for today!

tool: D204: 
	

tool: D119: 
	Remember:

tool: D74: 
	Cost per glass: %ic

tool: D132: 
	Cost per signal: %ic

tool: D220: 
	Average competence price per glass: %ic

tool: D42: 
	Weather: 

tool: D263: hot

tool: D161: sunny

tool: D162: cloudy

tool: D87: stormy

tool: D27: 


tool: D221: 
	How many signals will you use? 

tool: D147: %d

tool: D35: 
	How many glasses of lemonade will you make? 

tool: D139: 
	How much cents per glass will you ask? 

tool: D193: 
	Are these values right? (Y/N)

tool: D153:  %c

tool: D0: 	OK 

tool: D142: 	Press ENTER to set values again 

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

tool: D44: 
	The sells for today were...

tool: D25: 
	You sold %i glasses.

tool: D84: 
	You lost %i today

tool: D59: 
	You won %i today

assistant: ```c
int gameplay(int diff, int whr) {
  int numg, nums, prcg, cstg, totalp, slls, csts, prcc, prcs, x, y;
  switch (diff) {
  case 1:
    cstg = 5;
    prcs = 30;
    prcc = 20;
    break;
  case 2:
    cstg = 7;
    prcs = 40;
    prcc = 15;
    break;
  case 3:
    cstg = 9;
    prcs = 50;
    prcc = 12;
    break;
  }
  clearScreen();
  printf("\n\n\t  Manage your stand for today!");
  printf("\n\t");
  printf("\n\tRemember:");
  printf("\n\tCost per glass: %ic", cstg);
  printf("\n\tCost per signal: %ic", csts);
  printf("\n\tAverage competence price per glass: %ic", prcc);
  printf("\n\tWeather: ");
  switch (whr) {
  case 1:
    printf("hot");
    break;
  case 2:
    printf("sunny");
    break;
  case 3:
    printf("cloudy");
    break;
  case 4:
    printf("stormy");
    break;
  }
  printf("\n\n");
  do {
    x = 0;
    printf("\n\tHow many signals will you use? ");
    scanf("%d", &nums);
    printf("\n\tHow many glasses of lemonade will you make? ");
    scanf("%d", &numg);
    printf("\n\tHow much cents per glass will you ask? ");
    scanf("%d", &prcg);
    printf("\n");
    printf("\n\tAre these values right? (Y/N)");
    char slct;
    do {
      scanf(" %c", &slct);
      y = 1;
      switch (slct) {
      case 'Y':
      case 'y':
        printf("\tOK ");
        x = 0;
        y = 1;
        break;
      case 'N':
      case 'n':
        printf("\tPress ENTER to set values again ");
        x = 1;
        y = 1;
        getchar();
        break;
      default:
        printf("\tOption not recognised. Try again... ");
        y = 0;
        break;
      }
    } while (y == 0);
  } while (x == 1);
  clearScreen();
  printf("\n");
  printf("\n\tThe sells for today were...");
  slls = cslls(numg, prcg, nums, diff, whr, prcc);
  totalp = ((slls * prcg) - ((numg * cstg) + (nums * csts)));
  printf("\n");
  printf("\n");
  printf("\n\tYou sold %i glasses.", slls);
  if (totalp < 0) {
    printf("\n\tYou lost %i today", totalp);
  } else {
    printf("\n\tYou won %i today", totalp);
  }
  getchar();
  getchar();
  return totalp;
}
```