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

```asm
<getNeighbours>:
  endbr64
  mov    %esi,%eax
  sub    $0x1,%esi
  cmp    $0x1d,%edx
  mov    %rdi,%rcx
  sete   %dil
  cmp    $0x1e,%edx
  push   %r13
  lea    0x1(%rdx),%r8d
  push   %r12
  lea    -0x1(%rdx),%r11d
  push   %rbp
  sete   %bpl
  cmp    $0x1f,%edx
  push   %rbx
  sete   %bl
  cmp    $0x1f,%eax
  sete   %r9b
  je     L282
  test   %dil,%dil
  jne    L282
  cmp    $0xffffffff,%esi
  je     L301
  cmp    $0xffffffff,%r8d
  je     L301
  movslq %esi,%r12
  mov    %r12,%r10
  shl    $0x4,%r10
  sub    %r12,%r10
  movslq %r8d,%r12
  lea    (%rcx,%r10,8),%r10
  mov    (%r10,%r12,4),%r10d
L193:
  test   %bpl,%bpl
  jne    L90
  cmp    $0xffffffff,%esi
  je     L90
  cmp    $0xffffffff,%edx
  jne    L6
L90:
  test   %bl,%bl
  jne    L143
  test   %r9b,%r9b
  jne    L143
  cmp    $0xffffffff,%esi
  je     L143
  cmp    $0xffffffff,%r11d
  je     L143
  movslq %esi,%rsi
  mov    %rsi,%r9
  shl    $0x4,%r9
  sub    %rsi,%r9
  lea    (%rcx,%r9,8),%rsi
  movslq %r11d,%r9
  add    (%rsi,%r9,4),%r10d
L143:
  cmp    $0x1e,%eax
  sete   %sil
  test   %dil,%dil
  jne    L68
  test   %sil,%sil
  jne    L68
  cmp    $0xffffffff,%eax
  je     L68
  cmp    $0xffffffff,%r8d
  je     L68
  movslq %eax,%r12
  mov    %r12,%r9
  shl    $0x4,%r9
  sub    %r12,%r9
  movslq %r8d,%r12
  lea    (%rcx,%r9,8),%r9
  add    (%r9,%r12,4),%r10d
L68:
  test   %bl,%bl
  jne    L42
  test   %sil,%sil
  jne    L42
  cmp    $0xffffffff,%eax
  je     L42
  cmp    $0xffffffff,%r11d
  je     L42
  movslq %eax,%r9
  mov    %r9,%rsi
  shl    $0x4,%rsi
  sub    %r9,%rsi
  movslq %r11d,%r9
  lea    (%rcx,%rsi,8),%rsi
  add    (%rsi,%r9,4),%r10d
L42:
  cmp    $0x1d,%eax
  lea    0x1(%rax),%esi
  sete   %al
  je     L61
  test   %dil,%dil
  jne    L204
  cmp    $0xffffffff,%esi
  je     L204
  cmp    $0xffffffff,%r8d
  je     L204
  movslq %esi,%r9
  movslq %r8d,%r8
  mov    %r9,%rdi
  shl    $0x4,%rdi
  sub    %r9,%rdi
  lea    (%rcx,%rdi,8),%rdi
  add    (%rdi,%r8,4),%r10d
L204:
  test   %bpl,%bpl
  jne    L61
  cmp    $0xffffffff,%esi
  je     L61
  cmp    $0xffffffff,%edx
  jne    L346
  nopl   0x0(%rax)
L61:
  test   %bl,%bl
  jne    L18
  test   %al,%al
  jne    L18
  cmp    $0xffffffff,%esi
  je     L18
  cmp    $0xffffffff,%r11d
  je     L18
  movslq %esi,%rsi
  mov    %rsi,%rax
  shl    $0x4,%rax
  sub    %rsi,%rax
  lea    (%rcx,%rax,8),%rdx
  movslq %r11d,%rax
  add    (%rdx,%rax,4),%r10d
L18:
  pop    %rbx
  mov    %r10d,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   (%rax)
L282:
  xor    %r10d,%r10d
  test   %r9b,%r9b
  je     L193
  jmp    L90
  nopl   0x0(%rax)
L301:
  xor    %r10d,%r10d
  jmp    L193
L6:
  movslq %esi,%r13
  mov    %r13,%r12
  shl    $0x4,%r12
  sub    %r13,%r12
  movslq %edx,%r13
  lea    (%rcx,%r12,8),%r12
  add    (%r12,%r13,4),%r10d
  jmp    L90
  nopl   (%rax)
L346:
  movslq %esi,%r8
  movslq %edx,%rdx
  mov    %r8,%rdi
  shl    $0x4,%rdi
  sub    %r8,%rdi
  lea    (%rcx,%rdi,8),%rdi
  add    (%rdi,%rdx,4),%r10d
  jmp    L61
```

assistant: ```c
int getNeighbours(int g[][30], int x, int y) {
  int n = 0, i, j;
  for (i = x - 1; i <= x + 1; i++)
    for (j = y + 1; j >= y - 1; j--) {
      if (i == 30 || j == 30 || i == -1 || j == -1 || (i == x && j == y))
        ;
      else
        n += g[i][j];
    }
  return n;
}
```