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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  movq   $0x0,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    $0xa,%esi
  mov    %rax,%rdi
  call   <insert@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <insert@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x14,%esi
  mov    %rax,%rdi
  call   <insert@plt>
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x8(%rbp),%rax
  mov    $0xa,%esi
  mov    %rax,%rdi
  call   <search@plt>
  mov    %eax,%esi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x3,%esi
  mov    %rax,%rdi
  call   <search@plt>
  mov    %eax,%esi
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <search@plt>
  mov    %eax,%esi
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x14,%esi
  mov    %rax,%rdi
  call   <search@plt>
  mov    %eax,%esi
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <delete@plt>
  mov    %rax,-0x8(%rbp)
  lea    D73(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x8(%rbp),%rax
  mov    $0xa,%esi
  mov    %rax,%rdi
  call   <search@plt>
  mov    %eax,%esi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x3,%esi
  mov    %rax,%rdi
  call   <search@plt>
  mov    %eax,%esi
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <search@plt>
  mov    %eax,%esi
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x14,%esi
  mov    %rax,%rdi
  call   <search@plt>
  mov    %eax,%esi
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D40
type_guessed: string
name: parse_data
arguments: tag: D24
type_guessed: string
name: parse_data
arguments: tag: D38
type_guessed: string
name: parse_data
arguments: tag: D93
type_guessed: string
name: parse_data
arguments: tag: D89
type_guessed: string
name: parse_data
arguments: tag: D73
type_guessed: string

tool: D40: insert done

tool: D24: find 10: %d


tool: D38: find 3: %d


tool: D93: find 1: %d


tool: D89: find 20: %d


tool: D73: delete done

assistant: ```c
int main() {
  struct node *root = NULL;
  root = insert(root, 10);
  insert(root, 1);
  insert(root, 20);
  printf("insert done\n");
  printf("find 10: %d\n", search(root, 10));
  printf("find 3: %d\n", search(root, 3));
  printf("find 1: %d\n", search(root, 1));
  printf("find 20: %d\n", search(root, 20));
  root = delete (root, 1);
  printf("delete done\n");
  printf("find 10: %d\n", search(root, 10));
  printf("find 3: %d\n", search(root, 3));
  printf("find 1: %d\n", search(root, 1));
  printf("find 20: %d\n", search(root, 20));
  return 0;
}
```