user: What would the C source look like for the assembly code provided here:

```asm
<maze_solve_helper>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%r12
  mov    %esi,%ebx
  mov    %edx,%ebp
  mov    %ecx,%r14d
  mov    %r8d,%r13d
  cmp    $0x28,%esi
  jne    L9
  cmp    $0x4f,%edx
  jne    L9
L182:
  movslq %ebx,%rbx
  lea    (%rbx,%rbx,8),%rax
  lea    (%rax,%rax,8),%rax
  add    %rax,%r12
  movslq %ebp,%rbp
  movb   $0x2e,(%r12,%rbp,1)
  mov    $0x1,%eax
L107:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L9:
  test   %ebx,%ebx
  je     L208
  lea    -0x1(%rbx),%esi
  cmp    %r14d,%esi
  jne    L78
  cmp    %r13d,%ebp
  jne    L78
L208:
  lea    -0x1(%rbp),%edx
  cmp    %r14d,%ebx
  setne  %r15b
  cmp    %edx,%r13d
  jne    L201
  test   %r15b,%r15b
  jne    L201
L165:
  lea    0x1(%rbx),%esi
  cmp    %esi,%r14d
  jne    L104
  cmp    %r13d,%ebp
  jne    L104
L112:
  lea    0x1(%rbp),%edx
  cmp    %edx,%r13d
  jne    L218
  mov    $0x0,%eax
  test   %r15b,%r15b
  je     L107
L218:
  movslq %ebx,%rax
  lea    (%rax,%rax,8),%rax
  lea    (%rax,%rax,8),%rsi
  add    %r12,%rsi
  movslq %edx,%rcx
  mov    $0x0,%eax
  cmpb   $0x23,(%rsi,%rcx,1)
  je     L107
  mov    %ebp,%r8d
  mov    %ebx,%ecx
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <maze_solve_helper>
  test   %eax,%eax
  jne    L182
  jmp    L107
L78:
  movslq %esi,%rax
  lea    (%rax,%rax,8),%rax
  lea    (%rax,%rax,8),%rax
  add    %r12,%rax
  movslq %ebp,%rdx
  cmpb   $0x23,(%rax,%rdx,1)
  je     L208
  mov    %ebp,%r8d
  mov    %ebx,%ecx
  mov    %ebp,%edx
  mov    %r12,%rdi
  call   <maze_solve_helper>
  test   %eax,%eax
  je     L208
  jmp    L182
L201:
  movslq %ebx,%rax
  lea    (%rax,%rax,8),%rax
  lea    (%rax,%rax,8),%rax
  add    %r12,%rax
  movslq %edx,%rcx
  cmpb   $0x23,(%rax,%rcx,1)
  je     L165
  mov    %ebp,%r8d
  mov    %ebx,%ecx
  mov    %ebx,%esi
  mov    %r12,%rdi
  call   <maze_solve_helper>
  test   %eax,%eax
  jne    L182
  jmp    L165
L104:
  movslq %esi,%rax
  lea    (%rax,%rax,8),%rax
  lea    (%rax,%rax,8),%rax
  add    %r12,%rax
  movslq %ebp,%rdx
  cmpb   $0x23,(%rax,%rdx,1)
  je     L112
  mov    %ebp,%r8d
  mov    %ebx,%ecx
  mov    %ebp,%edx
  mov    %r12,%rdi
  call   <maze_solve_helper>
  test   %eax,%eax
  jne    L182
  jmp    L112
```

assistant: ```c
int maze_solve_helper(char maze[41][81], int r, int c, int pr, int pc) {
  int res = 0, nr = 0, nc = 0;
  if (r == 40 && c == 79)
    goto success;
  if (r != 0) {
    nr = r - 1;
    nc = c;
    if (!(nr == pr && nc == pc) && maze[nr][nc] != '#')
      res = maze_solve_helper(maze, nr, nc, r, c);
    if (res)
      goto success;
  }
  nr = r;
  nc = c - 1;
  if (!(nr == pr && nc == pc) && maze[nr][nc] != '#')
    res = maze_solve_helper(maze, nr, nc, r, c);
  if (res)
    goto success;
  nr = r + 1;
  nc = c;
  if (!(nr == pr && nc == pc) && maze[nr][nc] != '#')
    res = maze_solve_helper(maze, nr, nc, r, c);
  if (res)
    goto success;
  nr = r;
  nc = c + 1;
  if (!(nr == pr && nc == pc) && maze[nr][nc] != '#')
    res = maze_solve_helper(maze, nr, nc, r, c);
  if (res)
    goto success;
  return 0;
success:
  maze[r][c] = '.';
  return 1;
}
```