user: Demonstrate the C code that generates the assembly output below:

```asm
<nachbarn>:
  endbr64
  mov    %ecx,%eax
  push   %r15
  mov    %rdi,%r11
  mov    %esi,%r9d
  push   %r14
  mov    %r8d,%edi
  sub    $0x1,%ecx
  push   %r13
  neg    %edi
  lea    -0x1(%r8),%r13d
  push   %r12
  shr    $0x1f,%edi
  push   %rbp
  lea    0x1(%r8),%ebp
  push   %rbx
  mov    %edx,%ebx
  mov    %eax,%edx
  mov    %ebp,%esi
  neg    %edx
  not    %esi
  mov    %edx,%r14d
  shr    $0x1f,%esi
  shr    $0x1f,%r14d
  test   %edx,%edx
  jns    L420
  test   %dil,%dil
  je     L420
  cmp    %r9d,%ecx
  jge    L420
  cmp    %ebx,%r13d
  jge    L420
  movslq %ecx,%rdx
  movslq %r13d,%r10
  xor    %r12d,%r12d
  lea    (%rdx,%rdx,4),%rdx
  lea    (%r11,%rdx,8),%rdx
  cmpl   $0xffffffff,(%rdx,%r10,4)
  mov    %r8d,%r10d
  not    %r10d
  sete   %r12b
  shr    $0x1f,%r10d
  test   %r14b,%r14b
  jne    L152
  nopl   (%rax)
L299:
  mov    %eax,%edx
  not    %edx
  mov    %edx,%ecx
  shr    $0x1f,%ecx
  test   %edx,%edx
  jns    L315
  test   %dil,%dil
  je     L315
  cmp    %r9d,%eax
  jge    L516
  cmp    %ebx,%r13d
  jge    L516
  movslq %eax,%rdx
  movslq %r13d,%rcx
  lea    (%rdx,%rdx,4),%rdx
  lea    (%r11,%rdx,8),%rdx
  cmpl   $0xffffffff,(%rdx,%rcx,4)
  je     L240
L516:
  test   %ebp,%ebp
  js     L469
  cmp    %r9d,%eax
  jge    L330
  nopl   0x0(%rax)
L403:
  cmp    %ebp,%ebx
  jle    L330
  movslq %eax,%rdx
  movslq %ebp,%rcx
  lea    (%rdx,%rdx,4),%rdx
  lea    (%r11,%rdx,8),%rdx
  cmpl   $0xffffffff,(%rdx,%rcx,4)
  je     L377
  nopl   0x0(%rax)
L330:
  add    $0x1,%eax
  mov    %eax,%edx
  not    %edx
  shr    $0x1f,%edx
  mov    %edx,%ecx
  test   %dl,%dl
  je     L462
  test   %dil,%dil
  je     L462
  cmp    %eax,%r9d
  setg   %cl
  cmp    %ebx,%r13d
  setl   %dl
  and    %dl,%cl
  je     L306
L4:
  movslq %eax,%rdx
  movslq %r13d,%r13
  lea    (%rdx,%rdx,4),%rdx
  lea    (%r11,%rdx,8),%rdx
  cmpl   $0xffffffff,(%rdx,%r13,4)
  je     L218
  nopw   0x0(%rax,%rax,1)
L462:
  test   %r10b,%r10b
  je     L100
  test   %cl,%cl
  je     L100
  cmp    %eax,%r9d
  jle    L100
  cmp    %ebx,%r8d
  jge    L100
  movslq %eax,%rdx
  movslq %r8d,%r8
  lea    (%rdx,%rdx,4),%rdx
  lea    (%r11,%rdx,8),%rdx
  cmpl   $0xffffffff,(%rdx,%r8,4)
  je     L329
  nopl   0x0(%rax)
L100:
  test   %sil,%sil
  je     L449
  test   %cl,%cl
  je     L449
  cmp    %eax,%r9d
  jle    L449
  cmp    %ebp,%ebx
  jle    L449
  cltq
  movslq %ebp,%rbp
  lea    (%rax,%rax,4),%rax
  lea    (%r11,%rax,8),%rax
  cmpl   $0xffffffff,(%rax,%rbp,4)
  je     L422
L449:
  pop    %rbx
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L420:
  mov    %r8d,%r10d
  xor    %r12d,%r12d
  not    %r10d
  shr    $0x1f,%r10d
  test   %r14b,%r14b
  je     L299
L152:
  test   %r10b,%r10b
  je     L207
  cmp    %ebx,%r8d
  jge    L207
  cmp    %r9d,%ecx
  jge    L207
  movslq %ecx,%rdx
  movslq %r8d,%r15
  lea    (%rdx,%rdx,4),%rdx
  lea    (%r11,%rdx,8),%rdx
  cmpl   $0xffffffff,(%rdx,%r15,4)
  je     L300
  xchg   %ax,%ax
L207:
  test   %r14b,%r14b
  je     L299
  test   %sil,%sil
  je     L299
  cmp    %r9d,%ecx
  jge    L299
  cmp    %ebp,%ebx
  jle    L299
  movslq %ecx,%rcx
  lea    (%rcx,%rcx,4),%rdx
  movslq %ebp,%rcx
  lea    (%r11,%rdx,8),%rdx
  cmpl   $0xffffffff,(%rdx,%rcx,4)
  jne    L299
  add    $0x1,%r12d
  jmp    L299
  nopl   0x0(%rax)
L315:
  test   %sil,%sil
  je     L330
  test   %cl,%cl
  je     L330
  cmp    %r9d,%eax
  jl     L403
  jmp    L330
  nopw   0x0(%rax,%rax,1)
L306:
  mov    $0x1,%ecx
  jmp    L462
  nopw   0x0(%rax,%rax,1)
L469:
  add    $0x1,%eax
  cmp    %eax,%r9d
  setg   %cl
  cmp    %ebx,%r13d
  setl   %dl
  and    %dl,%cl
  je     L306
  jmp    L4
L218:
  add    $0x1,%r12d
  jmp    L462
L240:
  add    $0x1,%r12d
  jmp    L516
L300:
  add    $0x1,%r12d
  jmp    L207
L422:
  add    $0x1,%r12d
  jmp    L449
L329:
  add    $0x1,%r12d
  jmp    L100
L377:
  add    $0x1,%r12d
  jmp    L330
```

assistant: ```c
int nachbarn(int tab[10][10], int z, int s, int i, int j) {
  int a, b, sum = 0;
  for (a = i - 1; a <= i + 1; a++) {
    for (b = j - 1; b <= j + 1; b++) {
      if ((a != i || b != j) && a >= 0 && b >= 0 && a < z && b < s) {
        if (tab[a][b] == -1) {
          sum++;
        }
      }
    }
  }
  return sum;
}
```