user: What is the c source code of the assembly code below?

```asm
<countNeighbors>:
  endbr64
  push   %r14
  mov    %rdi,%rcx
  imul   %esi,%r9d
  mov    %esi,%edi
  push   %r13
  push   %r12
  mov    %edx,%r12d
  push   %rbp
  lea    (%r9,%r8,1),%esi
  push   %rbx
  mov    0x30(%rsp),%eax
  mov    %r8d,%ebx
  lea    (%rdi,%rdi,1),%r8d
  lea    -0x1(%rax),%r11d
  imul   %edi,%r11d
  mov    %r11d,%r10d
  add    %r8d,%r11d
  imul   %edx,%r10d
  mov    %r11d,%edx
  imul   %r12d,%edx
  lea    (%rsi,%r10,1),%eax
  cltq
  cmpb   $0x0,(%rcx,%rax,1)
  setne  %al
  add    %edx,%esi
  movslq %esi,%rsi
  movzbl %al,%eax
  cmpb   $0x1,(%rcx,%rsi,1)
  mov    %r9d,%esi
  sbb    $0xffffffff,%eax
  sub    %edi,%r11d
  sub    %edi,%esi
  imul   %r12d,%r11d
  lea    (%rsi,%rbx,1),%r14d
  lea    (%rsi,%r8,1),%ebp
  lea    0x0(%rbp,%rbx,1),%r13d
  lea    (%r14,%r11,1),%edi
  movslq %edi,%rdi
  cmpb   $0x1,(%rcx,%rdi,1)
  lea    (%r11,%r13,1),%edi
  movslq %edi,%rdi
  sbb    $0xffffffff,%eax
  cmpb   $0x1,(%rcx,%rdi,1)
  lea    -0x1(%rbx),%edi
  lea    (%r9,%rdi,1),%r12d
  sbb    $0xffffffff,%eax
  lea    (%r11,%r12,1),%r8d
  movslq %r8d,%r8
  cmpb   $0x1,(%rcx,%r8,1)
  sbb    $0xffffffff,%eax
  add    $0x1,%ebx
  add    %ebx,%r9d
  lea    (%r11,%r9,1),%r8d
  movslq %r8d,%r8
  cmpb   $0x1,(%rcx,%r8,1)
  lea    (%r10,%r14,1),%r8d
  movslq %r8d,%r8
  sbb    $0xffffffff,%eax
  cmpb   $0x1,(%rcx,%r8,1)
  lea    (%r10,%r13,1),%r8d
  movslq %r8d,%r8
  sbb    $0xffffffff,%eax
  cmpb   $0x1,(%rcx,%r8,1)
  lea    (%r10,%r12,1),%r8d
  movslq %r8d,%r8
  sbb    $0xffffffff,%eax
  cmpb   $0x1,(%rcx,%r8,1)
  lea    (%r10,%r9,1),%r8d
  movslq %r8d,%r8
  sbb    $0xffffffff,%eax
  cmpb   $0x1,(%rcx,%r8,1)
  sbb    $0xffffffff,%eax
  add    %edx,%r14d
  movslq %r14d,%r14
  cmpb   $0x1,(%rcx,%r14,1)
  sbb    $0xffffffff,%eax
  add    %edx,%r13d
  movslq %r13d,%r13
  cmpb   $0x1,(%rcx,%r13,1)
  sbb    $0xffffffff,%eax
  add    %edx,%r12d
  movslq %r12d,%r12
  cmpb   $0x1,(%rcx,%r12,1)
  sbb    $0xffffffff,%eax
  add    %edx,%r9d
  movslq %r9d,%r9
  cmpb   $0x1,(%rcx,%r9,1)
  lea    (%rsi,%rdi,1),%r9d
  lea    (%r11,%r9,1),%r8d
  sbb    $0xffffffff,%eax
  movslq %r8d,%r8
  cmpb   $0x1,(%rcx,%r8,1)
  sbb    $0xffffffff,%eax
  add    %ebx,%esi
  lea    (%r11,%rsi,1),%r8d
  movslq %r8d,%r8
  cmpb   $0x1,(%rcx,%r8,1)
  sbb    $0xffffffff,%eax
  add    %ebp,%edi
  lea    (%r11,%rdi,1),%r8d
  movslq %r8d,%r8
  cmpb   $0x1,(%rcx,%r8,1)
  lea    0x0(%rbp,%rbx,1),%r8d
  sbb    $0xffffffff,%eax
  add    %r8d,%r11d
  movslq %r11d,%r11
  cmpb   $0x1,(%rcx,%r11,1)
  lea    (%r10,%r9,1),%r11d
  movslq %r11d,%r11
  sbb    $0xffffffff,%eax
  cmpb   $0x1,(%rcx,%r11,1)
  lea    (%r10,%rsi,1),%r11d
  movslq %r11d,%r11
  sbb    $0xffffffff,%eax
  cmpb   $0x1,(%rcx,%r11,1)
  lea    (%r10,%rdi,1),%r11d
  movslq %r11d,%r11
  sbb    $0xffffffff,%eax
  cmpb   $0x1,(%rcx,%r11,1)
  sbb    $0xffffffff,%eax
  add    %r8d,%r10d
  movslq %r10d,%r10
  cmpb   $0x1,(%rcx,%r10,1)
  sbb    $0xffffffff,%eax
  add    %edx,%r9d
  movslq %r9d,%r9
  cmpb   $0x1,(%rcx,%r9,1)
  sbb    $0xffffffff,%eax
  add    %edx,%esi
  movslq %esi,%rsi
  cmpb   $0x1,(%rcx,%rsi,1)
  sbb    $0xffffffff,%eax
  add    %edx,%edi
  movslq %edi,%rdi
  cmpb   $0x1,(%rcx,%rdi,1)
  sbb    $0xffffffff,%eax
  add    %r8d,%edx
  movslq %edx,%rdx
  cmpb   $0x1,(%rcx,%rdx,1)
  pop    %rbx
  sbb    $0xffffffff,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

assistant: ```c
int countNeighbors(unsigned char *im, const int dimx, const int dimy, const int dimz, const int i, const int j, const int k) {
  int a, b, c;
  int ct = 0;
  c = k - 1;
  b = j;
  a = i;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j;
  a = i;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k;
  b = j - 1;
  a = i;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k;
  b = j + 1;
  a = i;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k;
  b = j;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k;
  b = j;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k - 1;
  b = j - 1;
  a = i;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k - 1;
  b = j + 1;
  a = i;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k - 1;
  b = j;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k - 1;
  b = j;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j - 1;
  a = i;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j + 1;
  a = i;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k;
  b = j - 1;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k;
  b = j - 1;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k;
  b = j + 1;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k;
  b = j + 1;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k - 1;
  b = j - 1;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k - 1;
  b = j - 1;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k - 1;
  b = j + 1;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k - 1;
  b = j + 1;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j - 1;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j - 1;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j + 1;
  a = i - 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  c = k + 1;
  b = j + 1;
  a = i + 1;
  ct += (im[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))] != 0) ? 1 : 0;
  return ct;
}
```