user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<inputdeque2>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D18(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D83(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D55(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L13:
  lea    D76(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x5,%eax
  ja     L21
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D64(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D64(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x0,%eax
  call   <insertright2@plt>
  jmp    L77
  mov    $0x0,%eax
  call   <deleteleft2@plt>
  jmp    L77
  mov    $0x0,%eax
  call   <deleteright2@plt>
  jmp    L77
  mov    $0x0,%eax
  call   <display2@plt>
  jmp    L77
L21:
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L77
  nop
L77:
  mov    -0xc(%rbp),%eax
  cmp    $0x5,%eax
  jne    L13
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L49
  call   <__stack_chk_fail@plt>
L49:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D4
type_infered: string
name: extract_symbolic_data
arguments: tag: D18
type_infered: string
name: extract_symbolic_data
arguments: tag: D83
type_infered: string
name: extract_symbolic_data
arguments: tag: D51
type_infered: string
name: extract_symbolic_data
arguments: tag: D55
type_infered: string
name: extract_symbolic_data
arguments: tag: D48
type_infered: string
name: extract_symbolic_data
arguments: tag: D76
type_infered: string
name: extract_symbolic_data
arguments: tag: D81
type_infered: string
name: extract_symbolic_data
arguments: tag: D46
type_infered: string

tool: D4: 
									INPUT RESTRICTED DEQUE

tool: D18: 
									1.Insert at right

tool: D83: 
									2.Delete from left

tool: D51: 
									3.Delete from right

tool: D55: 
									4.Display

tool: D48: 
									5.Quit

tool: D76: 
									   Enter the option: 

tool: D81: %d

tool: D46: 
									OPTION DOESN'T EXIST TRY AGAIN

assistant: ```c
void inputdeque2() {
  printf("\n\t\t\t\t\t\t\t\t\tINPUT RESTRICTED DEQUE");
  printf("\n\t\t\t\t\t\t\t\t\t1.Insert at right");
  printf("\n\t\t\t\t\t\t\t\t\t2.Delete from left");
  printf("\n\t\t\t\t\t\t\t\t\t3.Delete from right");
  printf("\n\t\t\t\t\t\t\t\t\t4.Display");
  printf("\n\t\t\t\t\t\t\t\t\t5.Quit");
  int option;
  do {
    printf("\n\t\t\t\t\t\t\t\t\t   Enter the option: ");
    scanf("%d", &option);
    switch (option) {
    case 1:
      insertright2();
      break;
    case 2:
      deleteleft2();
      break;
    case 3:
      deleteright2();
      break;
    case 4:
      display2();
      break;
    case 5:
      break;
    default:
      printf("\n\t\t\t\t\t\t\t\t\tOPTION DOESN\'T EXIST TRY AGAIN");
    }
  } while (option != 5);
}
```