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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x1,-0x10(%rbp)
  jmp    L87
L38:
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D121(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D124(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0x5,%eax
  ja     L49
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D108(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D108(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D151(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <Enqueue@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%esi
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L87
  mov    $0x0,%eax
  call   <is_empty@plt>
  test   %eax,%eax
  jne    L108
  mov    $0x0,%eax
  call   <Dequeue@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D148(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L87
L108:
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L87
  mov    $0x0,%eax
  call   <is_empty@plt>
  test   %eax,%eax
  jne    L87
  mov    $0x0,%eax
  call   <Front@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D107(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L87
  mov    $0x0,%eax
  call   <Display@plt>
  jmp    L87
  movl   $0x0,-0x10(%rbp)
  jmp    L87
L49:
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L87:
  cmpl   $0x0,-0x10(%rbp)
  jne    L38
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L80
  call   <__stack_chk_fail@plt>
L80:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D56
type_guessed: string
name: parse_data
arguments: label: D68
type_guessed: string
name: parse_data
arguments: label: D34
type_guessed: string
name: parse_data
arguments: label: D26
type_guessed: string
name: parse_data
arguments: label: D11
type_guessed: string
name: parse_data
arguments: label: D121
type_guessed: string
name: parse_data
arguments: label: D124
type_guessed: string
name: parse_data
arguments: label: D188
type_guessed: string
name: parse_data
arguments: label: D30
type_guessed: string
name: parse_data
arguments: label: D151
type_guessed: string
name: parse_data
arguments: label: D13
type_guessed: string
name: parse_data
arguments: label: D148
type_guessed: string
name: parse_data
arguments: label: D93
type_guessed: string
name: parse_data
arguments: label: D107
type_guessed: string
name: parse_data
arguments: label: D72
type_guessed: string

tool: D56: 

Queue Operations

tool: D68: 
----------------

tool: D34: 
1. Enqueue

tool: D26: 
2. Dequeue

tool: D11: 
3. Front

tool: D121: 
4. Display

tool: D124: 
5. Exit

tool: D188: 
Enter your choice: 

tool: D30: %d

tool: D151: 
Enter the element to be enqueued: 

tool: D13: 
Enqueued element: %d

tool: D148: 
Dequeued element: %d

tool: D93: 
Error: Queue is empty

tool: D107: 
Front element: %d

tool: D72: 
Invalid Choice

assistant: ```c
void main() {
  int choice, element, flag = 1, temp;
  while (flag) {
    printf("\n\nQueue Operations");
    printf("\n----------------");
    printf("\n1. Enqueue");
    printf("\n2. Dequeue");
    printf("\n3. Front");
    printf("\n4. Display");
    printf("\n5. Exit");
    printf("\n----------------");
    printf("\nEnter your choice: ");
    scanf("%d", &choice);
    switch (choice) {
    case 1:
      printf("\nEnter the element to be enqueued: ");
      scanf("%d", &element);
      Enqueue(element);
      printf("\nEnqueued element: %d", element);
      break;
    case 2:
      if (!is_empty()) {
        temp = Dequeue();
        printf("\nDequeued element: %d", temp);
      } else {
        printf("\nError: Queue is empty");
      }
      break;
    case 3:
      if (!is_empty()) {
        temp = Front();
        printf("\nFront element: %d", temp);
      }
      break;
    case 4:
      Display();
      break;
    case 5:
      flag = 0;
      break;
    default:
      printf("\nInvalid Choice");
    }
  }
}
```