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

```asm
<printPath>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %edx,%ebp
  push   %rbx
  sub    $0x18,%rsp
  cmp    %esi,%edx
  je     L78
  movslq %edx,%rax
  mov    (%rdi,%rax,4),%r12d
  cmp    %esi,%r12d
  je     L49
  movslq %r12d,%rax
  mov    (%rdi,%rax,4),%r13d
  cmp    %r13d,%esi
  je     L67
  movslq %r13d,%rax
  mov    (%rdi,%rax,4),%r14d
  cmp    %r14d,%esi
  je     L51
  movslq %r14d,%rax
  mov    (%rdi,%rax,4),%r15d
  cmp    %r15d,%esi
  je     L176
  movslq %r15d,%rax
  mov    (%rdi,%rax,4),%r8d
  cmp    %r8d,%esi
  je     L26
  movslq %r8d,%rax
  mov    (%rdi,%rax,4),%r9d
  cmp    %r9d,%esi
  je     L43
  movslq %r9d,%rax
  mov    (%rdi,%rax,4),%r10d
  cmp    %r10d,%esi
  je     L132
  movslq %r10d,%rax
  mov    %r10d,0xc(%rsp)
  mov    (%rdi,%rax,4),%ebx
  mov    %r9d,0x8(%rsp)
  mov    %r8d,0x4(%rsp)
  cmp    %ebx,%esi
  je     L53
  movslq %ebx,%rax
  mov    (%rdi,%rax,4),%edx
  call   <printPath>
  mov    %ebx,%esi
  lea    D148(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%r10d
  mov    0x8(%rsp),%r9d
  mov    0x4(%rsp),%r8d
L31:
  mov    %r10d,%esi
  mov    %rbx,%rdi
  mov    %r9d,0x8(%rsp)
  mov    %r8d,0x4(%rsp)
  call   <printf@plt>
  mov    0x8(%rsp),%r9d
  mov    0x4(%rsp),%r8d
L69:
  mov    %r9d,%esi
  mov    %rbx,%rdi
  mov    %r8d,0x4(%rsp)
  call   <printf@plt>
  mov    0x4(%rsp),%r8d
L109:
  mov    %r8d,%esi
  mov    %rbx,%rdi
  call   <printf@plt>
L22:
  mov    %r15d,%esi
  mov    %rbx,%rdi
  call   <printf@plt>
L93:
  mov    %r14d,%esi
  mov    %rbx,%rdi
  call   <printf@plt>
L144:
  mov    %r13d,%esi
  mov    %rbx,%rdi
  call   <printf@plt>
L37:
  mov    %r12d,%esi
  mov    %rbx,%rdi
  call   <printf@plt>
L21:
  mov    %ebp,%esi
  mov    %rbx,%rdi
  jmp    L82
  cs nopw 0x0(%rax,%rax,1)
L78:
  mov    %edx,%esi
  lea    D1(%rip),%rdi
L82:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1050 <printf@plt>
  nopl   0x0(%rax)
L67:
  lea    D1(%rip),%rdi
  lea    D148(%rip),%rbx
  call   <printf@plt>
  jmp    L37
  nopl   (%rax)
L43:
  lea    D1(%rip),%rdi
  mov    %r8d,0x4(%rsp)
  lea    D148(%rip),%rbx
  call   <printf@plt>
  mov    0x4(%rsp),%r8d
  jmp    L109
  nopw   0x0(%rax,%rax,1)
L49:
  mov    %r12d,%esi
  lea    D1(%rip),%rdi
  lea    D148(%rip),%rbx
  call   <printf@plt>
  jmp    L21
  nopl   0x0(%rax,%rax,1)
L51:
  lea    D1(%rip),%rdi
  lea    D148(%rip),%rbx
  call   <printf@plt>
  jmp    L144
  nopl   0x0(%rax,%rax,1)
L176:
  lea    D1(%rip),%rdi
  lea    D148(%rip),%rbx
  call   <printf@plt>
  jmp    L93
  nopl   0x0(%rax,%rax,1)
L26:
  lea    D1(%rip),%rdi
  lea    D148(%rip),%rbx
  call   <printf@plt>
  jmp    L22
  nopl   0x0(%rax,%rax,1)
L132:
  lea    D1(%rip),%rdi
  mov    %r9d,0x8(%rsp)
  lea    D148(%rip),%rbx
  mov    %r8d,0x4(%rsp)
  call   <printf@plt>
  mov    0x4(%rsp),%r8d
  mov    0x8(%rsp),%r9d
  jmp    L69
  nopl   0x0(%rax)
L53:
  lea    D1(%rip),%rdi
  lea    D148(%rip),%rbx
  call   <printf@plt>
  mov    0x4(%rsp),%r8d
  mov    0x8(%rsp),%r9d
  mov    0xc(%rsp),%r10d
  jmp    L31
```

tool_calls: name: read_data
arguments: data_label: D148
type_infered: string
name: read_data
arguments: data_label: D1
type_infered: string

tool: D148: ->%d

tool: D1: %d

assistant: ```c
void printPath(int prev[6], int v0, int v) {
  if (v == v0) {
    printf("%d", v0);
    return;
  }
  printPath(prev, v0, prev[v]);
  printf("->%d", v);
}
```