user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<neighbor>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  push   %r14
  mov    %esi,%r14d
  push   %r13
  mov    %r9d,%r13d
  push   %r12
  mov    %edx,%r12d
  mov    %esi,%edx
  push   %rbp
  mov    %ecx,%ebp
  mov    %r12d,%esi
  mov    %r9d,%ecx
  push   %rbx
  mov    %ebp,%edi
  mov    %r8d,%ebx
  sub    $0x18,%rsp
  call   <gidz_general@plt>
  xor    %r8d,%r8d
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L473
  test   %r14d,%r14d
  jg     L689
L574:
  lea    0x1(%r14),%edx
  cmp    %ebx,%edx
  jl     L531
L252:
  test   %r12d,%r12d
  jg     L548
L371:
  lea    0x1(%r12),%esi
  cmp    %r13d,%esi
  jl     L354
  test   %ebp,%ebp
  jg     L55
  add    $0x1,%ebp
  cmp    0x50(%rsp),%ebp
  jl     L596
L527:
  xor    %r8d,%r8d
L473:
  add    $0x18,%rsp
  mov    %r8d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L689:
  lea    -0x1(%r14),%edx
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %ebp,%edi
  mov    %edx,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %r12d,%r12d
  jg     L465
L570:
  lea    0x1(%r12),%esi
  cmp    %r13d,%esi
  jl     L441
  test   %ebp,%ebp
  jg     L708
L634:
  lea    0x1(%rbp),%r9d
  cmp    0x50(%rsp),%r9d
  jge    L574
L713:
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %r9d,%edi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L574
  nopl   0x0(%rax)
L362:
  mov    $0x1,%r8d
  jmp    L473
  nopl   0x0(%rax,%rax,1)
L548:
  lea    -0x1(%r12),%esi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %ebp,%edi
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %ebp,%ebp
  mov    0x4(%rsp),%esi
  jg     L734
  lea    0x1(%rbp),%r9d
L657:
  cmp    0x50(%rsp),%r9d
  jge    L371
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %r9d,%edi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L371
  jmp    L362
  nopl   (%rax)
L531:
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %ebp,%edi
  mov    %edx,0x4(%rsp)
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %r12d,%r12d
  mov    0x4(%rsp),%edx
  jg     L244
L770:
  lea    0x1(%r12),%esi
  cmp    %r13d,%esi
  jl     L169
  test   %ebp,%ebp
  jg     L189
L430:
  lea    0x1(%rbp),%r9d
  cmp    0x50(%rsp),%r9d
  jge    L252
L50:
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %r9d,%edi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L252
  jmp    L362
  xchg   %ax,%ax
L55:
  lea    -0x1(%rbp),%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %r12d,%esi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  add    $0x1,%ebp
  cmp    0x50(%rsp),%ebp
  jge    L527
  jmp    L596
  nopl   0x0(%rax,%rax,1)
L465:
  lea    -0x1(%r12),%esi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %ebp,%edi
  mov    %edx,0x8(%rsp)
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %ebp,%ebp
  mov    0x4(%rsp),%esi
  mov    0x8(%rsp),%edx
  jg     L136
L530:
  lea    0x1(%rbp),%edi
  cmp    0x50(%rsp),%edi
  jge    L570
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %edx,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L570
  jmp    L362
  nopl   0x0(%rax)
L354:
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %ebp,%edi
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %ebp,%ebp
  mov    0x4(%rsp),%esi
  lea    0x1(%rbp),%r9d
  jg     L215
L233:
  mov    %r9d,%ebp
  cmp    %r9d,0x50(%rsp)
  jle    L527
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %r9d,%edi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  nopl   (%rax)
L596:
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %r12d,%esi
  mov    %ebp,%edi
  call   <gidz_general@plt>
  xor    %r8d,%r8d
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  sete   %r8b
  jmp    L473
  xchg   %ax,%ax
L441:
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %ebp,%edi
  mov    %edx,0x8(%rsp)
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %ebp,%ebp
  mov    0x4(%rsp),%esi
  mov    0x8(%rsp),%edx
  jg     L495
  lea    0x1(%rbp),%r9d
  cmp    %r9d,0x50(%rsp)
  jle    L574
  mov    %r9d,%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %edx,0x8(%rsp)
  mov    %r9d,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%r9d
  mov    0x8(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L713
  jmp    L362
  nopl   0x0(%rax,%rax,1)
L734:
  lea    -0x1(%rbp),%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  mov    0x4(%rsp),%esi
  lea    0x1(%rbp),%r9d
  jmp    L657
  nopw   0x0(%rax,%rax,1)
L244:
  lea    -0x1(%r12),%esi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %ebp,%edi
  mov    %edx,0x8(%rsp)
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %ebp,%ebp
  mov    0x4(%rsp),%esi
  mov    0x8(%rsp),%edx
  jg     L98
L511:
  lea    0x1(%rbp),%edi
  cmp    0x50(%rsp),%edi
  jge    L770
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %edx,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L770
  jmp    L362
  nopl   0x0(%rax)
L708:
  lea    -0x1(%rbp),%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %edx,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L634
  jmp    L362
  nopl   0x0(%rax,%rax,1)
L136:
  lea    -0x1(%rbp),%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %edx,0x8(%rsp)
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%esi
  mov    0x8(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L530
  jmp    L362
L495:
  lea    -0x1(%rbp),%r10d
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %edx,0xc(%rsp)
  mov    %r10d,%edi
  mov    %esi,0x8(%rsp)
  mov    %r10d,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%r10d
  mov    0x8(%rsp),%esi
  cltq
  mov    0xc(%rsp),%edx
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  lea    0x1(%rbp),%r9d
  cmp    0x50(%rsp),%r9d
  jl     L253
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %r10d,%edi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L574
  jmp    L362
  nopl   0x0(%rax,%rax,1)
L98:
  lea    -0x1(%rbp),%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %edx,0x8(%rsp)
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%esi
  mov    0x8(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L511
  jmp    L362
L215:
  lea    -0x1(%rbp),%r9d
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %r9d,%edi
  mov    %esi,0x8(%rsp)
  mov    %r9d,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%r9d
  mov    0x8(%rsp),%esi
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  add    $0x1,%ebp
  cmp    0x50(%rsp),%ebp
  jl     L521
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %r12d,%esi
  mov    %r9d,%edi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L527
  jmp    L362
  nopw   0x0(%rax,%rax,1)
L169:
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %ebp,%edi
  mov    %edx,0x8(%rsp)
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %ebp,%ebp
  mov    0x4(%rsp),%esi
  mov    0x8(%rsp),%edx
  jg     L250
  lea    0x1(%rbp),%r9d
  cmp    %r9d,0x50(%rsp)
  jg     L268
  test   %r12d,%r12d
  jg     L280
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %ebp,%edi
  mov    %r9d,0x8(%rsp)
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%esi
  mov    0x8(%rsp),%r9d
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L233
  jmp    L362
  xchg   %ax,%ax
L189:
  lea    -0x1(%rbp),%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %edx,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L430
  jmp    L362
  nopl   0x0(%rax,%rax,1)
L250:
  lea    -0x1(%rbp),%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %edx,0xc(%rsp)
  mov    %esi,0x8(%rsp)
  mov    %edi,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%edi
  mov    0x8(%rsp),%esi
  cltq
  mov    0xc(%rsp),%edx
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  lea    0x1(%rbp),%r9d
  cmp    %r9d,0x50(%rsp)
  jg     L268
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L252
  jmp    L362
  xchg   %ax,%ax
L268:
  mov    %r9d,%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %edx,0x8(%rsp)
  mov    %r9d,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%r9d
  mov    0x8(%rsp),%edx
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  test   %ebp,%ebp
  jle    L50
  lea    -0x1(%rbp),%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %r9d,0x8(%rsp)
  mov    %edx,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%edx
  mov    0x8(%rsp),%r9d
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L50
  jmp    L362
  nopw   0x0(%rax,%rax,1)
L521:
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %ebp,%edi
  mov    %r9d,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%r9d
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %r12d,%esi
  mov    %r9d,%edi
  call   <gidz_general@plt>
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L596
  jmp    L362
L280:
  lea    -0x1(%r12),%esi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r14d,%edx
  mov    %ebp,%edi
  mov    %r9d,0x8(%rsp)
  mov    %esi,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%esi
  mov    0x8(%rsp),%r9d
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L657
  jmp    L362
L253:
  mov    %r9d,%edi
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r10d,0xc(%rsp)
  mov    %edx,0x8(%rsp)
  mov    %r9d,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%r9d
  mov    0x8(%rsp),%edx
  cltq
  mov    0xc(%rsp),%r10d
  cmpb   $0x1,(%r15,%rax,1)
  je     L362
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%esi
  mov    %r10d,%edi
  mov    %r9d,0x8(%rsp)
  mov    %edx,0x4(%rsp)
  call   <gidz_general@plt>
  mov    0x4(%rsp),%edx
  mov    0x8(%rsp),%r9d
  cltq
  cmpb   $0x1,(%r15,%rax,1)
  jne    L713
  jmp    L362
```

assistant: ```c
int neighbor(char *iphi, int l, int m, int n, int extx, int exty, int extz) {
  if (*(iphi + gidz_general(n, m, l, exty, extx)) == 1)
    return 0;
  if (l > 0) {
    if (*(iphi + gidz_general(n, m, l - 1, exty, extx)) == 1)
      return 1;
    if (m > 0) {
      if (*(iphi + gidz_general(n, m - 1, l - 1, exty, extx)) == 1)
        return 1;
      if (n > 0)
        if (*(iphi + gidz_general(n - 1, m - 1, l - 1, exty, extx)) == 1)
          return 1;
      if ((n + 1) < extz)
        if (*(iphi + gidz_general(n + 1, m - 1, l - 1, exty, extx)) == 1)
          return 1;
    }
    if ((m + 1) < exty) {
      if (*(iphi + gidz_general(n, m + 1, l - 1, exty, extx)) == 1)
        return 1;
      if (n > 0)
        if (*(iphi + gidz_general(n - 1, m + 1, l - 1, exty, extx)) == 1)
          return 1;
      if ((n + 1) < extz)
        if (*(iphi + gidz_general(n + 1, m + 1, l - 1, exty, extx)) == 1)
          return 1;
    }
    if (n > 0)
      if (*(iphi + gidz_general(n - 1, m, l - 1, exty, extx)) == 1)
        return 1;
    if ((n + 1) < extz)
      if (*(iphi + gidz_general(n + 1, m, l - 1, exty, extx)) == 1)
        return 1;
  }
  if ((l + 1) < extx) {
    if (*(iphi + gidz_general(n, m, l + 1, exty, extx)) == 1)
      return 1;
    if (m > 0) {
      if (*(iphi + gidz_general(n, m - 1, l + 1, exty, extx)) == 1)
        return 1;
      if (n > 0)
        if (*(iphi + gidz_general(n - 1, m - 1, l + 1, exty, extx)) == 1)
          return 1;
      if ((n + 1) < extz)
        if (*(iphi + gidz_general(n + 1, m - 1, l + 1, exty, extx)) == 1)
          return 1;
    }
    if ((m + 1) < exty) {
      if (*(iphi + gidz_general(n, m + 1, l + 1, exty, extx)) == 1)
        return 1;
      if (n > 0)
        if (*(iphi + gidz_general(n - 1, m + 1, l + 1, exty, extx)) == 1)
          return 1;
      if ((n + 1) < extz)
        if (*(iphi + gidz_general(n + 1, m + 1, l + 1, exty, extx)) == 1)
          return 1;
    }
    if (n > 0)
      if (*(iphi + gidz_general(n - 1, m, l + 1, exty, extx)) == 1)
        return 1;
    if ((n + 1) < extz)
      if (*(iphi + gidz_general(n + 1, m, l + 1, exty, extx)) == 1)
        return 1;
  }
  if (m > 0) {
    if (*(iphi + gidz_general(n, m - 1, l, exty, extx)) == 1)
      return 1;
    if (n > 0)
      if (*(iphi + gidz_general(n - 1, m - 1, l, exty, extx)) == 1)
        return 1;
    if ((n + 1) < extz)
      if (*(iphi + gidz_general(n + 1, m - 1, l, exty, extx)) == 1)
        return 1;
  }
  if ((m + 1) < exty) {
    if (*(iphi + gidz_general(n, m + 1, l, exty, extx)) == 1)
      return 1;
    if (n > 0)
      if (*(iphi + gidz_general(n - 1, m + 1, l, exty, extx)) == 1)
        return 1;
    if ((n + 1) < extz)
      if (*(iphi + gidz_general(n + 1, m + 1, l, exty, extx)) == 1)
        return 1;
  }
  if (n > 0)
    if (*(iphi + gidz_general(n - 1, m, l, exty, extx)) == 1)
      return 1;
  if ((n + 1) < extz)
    if (*(iphi + gidz_general(n + 1, m, l, exty, extx)) == 1)
      return 1;
  return 0;
}
```