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

```asm
<menu>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  cmpl   $0x6,-0x4(%rbp)
  ja     L56
  mov    -0x4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D139(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D139(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D108(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D73(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D95(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L56
  lea    D85(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L56
  lea    D104(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L56
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L56
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L56
  lea    D88(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L56
  lea    D148(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
L56:
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D89
datatype: string
name: disassemble_data
arguments: data_label: D4
datatype: string
name: disassemble_data
arguments: data_label: D100
datatype: string
name: disassemble_data
arguments: data_label: D108
datatype: string
name: disassemble_data
arguments: data_label: D93
datatype: string
name: disassemble_data
arguments: data_label: D73
datatype: string
name: disassemble_data
arguments: data_label: D13
datatype: string
name: disassemble_data
arguments: data_label: D95
datatype: string
name: disassemble_data
arguments: data_label: D85
datatype: string
name: disassemble_data
arguments: data_label: D104
datatype: string
name: disassemble_data
arguments: data_label: D22
datatype: string
name: disassemble_data
arguments: data_label: D42
datatype: string
name: disassemble_data
arguments: data_label: D88
datatype: string
name: disassemble_data
arguments: data_label: D148
datatype: string

tool: D89: avaliable commands:


tool: D4: 0) Choose file


tool: D100: 1) Search


tool: D108: 2) Print


tool: D93: 3) Add


tool: D73: 4) Remove


tool: D13: 5) Show stats


tool: D95: 6) Exit


tool: D85: Enter string to search


tool: D104: Enter interval borders


tool: D22: Enter string to add and position where it will be added


tool: D42: Enter starting position and amount of symbols to delete


tool: D88: Enter filename


tool: D148: wrong option


assistant: ```c
void menu(const int blurp) {
  switch (blurp) {
  case 0: {
    printf("avaliable commands:\n");
    printf("0) Choose file\n");
    printf("1) Search\n");
    printf("2) Print\n");
    printf("3) Add\n");
    printf("4) Remove\n");
    printf("5) Show stats\n");
    printf("6) Exit\n");
    break;
  }
  case 1: {
    printf("Enter string to search\n");
    break;
  }
  case 2: {
    printf("Enter interval borders\n");
    break;
  }
  case 3: {
    printf("Enter string to add and position where it will be added\n");
    break;
  }
  case 4: {
    printf("Enter starting position and amount of symbols to delete\n");
    break;
  }
  case 5: {
    printf("Enter filename\n");
    break;
  }
  case 6: {
    printf("wrong option\n");
    break;
  }
  }
}
```