user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x100,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0xf8(%rbp)
  movl   $0x0,-0x100(%rbp)
  movl   $0x0,-0xfc(%rbp)
  lea    -0xb0(%rbp),%rdx
  mov    $0x0,%eax
  mov    $0x15,%ecx
  mov    %rdx,%rdi
  rep stos %rax,%es:(%rdi)
  lea    -0xb0(%rbp),%rax
  mov    %rax,-0xf0(%rbp)
  lea    -0xd0(%rbp),%rax
  mov    %rax,-0xe8(%rbp)
  lea    -0x100(%rbp),%rax
  mov    %rax,-0xe0(%rbp)
  lea    -0xfc(%rbp),%rax
  mov    %rax,-0xd8(%rbp)
  mov    $0x0,%eax
  call   <welcome@plt>
  nop
  jmp    L121
L76:
  mov    $0x0,%eax
  call   <menu@plt>
  mov    %eax,-0xf4(%rbp)
  cmpl   $0x6,-0xf4(%rbp)
  ja     L121
  mov    -0xf4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D14(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D14(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0xf0(%rbp),%rdx
  mov    -0xe0(%rbp),%rcx
  mov    -0xe8(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <read_in@plt>
  jmp    L121
  mov    -0x100(%rbp),%eax
  cmp    $0x1,%eax
  jne    L14
  mov    -0xe8(%rbp),%rax
  mov    %rax,%rdi
  call   <display@plt>
  jmp    L121
L14:
  mov    $0x0,%eax
  call   <error@plt>
  jmp    L121
  mov    -0x100(%rbp),%eax
  cmp    $0x1,%eax
  jne    L42
  mov    -0xe8(%rbp),%rax
  mov    %rax,%rdi
  call   <selection@plt>
  jmp    L121
L42:
  mov    $0x0,%eax
  call   <error@plt>
  jmp    L121
  mov    -0x100(%rbp),%eax
  cmp    $0x1,%eax
  jne    L15
  mov    -0xe8(%rbp),%rax
  mov    %rax,%rdi
  call   <winner_check@plt>
  jmp    L121
L15:
  mov    $0x0,%eax
  call   <error@plt>
  jmp    L121
  mov    -0x100(%rbp),%eax
  cmp    $0x1,%eax
  jne    L23
  mov    -0xf0(%rbp),%rax
  mov    %rax,%rdi
  call   <frequency@plt>
  jmp    L121
L23:
  mov    $0x0,%eax
  call   <error@plt>
  jmp    L121
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0xf8(%rbp)
  nop
L121:
  cmpl   $0x1,-0xf8(%rbp)
  jne    L76
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L67
  call   <__stack_chk_fail@plt>
L67:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D24
data_type: string

tool: D24: 
Thank you for using Paul Brittain's Lotto Checker


assistant: ```c
main() {
  int input_numbers[6], loop = 0, menu_num, input_confirmation = 0, cpy = 0;
  int count[42] = {0};
  int *counter = &count[0];
  int *inputs = &input_numbers[0];
  int *confirm = &input_confirmation;
  int *copy = &cpy;
  welcome();
  while (loop != 1) {
    menu_num = menu();
    switch (menu_num) {
    case 1: {
      read_in(inputs, confirm, counter);
      break;
    }
    case 2: {
      if (input_confirmation == 1) {
        display(inputs);
      } else {
        error();
      }
      break;
    }
    case 3: {
      if (input_confirmation == 1) {
        selection(inputs);
      } else {
        error();
      }
      break;
    }
    case 4: {
      if (input_confirmation == 1) {
        winner_check(inputs);
      } else {
        error();
      }
      break;
    }
    case 5: {
      if (input_confirmation == 1) {
        frequency(counter);
      } else {
        error();
      }
      break;
    }
    case 6: {
      printf("\nThank you for using Paul Brittain's Lotto Checker\n");
      loop = 1;
      break;
    }
    }
  }
}
```