user: Converte this assembly snippet into its equivalent C code:

```asm
<menu>:
  endbr64
  push   %r13
  lea    D174(%rip),%r13
  push   %r12
  mov    %rdx,%r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  mov    %rdi,%rbx
  lea    D4(%rip),%rdi
  sub    $0x8,%rsp
  call   <printf@plt>
  lea    D98(%rip),%rdi
  call   <printf@plt>
  lea    D62(%rip),%rdi
  call   <printf@plt>
  lea    D92(%rip),%rdi
  call   <printf@plt>
  lea    D119(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %r13,%rdi
  call   <scanf@plt>
  mov    (%rbx),%eax
  lea    -0x2(%rax),%edx
  cmp    $0x1,%edx
  jbe    L14
L9:
  and    $0xfffffffd,%eax
  cmp    $0x1,%eax
  je     L13
L18:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  cs nopw 0x0(%rax,%rax,1)
L13:
  lea    D131(%rip),%rdi
  call   <printf@plt>
  lea    D32(%rip),%rdi
  call   <printf@plt>
  lea    D129(%rip),%rdi
  call   <printf@plt>
  lea    D175(%rip),%rdi
  call   <printf@plt>
  lea    D41(%rip),%rdi
  call   <printf@plt>
  lea    D118(%rip),%rdi
  call   <printf@plt>
  lea    D34(%rip),%rdi
  call   <printf@plt>
  lea    D48(%rip),%rdi
  call   <printf@plt>
  lea    D88(%rip),%rdi
  call   <printf@plt>
  cmpl   $0x3,(%rbx)
  jne    L18
  lea    D10(%rip),%rdi
  call   <printf@plt>
  lea    D178(%rip),%rdi
  call   <printf@plt>
  lea    D107(%rip),%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  mov    %r12,%rsi
  mov    %r13,%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1070 <scanf@plt>
  xchg   %ax,%ax
L14:
  lea    D210(%rip),%rdi
  call   <printf@plt>
  lea    D213(%rip),%rdi
  call   <printf@plt>
  lea    D87(%rip),%rdi
  call   <printf@plt>
  lea    D214(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rsi
  mov    %r13,%rdi
  call   <scanf@plt>
  mov    (%rbx),%eax
  jmp    L9
```

tool_calls: name: unpack_data
arguments: data_label: D174
datatype: string
name: unpack_data
arguments: data_label: D4
datatype: string
name: unpack_data
arguments: data_label: D98
datatype: string
name: unpack_data
arguments: data_label: D62
datatype: string
name: unpack_data
arguments: data_label: D92
datatype: string
name: unpack_data
arguments: data_label: D119
datatype: string
name: unpack_data
arguments: data_label: D131
datatype: string
name: unpack_data
arguments: data_label: D32
datatype: string
name: unpack_data
arguments: data_label: D129
datatype: string
name: unpack_data
arguments: data_label: D175
datatype: string
name: unpack_data
arguments: data_label: D41
datatype: string
name: unpack_data
arguments: data_label: D118
datatype: string
name: unpack_data
arguments: data_label: D34
datatype: string
name: unpack_data
arguments: data_label: D48
datatype: string
name: unpack_data
arguments: data_label: D88
datatype: string
name: unpack_data
arguments: data_label: D10
datatype: string
name: unpack_data
arguments: data_label: D178
datatype: string
name: unpack_data
arguments: data_label: D107
datatype: string
name: unpack_data
arguments: data_label: D210
datatype: string
name: unpack_data
arguments: data_label: D213
datatype: string
name: unpack_data
arguments: data_label: D87
datatype: string
name: unpack_data
arguments: data_label: D214
datatype: string

tool: D174: %d

tool: D4: 
-Ha tres modalidades disponiveis: 


tool: D98: Pressione:

tool: D62: 
'1' se voce deseja um jogo para dois humanos.

tool: D92: 
'2' se voce deseja ver uma partida simulada.

tool: D119: 
'3' se voce deseja jogar contra a maquina.


tool: D131: 

O usuario devera escolher em qual 'casa' ele jogara!

tool: D32: 
-Exemplo de tabuleiro:


tool: D129: 
 0 | 1 | 2

tool: D175: 
---+---+---

tool: D41: 
 3 | 4 | 5

tool: D118: 
 ---+---+---

tool: D34: 
 6 | 7 | 8


tool: D48: 
Os numeros representam as opcoes de 'casas' para a execucao da jogada!



tool: D88: 
SE O JOGADOR PRESSIONAR UM NUMERO DE UMA CASA JA OCUPADA, PERDERA A VEZ!!


tool: D10: 
-Quem fara o primeiro movimento?


tool: D178: 
Pressione
'1' para humano ou


tool: D107: '2' para computador:


tool: D210: 
-Por favor, informe em qual dificuldade voce deseja o desafio:

tool: D213: 
'4' - Nivel facil

tool: D87: 
'5' - Nivel medio

tool: D214: 
'6' - Nivel dificil


assistant: ```c
void menu(int *mododejogo, int *dificuldade, int *quemcomeca) {
  printf("\n-Ha tres modalidades disponiveis: \n");
  printf("Pressione:");
  printf("\n'1' se voce deseja um jogo para dois humanos.");
  printf("\n'2' se voce deseja ver uma partida simulada.");
  printf("\n'3' se voce deseja jogar contra a maquina.\n");
  scanf("%d", &*mododejogo);
  if (*mododejogo == 2 || *mododejogo == 3) {
    printf("\n-Por favor, informe em qual dificuldade voce deseja o desafio:");
    printf("\n'4' - Nivel facil");
    printf("\n'5' - Nivel medio");
    printf("\n'6' - Nivel dificil\n");
    scanf("%d", &*dificuldade);
  }
  if (*mododejogo == 1 || *mododejogo == 3) {
    printf("\n\nO usuario devera escolher em qual 'casa' ele jogara!");
    printf("\n-Exemplo de tabuleiro:\n");
    printf("\n 0 | 1 | 2");
    printf("\n---+---+---");
    printf("\n 3 | 4 | 5");
    printf("\n ---+---+---");
    printf("\n 6 | 7 | 8\n");
    printf("\nOs numeros representam as opcoes de 'casas' para a execucao da jogada!\n\n");
    printf("\nSE O JOGADOR PRESSIONAR UM NUMERO DE UMA CASA JA OCUPADA, PERDERA A VEZ!!\n");
  }
  if (*mododejogo == 3) {
    printf("\n-Quem fara o primeiro movimento?\n");
    printf("\nPressione\n'1' para humano ou\n");
    printf("'2' para computador:\n");
    scanf("%d", &*quemcomeca);
  }
}
```