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

```asm
<paths_aux>:
  endbr64
  push   %r15
  mov    %rdi,%r10
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xd8,%rsp
  cmp    %rdx,%rdi
  sete   0x8f(%rsp)
  movzbl 0x8f(%rsp),%eax
  mov    %rsi,0x50(%rsp)
  cmp    %rcx,%rsi
  jne    L804
  test   %al,%al
  jne    L164
L804:
  movq   $0x0,0x90(%rsp)
  lea    0x9(%r10),%rdi
L619:
  cmp    %rdx,%r10
  jb     L50
  mov    0x50(%rsp),%rax
  cmp    %rax,%rcx
  jbe    L733
  add    $0x1,%rax
  mov    %rax,0x50(%rsp)
  cmp    %rcx,%rax
  jne    L619
  cmpb   $0x0,0x8f(%rsp)
  je     L619
  addq   $0x1,0x90(%rsp)
L733:
  mov    0x90(%rsp),%rax
  add    $0xd8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L50:
  lea    0x1(%r10),%rax
  cmp    %rdx,%rax
  mov    %rax,0x78(%rsp)
  sete   0x8e(%rsp)
  movzbl 0x8e(%rsp),%eax
  cmp    0x50(%rsp),%rcx
  jne    L280
  test   %al,%al
  jne    L367
L280:
  mov    0x50(%rsp),%rax
  movq   $0x0,0x80(%rsp)
  mov    %rax,0x30(%rsp)
L111:
  cmp    %rdx,0x78(%rsp)
  jb     L38
  mov    0x30(%rsp),%rax
  cmp    %rax,%rcx
  jbe    L657
  add    $0x1,%rax
  mov    %rax,0x30(%rsp)
  cmp    %rax,%rcx
  jne    L111
  cmpb   $0x0,0x8e(%rsp)
  je     L111
  addq   $0x1,0x80(%rsp)
L657:
  mov    0x80(%rsp),%rsi
  add    %rsi,0x90(%rsp)
  cmp    0x50(%rsp),%rcx
  jbe    L733
  addq   $0x1,0x50(%rsp)
  jmp    L619
  nopl   0x0(%rax)
L38:
  lea    0x2(%r10),%rax
  cmp    %rax,%rdx
  mov    %rax,0x60(%rsp)
  sete   0x8d(%rsp)
  movzbl 0x8d(%rsp),%eax
  cmp    0x30(%rsp),%rcx
  jne    L811
  test   %al,%al
  jne    L386
L811:
  mov    0x30(%rsp),%rax
  mov    %r10,%r11
  movq   $0x0,0x70(%rsp)
  mov    %rax,0x18(%rsp)
L759:
  cmp    0x60(%rsp),%rdx
  ja     L658
  mov    0x18(%rsp),%rax
  cmp    %rax,%rcx
  jbe    L226
  add    $0x1,%rax
  mov    %rax,0x18(%rsp)
  cmp    %rax,%rcx
  jne    L759
  cmpb   $0x0,0x8d(%rsp)
  je     L759
  addq   $0x1,0x70(%rsp)
  mov    %r11,%r10
L431:
  mov    0x70(%rsp),%rsi
  add    %rsi,0x80(%rsp)
  cmp    0x30(%rsp),%rcx
  jbe    L657
  addq   $0x1,0x30(%rsp)
  jmp    L111
  nopw   0x0(%rax,%rax,1)
L658:
  lea    0x3(%r11),%rax
  cmp    %rax,%rdx
  mov    %rax,0x40(%rsp)
  sete   0x8c(%rsp)
  movzbl 0x8c(%rsp),%eax
  cmp    0x18(%rsp),%rcx
  jne    L282
  test   %al,%al
  jne    L187
L282:
  movq   $0x0,0x58(%rsp)
  mov    0x18(%rsp),%rax
  mov    %rax,(%rsp)
L410:
  cmp    0x40(%rsp),%rdx
  ja     L618
  mov    (%rsp),%rax
  cmp    %rax,%rcx
  jbe    L147
  add    $0x1,%rax
  mov    %rax,(%rsp)
  cmp    %rax,%rcx
  jne    L410
  cmpb   $0x0,0x8c(%rsp)
  je     L410
  addq   $0x1,0x58(%rsp)
L147:
  mov    0x58(%rsp),%rsi
  add    %rsi,0x70(%rsp)
  cmp    0x18(%rsp),%rcx
  jbe    L226
  addq   $0x1,0x18(%rsp)
  jmp    L759
  nopw   0x0(%rax,%rax,1)
L618:
  lea    0x4(%r11),%rax
  cmp    %rax,%rdx
  mov    %rax,0x28(%rsp)
  sete   0x8b(%rsp)
  movzbl 0x8b(%rsp),%eax
  cmp    (%rsp),%rcx
  jne    L737
  test   %al,%al
  jne    L558
L737:
  movq   $0x0,0x38(%rsp)
  mov    (%rsp),%r10
  mov    %r11,%rax
  mov    %r10,%r11
  mov    %rax,%r10
L369:
  cmp    0x28(%rsp),%rdx
  ja     L826
  cmp    %r11,%rcx
  jbe    L198
  add    $0x1,%r11
  cmp    %r11,%rcx
  jne    L369
  cmpb   $0x0,0x8b(%rsp)
  je     L369
  addq   $0x1,0x38(%rsp)
  mov    %r10,%r11
L740:
  mov    0x38(%rsp),%rsi
  add    %rsi,0x58(%rsp)
  cmp    (%rsp),%rcx
  jbe    L147
  addq   $0x1,(%rsp)
  jmp    L410
  nopw   0x0(%rax,%rax,1)
L826:
  lea    0x5(%r10),%rax
  cmp    %rax,%rdx
  mov    %rax,0x10(%rsp)
  sete   0x8a(%rsp)
  movzbl 0x8a(%rsp),%eax
  cmp    %r11,%rcx
  jne    L170
  test   %al,%al
  jne    L825
L170:
  movq   $0x0,0x20(%rsp)
  mov    %r11,%r9
  mov    %r11,0x68(%rsp)
  mov    %r10,%r11
L778:
  cmp    0x10(%rsp),%rdx
  ja     L495
  cmp    %r9,%rcx
  jbe    L833
  add    $0x1,%r9
  cmp    %r9,%rcx
  jne    L778
  cmpb   $0x0,0x8a(%rsp)
  je     L778
  addq   $0x1,0x20(%rsp)
  mov    %r11,%r10
  mov    0x68(%rsp),%r11
L636:
  mov    0x20(%rsp),%rsi
  add    %rsi,0x38(%rsp)
  cmp    %r11,%rcx
  jbe    L198
L473:
  add    $0x1,%r11
  jmp    L369
  nopw   0x0(%rax,%rax,1)
L495:
  lea    0x6(%r11),%r8
  cmp    %r8,%rdx
  sete   0x89(%rsp)
  movzbl 0x89(%rsp),%eax
  cmp    %r9,%rcx
  jne    L395
  test   %al,%al
  jne    L134
L395:
  movq   $0x0,0x8(%rsp)
  mov    %r9,%r12
  lea    0x7(%r11),%r10
  mov    %r9,0x48(%rsp)
L313:
  cmp    %r8,%rdx
  ja     L477
  cmp    %r12,%rcx
  jbe    L76
  add    $0x1,%r12
  cmp    %r12,%rcx
  jne    L313
  cmpb   $0x0,0x89(%rsp)
  je     L313
  addq   $0x1,0x8(%rsp)
  mov    0x48(%rsp),%r9
L747:
  mov    0x8(%rsp),%rsi
  add    %rsi,0x20(%rsp)
  cmp    %r9,%rcx
  jbe    L833
L444:
  add    $0x1,%r9
  jmp    L778
  nopl   0x0(%rax)
L477:
  cmp    %r10,%rdx
  sete   0x88(%rsp)
  movzbl 0x88(%rsp),%eax
  cmp    %r12,%rcx
  jne    L340
  test   %al,%al
  jne    L526
L340:
  mov    %r12,%rbp
  xor    %r9d,%r9d
  lea    0x8(%r11),%r13
L666:
  cmp    %r10,%rdx
  ja     L89
  cmp    %rbp,%rcx
  jbe    L568
  add    $0x1,%rbp
  cmp    %rbp,%rcx
  jne    L666
  cmpb   $0x0,0x88(%rsp)
  je     L666
  add    $0x1,%r9
L568:
  add    %r9,0x8(%rsp)
  cmp    %r12,%rcx
  jbe    L76
  add    $0x1,%r12
  jmp    L313
  cs nopw 0x0(%rax,%rax,1)
L89:
  cmp    %r13,%rdx
  sete   %r14b
  cmp    %rbp,%rcx
  jne    L204
  test   %r14b,%r14b
  jne    L708
L204:
  mov    %rbp,%rbx
  xor    %r15d,%r15d
L253:
  cmp    %r13,%rdx
  ja     L517
  cmp    %rbx,%rcx
  jbe    L679
  add    $0x1,%rbx
  cmp    %rbx,%rcx
  jne    L253
  test   %r14b,%r14b
  je     L253
  add    $0x1,%r15
L679:
  add    %r15,%r9
  cmp    %rbp,%rcx
  jbe    L568
  add    $0x1,%rbp
  jmp    L666
  nopl   0x0(%rax)
L76:
  mov    0x48(%rsp),%r9
  mov    0x8(%rsp),%rsi
  add    %rsi,0x20(%rsp)
  cmp    %r9,%rcx
  ja     L444
  nopl   0x0(%rax,%rax,1)
L833:
  mov    %r11,%r10
  mov    0x68(%rsp),%r11
  mov    0x20(%rsp),%rsi
  add    %rsi,0x38(%rsp)
  cmp    %r11,%rcx
  ja     L473
  nopl   0x0(%rax,%rax,1)
L198:
  mov    %r10,%r11
  jmp    L740
  nopl   0x0(%rax,%rax,1)
L708:
  mov    $0x1,%r15d
  jmp    L679
  nopl   0x0(%rax,%rax,1)
L526:
  mov    $0x1,%r9d
  jmp    L568
  nopl   0x0(%rax,%rax,1)
L226:
  mov    %r11,%r10
  jmp    L431
  nopl   0x0(%rax,%rax,1)
L517:
  mov    %rbx,%rsi
  mov    %r10,0xc8(%rsp)
  mov    %r11,0xc0(%rsp)
  mov    %r9,0xb8(%rsp)
  mov    %r8,0xb0(%rsp)
  mov    %rcx,0xa8(%rsp)
  mov    %rdx,0xa0(%rsp)
  mov    %rdi,0x98(%rsp)
  call   <paths_aux>
  mov    0xa8(%rsp),%rcx
  mov    0x98(%rsp),%rdi
  add    %rax,%r15
  mov    0xa0(%rsp),%rdx
  mov    0xb0(%rsp),%r8
  cmp    %rbx,%rcx
  mov    0xb8(%rsp),%r9
  mov    0xc0(%rsp),%r11
  mov    0xc8(%rsp),%r10
  jbe    L679
  add    $0x1,%rbx
  jmp    L253
  nopl   (%rax)
L134:
  movq   $0x1,0x8(%rsp)
  jmp    L747
L825:
  movq   $0x1,0x20(%rsp)
  jmp    L636
L558:
  movq   $0x1,0x38(%rsp)
  jmp    L740
L187:
  movq   $0x1,0x58(%rsp)
  jmp    L147
L386:
  movq   $0x1,0x70(%rsp)
  jmp    L431
L164:
  movq   $0x1,0x90(%rsp)
  jmp    L733
L367:
  movq   $0x1,0x80(%rsp)
  jmp    L657
```

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;
}
```