user: What would the C source look like for the assembly code provided here?

```asm
<ShoppingItems>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0xffffffff,-0xc(%rbp)
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D131(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x5,%eax
  ja     L16
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D0(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D0(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D43(%rip),%rax
  mov    %rax,%rdx
  lea    D51(%rip),%rax
  mov    %rax,%rsi
  lea    D102(%rip),%rax
  mov    %rax,%rdi
  call   <DisplayOptions@plt>
  jmp    L31
  lea    D55(%rip),%rax
  mov    %rax,%rdx
  lea    D78(%rip),%rax
  mov    %rax,%rsi
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  call   <DisplayOptions@plt>
  jmp    L31
  lea    D107(%rip),%rax
  mov    %rax,%rdx
  lea    D164(%rip),%rax
  mov    %rax,%rsi
  lea    D6(%rip),%rax
  mov    %rax,%rdi
  call   <DisplayOptions@plt>
  jmp    L31
  lea    D85(%rip),%rax
  mov    %rax,%rdx
  lea    D6(%rip),%rax
  mov    %rax,%rsi
  lea    D164(%rip),%rax
  mov    %rax,%rdi
  call   <DisplayOptions@plt>
  jmp    L31
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L31
L16:
  nop
L31:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L39
  call   <__stack_chk_fail@plt>
L39:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D15
type_infered: string
name: parse_data
arguments: label: D114
type_infered: string
name: parse_data
arguments: label: D131
type_infered: string
name: parse_data
arguments: label: D43
type_infered: string
name: parse_data
arguments: label: D51
type_infered: string
name: parse_data
arguments: label: D102
type_infered: string
name: parse_data
arguments: label: D55
type_infered: string
name: parse_data
arguments: label: D78
type_infered: string
name: parse_data
arguments: label: D82
type_infered: string
name: parse_data
arguments: label: D107
type_infered: string
name: parse_data
arguments: label: D164
type_infered: string
name: parse_data
arguments: label: D6
type_infered: string
name: parse_data
arguments: label: D85
type_infered: string
name: parse_data
arguments: label: D12
type_infered: string

tool: D15: What would you like to buy:

tool: D114: 1 - shoes, 2 - T shirts, 3 - trousers, 4 - dresses, 5 - nothing, I am just looking around

tool: D131: %d

tool: D43: UA

tool: D51: Adidas

tool: D102: Nike

tool: D55: CK

tool: D78: Reebok

tool: D82: Puma

tool: D107: Pull&Bear

tool: D164: Zara

tool: D6: Massimo

tool: D85: Channel

tool: D12: Hurry up and buy!

assistant: ```c
void ShoppingItems() {
  int choice = -1;
  puts("What would you like to buy:");
  puts("1 - shoes, 2 - T shirts, 3 - trousers, 4 - dresses, 5 - nothing, I am just looking around");
  scanf("%d", &choice);
  switch (choice) {
  case 1:
    DisplayOptions("Nike", "Adidas", "UA");
    break;
  case 2:
    DisplayOptions("Puma", "Reebok", "CK");
    break;
  case 3:
    DisplayOptions("Massimo", "Zara", "Pull&Bear");
    break;
  case 4:
    DisplayOptions("Zara", "Massimo", "Channel");
    break;
  case 5:
    puts("Hurry up and buy!");
    break;
  default:
    break;
  }
}
```