void test(int M, int N, int O, int P, int Q, int R) {
  int c2, c4, c6;
  int i, j, k;
  if ((M >= 4) && (N >= 4)) {
    for (c2 = 2; c2 <= O - 1; c2++) {
      for (c6 = 2; c6 <= M; c6++) {
        {
          hash(1);
          hash(c2);
          hash(2);
          hash(c6);
        };
      }
      for (c4 = 3; c4 <= N - 1; c4++) {
        for (c6 = 2; c6 <= M; c6++) {
          j = c4 - 1;
          {
            hash(2);
            hash(c2);
            hash(c4 - 1);
            hash(c6);
          };
        }
        j = c4 - 1;
        {
          hash(4);
          hash(c2);
          hash(c4 - 1);
          hash(2);
        };
        for (c6 = 2; c6 <= M - 2; c6++) {
          j = c4 - 1;
          {
            hash(3);
            hash(c2);
            hash(c4 - 1);
            hash(c6);
          };
          j = c4 - 1;
          {
            hash(5);
            hash(c2);
            hash(c4 - 1);
            hash(c6);
          };
          j = c4 - 1;
          k = c6 + 1;
          {
            hash(4);
            hash(c2);
            hash(c4 - 1);
            hash(c6 + 1);
          };
        }
        c6 = M - 1;
        j = c4 - 1;
        k = M - 1;
        {
          hash(3);
          hash(c2);
          hash(c4 - 1);
          hash(M - 1);
        };
        j = c4 - 1;
        k = M - 1;
        {
          hash(5);
          hash(c2);
          hash(c4 - 1);
          hash(M - 1);
        };
        for (c6 = 2; c6 <= M; c6++) {
          {
            hash(1);
            hash(c2);
            hash(c4);
            hash(c6);
          };
        }
      }
      for (c6 = 2; c6 <= M; c6++) {
        j = N - 1;
        {
          hash(2);
          hash(c2);
          hash(N - 1);
          hash(c6);
        };
      }
      j = N - 1;
      {
        hash(4);
        hash(c2);
        hash(N - 1);
        hash(2);
      };
      for (c6 = 2; c6 <= M - 2; c6++) {
        j = N - 1;
        {
          hash(3);
          hash(c2);
          hash(N - 1);
          hash(c6);
        };
        j = N - 1;
        {
          hash(5);
          hash(c2);
          hash(N - 1);
          hash(c6);
        };
        j = N - 1;
        k = c6 + 1;
        {
          hash(4);
          hash(c2);
          hash(N - 1);
          hash(c6 + 1);
        };
      }
      c6 = M - 1;
      j = N - 1;
      k = M - 1;
      {
        hash(3);
        hash(c2);
        hash(N - 1);
        hash(M - 1);
      };
      j = N - 1;
      k = M - 1;
      {
        hash(5);
        hash(c2);
        hash(N - 1);
        hash(M - 1);
      };
    }
  }
  if ((M >= 4) && (N == 3)) {
    for (c2 = 2; c2 <= O - 1; c2++) {
      for (c6 = 2; c6 <= M; c6++) {
        {
          hash(1);
          hash(c2);
          hash(2);
          hash(c6);
        };
      }
      for (c6 = 2; c6 <= M; c6++) {
        {
          hash(2);
          hash(c2);
          hash(2);
          hash(c6);
        };
      }
      {
        hash(4);
        hash(c2);
        hash(2);
        hash(2);
      };
      for (c6 = 2; c6 <= M - 2; c6++) {
        {
          hash(3);
          hash(c2);
          hash(2);
          hash(c6);
        };
        {
          hash(5);
          hash(c2);
          hash(2);
          hash(c6);
        };
        k = c6 + 1;
        {
          hash(4);
          hash(c2);
          hash(2);
          hash(c6 + 1);
        };
      }
      c6 = M - 1;
      k = M - 1;
      {
        hash(3);
        hash(c2);
        hash(2);
        hash(M - 1);
      };
      k = M - 1;
      {
        hash(5);
        hash(c2);
        hash(2);
        hash(M - 1);
      };
    }
  }
  if ((M == 3) && (N == 3)) {
    for (c2 = 2; c2 <= O - 1; c2++) {
      for (c6 = 2; c6 <= 3; c6++) {
        {
          hash(1);
          hash(c2);
          hash(2);
          hash(c6);
        };
      }
      for (c6 = 2; c6 <= 3; c6++) {
        {
          hash(2);
          hash(c2);
          hash(2);
          hash(c6);
        };
      }
      {
        hash(4);
        hash(c2);
        hash(2);
        hash(2);
      };
      {
        hash(3);
        hash(c2);
        hash(2);
        hash(2);
      };
      {
        hash(5);
        hash(c2);
        hash(2);
        hash(2);
      };
    }
  }
  if ((M == 3) && (N >= 4)) {
    for (c2 = 2; c2 <= O - 1; c2++) {
      for (c6 = 2; c6 <= 3; c6++) {
        {
          hash(1);
          hash(c2);
          hash(2);
          hash(c6);
        };
      }
      for (c4 = 3; c4 <= N - 1; c4++) {
        for (c6 = 2; c6 <= 3; c6++) {
          j = c4 - 1;
          {
            hash(2);
            hash(c2);
            hash(c4 - 1);
            hash(c6);
          };
        }
        j = c4 - 1;
        {
          hash(4);
          hash(c2);
          hash(c4 - 1);
          hash(2);
        };
        j = c4 - 1;
        {
          hash(3);
          hash(c2);
          hash(c4 - 1);
          hash(2);
        };
        j = c4 - 1;
        {
          hash(5);
          hash(c2);
          hash(c4 - 1);
          hash(2);
        };
        for (c6 = 2; c6 <= 3; c6++) {
          {
            hash(1);
            hash(c2);
            hash(c4);
            hash(c6);
          };
        }
      }
      for (c6 = 2; c6 <= 3; c6++) {
        j = N - 1;
        {
          hash(2);
          hash(c2);
          hash(N - 1);
          hash(c6);
        };
      }
      j = N - 1;
      {
        hash(4);
        hash(c2);
        hash(N - 1);
        hash(2);
      };
      j = N - 1;
      {
        hash(3);
        hash(c2);
        hash(N - 1);
        hash(2);
      };
      j = N - 1;
      {
        hash(5);
        hash(c2);
        hash(N - 1);
        hash(2);
      };
    }
  }
  if ((M == 2) && (N >= 4)) {
    for (c2 = 2; c2 <= O - 1; c2++) {
      {
        hash(1);
        hash(c2);
        hash(2);
        hash(2);
      };
      for (c4 = 3; c4 <= N - 1; c4++) {
        j = c4 - 1;
        {
          hash(2);
          hash(c2);
          hash(c4 - 1);
          hash(2);
        };
        {
          hash(1);
          hash(c2);
          hash(c4);
          hash(2);
        };
      }
      j = N - 1;
      {
        hash(2);
        hash(c2);
        hash(N - 1);
        hash(2);
      };
    }
  }
  if ((M == 2) && (N == 3)) {
    for (c2 = 2; c2 <= O - 1; c2++) {
      {
        hash(1);
        hash(c2);
        hash(2);
        hash(2);
      };
      {
        hash(2);
        hash(c2);
        hash(2);
        hash(2);
      };
    }
  }
}


x86 assembly (clang, -O0):
<test>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8d,-0x14(%rbp)
mov    %r9d,-0x18(%rbp)
cmpl   $0x4,-0x4(%rbp)
jl     160e <test+0x4fe>
cmpl   $0x4,-0x8(%rbp)
jl     160e <test+0x4fe>
movl   $0x2,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1609 <test+0x4f9>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jg     11a5 <test+0x95>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    115f <test+0x4f>
movl   $0x3,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     140b <test+0x2fb>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jg     1214 <test+0x104>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11c4 <test+0xb4>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jg     1320 <test+0x210>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
add    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1253 <test+0x143>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jg     13f8 <test+0x2e8>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    13b4 <test+0x2a4>
jmp    13fd <test+0x2ed>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11ac <test+0x9c>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jg     1462 <test+0x352>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1412 <test+0x302>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jg     156e <test+0x45e>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
add    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    14a1 <test+0x391>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1147 <test+0x37>
jmp    160e <test+0x4fe>
cmpl   $0x4,-0x4(%rbp)
jl     1844 <test+0x734>
cmpl   $0x3,-0x8(%rbp)
jne    1844 <test+0x734>
movl   $0x2,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     183f <test+0x72f>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jg     1687 <test+0x577>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1641 <test+0x531>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jg     16d4 <test+0x5c4>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    168e <test+0x57e>
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jg     17b8 <test+0x6a8>
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
add    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1709 <test+0x5f9>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1629 <test+0x519>
jmp    1844 <test+0x734>
cmpl   $0x3,-0x4(%rbp)
jne    19a3 <test+0x893>
cmpl   $0x3,-0x8(%rbp)
jne    19a3 <test+0x893>
movl   $0x2,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     199e <test+0x88e>
movl   $0x2,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     18bb <test+0x7ab>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1877 <test+0x767>
movl   $0x2,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     1906 <test+0x7f6>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    18c2 <test+0x7b2>
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    185f <test+0x74f>
jmp    19a3 <test+0x893>
cmpl   $0x3,-0x4(%rbp)
jne    1c9b <test+0xb8b>
cmpl   $0x4,-0x8(%rbp)
jl     1c9b <test+0xb8b>
movl   $0x2,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1c96 <test+0xb86>
movl   $0x2,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     1a1a <test+0x90a>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    19d6 <test+0x8c6>
movl   $0x3,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1b8b <test+0xa7b>
movl   $0x2,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     1a87 <test+0x977>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1a39 <test+0x929>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x2,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     1b78 <test+0xa68>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1b36 <test+0xa26>
jmp    1b7d <test+0xa6d>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1a21 <test+0x911>
movl   $0x2,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     1be0 <test+0xad0>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1b92 <test+0xa82>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    19be <test+0x8ae>
jmp    1c9b <test+0xb8b>
cmpl   $0x2,-0x4(%rbp)
jne    1dca <test+0xcba>
cmpl   $0x4,-0x8(%rbp)
jl     1dca <test+0xcba>
movl   $0x2,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1dc5 <test+0xcb5>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x3,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1d7f <test+0xc6f>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1cfc <test+0xbec>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1cb6 <test+0xba6>
jmp    1dca <test+0xcba>
cmpl   $0x2,-0x4(%rbp)
jne    1e65 <test+0xd55>
cmpl   $0x3,-0x8(%rbp)
jne    1e65 <test+0xd55>
movl   $0x2,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1e60 <test+0xd50>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1de5 <test+0xcd5>
jmp    1e65 <test+0xd55>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %edx,0xc(%rsp)
mov    %esi,%r13d
mov    %edi,%r15d
cmp    $0x4,%edi
mov    %r15,0x10(%rsp)
jl     153f <test+0x42f>
cmp    $0x4,%r13d
jl     153f <test+0x42f>
cmpl   $0x3,0xc(%rsp)
jl     153f <test+0x42f>
lea    -0x1(%r15),%eax
mov    %eax,0x20(%rsp)
lea    -0x1(%r13),%r12d
neg    %r15d
mov    %r15,0x18(%rsp)
mov    $0x2,%r14d
mov    %r13,0x28(%rsp)
mov    %r12d,0x24(%rsp)
nop
mov    $0x2,%ebp
mov    0x18(%rsp),%rbx
nopw   0x0(%rax,%rax,1)
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    (%rbx,%rbp,1),%eax
add    $0x1,%eax
mov    %ebp,%ecx
add    $0x1,%ecx
mov    %ecx,%ebp
cmp    $0x1,%eax
jne    1180 <test+0x70>
mov    $0x3,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %rbx,0x30(%rsp)
lea    -0x1(%rbx),%r15d
mov    $0x2,%ebp
mov    0x18(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    (%rbx,%rbp,1),%eax
add    $0x1,%eax
mov    %ebp,%ecx
add    $0x1,%ecx
mov    %ecx,%ebp
cmp    $0x1,%eax
jne    11f0 <test+0xe0>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%ebp
mov    0x10(%rsp),%r12
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbp),%r13d
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%r12d
jne    1270 <test+0x160>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    0x20(%rsp),%ebp
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%ebp
mov    0x24(%rsp),%r12d
mov    0x18(%rsp),%r15
mov    0x30(%rsp),%rbx
nopw   0x0(%rax,%rax,1)
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    (%r15,%rbp,1),%eax
add    $0x1,%eax
mov    %ebp,%ecx
add    $0x1,%ecx
mov    %ecx,%ebp
cmp    $0x1,%eax
jne    1370 <test+0x260>
add    $0x1,%ebx
mov    0x28(%rsp),%r13
cmp    %r13d,%ebx
jne    11d0 <test+0xc0>
mov    $0x2,%ebp
mov    0x18(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    (%rbx,%rbp,1),%eax
add    $0x1,%eax
mov    %ebp,%ecx
add    $0x1,%ecx
mov    %ecx,%ebp
cmp    $0x1,%eax
jne    13d0 <test+0x2c0>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%ebp
mov    0x10(%rsp),%r15
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbp),%ebx
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%r15d
jne    1450 <test+0x340>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    0x20(%rsp),%ebp
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%r14d
cmp    0xc(%rsp),%r14d
jne    1170 <test+0x60>
cmp    $0x4,%r15d
jl     1759 <test+0x649>
cmp    $0x3,%r13d
jne    1759 <test+0x649>
cmpl   $0x3,0xc(%rsp)
jl     1759 <test+0x649>
mov    0x10(%rsp),%r12
lea    -0x1(%r12),%eax
mov    %eax,0x18(%rsp)
neg    %r12d
mov    $0x2,%r15d
mov    0x10(%rsp),%r14
nopw   0x0(%rax,%rax,1)
mov    $0x2,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    (%r12,%rbx,1),%eax
add    $0x1,%eax
mov    %ebx,%ecx
add    $0x1,%ecx
mov    %ecx,%ebx
cmp    $0x1,%eax
jne    1590 <test+0x480>
mov    $0x2,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    (%r12,%rbx,1),%eax
add    $0x1,%eax
mov    %ebx,%ecx
add    $0x1,%ecx
mov    %ecx,%ebx
cmp    $0x1,%eax
jne    15e0 <test+0x4d0>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbp),%ebx
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%r14d
jne    1660 <test+0x550>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    0x18(%rsp),%ebx
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%r15d
cmp    0xc(%rsp),%r15d
jne    1580 <test+0x470>
mov    0x10(%rsp),%rbp
cmp    $0x3,%ebp
mov    0xc(%rsp),%r12d
jne    18d7 <test+0x7c7>
cmp    $0x3,%r13d
jne    18d7 <test+0x7c7>
cmp    $0x3,%r12d
jl     18d7 <test+0x7c7>
mov    $0x2,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebx
cmp    %ebx,%r12d
jne    1790 <test+0x680>
cmp    $0x3,%ebp
jne    1b95 <test+0xa85>
cmp    $0x4,%r13d
jl     1b95 <test+0xa85>
cmp    $0x3,%r12d
jl     1b95 <test+0xa85>
lea    -0x1(%r13),%r15d
mov    $0x2,%r14d
xchg   %ax,%ax
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbx),%ebp
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebx
cmp    %ebx,%r13d
jne    1970 <test+0x860>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%r14d
cmp    %r12d,%r14d
jne    1900 <test+0x7f0>
mov    0x10(%rsp),%r15
cmp    $0x2,%r15d
jne    1ca4 <test+0xb94>
cmp    $0x4,%r13d
jl     1ca4 <test+0xb94>
cmp    $0x3,%r12d
jl     1ca4 <test+0xb94>
lea    -0x1(%r13),%r14d
mov    $0x2,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x3,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    -0x1(%rbp),%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%r13d
jne    1c10 <test+0xb00>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebx
cmp    %r12d,%ebx
jne    1bd0 <test+0xac0>
cmp    $0x2,%r15d
jne    1d22 <test+0xc12>
cmp    $0x3,%r13d
jne    1d22 <test+0xc12>
cmp    $0x3,%r12d
jl     1d22 <test+0xc12>
mov    $0x2,%ebx
nopl   0x0(%rax,%rax,1)
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebx
cmp    %ebx,%r12d
jne    1cc0 <test+0xbb0>
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @test(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
%7 = icmp sgt i32 %0, 3
%8 = icmp sgt i32 %1, 3
%9 = and i1 %7, %8
%10 = icmp sgt i32 %2, 2
%11 = and i1 %9, %10
br i1 %11, label %12, label %117
12: ; preds = %6
%13 = add nsw i32 %0, -1
%14 = add nsw i32 %1, -1
br label %15
15: ; preds = %106, %12
%16 = phi i32 [ 2, %12 ], [ %115, %106 ]
br label %17
17: ; preds = %15, %17
%18 = phi i32 [ %23, %17 ], [ 2, %15 ]
%19 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%20 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%21 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%22 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %18)
%23 = add nuw i32 %18, 1
%24 = icmp eq i32 %18, %0
br i1 %24, label %25, label %17
25: ; preds = %17, %74
%26 = phi i32 [ %75, %74 ], [ 3, %17 ]
%27 = add nsw i32 %26, -1
br label %28
28: ; preds = %25, %28
%29 = phi i32 [ 2, %25 ], [ %34, %28 ]
%30 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%31 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%32 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %27)
%33 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %29)
%34 = add nuw i32 %29, 1
%35 = icmp eq i32 %29, %0
br i1 %35, label %36, label %28
36: ; preds = %28
%37 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%38 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%39 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %27)
%40 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
br label %41
41: ; preds = %36, %41
%42 = phi i32 [ %54, %41 ], [ 2, %36 ]
%43 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%44 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%45 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %27)
%46 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %42)
%47 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%48 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%49 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %27)
%50 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %42)
%51 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%52 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%53 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %27)
%54 = add nuw i32 %42, 1
%55 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %54)
%56 = icmp eq i32 %54, %13
br i1 %56, label %57, label %41
57: ; preds = %41
%58 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%59 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%60 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %27)
%61 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %13)
%62 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%63 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%64 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %27)
%65 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %13)
br label %66
66: ; preds = %57, %66
%67 = phi i32 [ %72, %66 ], [ 2, %57 ]
%68 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%69 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%70 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %26)
%71 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %67)
%72 = add nuw i32 %67, 1
%73 = icmp eq i32 %67, %0
br i1 %73, label %74, label %66
74: ; preds = %66
%75 = add nuw nsw i32 %26, 1
%76 = icmp eq i32 %75, %1
br i1 %76, label %77, label %25
77: ; preds = %74, %77
%78 = phi i32 [ %83, %77 ], [ 2, %74 ]
%79 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%80 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%81 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %14)
%82 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %78)
%83 = add nuw i32 %78, 1
%84 = icmp eq i32 %78, %0
br i1 %84, label %85, label %77
85: ; preds = %77
%86 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%87 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%88 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %14)
%89 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
br label %90
90: ; preds = %85, %90
%91 = phi i32 [ %103, %90 ], [ 2, %85 ]
%92 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%93 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%94 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %14)
%95 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %91)
%96 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%97 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%98 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %14)
%99 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %91)
%100 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%101 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%102 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %14)
%103 = add nuw i32 %91, 1
%104 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %103)
%105 = icmp eq i32 %103, %13
br i1 %105, label %106, label %90
106: ; preds = %90
%107 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%108 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%109 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %14)
%110 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %13)
%111 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%112 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %16)
%113 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %14)
%114 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %13)
%115 = add nuw nsw i32 %16, 1
%116 = icmp eq i32 %115, %2
br i1 %116, label %117, label %15
117: ; preds = %106, %6
%118 = icmp eq i32 %1, 3
%119 = and i1 %7, %118
%120 = and i1 %119, %10
br i1 %120, label %121, label %173
121: ; preds = %117
%122 = add nsw i32 %0, -1
br label %123
123: ; preds = %162, %121
%124 = phi i32 [ 2, %121 ], [ %171, %162 ]
br label %125
125: ; preds = %123, %125
%126 = phi i32 [ %131, %125 ], [ 2, %123 ]
%127 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%128 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %124)
%129 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%130 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %126)
%131 = add nuw i32 %126, 1
%132 = icmp eq i32 %126, %0
br i1 %132, label %133, label %125
133: ; preds = %125, %133
%134 = phi i32 [ %139, %133 ], [ 2, %125 ]
%135 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%136 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %124)
%137 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%138 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %134)
%139 = add nuw i32 %134, 1
%140 = icmp eq i32 %134, %0
br i1 %140, label %141, label %133
141: ; preds = %133
%142 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%143 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %124)
%144 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%145 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
br label %146
146: ; preds = %141, %146
%147 = phi i32 [ %159, %146 ], [ 2, %141 ]
%148 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%149 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %124)
%150 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%151 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %147)
%152 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%153 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %124)
%154 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%155 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %147)
%156 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%157 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %124)
%158 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%159 = add nuw i32 %147, 1
%160 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %159)
%161 = icmp eq i32 %159, %122
br i1 %161, label %162, label %146
162: ; preds = %146
%163 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%164 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %124)
%165 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%166 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %122)
%167 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%168 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %124)
%169 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%170 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %122)
%171 = add nuw nsw i32 %124, 1
%172 = icmp eq i32 %171, %2
br i1 %172, label %173, label %123
173: ; preds = %162, %117
%174 = icmp eq i32 %0, 3
%175 = and i1 %174, %118
%176 = and i1 %175, %10
br i1 %176, label %177, label %209
177: ; preds = %173, %177
%178 = phi i32 [ %207, %177 ], [ 2, %173 ]
%179 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%180 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %178)
%181 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%182 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%183 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%184 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %178)
%185 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%186 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%187 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%188 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %178)
%189 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%190 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%191 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%192 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %178)
%193 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%194 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%195 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%196 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %178)
%197 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%198 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%199 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%200 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %178)
%201 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%202 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%203 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%204 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %178)
%205 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%206 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%207 = add nuw nsw i32 %178, 1
%208 = icmp eq i32 %207, %2
br i1 %208, label %209, label %177
209: ; preds = %177, %173
%210 = and i1 %174, %8
%211 = and i1 %210, %10
br i1 %211, label %212, label %280
212: ; preds = %209
%213 = add nsw i32 %1, -1
br label %214
214: ; preds = %224, %212
%215 = phi i32 [ 2, %212 ], [ %245, %224 ]
%216 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%217 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%218 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%219 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%220 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%221 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%222 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%223 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
br label %247
224: ; preds = %247
%225 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%226 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%227 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %213)
%228 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%229 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%230 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%231 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %213)
%232 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%233 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%234 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%235 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %213)
%236 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%237 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%238 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%239 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %213)
%240 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%241 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%242 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%243 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %213)
%244 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%245 = add nuw nsw i32 %215, 1
%246 = icmp eq i32 %245, %2
br i1 %246, label %280, label %214
247: ; preds = %214, %247
%248 = phi i32 [ %278, %247 ], [ 3, %214 ]
%249 = add nsw i32 %248, -1
%250 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%251 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%252 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %249)
%253 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%254 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%255 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%256 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %249)
%257 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%258 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 4)
%259 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%260 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %249)
%261 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%262 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%263 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%264 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %249)
%265 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%266 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 5)
%267 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%268 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %249)
%269 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%270 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%271 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%272 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %248)
%273 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%274 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%275 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %215)
%276 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %248)
%277 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 3)
%278 = add nuw nsw i32 %248, 1
%279 = icmp eq i32 %278, %1
br i1 %279, label %224, label %247
280: ; preds = %224, %209
%281 = icmp eq i32 %0, 2
%282 = and i1 %281, %8
%283 = and i1 %282, %10
br i1 %283, label %284, label %312
284: ; preds = %280
%285 = add nsw i32 %1, -1
br label %286
286: ; preds = %305, %284
%287 = phi i32 [ 2, %284 ], [ %310, %305 ]
%288 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%289 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %287)
%290 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%291 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
br label %292
292: ; preds = %286, %292
%293 = phi i32 [ %303, %292 ], [ 3, %286 ]
%294 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%295 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %287)
%296 = add nsw i32 %293, -1
%297 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %296)
%298 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%299 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%300 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %287)
%301 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %293)
%302 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%303 = add nuw nsw i32 %293, 1
%304 = icmp eq i32 %303, %1
br i1 %304, label %305, label %292
305: ; preds = %292
%306 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%307 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %287)
%308 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %285)
%309 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%310 = add nuw nsw i32 %287, 1
%311 = icmp eq i32 %310, %2
br i1 %311, label %312, label %286
312: ; preds = %305, %280
%313 = and i1 %281, %118
%314 = and i1 %313, %10
br i1 %314, label %315, label %327
315: ; preds = %312, %315
%316 = phi i32 [ %325, %315 ], [ 2, %312 ]
%317 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 1)
%318 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %316)
%319 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%320 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%321 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%322 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 %316)
%323 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%324 = tail call i32 (i32, ...) bitcast (i32 (...)* @hash to i32 (i32, ...)*)(i32 2)
%325 = add nuw nsw i32 %316, 1
%326 = icmp eq i32 %325, %2
br i1 %326, label %327, label %315
327: ; preds = %315, %312
ret void
}