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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  movl   $0x5,-0x8(%rbp)
  movl   $0x5,-0x4(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%esi
  lea    D134(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  subl   $0x1,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%esi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  subl   $0x1,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%esi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%esi
  lea    D134(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D55(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L19
L35:
  mov    -0x8(%rbp),%eax
  mov    %eax,%esi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  subl   $0x1,-0x8(%rbp)
L19:
  cmpl   $0x0,-0x8(%rbp)
  jns    L35
  mov    -0x8(%rbp),%eax
  mov    %eax,%esi
  lea    D134(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%esi
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%esi
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L14
L20:
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  subl   $0x1,-0x4(%rbp)
L14:
  cmpl   $0x0,-0x4(%rbp)
  jns    L20
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D134
datatype: string
name: unpack_data
arguments: data_tag: D32
datatype: string
name: unpack_data
arguments: data_tag: D55
datatype: string
name: unpack_data
arguments: data_tag: D26
datatype: string
name: unpack_data
arguments: data_tag: D78
datatype: string
name: unpack_data
arguments: data_tag: D47
datatype: string
name: unpack_data
arguments: data_tag: D113
datatype: string
name: unpack_data
arguments: data_tag: D82
datatype: string

tool: D134: x = [%d]


tool: D32: --x = [%d]


tool: D55: for loop, while x >= 0 (--x):

tool: D26: 	x = [%d]


tool: D78: y = [%d]


tool: D47: y-- = [%d]


tool: D113: for loop, while y >= 0 (y--):

tool: D82: 	y = [%d]


assistant: ```c
int main() {
  int x = 5;
  int y = 5;
  printf("x = [%d]\n", x);
  printf("--x = [%d]\n", --x);
  printf("--x = [%d]\n", --x);
  printf("x = [%d]\n", x);
  printf("for loop, while x >= 0 (--x):\n");
  for (; x >= 0; --x) {
    printf("\tx = [%d]\n", x);
  }
  printf("x = [%d]\n", x);
  printf("y = [%d]\n", y);
  printf("y-- = [%d]\n", y--);
  printf("y-- = [%d]\n", y--);
  printf("y = [%d]\n", y);
  printf("for loop, while y >= 0 (y--):\n");
  for (; y >= 0; y--) {
    printf("\ty = [%d]\n", y);
  }
  printf("y = [%d]\n", y);
  return 0;
}
```