#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int gidz_general(int, int, int, int, int);
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;
}


x86 assembly (clang, -O0):
<neighbor>:
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%rsp
mov    0x10(%rbp),%eax
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1172 <neighbor+0x62>
movl   $0x0,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x14(%rbp)
jle    1483 <neighbor+0x373>
mov    -0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    11be <neighbor+0xae>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x18(%rbp)
jle    12c5 <neighbor+0x1b5>
mov    -0x10(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    120d <neighbor+0xfd>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x1c(%rbp)
jle    1264 <neighbor+0x154>
mov    -0x10(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    125f <neighbor+0x14f>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1264 <neighbor+0x154>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    12c0 <neighbor+0x1b0>
mov    -0x10(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    12bb <neighbor+0x1ab>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    12c0 <neighbor+0x1b0>
jmp    12c5 <neighbor+0x1b5>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0x24(%rbp),%eax
jge    13d1 <neighbor+0x2c1>
mov    -0x10(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1319 <neighbor+0x209>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x1c(%rbp)
jle    1370 <neighbor+0x260>
mov    -0x10(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    136b <neighbor+0x25b>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1370 <neighbor+0x260>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    13cc <neighbor+0x2bc>
mov    -0x10(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x68(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    13c7 <neighbor+0x2b7>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    13cc <neighbor+0x2bc>
jmp    13d1 <neighbor+0x2c1>
cmpl   $0x0,-0x1c(%rbp)
jle    1425 <neighbor+0x315>
mov    -0x10(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x70(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1420 <neighbor+0x310>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1425 <neighbor+0x315>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    147e <neighbor+0x36e>
mov    -0x10(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x78(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1479 <neighbor+0x369>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    147e <neighbor+0x36e>
jmp    1483 <neighbor+0x373>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
cmp    -0x20(%rbp),%eax
jge    17c9 <neighbor+0x6b9>
mov    -0x10(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x80(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    14d4 <neighbor+0x3c4>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x18(%rbp)
jle    15ed <neighbor+0x4dd>
mov    -0x10(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1529 <neighbor+0x419>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x1c(%rbp)
jle    1586 <neighbor+0x476>
mov    -0x10(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x90(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1581 <neighbor+0x471>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1586 <neighbor+0x476>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    15e8 <neighbor+0x4d8>
mov    -0x10(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x98(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    15e3 <neighbor+0x4d3>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    15e8 <neighbor+0x4d8>
jmp    15ed <neighbor+0x4dd>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0x24(%rbp),%eax
jge    170b <neighbor+0x5fb>
mov    -0x10(%rbp),%rax
mov    %rax,-0xa0(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xa0(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1647 <neighbor+0x537>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x1c(%rbp)
jle    16a4 <neighbor+0x594>
mov    -0x10(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xa8(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    169f <neighbor+0x58f>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    16a4 <neighbor+0x594>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    1706 <neighbor+0x5f6>
mov    -0x10(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xb0(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1701 <neighbor+0x5f1>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1706 <neighbor+0x5f6>
jmp    170b <neighbor+0x5fb>
cmpl   $0x0,-0x1c(%rbp)
jle    1765 <neighbor+0x655>
mov    -0x10(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xb8(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1760 <neighbor+0x650>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1765 <neighbor+0x655>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    17c4 <neighbor+0x6b4>
mov    -0x10(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xc0(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    17bf <neighbor+0x6af>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    17c4 <neighbor+0x6b4>
jmp    17c9 <neighbor+0x6b9>
cmpl   $0x0,-0x18(%rbp)
jle    18d9 <neighbor+0x7c9>
mov    -0x10(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xc8(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    181b <neighbor+0x70b>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x1c(%rbp)
jle    1875 <neighbor+0x765>
mov    -0x10(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xd0(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1870 <neighbor+0x760>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1875 <neighbor+0x765>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    18d4 <neighbor+0x7c4>
mov    -0x10(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xd8(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    18cf <neighbor+0x7bf>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    18d4 <neighbor+0x7c4>
jmp    18d9 <neighbor+0x7c9>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0x24(%rbp),%eax
jge    19ee <neighbor+0x8de>
mov    -0x10(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0x1c(%rbp),%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xe0(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1930 <neighbor+0x820>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
cmpl   $0x0,-0x1c(%rbp)
jle    198a <neighbor+0x87a>
mov    -0x10(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xe8(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1985 <neighbor+0x875>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    198a <neighbor+0x87a>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    19e9 <neighbor+0x8d9>
mov    -0x10(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
add    $0x1,%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xf0(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    19e4 <neighbor+0x8d4>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    19e9 <neighbor+0x8d9>
jmp    19ee <neighbor+0x8de>
cmpl   $0x0,-0x1c(%rbp)
jle    1a45 <neighbor+0x935>
mov    -0x10(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0x1c(%rbp),%edi
sub    $0x1,%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0xf8(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1a40 <neighbor+0x930>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1a45 <neighbor+0x935>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    0x10(%rbp),%eax
jge    1aa1 <neighbor+0x991>
mov    -0x10(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x1c(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%r8d
call   1030 <gidz_general@plt>
mov    %eax,%ecx
mov    -0x100(%rbp),%rax
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1a9c <neighbor+0x98c>
movl   $0x1,-0x4(%rbp)
jmp    1aa8 <neighbor+0x998>
jmp    1aa1 <neighbor+0x991>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<neighbor>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %r9d,%r15d
mov    %r8d,%r14d
mov    %ecx,%r12d
mov    %edx,%r13d
mov    %esi,%ebp
mov    %rdi,%rbx
mov    %ecx,%edi
mov    %edx,%esi
mov    %ebp,%edx
mov    %r9d,%ecx
call   1030 <gidz_general@plt>
cltq
xor    %ecx,%ecx
mov    %rbx,0x10(%rsp)
cmpb   $0x1,(%rbx,%rax,1)
je     1683 <neighbor+0x573>
test   %ebp,%ebp
jle    132d <neighbor+0x21d>
lea    -0x1(%rbp),%edx
mov    %r12d,%edi
mov    %r13d,%esi
mov    %edx,0xc(%rsp)
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    $0x1,%ecx
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
test   %r13d,%r13d
jle    1230 <neighbor+0x120>
mov    %rbp,0x18(%rsp)
mov    %r14d,%ebp
mov    0x10(%rsp),%rbx
lea    -0x1(%r13),%r14d
mov    %r12d,%edi
mov    %r14d,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %ebp,%r8d
call   1030 <gidz_general@plt>
cltq
cmpb   $0x1,(%rbx,%rax,1)
je     1450 <neighbor+0x340>
mov    %r14d,0x24(%rsp)
test   %r12d,%r12d
mov    %ebp,%r14d
jle    11f7 <neighbor+0xe7>
lea    -0x1(%r12),%edi
mov    0x24(%rsp),%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    0x10(%rsp),%rcx
cmpb   $0x1,(%rcx,%rax,1)
je     1450 <neighbor+0x340>
lea    0x1(%r12),%edi
cmp    0x60(%rsp),%edi
mov    0x18(%rsp),%rbp
jge    1230 <neighbor+0x120>
mov    0x24(%rsp),%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
lea    0x1(%r13),%ebx
cmp    %r15d,%ebx
jge    12c8 <neighbor+0x1b8>
mov    %r12d,%edi
mov    %ebx,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    0x10(%rsp),%rcx
cmpb   $0x1,(%rcx,%rax,1)
je     1450 <neighbor+0x340>
mov    %ebx,0x18(%rsp)
test   %r12d,%r12d
jle    1294 <neighbor+0x184>
lea    -0x1(%r12),%edi
mov    0x18(%rsp),%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    0x10(%rsp),%rcx
cmpb   $0x1,(%rcx,%rax,1)
je     1450 <neighbor+0x340>
lea    0x1(%r12),%edi
cmp    0x60(%rsp),%edi
mov    0x18(%rsp),%esi
jge    12c8 <neighbor+0x1b8>
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
test   %r12d,%r12d
jle    12fa <neighbor+0x1ea>
lea    -0x1(%r12),%edi
mov    %r13d,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
lea    0x1(%r12),%edi
cmp    0x60(%rsp),%edi
jge    132d <neighbor+0x21d>
mov    %r13d,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
lea    0x1(%rbp),%edx
cmp    %r14d,%edx
jge    14f3 <neighbor+0x3e3>
mov    %r12d,%edi
mov    %r13d,%esi
mov    %edx,0xc(%rsp)
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    $0x1,%ecx
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
test   %r13d,%r13d
jle    13f4 <neighbor+0x2e4>
lea    -0x1(%r13),%ebx
mov    %r12d,%edi
mov    %ebx,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    0x10(%rsp),%rcx
cmpb   $0x1,(%rcx,%rax,1)
je     1450 <neighbor+0x340>
test   %r12d,%r12d
jle    13c2 <neighbor+0x2b2>
lea    -0x1(%r12),%edi
mov    %ebx,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    0x10(%rsp),%rcx
cmpb   $0x1,(%rcx,%rax,1)
je     1450 <neighbor+0x340>
lea    0x1(%r12),%edi
cmp    0x60(%rsp),%edi
jge    13f4 <neighbor+0x2e4>
mov    %ebx,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
lea    0x1(%r13),%ebx
cmp    %r15d,%ebx
jge    148e <neighbor+0x37e>
mov    %r12d,%edi
mov    %ebx,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    0x10(%rsp),%rcx
cmpb   $0x1,(%rcx,%rax,1)
je     1450 <neighbor+0x340>
mov    %ebx,0x18(%rsp)
test   %r12d,%r12d
jle    145a <neighbor+0x34a>
lea    -0x1(%r12),%edi
mov    0x18(%rsp),%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    0x10(%rsp),%rcx
cmpb   $0x1,(%rcx,%rax,1)
jne    145a <neighbor+0x34a>
mov    $0x1,%ecx
jmp    1683 <neighbor+0x573>
lea    0x1(%r12),%edi
cmp    0x60(%rsp),%edi
mov    0x18(%rsp),%esi
jge    148e <neighbor+0x37e>
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
test   %r12d,%r12d
jle    14c0 <neighbor+0x3b0>
lea    -0x1(%r12),%edi
mov    %r13d,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
lea    0x1(%r12),%edi
cmp    0x60(%rsp),%edi
mov    0xc(%rsp),%edx
jge    14f3 <neighbor+0x3e3>
mov    %r13d,%esi
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
test   %r13d,%r13d
jle    158f <neighbor+0x47f>
lea    -0x1(%r13),%ebx
mov    %r12d,%edi
mov    %ebx,%esi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    $0x1,%ecx
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
mov    %ebx,0xc(%rsp)
test   %r12d,%r12d
jle    155d <neighbor+0x44d>
lea    -0x1(%r12),%edi
mov    0xc(%rsp),%esi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
lea    0x1(%r12),%edi
cmp    0x60(%rsp),%edi
jge    158f <neighbor+0x47f>
mov    0xc(%rsp),%esi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
lea    0x1(%r13),%esi
cmp    %r15d,%esi
jge    1625 <neighbor+0x515>
mov    %r12d,%edi
mov    %esi,0xc(%rsp)
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    $0x1,%ecx
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
test   %r12d,%r12d
jle    15f7 <neighbor+0x4e7>
lea    -0x1(%r12),%edi
mov    0xc(%rsp),%esi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
lea    0x1(%r12),%edi
cmp    0x60(%rsp),%edi
mov    0xc(%rsp),%esi
jge    1625 <neighbor+0x515>
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
mov    $0x1,%ecx
cltq
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
test   %r12d,%r12d
jle    1651 <neighbor+0x541>
lea    -0x1(%r12),%edi
mov    %r13d,%esi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    $0x1,%ecx
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
add    $0x1,%r12d
cmp    0x60(%rsp),%r12d
jge    1681 <neighbor+0x571>
mov    %r12d,%edi
mov    %r13d,%esi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
call   1030 <gidz_general@plt>
cltq
mov    $0x1,%ecx
mov    0x10(%rsp),%rdx
cmpb   $0x1,(%rdx,%rax,1)
je     1683 <neighbor+0x573>
xor    %ecx,%ecx
mov    %ecx,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @neighbor(i8* %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6) {
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
store i8* %0, i8** %9
store i32 %1, i32* %10
store i32 %2, i32* %11
store i32 %3, i32* %12
store i32 %4, i32* %13
store i32 %5, i32* %14
store i32 %6, i32* %15
%16 = load i8*, i8** %9
%17 = load i32, i32* %12
%18 = load i32, i32* %11
%19 = load i32, i32* %10
%20 = load i32, i32* %14
%21 = load i32, i32* %13
%22 = call i32 @gidz_general(i32 %17, i32 %18, i32 %19, i32 %20, i32 %21)
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds i8, i8* %16, i64 %23
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = icmp eq i32 %26, 1
br i1 %27, label %28, label %29
28: ; preds = %7
store i32 0, i32* %8
br label %578
29: ; preds = %7
%30 = load i32, i32* %10
%31 = icmp sgt i32 %30, 0
br i1 %31, label %32, label %220
32: ; preds = %29
%33 = load i8*, i8** %9
%34 = load i32, i32* %12
%35 = load i32, i32* %11
%36 = load i32, i32* %10
%37 = sub nsw i32 %36, 1
%38 = load i32, i32* %14
%39 = load i32, i32* %13
%40 = call i32 @gidz_general(i32 %34, i32 %35, i32 %37, i32 %38, i32 %39)
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds i8, i8* %33, i64 %41
%43 = load i8, i8* %42
%44 = sext i8 %43 to i32
%45 = icmp eq i32 %44, 1
br i1 %45, label %46, label %47
46: ; preds = %32
store i32 1, i32* %8
br label %578
47: ; preds = %32
%48 = load i32, i32* %11
%49 = icmp sgt i32 %48, 0
br i1 %49, label %50, label %111
50: ; preds = %47
%51 = load i8*, i8** %9
%52 = load i32, i32* %12
%53 = load i32, i32* %11
%54 = sub nsw i32 %53, 1
%55 = load i32, i32* %10
%56 = sub nsw i32 %55, 1
%57 = load i32, i32* %14
%58 = load i32, i32* %13
%59 = call i32 @gidz_general(i32 %52, i32 %54, i32 %56, i32 %57, i32 %58)
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds i8, i8* %51, i64 %60
%62 = load i8, i8* %61
%63 = sext i8 %62 to i32
%64 = icmp eq i32 %63, 1
br i1 %64, label %65, label %66
65: ; preds = %50
store i32 1, i32* %8
br label %578
66: ; preds = %50
%67 = load i32, i32* %12
%68 = icmp sgt i32 %67, 0
br i1 %68, label %69, label %87
69: ; preds = %66
%70 = load i8*, i8** %9
%71 = load i32, i32* %12
%72 = sub nsw i32 %71, 1
%73 = load i32, i32* %11
%74 = sub nsw i32 %73, 1
%75 = load i32, i32* %10
%76 = sub nsw i32 %75, 1
%77 = load i32, i32* %14
%78 = load i32, i32* %13
%79 = call i32 @gidz_general(i32 %72, i32 %74, i32 %76, i32 %77, i32 %78)
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds i8, i8* %70, i64 %80
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = icmp eq i32 %83, 1
br i1 %84, label %85, label %86
85: ; preds = %69
store i32 1, i32* %8
br label %578
86: ; preds = %69
br label %87
87: ; preds = %86, %66
%88 = load i32, i32* %12
%89 = add nsw i32 %88, 1
%90 = load i32, i32* %15
%91 = icmp slt i32 %89, %90
br i1 %91, label %92, label %110
92: ; preds = %87
%93 = load i8*, i8** %9
%94 = load i32, i32* %12
%95 = add nsw i32 %94, 1
%96 = load i32, i32* %11
%97 = sub nsw i32 %96, 1
%98 = load i32, i32* %10
%99 = sub nsw i32 %98, 1
%100 = load i32, i32* %14
%101 = load i32, i32* %13
%102 = call i32 @gidz_general(i32 %95, i32 %97, i32 %99, i32 %100, i32 %101)
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds i8, i8* %93, i64 %103
%105 = load i8, i8* %104
%106 = sext i8 %105 to i32
%107 = icmp eq i32 %106, 1
br i1 %107, label %108, label %109
108: ; preds = %92
store i32 1, i32* %8
br label %578
109: ; preds = %92
br label %110
110: ; preds = %109, %87
br label %111
111: ; preds = %110, %47
%112 = load i32, i32* %11
%113 = add nsw i32 %112, 1
%114 = load i32, i32* %14
%115 = icmp slt i32 %113, %114
br i1 %115, label %116, label %177
116: ; preds = %111
%117 = load i8*, i8** %9
%118 = load i32, i32* %12
%119 = load i32, i32* %11
%120 = add nsw i32 %119, 1
%121 = load i32, i32* %10
%122 = sub nsw i32 %121, 1
%123 = load i32, i32* %14
%124 = load i32, i32* %13
%125 = call i32 @gidz_general(i32 %118, i32 %120, i32 %122, i32 %123, i32 %124)
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds i8, i8* %117, i64 %126
%128 = load i8, i8* %127
%129 = sext i8 %128 to i32
%130 = icmp eq i32 %129, 1
br i1 %130, label %131, label %132
131: ; preds = %116
store i32 1, i32* %8
br label %578
132: ; preds = %116
%133 = load i32, i32* %12
%134 = icmp sgt i32 %133, 0
br i1 %134, label %135, label %153
135: ; preds = %132
%136 = load i8*, i8** %9
%137 = load i32, i32* %12
%138 = sub nsw i32 %137, 1
%139 = load i32, i32* %11
%140 = add nsw i32 %139, 1
%141 = load i32, i32* %10
%142 = sub nsw i32 %141, 1
%143 = load i32, i32* %14
%144 = load i32, i32* %13
%145 = call i32 @gidz_general(i32 %138, i32 %140, i32 %142, i32 %143, i32 %144)
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds i8, i8* %136, i64 %146
%148 = load i8, i8* %147
%149 = sext i8 %148 to i32
%150 = icmp eq i32 %149, 1
br i1 %150, label %151, label %152
151: ; preds = %135
store i32 1, i32* %8
br label %578
152: ; preds = %135
br label %153
153: ; preds = %152, %132
%154 = load i32, i32* %12
%155 = add nsw i32 %154, 1
%156 = load i32, i32* %15
%157 = icmp slt i32 %155, %156
br i1 %157, label %158, label %176
158: ; preds = %153
%159 = load i8*, i8** %9
%160 = load i32, i32* %12
%161 = add nsw i32 %160, 1
%162 = load i32, i32* %11
%163 = add nsw i32 %162, 1
%164 = load i32, i32* %10
%165 = sub nsw i32 %164, 1
%166 = load i32, i32* %14
%167 = load i32, i32* %13
%168 = call i32 @gidz_general(i32 %161, i32 %163, i32 %165, i32 %166, i32 %167)
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds i8, i8* %159, i64 %169
%171 = load i8, i8* %170
%172 = sext i8 %171 to i32
%173 = icmp eq i32 %172, 1
br i1 %173, label %174, label %175
174: ; preds = %158
store i32 1, i32* %8
br label %578
175: ; preds = %158
br label %176
176: ; preds = %175, %153
br label %177
177: ; preds = %176, %111
%178 = load i32, i32* %12
%179 = icmp sgt i32 %178, 0
br i1 %179, label %180, label %197
180: ; preds = %177
%181 = load i8*, i8** %9
%182 = load i32, i32* %12
%183 = sub nsw i32 %182, 1
%184 = load i32, i32* %11
%185 = load i32, i32* %10
%186 = sub nsw i32 %185, 1
%187 = load i32, i32* %14
%188 = load i32, i32* %13
%189 = call i32 @gidz_general(i32 %183, i32 %184, i32 %186, i32 %187, i32 %188)
%190 = sext i32 %189 to i64
%191 = getelementptr inbounds i8, i8* %181, i64 %190
%192 = load i8, i8* %191
%193 = sext i8 %192 to i32
%194 = icmp eq i32 %193, 1
br i1 %194, label %195, label %196
195: ; preds = %180
store i32 1, i32* %8
br label %578
196: ; preds = %180
br label %197
197: ; preds = %196, %177
%198 = load i32, i32* %12
%199 = add nsw i32 %198, 1
%200 = load i32, i32* %15
%201 = icmp slt i32 %199, %200
br i1 %201, label %202, label %219
202: ; preds = %197
%203 = load i8*, i8** %9
%204 = load i32, i32* %12
%205 = add nsw i32 %204, 1
%206 = load i32, i32* %11
%207 = load i32, i32* %10
%208 = sub nsw i32 %207, 1
%209 = load i32, i32* %14
%210 = load i32, i32* %13
%211 = call i32 @gidz_general(i32 %205, i32 %206, i32 %208, i32 %209, i32 %210)
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds i8, i8* %203, i64 %212
%214 = load i8, i8* %213
%215 = sext i8 %214 to i32
%216 = icmp eq i32 %215, 1
br i1 %216, label %217, label %218
217: ; preds = %202
store i32 1, i32* %8
br label %578
218: ; preds = %202
br label %219
219: ; preds = %218, %197
br label %220
220: ; preds = %219, %29
%221 = load i32, i32* %10
%222 = add nsw i32 %221, 1
%223 = load i32, i32* %13
%224 = icmp slt i32 %222, %223
br i1 %224, label %225, label %413
225: ; preds = %220
%226 = load i8*, i8** %9
%227 = load i32, i32* %12
%228 = load i32, i32* %11
%229 = load i32, i32* %10
%230 = add nsw i32 %229, 1
%231 = load i32, i32* %14
%232 = load i32, i32* %13
%233 = call i32 @gidz_general(i32 %227, i32 %228, i32 %230, i32 %231, i32 %232)
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds i8, i8* %226, i64 %234
%236 = load i8, i8* %235
%237 = sext i8 %236 to i32
%238 = icmp eq i32 %237, 1
br i1 %238, label %239, label %240
239: ; preds = %225
store i32 1, i32* %8
br label %578
240: ; preds = %225
%241 = load i32, i32* %11
%242 = icmp sgt i32 %241, 0
br i1 %242, label %243, label %304
243: ; preds = %240
%244 = load i8*, i8** %9
%245 = load i32, i32* %12
%246 = load i32, i32* %11
%247 = sub nsw i32 %246, 1
%248 = load i32, i32* %10
%249 = add nsw i32 %248, 1
%250 = load i32, i32* %14
%251 = load i32, i32* %13
%252 = call i32 @gidz_general(i32 %245, i32 %247, i32 %249, i32 %250, i32 %251)
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds i8, i8* %244, i64 %253
%255 = load i8, i8* %254
%256 = sext i8 %255 to i32
%257 = icmp eq i32 %256, 1
br i1 %257, label %258, label %259
258: ; preds = %243
store i32 1, i32* %8
br label %578
259: ; preds = %243
%260 = load i32, i32* %12
%261 = icmp sgt i32 %260, 0
br i1 %261, label %262, label %280
262: ; preds = %259
%263 = load i8*, i8** %9
%264 = load i32, i32* %12
%265 = sub nsw i32 %264, 1
%266 = load i32, i32* %11
%267 = sub nsw i32 %266, 1
%268 = load i32, i32* %10
%269 = add nsw i32 %268, 1
%270 = load i32, i32* %14
%271 = load i32, i32* %13
%272 = call i32 @gidz_general(i32 %265, i32 %267, i32 %269, i32 %270, i32 %271)
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds i8, i8* %263, i64 %273
%275 = load i8, i8* %274
%276 = sext i8 %275 to i32
%277 = icmp eq i32 %276, 1
br i1 %277, label %278, label %279
278: ; preds = %262
store i32 1, i32* %8
br label %578
279: ; preds = %262
br label %280
280: ; preds = %279, %259
%281 = load i32, i32* %12
%282 = add nsw i32 %281, 1
%283 = load i32, i32* %15
%284 = icmp slt i32 %282, %283
br i1 %284, label %285, label %303
285: ; preds = %280
%286 = load i8*, i8** %9
%287 = load i32, i32* %12
%288 = add nsw i32 %287, 1
%289 = load i32, i32* %11
%290 = sub nsw i32 %289, 1
%291 = load i32, i32* %10
%292 = add nsw i32 %291, 1
%293 = load i32, i32* %14
%294 = load i32, i32* %13
%295 = call i32 @gidz_general(i32 %288, i32 %290, i32 %292, i32 %293, i32 %294)
%296 = sext i32 %295 to i64
%297 = getelementptr inbounds i8, i8* %286, i64 %296
%298 = load i8, i8* %297
%299 = sext i8 %298 to i32
%300 = icmp eq i32 %299, 1
br i1 %300, label %301, label %302
301: ; preds = %285
store i32 1, i32* %8
br label %578
302: ; preds = %285
br label %303
303: ; preds = %302, %280
br label %304
304: ; preds = %303, %240
%305 = load i32, i32* %11
%306 = add nsw i32 %305, 1
%307 = load i32, i32* %14
%308 = icmp slt i32 %306, %307
br i1 %308, label %309, label %370
309: ; preds = %304
%310 = load i8*, i8** %9
%311 = load i32, i32* %12
%312 = load i32, i32* %11
%313 = add nsw i32 %312, 1
%314 = load i32, i32* %10
%315 = add nsw i32 %314, 1
%316 = load i32, i32* %14
%317 = load i32, i32* %13
%318 = call i32 @gidz_general(i32 %311, i32 %313, i32 %315, i32 %316, i32 %317)
%319 = sext i32 %318 to i64
%320 = getelementptr inbounds i8, i8* %310, i64 %319
%321 = load i8, i8* %320
%322 = sext i8 %321 to i32
%323 = icmp eq i32 %322, 1
br i1 %323, label %324, label %325
324: ; preds = %309
store i32 1, i32* %8
br label %578
325: ; preds = %309
%326 = load i32, i32* %12
%327 = icmp sgt i32 %326, 0
br i1 %327, label %328, label %346
328: ; preds = %325
%329 = load i8*, i8** %9
%330 = load i32, i32* %12
%331 = sub nsw i32 %330, 1
%332 = load i32, i32* %11
%333 = add nsw i32 %332, 1
%334 = load i32, i32* %10
%335 = add nsw i32 %334, 1
%336 = load i32, i32* %14
%337 = load i32, i32* %13
%338 = call i32 @gidz_general(i32 %331, i32 %333, i32 %335, i32 %336, i32 %337)
%339 = sext i32 %338 to i64
%340 = getelementptr inbounds i8, i8* %329, i64 %339
%341 = load i8, i8* %340
%342 = sext i8 %341 to i32
%343 = icmp eq i32 %342, 1
br i1 %343, label %344, label %345
344: ; preds = %328
store i32 1, i32* %8
br label %578
345: ; preds = %328
br label %346
346: ; preds = %345, %325
%347 = load i32, i32* %12
%348 = add nsw i32 %347, 1
%349 = load i32, i32* %15
%350 = icmp slt i32 %348, %349
br i1 %350, label %351, label %369
351: ; preds = %346
%352 = load i8*, i8** %9
%353 = load i32, i32* %12
%354 = add nsw i32 %353, 1
%355 = load i32, i32* %11
%356 = add nsw i32 %355, 1
%357 = load i32, i32* %10
%358 = add nsw i32 %357, 1
%359 = load i32, i32* %14
%360 = load i32, i32* %13
%361 = call i32 @gidz_general(i32 %354, i32 %356, i32 %358, i32 %359, i32 %360)
%362 = sext i32 %361 to i64
%363 = getelementptr inbounds i8, i8* %352, i64 %362
%364 = load i8, i8* %363
%365 = sext i8 %364 to i32
%366 = icmp eq i32 %365, 1
br i1 %366, label %367, label %368
367: ; preds = %351
store i32 1, i32* %8
br label %578
368: ; preds = %351
br label %369
369: ; preds = %368, %346
br label %370
370: ; preds = %369, %304
%371 = load i32, i32* %12
%372 = icmp sgt i32 %371, 0
br i1 %372, label %373, label %390
373: ; preds = %370
%374 = load i8*, i8** %9
%375 = load i32, i32* %12
%376 = sub nsw i32 %375, 1
%377 = load i32, i32* %11
%378 = load i32, i32* %10
%379 = add nsw i32 %378, 1
%380 = load i32, i32* %14
%381 = load i32, i32* %13
%382 = call i32 @gidz_general(i32 %376, i32 %377, i32 %379, i32 %380, i32 %381)
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds i8, i8* %374, i64 %383
%385 = load i8, i8* %384
%386 = sext i8 %385 to i32
%387 = icmp eq i32 %386, 1
br i1 %387, label %388, label %389
388: ; preds = %373
store i32 1, i32* %8
br label %578
389: ; preds = %373
br label %390
390: ; preds = %389, %370
%391 = load i32, i32* %12
%392 = add nsw i32 %391, 1
%393 = load i32, i32* %15
%394 = icmp slt i32 %392, %393
br i1 %394, label %395, label %412
395: ; preds = %390
%396 = load i8*, i8** %9
%397 = load i32, i32* %12
%398 = add nsw i32 %397, 1
%399 = load i32, i32* %11
%400 = load i32, i32* %10
%401 = add nsw i32 %400, 1
%402 = load i32, i32* %14
%403 = load i32, i32* %13
%404 = call i32 @gidz_general(i32 %398, i32 %399, i32 %401, i32 %402, i32 %403)
%405 = sext i32 %404 to i64
%406 = getelementptr inbounds i8, i8* %396, i64 %405
%407 = load i8, i8* %406
%408 = sext i8 %407 to i32
%409 = icmp eq i32 %408, 1
br i1 %409, label %410, label %411
410: ; preds = %395
store i32 1, i32* %8
br label %578
411: ; preds = %395
br label %412
412: ; preds = %411, %390
br label %413
413: ; preds = %412, %220
%414 = load i32, i32* %11
%415 = icmp sgt i32 %414, 0
br i1 %415, label %416, label %474
416: ; preds = %413
%417 = load i8*, i8** %9
%418 = load i32, i32* %12
%419 = load i32, i32* %11
%420 = sub nsw i32 %419, 1
%421 = load i32, i32* %10
%422 = load i32, i32* %14
%423 = load i32, i32* %13
%424 = call i32 @gidz_general(i32 %418, i32 %420, i32 %421, i32 %422, i32 %423)
%425 = sext i32 %424 to i64
%426 = getelementptr inbounds i8, i8* %417, i64 %425
%427 = load i8, i8* %426
%428 = sext i8 %427 to i32
%429 = icmp eq i32 %428, 1
br i1 %429, label %430, label %431
430: ; preds = %416
store i32 1, i32* %8
br label %578
431: ; preds = %416
%432 = load i32, i32* %12
%433 = icmp sgt i32 %432, 0
br i1 %433, label %434, label %451
434: ; preds = %431
%435 = load i8*, i8** %9
%436 = load i32, i32* %12
%437 = sub nsw i32 %436, 1
%438 = load i32, i32* %11
%439 = sub nsw i32 %438, 1
%440 = load i32, i32* %10
%441 = load i32, i32* %14
%442 = load i32, i32* %13
%443 = call i32 @gidz_general(i32 %437, i32 %439, i32 %440, i32 %441, i32 %442)
%444 = sext i32 %443 to i64
%445 = getelementptr inbounds i8, i8* %435, i64 %444
%446 = load i8, i8* %445
%447 = sext i8 %446 to i32
%448 = icmp eq i32 %447, 1
br i1 %448, label %449, label %450
449: ; preds = %434
store i32 1, i32* %8
br label %578
450: ; preds = %434
br label %451
451: ; preds = %450, %431
%452 = load i32, i32* %12
%453 = add nsw i32 %452, 1
%454 = load i32, i32* %15
%455 = icmp slt i32 %453, %454
br i1 %455, label %456, label %473
456: ; preds = %451
%457 = load i8*, i8** %9
%458 = load i32, i32* %12
%459 = add nsw i32 %458, 1
%460 = load i32, i32* %11
%461 = sub nsw i32 %460, 1
%462 = load i32, i32* %10
%463 = load i32, i32* %14
%464 = load i32, i32* %13
%465 = call i32 @gidz_general(i32 %459, i32 %461, i32 %462, i32 %463, i32 %464)
%466 = sext i32 %465 to i64
%467 = getelementptr inbounds i8, i8* %457, i64 %466
%468 = load i8, i8* %467
%469 = sext i8 %468 to i32
%470 = icmp eq i32 %469, 1
br i1 %470, label %471, label %472
471: ; preds = %456
store i32 1, i32* %8
br label %578
472: ; preds = %456
br label %473
473: ; preds = %472, %451
br label %474
474: ; preds = %473, %413
%475 = load i32, i32* %11
%476 = add nsw i32 %475, 1
%477 = load i32, i32* %14
%478 = icmp slt i32 %476, %477
br i1 %478, label %479, label %537
479: ; preds = %474
%480 = load i8*, i8** %9
%481 = load i32, i32* %12
%482 = load i32, i32* %11
%483 = add nsw i32 %482, 1
%484 = load i32, i32* %10
%485 = load i32, i32* %14
%486 = load i32, i32* %13
%487 = call i32 @gidz_general(i32 %481, i32 %483, i32 %484, i32 %485, i32 %486)
%488 = sext i32 %487 to i64
%489 = getelementptr inbounds i8, i8* %480, i64 %488
%490 = load i8, i8* %489
%491 = sext i8 %490 to i32
%492 = icmp eq i32 %491, 1
br i1 %492, label %493, label %494
493: ; preds = %479
store i32 1, i32* %8
br label %578
494: ; preds = %479
%495 = load i32, i32* %12
%496 = icmp sgt i32 %495, 0
br i1 %496, label %497, label %514
497: ; preds = %494
%498 = load i8*, i8** %9
%499 = load i32, i32* %12
%500 = sub nsw i32 %499, 1
%501 = load i32, i32* %11
%502 = add nsw i32 %501, 1
%503 = load i32, i32* %10
%504 = load i32, i32* %14
%505 = load i32, i32* %13
%506 = call i32 @gidz_general(i32 %500, i32 %502, i32 %503, i32 %504, i32 %505)
%507 = sext i32 %506 to i64
%508 = getelementptr inbounds i8, i8* %498, i64 %507
%509 = load i8, i8* %508
%510 = sext i8 %509 to i32
%511 = icmp eq i32 %510, 1
br i1 %511, label %512, label %513
512: ; preds = %497
store i32 1, i32* %8
br label %578
513: ; preds = %497
br label %514
514: ; preds = %513, %494
%515 = load i32, i32* %12
%516 = add nsw i32 %515, 1
%517 = load i32, i32* %15
%518 = icmp slt i32 %516, %517
br i1 %518, label %519, label %536
519: ; preds = %514
%520 = load i8*, i8** %9
%521 = load i32, i32* %12
%522 = add nsw i32 %521, 1
%523 = load i32, i32* %11
%524 = add nsw i32 %523, 1
%525 = load i32, i32* %10
%526 = load i32, i32* %14
%527 = load i32, i32* %13
%528 = call i32 @gidz_general(i32 %522, i32 %524, i32 %525, i32 %526, i32 %527)
%529 = sext i32 %528 to i64
%530 = getelementptr inbounds i8, i8* %520, i64 %529
%531 = load i8, i8* %530
%532 = sext i8 %531 to i32
%533 = icmp eq i32 %532, 1
br i1 %533, label %534, label %535
534: ; preds = %519
store i32 1, i32* %8
br label %578
535: ; preds = %519
br label %536
536: ; preds = %535, %514
br label %537
537: ; preds = %536, %474
%538 = load i32, i32* %12
%539 = icmp sgt i32 %538, 0
br i1 %539, label %540, label %556
540: ; preds = %537
%541 = load i8*, i8** %9
%542 = load i32, i32* %12
%543 = sub nsw i32 %542, 1
%544 = load i32, i32* %11
%545 = load i32, i32* %10
%546 = load i32, i32* %14
%547 = load i32, i32* %13
%548 = call i32 @gidz_general(i32 %543, i32 %544, i32 %545, i32 %546, i32 %547)
%549 = sext i32 %548 to i64
%550 = getelementptr inbounds i8, i8* %541, i64 %549
%551 = load i8, i8* %550
%552 = sext i8 %551 to i32
%553 = icmp eq i32 %552, 1
br i1 %553, label %554, label %555
554: ; preds = %540
store i32 1, i32* %8
br label %578
555: ; preds = %540
br label %556
556: ; preds = %555, %537
%557 = load i32, i32* %12
%558 = add nsw i32 %557, 1
%559 = load i32, i32* %15
%560 = icmp slt i32 %558, %559
br i1 %560, label %561, label %577
561: ; preds = %556
%562 = load i8*, i8** %9
%563 = load i32, i32* %12
%564 = add nsw i32 %563, 1
%565 = load i32, i32* %11
%566 = load i32, i32* %10
%567 = load i32, i32* %14
%568 = load i32, i32* %13
%569 = call i32 @gidz_general(i32 %564, i32 %565, i32 %566, i32 %567, i32 %568)
%570 = sext i32 %569 to i64
%571 = getelementptr inbounds i8, i8* %562, i64 %570
%572 = load i8, i8* %571
%573 = sext i8 %572 to i32
%574 = icmp eq i32 %573, 1
br i1 %574, label %575, label %576
575: ; preds = %561
store i32 1, i32* %8
br label %578
576: ; preds = %561
br label %577
577: ; preds = %576, %556
store i32 0, i32* %8
br label %578
578: ; preds = %577, %575, %554, %534, %512, %493, %471, %449, %430, %410, %388, %367, %344, %324, %301, %278, %258, %239, %217, %195, %174, %151, %131, %108, %85, %65, %46, %28
%579 = load i32, i32* %8
ret i32 %579
}

LLVM IR (-O2):
define i32 @neighbor(i8* %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6) {
%8 = tail call i32 @gidz_general(i32 %3, i32 %2, i32 %1, i32 %5, i32 %4)
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds i8, i8* %0, i64 %9
%11 = load i8, i8* %10
%12 = icmp eq i8 %11, 1
br i1 %12, label %248, label %13
13: ; preds = %7
%14 = icmp sgt i32 %1, 0
br i1 %14, label %15, label %94
15: ; preds = %13
%16 = add nsw i32 %1, -1
%17 = tail call i32 @gidz_general(i32 %3, i32 %2, i32 %16, i32 %5, i32 %4)
%18 = sext i32 %17 to i64
%19 = getelementptr inbounds i8, i8* %0, i64 %18
%20 = load i8, i8* %19
%21 = icmp eq i8 %20, 1
br i1 %21, label %248, label %22
22: ; preds = %15
%23 = icmp sgt i32 %2, 0
br i1 %23, label %24, label %49
24: ; preds = %22
%25 = add nsw i32 %2, -1
%26 = tail call i32 @gidz_general(i32 %3, i32 %25, i32 %16, i32 %5, i32 %4)
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i8, i8* %0, i64 %27
%29 = load i8, i8* %28
%30 = icmp eq i8 %29, 1
br i1 %30, label %248, label %31
31: ; preds = %24
%32 = icmp sgt i32 %3, 0
br i1 %32, label %33, label %40
33: ; preds = %31
%34 = add nsw i32 %3, -1
%35 = tail call i32 @gidz_general(i32 %34, i32 %25, i32 %16, i32 %5, i32 %4)
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i8, i8* %0, i64 %36
%38 = load i8, i8* %37
%39 = icmp eq i8 %38, 1
br i1 %39, label %248, label %40
40: ; preds = %33, %31
%41 = add nsw i32 %3, 1
%42 = icmp slt i32 %41, %6
br i1 %42, label %43, label %49
43: ; preds = %40
%44 = tail call i32 @gidz_general(i32 %41, i32 %25, i32 %16, i32 %5, i32 %4)
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i8, i8* %0, i64 %45
%47 = load i8, i8* %46
%48 = icmp eq i8 %47, 1
br i1 %48, label %248, label %49
49: ; preds = %40, %43, %22
%50 = add nsw i32 %2, 1
%51 = icmp slt i32 %50, %5
br i1 %51, label %52, label %76
52: ; preds = %49
%53 = tail call i32 @gidz_general(i32 %3, i32 %50, i32 %16, i32 %5, i32 %4)
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i8, i8* %0, i64 %54
%56 = load i8, i8* %55
%57 = icmp eq i8 %56, 1
br i1 %57, label %248, label %58
58: ; preds = %52
%59 = icmp sgt i32 %3, 0
br i1 %59, label %60, label %67
60: ; preds = %58
%61 = add nsw i32 %3, -1
%62 = tail call i32 @gidz_general(i32 %61, i32 %50, i32 %16, i32 %5, i32 %4)
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds i8, i8* %0, i64 %63
%65 = load i8, i8* %64
%66 = icmp eq i8 %65, 1
br i1 %66, label %248, label %67
67: ; preds = %60, %58
%68 = add nsw i32 %3, 1
%69 = icmp slt i32 %68, %6
br i1 %69, label %70, label %76
70: ; preds = %67
%71 = tail call i32 @gidz_general(i32 %68, i32 %50, i32 %16, i32 %5, i32 %4)
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds i8, i8* %0, i64 %72
%74 = load i8, i8* %73
%75 = icmp eq i8 %74, 1
br i1 %75, label %248, label %76
76: ; preds = %67, %70, %49
%77 = icmp sgt i32 %3, 0
br i1 %77, label %78, label %85
78: ; preds = %76
%79 = add nsw i32 %3, -1
%80 = tail call i32 @gidz_general(i32 %79, i32 %2, i32 %16, i32 %5, i32 %4)
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds i8, i8* %0, i64 %81
%83 = load i8, i8* %82
%84 = icmp eq i8 %83, 1
br i1 %84, label %248, label %85
85: ; preds = %78, %76
%86 = add nsw i32 %3, 1
%87 = icmp slt i32 %86, %6
br i1 %87, label %88, label %94
88: ; preds = %85
%89 = tail call i32 @gidz_general(i32 %86, i32 %2, i32 %16, i32 %5, i32 %4)
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds i8, i8* %0, i64 %90
%92 = load i8, i8* %91
%93 = icmp eq i8 %92, 1
br i1 %93, label %248, label %94
94: ; preds = %85, %88, %13
%95 = add nsw i32 %1, 1
%96 = icmp slt i32 %95, %4
br i1 %96, label %97, label %175
97: ; preds = %94
%98 = tail call i32 @gidz_general(i32 %3, i32 %2, i32 %95, i32 %5, i32 %4)
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds i8, i8* %0, i64 %99
%101 = load i8, i8* %100
%102 = icmp eq i8 %101, 1
br i1 %102, label %248, label %103
103: ; preds = %97
%104 = icmp sgt i32 %2, 0
br i1 %104, label %105, label %130
105: ; preds = %103
%106 = add nsw i32 %2, -1
%107 = tail call i32 @gidz_general(i32 %3, i32 %106, i32 %95, i32 %5, i32 %4)
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds i8, i8* %0, i64 %108
%110 = load i8, i8* %109
%111 = icmp eq i8 %110, 1
br i1 %111, label %248, label %112
112: ; preds = %105
%113 = icmp sgt i32 %3, 0
br i1 %113, label %114, label %121
114: ; preds = %112
%115 = add nsw i32 %3, -1
%116 = tail call i32 @gidz_general(i32 %115, i32 %106, i32 %95, i32 %5, i32 %4)
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds i8, i8* %0, i64 %117
%119 = load i8, i8* %118
%120 = icmp eq i8 %119, 1
br i1 %120, label %248, label %121
121: ; preds = %114, %112
%122 = add nsw i32 %3, 1
%123 = icmp slt i32 %122, %6
br i1 %123, label %124, label %130
124: ; preds = %121
%125 = tail call i32 @gidz_general(i32 %122, i32 %106, i32 %95, i32 %5, i32 %4)
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds i8, i8* %0, i64 %126
%128 = load i8, i8* %127
%129 = icmp eq i8 %128, 1
br i1 %129, label %248, label %130
130: ; preds = %121, %124, %103
%131 = add nsw i32 %2, 1
%132 = icmp slt i32 %131, %5
br i1 %132, label %133, label %157
133: ; preds = %130
%134 = tail call i32 @gidz_general(i32 %3, i32 %131, i32 %95, i32 %5, i32 %4)
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds i8, i8* %0, i64 %135
%137 = load i8, i8* %136
%138 = icmp eq i8 %137, 1
br i1 %138, label %248, label %139
139: ; preds = %133
%140 = icmp sgt i32 %3, 0
br i1 %140, label %141, label %148
141: ; preds = %139
%142 = add nsw i32 %3, -1
%143 = tail call i32 @gidz_general(i32 %142, i32 %131, i32 %95, i32 %5, i32 %4)
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds i8, i8* %0, i64 %144
%146 = load i8, i8* %145
%147 = icmp eq i8 %146, 1
br i1 %147, label %248, label %148
148: ; preds = %141, %139
%149 = add nsw i32 %3, 1
%150 = icmp slt i32 %149, %6
br i1 %150, label %151, label %157
151: ; preds = %148
%152 = tail call i32 @gidz_general(i32 %149, i32 %131, i32 %95, i32 %5, i32 %4)
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds i8, i8* %0, i64 %153
%155 = load i8, i8* %154
%156 = icmp eq i8 %155, 1
br i1 %156, label %248, label %157
157: ; preds = %148, %151, %130
%158 = icmp sgt i32 %3, 0
br i1 %158, label %159, label %166
159: ; preds = %157
%160 = add nsw i32 %3, -1
%161 = tail call i32 @gidz_general(i32 %160, i32 %2, i32 %95, i32 %5, i32 %4)
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds i8, i8* %0, i64 %162
%164 = load i8, i8* %163
%165 = icmp eq i8 %164, 1
br i1 %165, label %248, label %166
166: ; preds = %159, %157
%167 = add nsw i32 %3, 1
%168 = icmp slt i32 %167, %6
br i1 %168, label %169, label %175
169: ; preds = %166
%170 = tail call i32 @gidz_general(i32 %167, i32 %2, i32 %95, i32 %5, i32 %4)
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds i8, i8* %0, i64 %171
%173 = load i8, i8* %172
%174 = icmp eq i8 %173, 1
br i1 %174, label %248, label %175
175: ; preds = %166, %169, %94
%176 = icmp sgt i32 %2, 0
br i1 %176, label %177, label %202
177: ; preds = %175
%178 = add nsw i32 %2, -1
%179 = tail call i32 @gidz_general(i32 %3, i32 %178, i32 %1, i32 %5, i32 %4)
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds i8, i8* %0, i64 %180
%182 = load i8, i8* %181
%183 = icmp eq i8 %182, 1
br i1 %183, label %248, label %184
184: ; preds = %177
%185 = icmp sgt i32 %3, 0
br i1 %185, label %186, label %193
186: ; preds = %184
%187 = add nsw i32 %3, -1
%188 = tail call i32 @gidz_general(i32 %187, i32 %178, i32 %1, i32 %5, i32 %4)
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds i8, i8* %0, i64 %189
%191 = load i8, i8* %190
%192 = icmp eq i8 %191, 1
br i1 %192, label %248, label %193
193: ; preds = %186, %184
%194 = add nsw i32 %3, 1
%195 = icmp slt i32 %194, %6
br i1 %195, label %196, label %202
196: ; preds = %193
%197 = tail call i32 @gidz_general(i32 %194, i32 %178, i32 %1, i32 %5, i32 %4)
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds i8, i8* %0, i64 %198
%200 = load i8, i8* %199
%201 = icmp eq i8 %200, 1
br i1 %201, label %248, label %202
202: ; preds = %193, %196, %175
%203 = add nsw i32 %2, 1
%204 = icmp slt i32 %203, %5
br i1 %204, label %205, label %229
205: ; preds = %202
%206 = tail call i32 @gidz_general(i32 %3, i32 %203, i32 %1, i32 %5, i32 %4)
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds i8, i8* %0, i64 %207
%209 = load i8, i8* %208
%210 = icmp eq i8 %209, 1
br i1 %210, label %248, label %211
211: ; preds = %205
%212 = icmp sgt i32 %3, 0
br i1 %212, label %213, label %220
213: ; preds = %211
%214 = add nsw i32 %3, -1
%215 = tail call i32 @gidz_general(i32 %214, i32 %203, i32 %1, i32 %5, i32 %4)
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds i8, i8* %0, i64 %216
%218 = load i8, i8* %217
%219 = icmp eq i8 %218, 1
br i1 %219, label %248, label %220
220: ; preds = %213, %211
%221 = add nsw i32 %3, 1
%222 = icmp slt i32 %221, %6
br i1 %222, label %223, label %229
223: ; preds = %220
%224 = tail call i32 @gidz_general(i32 %221, i32 %203, i32 %1, i32 %5, i32 %4)
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i8, i8* %0, i64 %225
%227 = load i8, i8* %226
%228 = icmp eq i8 %227, 1
br i1 %228, label %248, label %229
229: ; preds = %220, %223, %202
%230 = icmp sgt i32 %3, 0
br i1 %230, label %231, label %238
231: ; preds = %229
%232 = add nsw i32 %3, -1
%233 = tail call i32 @gidz_general(i32 %232, i32 %2, i32 %1, i32 %5, i32 %4)
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds i8, i8* %0, i64 %234
%236 = load i8, i8* %235
%237 = icmp eq i8 %236, 1
br i1 %237, label %248, label %238
238: ; preds = %231, %229
%239 = add nsw i32 %3, 1
%240 = icmp slt i32 %239, %6
br i1 %240, label %241, label %247
241: ; preds = %238
%242 = tail call i32 @gidz_general(i32 %239, i32 %2, i32 %1, i32 %5, i32 %4)
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds i8, i8* %0, i64 %243
%245 = load i8, i8* %244
%246 = icmp eq i8 %245, 1
br i1 %246, label %248, label %247
247: ; preds = %241, %238
br label %248
248: ; preds = %241, %231, %223, %213, %205, %196, %186, %177, %169, %159, %151, %141, %133, %124, %114, %105, %97, %88, %78, %70, %60, %52, %43, %33, %24, %15, %7, %247
%249 = phi i32 [ 0, %247 ], [ 0, %7 ], [ 1, %15 ], [ 1, %24 ], [ 1, %33 ], [ 1, %43 ], [ 1, %52 ], [ 1, %60 ], [ 1, %70 ], [ 1, %78 ], [ 1, %88 ], [ 1, %97 ], [ 1, %105 ], [ 1, %114 ], [ 1, %124 ], [ 1, %133 ], [ 1, %141 ], [ 1, %151 ], [ 1, %159 ], [ 1, %169 ], [ 1, %177 ], [ 1, %186 ], [ 1, %196 ], [ 1, %205 ], [ 1, %213 ], [ 1, %223 ], [ 1, %231 ], [ 1, %241 ]
ret i32 %249
}