user: What is the c source code of the assembly code below:

```asm
<paths_aux>:
  endbr64
  push   %r15
  push   %r14
  mov    %rdx,%r14
  push   %r13
  mov    %rcx,%r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xd8,%rsp
  cmp    %rdx,%rdi
  sete   0xc7(%rsp)
  movzbl 0xc7(%rsp),%eax
  mov    %rdi,0xb0(%rsp)
  mov    %rsi,0x68(%rsp)
  cmp    %rcx,%rsi
  jne    L113
  test   %al,%al
  jne    L552
L113:
  mov    0xb0(%rsp),%rax
  movq   $0x0,0xc8(%rsp)
  lea    0x1(%rax),%rcx
  lea    0x2(%rax),%rdi
  lea    0x3(%rax),%rdx
  mov    %rcx,0xa0(%rsp)
  lea    0x4(%rax),%rcx
  mov    %rdi,0x70(%rsp)
  lea    0x5(%rax),%rdi
  lea    0x7(%rax),%r15
  mov    %rdx,0x50(%rsp)
  lea    0x6(%rax),%rdx
  mov    %rcx,0x38(%rsp)
  lea    0x8(%rax),%rcx
  add    $0x9,%rax
  mov    %rdi,0x18(%rsp)
  mov    %rdx,(%rsp)
  mov    %rcx,0x10(%rsp)
  mov    %rax,0x28(%rsp)
  mov    %r13,%rax
  mov    %r15,%r13
  mov    %r14,%r15
  mov    %rax,%r14
L131:
  cmp    %r15,0xb0(%rsp)
  jb     L798
  mov    0x68(%rsp),%rax
  cmp    %rax,%r14
  jbe    L633
  add    $0x1,%rax
  mov    %rax,0x68(%rsp)
  cmp    %r14,%rax
  jne    L131
  cmpb   $0x0,0xc7(%rsp)
  je     L131
  addq   $0x1,0xc8(%rsp)
L633:
  mov    0xc8(%rsp),%rax
  add    $0xd8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L798:
  cmp    %r15,0xa0(%rsp)
  sete   0xc6(%rsp)
  movzbl 0xc6(%rsp),%eax
  cmp    0x68(%rsp),%r14
  jne    L92
  test   %al,%al
  jne    L141
L92:
  mov    0x68(%rsp),%rax
  movq   $0x0,0xb8(%rsp)
  mov    %rax,0x48(%rsp)
  mov    %r14,%rax
  mov    %r13,%r14
  mov    %rax,%r13
L684:
  cmp    %r15,0xa0(%rsp)
  jb     L316
  mov    0x48(%rsp),%rax
  cmp    %rax,%r13
  jbe    L793
  add    $0x1,%rax
  mov    %rax,0x48(%rsp)
  cmp    %rax,%r13
  jne    L684
  cmpb   $0x0,0xc6(%rsp)
  je     L684
  addq   $0x1,0xb8(%rsp)
  mov    %r13,%rax
  mov    %r14,%r13
  mov    %rax,%r14
L795:
  mov    0xb8(%rsp),%rdx
  add    %rdx,0xc8(%rsp)
  cmp    0x68(%rsp),%r14
  jbe    L633
  addq   $0x1,0x68(%rsp)
  jmp    L131
  cs nopw 0x0(%rax,%rax,1)
L316:
  cmp    0x70(%rsp),%r15
  sete   0xc5(%rsp)
  movzbl 0xc5(%rsp),%eax
  cmp    0x48(%rsp),%r13
  jne    L145
  test   %al,%al
  jne    L706
L145:
  mov    0x48(%rsp),%rax
  movq   $0x0,0xa8(%rsp)
  mov    %rax,0x30(%rsp)
  mov    %r13,%rax
  mov    %r14,%r13
  mov    %rax,%r14
L157:
  cmp    0x70(%rsp),%r15
  ja     L18
  mov    0x30(%rsp),%rax
  cmp    %rax,%r14
  jbe    L484
  add    $0x1,%rax
  mov    %rax,0x30(%rsp)
  cmp    %rax,%r14
  jne    L157
  cmpb   $0x0,0xc5(%rsp)
  je     L157
  addq   $0x1,0xa8(%rsp)
  mov    %r14,%rax
  mov    %r13,%r14
  mov    %rax,%r13
L892:
  mov    0xa8(%rsp),%rsi
  add    %rsi,0xb8(%rsp)
  cmp    0x48(%rsp),%r13
  jbe    L793
  addq   $0x1,0x48(%rsp)
  jmp    L684
  nopl   0x0(%rax,%rax,1)
L18:
  cmp    0x50(%rsp),%r15
  sete   0xc4(%rsp)
  movzbl 0xc4(%rsp),%eax
  cmp    0x30(%rsp),%r14
  jne    L720
  test   %al,%al
  jne    L585
L720:
  movq   $0x0,0x78(%rsp)
  mov    0x30(%rsp),%rax
  mov    %rax,0x8(%rsp)
  mov    %r14,%rax
  mov    %r15,%r14
  mov    %r13,%r15
  mov    %rax,%r13
L517:
  cmp    0x50(%rsp),%r14
  ja     L662
  mov    0x8(%rsp),%rax
  cmp    %rax,%r13
  jbe    L759
  add    $0x1,%rax
  mov    %rax,0x8(%rsp)
  cmp    %rax,%r13
  jne    L517
  cmpb   $0x0,0xc4(%rsp)
  je     L517
  addq   $0x1,0x78(%rsp)
  mov    %r13,%rax
  mov    %r15,%r13
  mov    %r14,%r15
  mov    %rax,%r14
L515:
  mov    0x78(%rsp),%rdi
  add    %rdi,0xa8(%rsp)
  cmp    0x30(%rsp),%r14
  jbe    L484
  addq   $0x1,0x30(%rsp)
  jmp    L157
  nopl   (%rax)
L662:
  cmp    0x38(%rsp),%r14
  sete   0xc3(%rsp)
  movzbl 0xc3(%rsp),%eax
  cmp    0x8(%rsp),%r13
  jne    L282
  test   %al,%al
  jne    L16
L282:
  mov    0x8(%rsp),%r12
  mov    %r15,%rax
  movq   $0x0,0x58(%rsp)
  mov    %r12,%r15
  mov    %rax,%r12
L432:
  cmp    0x38(%rsp),%r14
  ja     L335
  cmp    %r15,%r13
  jbe    L782
  add    $0x1,%r15
  cmp    %r15,%r13
  jne    L432
  cmpb   $0x0,0xc3(%rsp)
  je     L432
  addq   $0x1,0x58(%rsp)
  mov    %r12,%r15
L171:
  mov    0x58(%rsp),%rdi
  add    %rdi,0x78(%rsp)
  cmp    0x8(%rsp),%r13
  jbe    L759
  addq   $0x1,0x8(%rsp)
  jmp    L517
  nop
L335:
  cmp    0x18(%rsp),%r14
  sete   0xc2(%rsp)
  movzbl 0xc2(%rsp),%eax
  cmp    %r15,%r13
  jne    L447
  test   %al,%al
  jne    L746
L447:
  movq   $0x0,0x40(%rsp)
  mov    %r15,%rbp
  mov    %r15,0x80(%rsp)
L273:
  cmp    0x18(%rsp),%r14
  ja     L123
  cmp    %rbp,%r13
  jbe    L41
  add    $0x1,%rbp
  cmp    %rbp,%r13
  jne    L273
  cmpb   $0x0,0xc2(%rsp)
  je     L273
  addq   $0x1,0x40(%rsp)
  mov    0x80(%rsp),%r15
L227:
  mov    0x40(%rsp),%rcx
  add    %rcx,0x58(%rsp)
  cmp    %r15,%r13
  jbe    L782
L762:
  add    $0x1,%r15
  jmp    L432
  nopl   0x0(%rax,%rax,1)
L123:
  cmp    (%rsp),%r14
  sete   0xc1(%rsp)
  movzbl 0xc1(%rsp),%eax
  cmp    %rbp,%r13
  jne    L307
  test   %al,%al
  jne    L729
L307:
  movq   $0x0,0x20(%rsp)
  mov    %r12,%r15
  mov    %rbp,%r12
  mov    %rbp,0x60(%rsp)
L71:
  cmp    (%rsp),%r14
  ja     L598
  cmp    %r12,%r13
  jbe    L911
  add    $0x1,%r12
  cmp    %r12,%r13
  jne    L71
  cmpb   $0x0,0xc1(%rsp)
  je     L71
  addq   $0x1,0x20(%rsp)
  mov    0x60(%rsp),%rbp
  mov    %r15,%r12
L64:
  mov    0x20(%rsp),%rdx
  add    %rdx,0x40(%rsp)
  cmp    %rbp,%r13
  jbe    L41
L382:
  add    $0x1,%rbp
  jmp    L273
  nopl   0x0(%rax)
L598:
  cmp    %r15,%r14
  sete   0xc0(%rsp)
  movzbl 0xc0(%rsp),%eax
  cmp    %r12,%r13
  jne    L108
  test   %al,%al
  jne    L749
L108:
  xor    %ebp,%ebp
  mov    %r12,%rbx
  mov    %r15,%r8
  mov    %r12,%r10
  mov    %rbp,%r9
L719:
  cmp    %r8,%r14
  ja     L379
  cmp    %rbx,%r13
  jbe    L380
  add    $0x1,%rbx
  cmp    %rbx,%r13
  jne    L719
  cmpb   $0x0,0xc0(%rsp)
  je     L719
  mov    %r9,%rbp
  mov    %r8,%r15
  mov    %r10,%r12
  add    $0x1,%rbp
L913:
  add    %rbp,0x20(%rsp)
  cmp    %r12,%r13
  jbe    L911
L516:
  add    $0x1,%r12
  jmp    L71
  nop
L379:
  cmp    0x10(%rsp),%r14
  sete   %r15b
  cmp    %rbx,%r13
  jne    L330
  test   %r15b,%r15b
  jne    L362
L330:
  cmp    0x10(%rsp),%r14
  ja     L702
  mov    %rbx,%rax
L235:
  cmp    %rax,%r13
  jbe    L352
  add    $0x1,%rax
  cmp    %rax,%r13
  jne    L235
  test   %r15b,%r15b
  je     L235
  xor    %r12d,%r12d
L28:
  add    $0x1,%r12
L103:
  add    %r12,%r9
  cmp    %rbx,%r13
  jbe    L380
  add    $0x1,%rbx
  jmp    L719
  nopl   0x0(%rax)
L380:
  mov    %r10,%r12
  mov    %r9,%rbp
  mov    %r8,%r15
  add    %rbp,0x20(%rsp)
  cmp    %r12,%r13
  ja     L516
  nopl   0x0(%rax,%rax,1)
L911:
  mov    0x60(%rsp),%rbp
  mov    0x20(%rsp),%rdx
  mov    %r15,%r12
  add    %rdx,0x40(%rsp)
  cmp    %rbp,%r13
  ja     L382
  nopl   0x0(%rax,%rax,1)
L41:
  mov    0x80(%rsp),%r15
  mov    0x40(%rsp),%rcx
  add    %rcx,0x58(%rsp)
  cmp    %r15,%r13
  ja     L762
  nopl   0x0(%rax,%rax,1)
L782:
  mov    %r12,%r15
  jmp    L171
  nopl   0x0(%rax,%rax,1)
L352:
  xor    %r12d,%r12d
  jmp    L103
  nopl   0x0(%rax,%rax,1)
L702:
  mov    %r8,0x88(%rsp)
  xor    %r12d,%r12d
  mov    %r10,0x90(%rsp)
  mov    %r12,%rbp
  mov    %r14,%r12
  mov    %r9,%r14
  mov    %rbx,0x98(%rsp)
L33:
  mov    0x28(%rsp),%rdi
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    %rbx,%rsi
  call   <paths_aux>
  add    %rax,%rbp
  cmp    %rbx,%r13
  jbe    L82
  add    $0x1,%rbx
  cmp    %rbx,%r13
  jne    L33
  test   %r15b,%r15b
  je     L33
  mov    %r14,%r9
  mov    0x88(%rsp),%r8
  mov    %r12,%r14
  mov    0x90(%rsp),%r10
  mov    0x98(%rsp),%rbx
  mov    %rbp,%r12
  jmp    L28
  nopl   0x0(%rax,%rax,1)
L82:
  mov    %r14,%r9
  mov    0x88(%rsp),%r8
  mov    %r12,%r14
  mov    0x90(%rsp),%r10
  mov    0x98(%rsp),%rbx
  mov    %rbp,%r12
  jmp    L103
  xchg   %ax,%ax
L362:
  mov    $0x1,%r12d
  jmp    L103
  nopl   0x0(%rax,%rax,1)
L759:
  mov    %r13,%rax
  mov    %r15,%r13
  mov    %r14,%r15
  mov    %rax,%r14
  jmp    L515
  nopl   0x0(%rax)
L749:
  mov    $0x1,%ebp
  jmp    L913
  nopw   0x0(%rax,%rax,1)
L484:
  mov    %r14,%rax
  mov    %r13,%r14
  mov    %rax,%r13
  jmp    L892
  cs nopw 0x0(%rax,%rax,1)
L729:
  movq   $0x1,0x20(%rsp)
  jmp    L64
L793:
  mov    %r13,%rax
  mov    %r14,%r13
  mov    %rax,%r14
  jmp    L795
L746:
  movq   $0x1,0x40(%rsp)
  jmp    L227
L16:
  movq   $0x1,0x58(%rsp)
  jmp    L171
L585:
  movq   $0x1,0x78(%rsp)
  jmp    L515
L706:
  movq   $0x1,0xa8(%rsp)
  jmp    L892
L552:
  movq   $0x1,0xc8(%rsp)
  jmp    L633
L141:
  movq   $0x1,0xb8(%rsp)
  jmp    L795
```

assistant: ```c
unsigned long long paths_aux(size_t curr_x, size_t curr_y, size_t x, size_t y) {
  unsigned long long res = 0;
  if (curr_x == x && curr_y == y) {
    return 1;
  }
  if (curr_x < x) {
    res += paths_aux(curr_x + 1, curr_y, x, y);
  }
  if (curr_y < y) {
    res += paths_aux(curr_x, curr_y + 1, x, y);
  }
  return res;
}
```