user: 请将以下的汇编代码转换成C语言代码:

```asm
<make_path>:
  endbr64
  push   %r15
  mov    $0xffffffff,%edx
  push   %r14
  push   %r13
  lea    (%rsi,%rsi,4),%r13
  push   %r12
  lea    (%rdi,%rdi,4),%r12
  shl    $0x2,%r13
  push   %rbp
  mov    %rdi,%rbp
  shl    $0x2,%r12
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x18,%rsp
  call   <chk_extend_path_h@plt>
  mov    $0x1,%edx
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  mov    %rax,%r15
  call   <chk_extend_path_h@plt>
  mov    $0x10,%edi
  add    %r13,%r15
  mov    %rax,%r14
  call   <randm@plt>
  mov    %r15,%rcx
  mov    %r15,%rsi
  mov    %r12,%rdi
  lea    0x1(%rax),%r9d
  mov    $0x48,%r8d
  add    %r13,%r14
  movslq %r9d,%r9
  add    %r12,%r9
  mov    %r9,%rdx
  mov    %r9,(%rsp)
  call   <line_path@plt>
  mov    (%rsp),%r9
  mov    %r14,%rcx
  mov    %r15,%rsi
  mov    $0x48,%r8d
  mov    %r9,%rdx
  mov    %r9,%rdi
  call   <line_path@plt>
  lea    0x11(%r12),%rax
  mov    %r14,%rsi
  mov    %r14,%rcx
  mov    (%rsp),%rdi
  mov    $0x48,%r8d
  mov    %rax,%rdx
  mov    %rax,0x8(%rsp)
  call   <line_path@plt>
  lea    -0x1(%rbp),%rdi
  mov    %rbx,%rsi
  call   <chk_room@plt>
  test   %rax,%rax
  jne    L13
L60:
  lea    0x1(%rbp),%rdi
  mov    %rbx,%rsi
  call   <chk_room@plt>
  test   %rax,%rax
  jne    L54
L1:
  mov    $0xffffffff,%edx
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <chk_extend_path_v@plt>
  mov    $0x1,%edx
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  mov    %rax,%r15
  call   <chk_extend_path_v@plt>
  mov    $0x10,%edi
  add    %r12,%r15
  mov    %rax,%r14
  call   <randm@plt>
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    %r15,%rdi
  lea    0x1(%rax),%r9d
  mov    $0x56,%r8d
  add    %r12,%r14
  movslq %r9d,%r9
  add    %r13,%r9
  mov    %r9,%rcx
  mov    %r9,(%rsp)
  call   <line_path@plt>
  mov    (%rsp),%r9
  mov    %r14,%rdx
  mov    %r15,%rdi
  mov    $0x56,%r8d
  mov    %r9,%rcx
  mov    %r9,%rsi
  call   <line_path@plt>
  lea    0x11(%r13),%rax
  mov    (%rsp),%rsi
  mov    %r14,%rdi
  mov    $0x56,%r8d
  mov    %rax,%rcx
  mov    %r14,%rdx
  mov    %rax,0x8(%rsp)
  call   <line_path@plt>
  lea    -0x1(%rbx),%rsi
  mov    %rbp,%rdi
  call   <chk_room@plt>
  test   %rax,%rax
  jne    L5
L28:
  lea    0x1(%rbx),%rsi
  mov    %rbp,%rdi
  call   <chk_room@plt>
  test   %rax,%rax
  jne    L17
L0:
  xor    %eax,%eax
  call   <chk_lighted_path@plt>
  test   %rax,%rax
  jne    L9
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L13:
  xor    %ecx,%ecx
  mov    $0xffffffff,%edx
  mov    %r15,%rsi
  mov    %r12,%rdi
  call   <finish_path@plt>
  jmp    L60
  nopw   0x0(%rax,%rax,1)
L9:
  add    $0x18,%rsp
  mov    %r13,%rsi
  mov    %r12,%rdi
  xor    %edx,%edx
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    10e0 <on_light_area@plt>
  nopl   0x0(%rax,%rax,1)
L17:
  mov    0x8(%rsp),%rsi
  mov    $0x1,%ecx
  xor    %edx,%edx
  mov    %r14,%rdi
  call   <finish_path@plt>
  jmp    L0
  cs nopw 0x0(%rax,%rax,1)
L5:
  mov    $0xffffffff,%ecx
  xor    %edx,%edx
  mov    %r13,%rsi
  mov    %r15,%rdi
  call   <finish_path@plt>
  jmp    L28
  nopw   0x0(%rax,%rax,1)
L54:
  mov    0x8(%rsp),%rdi
  xor    %ecx,%ecx
  mov    $0x1,%edx
  mov    %r14,%rsi
  call   <finish_path@plt>
  jmp    L1
```

assistant: ```c
void make_path(long area_x, long area_y) {
  long bgn_x, bgn_y, end_x, end_y;
  long bend_x, bend_y;
  long mx, my;
  mx = area_x * 20;
  my = area_y * 20;
  bgn_y = chk_extend_path_h(area_x, area_y, -1);
  end_y = chk_extend_path_h(area_x, area_y, +1);
  bend_x = 1 + randm(20 - 3 + 1 - 2);
  line_path(mx + 0, my + bgn_y, mx + bend_x, my + bgn_y, 'H');
  line_path(mx + bend_x, my + bgn_y, mx + bend_x, my + end_y, 'H');
  line_path(mx + bend_x, my + end_y, mx + 20 - 3, my + end_y, 'H');
  if (chk_room(area_x - 1, area_y)) {
    finish_path(mx + 0, my + bgn_y, -1, 0);
  }
  if (chk_room(area_x + 1, area_y)) {
    finish_path(mx + 20 - 3, my + end_y, +1, 0);
  }
  bgn_x = chk_extend_path_v(area_x, area_y, -1);
  end_x = chk_extend_path_v(area_x, area_y, +1);
  bend_y = 1 + randm(20 - 3 + 1 - 2);
  line_path(mx + bgn_x, my + 0, mx + bgn_x, my + bend_y, 'V');
  line_path(mx + bgn_x, my + bend_y, mx + end_x, my + bend_y, 'V');
  line_path(mx + end_x, my + bend_y, mx + end_x, my + 20 - 3, 'V');
  if (chk_room(area_x, area_y - 1)) {
    finish_path(mx + bgn_x, my + 0, 0, -1);
  }
  if (chk_room(area_x, area_y + 1)) {
    finish_path(mx + end_x, my + 20 - 3, 0, +1);
  }
  if (chk_lighted_path()) {
    on_light_area(area_x * 20, area_y * 20, 0);
  }
}
```