void test(int M, int N) {
  int c2, c4, c6;
  int i, j, k;
  if ((M <= -1) && (N >= 1)) {
    {
      hash(1);
      hash(0);
    };
  }
  if ((M >= 0) && (N >= 1)) {
    {
      hash(1);
      hash(0);
    };
  }
  if ((M >= 1) && (N >= 2)) {
    for (c4 = 0; c4 <= M - 1; c4++) {
      {
        hash(2);
        hash(0);
        hash(c4);
      };
    }
    {
      hash(3);
      hash(0);
    };
    for (c4 = 0; c4 <= M - 1; c4++) {
      {
        hash(4);
        hash(0);
        hash(c4);
      };
    }
    {
      hash(10);
      hash(0);
    };
    {
      hash(1);
      hash(1);
    };
    {
      hash(5);
      hash(0);
    };
  }
  if ((M <= 0) && (N >= 2)) {
    {
      hash(3);
      hash(0);
    };
    {
      hash(10);
      hash(0);
    };
    {
      hash(1);
      hash(1);
    };
    {
      hash(5);
      hash(0);
    };
  }
  if ((M >= 1) && (N == 1)) {
    for (c4 = 0; c4 <= M - 1; c4++) {
      {
        hash(2);
        hash(0);
        hash(c4);
      };
    }
    {
      hash(3);
      hash(0);
    };
    for (c4 = 0; c4 <= M - 1; c4++) {
      {
        hash(4);
        hash(0);
        hash(c4);
      };
    }
    {
      hash(10);
      hash(0);
    };
    {
      hash(5);
      hash(0);
    };
  }
  if ((M <= 0) && (N == 1)) {
    {
      hash(3);
      hash(0);
    };
    {
      hash(10);
      hash(0);
    };
    {
      hash(5);
      hash(0);
    };
  }
  for (c2 = 2; c2 <= ((N - 1) < (M) ? (N - 1) : (M)); c2++) {
    for (c4 = c2 - 1; c4 <= N - 1; c4++) {
      i = c2 - 2;
      {
        hash(6);
        hash(c2 - 2);
        hash(c4);
      };
      for (c6 = c2 - 2; c6 <= M - 1; c6++) {
        i = c2 - 2;
        {
          hash(7);
          hash(c2 - 2);
          hash(c4);
          hash(c6);
        };
      }
      i = c2 - 2;
      {
        hash(8);
        hash(c2 - 2);
        hash(c4);
      };
      for (c6 = c2 - 2; c6 <= M - 1; c6++) {
        i = c2 - 2;
        {
          hash(9);
          hash(c2 - 2);
          hash(c4);
          hash(c6);
        };
      }
    }
    for (c4 = c2 - 1; c4 <= M - 1; c4++) {
      i = c2 - 1;
      {
        hash(2);
        hash(c2 - 1);
        hash(c4);
      };
    }
    i = c2 - 1;
    {
      hash(3);
      hash(c2 - 1);
    };
    for (c4 = c2 - 1; c4 <= M - 1; c4++) {
      i = c2 - 1;
      {
        hash(4);
        hash(c2 - 1);
        hash(c4);
      };
    }
    i = c2 - 1;
    {
      hash(10);
      hash(c2 - 1);
    };
    {
      hash(1);
      hash(c2);
    };
    i = c2 - 1;
    {
      hash(5);
      hash(c2 - 1);
    };
  }
  if ((M >= 1) && (M <= N - 2)) {
    c2 = M + 1;
    for (c4 = M; c4 <= N - 1; c4++) {
      i = M - 1;
      {
        hash(6);
        hash(M - 1);
        hash(c4);
      };
      c6 = M - 1;
      i = M - 1;
      k = M - 1;
      {
        hash(7);
        hash(M - 1);
        hash(c4);
        hash(M - 1);
      };
      i = M - 1;
      {
        hash(8);
        hash(M - 1);
        hash(c4);
      };
      c6 = M - 1;
      i = M - 1;
      k = M - 1;
      {
        hash(9);
        hash(M - 1);
        hash(c4);
        hash(M - 1);
      };
    }
    {
      hash(3);
      hash(M);
    };
    {
      hash(10);
      hash(M);
    };
    i = M + 1;
    {
      hash(1);
      hash(M + 1);
    };
    {
      hash(5);
      hash(M);
    };
  }
  if ((M >= N) && (N >= 2)) {
    c4 = N - 1;
    i = N - 2;
    j = N - 1;
    {
      hash(6);
      hash(N - 2);
      hash(N - 1);
    };
    for (c6 = N - 2; c6 <= M - 1; c6++) {
      i = N - 2;
      j = N - 1;
      {
        hash(7);
        hash(N - 2);
        hash(N - 1);
        hash(c6);
      };
    }
    i = N - 2;
    j = N - 1;
    {
      hash(8);
      hash(N - 2);
      hash(N - 1);
    };
    for (c6 = N - 2; c6 <= M - 1; c6++) {
      i = N - 2;
      j = N - 1;
      {
        hash(9);
        hash(N - 2);
        hash(N - 1);
        hash(c6);
      };
    }
    for (c4 = N - 1; c4 <= M - 1; c4++) {
      i = N - 1;
      {
        hash(2);
        hash(N - 1);
        hash(c4);
      };
    }
    i = N - 1;
    {
      hash(3);
      hash(N - 1);
    };
    for (c4 = N - 1; c4 <= M - 1; c4++) {
      i = N - 1;
      {
        hash(4);
        hash(N - 1);
        hash(c4);
      };
    }
    i = N - 1;
    {
      hash(10);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(5);
      hash(N - 1);
    };
  }
  if ((M == N - 1) && (N >= 2)) {
    c4 = N - 1;
    i = N - 2;
    j = N - 1;
    {
      hash(6);
      hash(N - 2);
      hash(N - 1);
    };
    c6 = N - 2;
    i = N - 2;
    j = N - 1;
    k = N - 2;
    {
      hash(7);
      hash(N - 2);
      hash(N - 1);
      hash(N - 2);
    };
    i = N - 2;
    j = N - 1;
    {
      hash(8);
      hash(N - 2);
      hash(N - 1);
    };
    c6 = N - 2;
    i = N - 2;
    j = N - 1;
    k = N - 2;
    {
      hash(9);
      hash(N - 2);
      hash(N - 1);
      hash(N - 2);
    };
    i = N - 1;
    {
      hash(3);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(10);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(5);
      hash(N - 1);
    };
  }
  for (c2 = ((M + 2) > (2) ? (M + 2) : (2)); c2 <= N - 1; c2++) {
    for (c4 = c2 - 1; c4 <= N - 1; c4++) {
      i = c2 - 2;
      {
        hash(6);
        hash(c2 - 2);
        hash(c4);
      };
      i = c2 - 2;
      {
        hash(8);
        hash(c2 - 2);
        hash(c4);
      };
    }
    i = c2 - 1;
    {
      hash(3);
      hash(c2 - 1);
    };
    i = c2 - 1;
    {
      hash(10);
      hash(c2 - 1);
    };
    {
      hash(1);
      hash(c2);
    };
    i = c2 - 1;
    {
      hash(5);
      hash(c2 - 1);
    };
  }
  if ((M <= N - 2) && (N >= 2)) {
    c4 = N - 1;
    i = N - 2;
    j = N - 1;
    {
      hash(6);
      hash(N - 2);
      hash(N - 1);
    };
    i = N - 2;
    j = N - 1;
    {
      hash(8);
      hash(N - 2);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(3);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(10);
      hash(N - 1);
    };
    i = N - 1;
    {
      hash(5);
      hash(N - 1);
    };
  }
}


x86 assembly (clang, -O0):
<test>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
cmpl   $0xffffffff,-0x4(%rbp)
jg     1147 <test+0x37>
cmpl   $0x1,-0x8(%rbp)
jl     1147 <test+0x37>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
cmpl   $0x0,-0x4(%rbp)
jl     1170 <test+0x60>
cmpl   $0x1,-0x8(%rbp)
jl     1170 <test+0x60>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
cmpl   $0x1,-0x4(%rbp)
jl     1265 <test+0x155>
cmpl   $0x2,-0x8(%rbp)
jl     1265 <test+0x155>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     11c9 <test+0xb9>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    118b <test+0x7b>
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1223 <test+0x113>
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    11e5 <test+0xd5>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
cmpl   $0x0,-0x4(%rbp)
jg     12d0 <test+0x1c0>
cmpl   $0x2,-0x8(%rbp)
jl     12d0 <test+0x1c0>
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
cmpl   $0x1,-0x4(%rbp)
jl     13ad <test+0x29d>
cmpl   $0x1,-0x8(%rbp)
jne    13ad <test+0x29d>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1329 <test+0x219>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    12eb <test+0x1db>
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1383 <test+0x273>
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1345 <test+0x235>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
cmpl   $0x0,-0x4(%rbp)
jg     1400 <test+0x2f0>
cmpl   $0x1,-0x8(%rbp)
jne    1400 <test+0x2f0>
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <hash@plt>
movl   $0x2,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
cmp    -0x4(%rbp),%eax
jge    142a <test+0x31a>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1430 <test+0x320>
mov    -0x4(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
cmp    %ecx,%eax
jg     16b1 <test+0x5a1>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     157f <test+0x46f>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    $0x6,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     14e2 <test+0x3d2>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    $0x7,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x14(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    148d <test+0x37d>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    $0x8,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     156c <test+0x45c>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    $0x9,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x14(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1517 <test+0x407>
jmp    1571 <test+0x461>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1447 <test+0x337>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     15d3 <test+0x4c3>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1588 <test+0x478>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1649 <test+0x539>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    15fe <test+0x4ee>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1407 <test+0x2f7>
cmpl   $0x1,-0x4(%rbp)
jl     184c <test+0x73c>
mov    -0x4(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jg     184c <test+0x73c>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0x4(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     17e8 <test+0x6d8>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x6,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    $0x7,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%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,-0x18(%rbp)
mov    $0x8,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    $0x9,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    16db <test+0x5cb>
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x4(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1abd <test+0x9ad>
cmpl   $0x2,-0x8(%rbp)
jl     1abd <test+0x9ad>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x6,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     190d <test+0x7fd>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x7,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x14(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    18ac <test+0x79c>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x8,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     19af <test+0x89f>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x9,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x14(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    194e <test+0x83e>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1a03 <test+0x8f3>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    19b8 <test+0x8a8>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1a79 <test+0x969>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1a2e <test+0x91e>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x5,%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),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1c65 <test+0xb55>
cmpl   $0x2,-0x8(%rbp)
jl     1c65 <test+0xb55>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x6,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x20(%rbp)
mov    $0x7,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x8,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x20(%rbp)
mov    $0x9,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x5,%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),%eax
add    $0x2,%eax
cmp    $0x2,%eax
jle    1c82 <test+0xb72>
mov    -0x4(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    1c8f <test+0xb7f>
mov    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    1c8f <test+0xb7f>
mov    -0x2c(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1db0 <test+0xca0>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1d26 <test+0xc16>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    $0x6,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    $0x8,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1caf <test+0xb9f>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1c95 <test+0xb85>
mov    -0x4(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jg     1eaa <test+0xd9a>
cmpl   $0x2,-0x8(%rbp)
jl     1eaa <test+0xd9a>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x6,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x8,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x2,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <hash@plt>
mov    -0x8(%rbp),%edi
sub    $0x1,%edi
mov    $0x0,%al
call   1030 <hash@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %esi,%r14d
mov    %edi,%ebx
test   %edi,%edi
jns    1151 <test+0x41>
test   %r14d,%r14d
jle    1151 <test+0x41>
xor    %r12d,%r12d
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
cmp    $0x2,%r14d
setae  %r15b
jmp    123d <test+0x12d>
test   %ebx,%ebx
js     116f <test+0x5f>
test   %r14d,%r14d
jle    116f <test+0x5f>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
cmp    $0x2,%r14d
setge  %r15b
test   %ebx,%ebx
setg   %r12b
jle    123d <test+0x12d>
cmp    $0x2,%r14d
jl     123d <test+0x12d>
xor    %ebp,%ebp
nop
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    1190 <test+0x80>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %ebp,%ebp
nopl   0x0(%rax)
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    11d0 <test+0xc0>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%r15b
mov    $0x1,%r12b
test   %ebx,%ebx
jg     129d <test+0x18d>
test   %r15b,%r15b
je     129d <test+0x18d>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
cmp    $0x1,%r14d
setne  %al
mov    %r12d,%ecx
xor    $0x1,%cl
or     %al,%cl
jne    1366 <test+0x256>
test   %ebx,%ebx
jle    1327 <test+0x217>
xor    %ebp,%ebp
nopl   0x0(%rax,%rax,1)
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    12c0 <test+0x1b0>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
test   %ebx,%ebx
jle    133c <test+0x22c>
xor    %ebp,%ebp
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    1300 <test+0x1f0>
jmp    133c <test+0x22c>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,0x4(%rsp)
mov    %r15b,0x3(%rsp)
test   %ebx,%ebx
jg     13b9 <test+0x2a9>
cmp    $0x1,%r14d
jne    13b9 <test+0x2a9>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    -0x1(%r14),%r13d
cmp    %ebx,%r13d
mov    %ebx,%eax
cmovl  %r13d,%eax
mov    %eax,0x14(%rsp)
cmp    $0x2,%eax
mov    %r13d,0x10(%rsp)
jl     15a9 <test+0x499>
mov    $0x2,%eax
nopl   (%rax)
lea    -0x1(%rax),%r12d
mov    %r14,%r15
mov    %rax,0x8(%rsp)
cmp    %r14d,%eax
jg     14dd <test+0x3cd>
mov    0x8(%rsp),%rax
lea    -0x2(%rax),%r14d
mov    %r12d,%r13d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    $0x6,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    $0x7,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    1440 <test+0x330>
mov    $0x8,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    $0x9,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    14a0 <test+0x390>
add    $0x1,%r13d
cmp    %r15d,%r13d
jne    1410 <test+0x300>
mov    %r12d,%ebp
mov    $0x2,%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,%ebx
jne    14e0 <test+0x3d0>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%ebp
mov    %r15,%r14
mov    0x10(%rsp),%r13d
nopw   0x0(%rax,%rax,1)
mov    $0x4,%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,%ebx
jne    1530 <test+0x420>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    0x8(%rsp),%rbp
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    0x1(%rbp),%eax
cmp    0x14(%rsp),%ebp
jne    13e0 <test+0x2d0>
lea    -0x2(%r14),%ebp
mov    0x4(%rsp),%r12d
test   %r12b,%r12b
mov    0x3(%rsp),%r15b
mov    %ebp,0x8(%rsp)
je     16da <test+0x5ca>
cmp    %ebx,%ebp
jl     16da <test+0x5ca>
cmp    %r14d,%ebx
jge    167c <test+0x56c>
lea    -0x1(%rbx),%r12d
mov    %ebx,%ebp
nopl   0x0(%rax,%rax,1)
mov    $0x6,%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>
mov    $0x7,%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>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x8,%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>
mov    $0x9,%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>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%r14d
jne    15e0 <test+0x4d0>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    0x1(%rbx),%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    0x4(%rsp),%r12d
mov    0x8(%rsp),%ebp
cmp    %r14d,%ebx
setl   %al
xor    $0x1,%r15b
or     %r15b,%al
jne    1886 <test+0x776>
mov    $0x6,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
cmp    %ebx,%ebp
jge    17b2 <test+0x6a2>
mov    %ebp,%r12d
nopw   0x0(%rax,%rax,1)
mov    $0x7,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    1720 <test+0x610>
mov    $0x8,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
cmp    %ebx,%r12d
jge    17d1 <test+0x6c1>
mov    %r12d,%ebp
nopl   0x0(%rax,%rax,1)
mov    $0x9,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    1780 <test+0x670>
jmp    17d1 <test+0x6c1>
mov    $0x8,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%ebp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    17e0 <test+0x6d0>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%ebp
mov    0x4(%rsp),%r12d
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    1830 <test+0x720>
mov    $0xa,%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    %r13d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    0x8(%rsp),%ebp
cmp    %ebx,%r13d
setne  %al
mov    %r15b,0x3(%rsp)
or     %r15b,%al
jne    1963 <test+0x853>
mov    $0x6,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x7,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%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    $0x8,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x9,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%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    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0xa,%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    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
lea    0x2(%rbx),%eax
test   %r12b,%r12b
mov    $0x2,%r13d
cmovne %eax,%r13d
cmp    %r14d,%r13d
jl     1a85 <test+0x975>
mov    0x8(%rsp),%ebp
cmp    %ebx,%ebp
setl   %al
or     0x3(%rsp),%al
jne    1aec <test+0x9dc>
mov    $0x6,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    0x10(%rsp),%ebx
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x8,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%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>
mov    %ebx,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0xa,%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    %ebx,%edi
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <hash@plt>
nopl   0x0(%rax)
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x1,%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    %r15d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%r13d
cmp    %r14d,%r13d
je     197c <test+0x86c>
lea    -0x1(%r13),%r15d
cmp    %r14d,%r13d
jg     1a20 <test+0x910>
lea    -0x2(%r13),%ebp
mov    %r15d,%r12d
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x6,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    $0x8,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <hash@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1030 <hash@plt>
add    $0x1,%r12d
cmp    %r14d,%r12d
jl     1aa0 <test+0x990>
jmp    1a20 <test+0x910>
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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