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

```asm
<main>:
  endbr64
  push   %r14
  lea    D69(%rip),%rdi
  push   %r13
  lea    D93(%rip),%r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1b0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x1a8(%rsp)
  xor    %eax,%eax
  call   <puts@plt>
  lea    D4(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0xc(%rsp),%rsi
  mov    %r13,%rdi
  call   <scanf@plt>
  mov    0xc(%rsp),%eax
  test   %eax,%eax
  jle    L0
  lea    0x10(%rsp),%r12
  xor    %ebp,%ebp
  lea    D13(%rip),%r14
  xor    %ebx,%ebx
L57:
  add    $0x1,%ebx
  mov    %r14,%rdi
  xor    %eax,%eax
  mov    %ebx,%esi
  call   <printf@plt>
  mov    %r12,%rsi
  mov    %r13,%rdi
  add    $0x4,%r12
  call   <scanf@plt>
  mov    -0x4(%r12),%esi
  mov    %rbp,%rdi
  call   <insertN@plt>
  mov    %rax,%rbp
  cmp    0xc(%rsp),%ebx
  jl     L57
L18:
  lea    D50(%rip),%rdi
  call   <puts@plt>
  lea    D94(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x8(%rsp),%rsi
  mov    %r13,%rdi
  call   <scanf@plt>
  mov    0x8(%rsp),%esi
  mov    %rbp,%rdi
  call   <searchNode@plt>
  test   %rax,%rax
  je     L12
  lea    D28(%rip),%rdi
  call   <puts@plt>
L10:
  lea    D22(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <findMin@plt>
  mov    %rbp,%rdi
  mov    %eax,%r12d
  call   <findMax@plt>
  mov    %r12d,%esi
  lea    D53(%rip),%rdi
  mov    %eax,%edx
  xor    %eax,%eax
  call   <printf@plt>
  lea    D61(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <preOrderTraverse@plt>
  lea    D34(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <inOrderTraverse@plt>
  lea    D26(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <postOrderTraverse@plt>
  xor    %eax,%eax
  call   <getch@plt>
  mov    0x1a8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L4
  add    $0x1b0,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L12:
  lea    D79(%rip),%rdi
  call   <puts@plt>
  jmp    L10
L0:
  xor    %ebp,%ebp
  jmp    L18
L4:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D69
type_guessed: string
name: unpack_data
arguments: tag: D93
type_guessed: string
name: unpack_data
arguments: tag: D4
type_guessed: string
name: unpack_data
arguments: tag: D13
type_guessed: string
name: unpack_data
arguments: tag: D50
type_guessed: string
name: unpack_data
arguments: tag: D94
type_guessed: string
name: unpack_data
arguments: tag: D28
type_guessed: string
name: unpack_data
arguments: tag: D22
type_guessed: string
name: unpack_data
arguments: tag: D53
type_guessed: string
name: unpack_data
arguments: tag: D61
type_guessed: string
name: unpack_data
arguments: tag: D34
type_guessed: string
name: unpack_data
arguments: tag: D26
type_guessed: string
name: unpack_data
arguments: tag: D79
type_guessed: string

tool: D69: 
----- Creating the BST structure -----

tool: D93: %d

tool: D4: Number of BST nodes: 

tool: D13: Node %d: 

tool: D50: 
----- Searching -----

tool: D94: Lookup: 

tool: D28: Found!

tool: D22: 
----- Finding Max and Min -----

tool: D53: Min: %d
Max: %d


tool: D61: 
----- PreOrder Traverse -----

tool: D34: 
----- InOrder Traverse -----

tool: D26: 
----- PostOrder Traverse -----

tool: D79: Not found!

assistant: ```c
int main() {
  int i, toLook, nodes;
  int numbers[100];
  struct node *root = NULL;
  printf("\n----- Creating the BST structure -----\n");
  printf("Number of BST nodes: ");
  scanf("%d", &nodes);
  for (i = 0; i < nodes; i++) {
    printf("Node %d: ", i + 1);
    scanf("%d", &numbers[i]);
    root = insertN(root, numbers[i]);
  }
  printf("\n----- Searching -----\n");
  printf("Lookup: ");
  scanf("%d", &toLook);
  if (searchNode(root, toLook))
    printf("Found!\n");
  else
    printf("Not found!\n");
  printf("\n----- Finding Max and Min -----\n");
  int min = findMin(root);
  int max = findMax(root);
  printf("Min: %d\nMax: %d\n", min, max);
  printf("\n----- PreOrder Traverse -----\n");
  preOrderTraverse(root);
  printf("\n----- InOrder Traverse -----\n");
  inOrderTraverse(root);
  printf("\n----- PostOrder Traverse -----\n");
  postOrderTraverse(root);
  getch();
  return 0;
}
```