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

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int fread_bo(int *, int, int, int /*<<< orphan*/ *, int);
int cmp_barker(FILE *fp) {
  int word, ncount = 0, wsize = sizeof(int), buf[2], state = 0;
  while (ncount < 15000) {
    if (state == 0) {
      if (1 != fread_bo(&word, wsize, 1, fp, wsize))
        return (-2);
      ncount++;
      if ((word & 0x0000fff8) != 0x00000000) {
        state = 0;
        continue;
      } else {
        state = 1;
        continue;
      }
    }
    if (state == 1) {
      if (1 != fread_bo(&word, wsize, 1, fp, wsize))
        return (-2);
      ncount++;
      if ((word & 0x0000fff8) != 0x00000000) {
        state = 0;
        continue;
      } else {
        state = 2;
        continue;
      }
    }
    if (state == 2) {
      if (1 != fread_bo(&word, wsize, 1, fp, wsize))
        return (-2);
      ncount++;
      if ((word & 0x0000fff8) != 0x00000000) {
        state = 0;
        continue;
      } else {
        state = 3;
        continue;
      }
    }
    if (state == 3) {
      if (1 != fread_bo(&word, wsize, 1, fp, wsize))
        return (-2);
      ncount++;
      if ((word & 0x0000fff8) != 0x00000000) {
        state = 0;
        continue;
      } else {
        state = 4;
        continue;
      }
    }
    if (state == 4) {
      if (1 != fread_bo(&word, wsize, 1, fp, wsize))
        return (-2);
      ncount++;
      if ((word & 0x0000fff8) != 0x00000000) {
        state = 0;
        continue;
      } else {
        state = 5;
        continue;
      }
    }
    if (state == 5) {
      if (1 != fread_bo(&word, wsize, 1, fp, wsize))
        return (-2);
      ncount++;
      if ((word & 0x0000fff8) == 0x00000000) {
        state = 5;
        continue;
      } else if ((word | 0xffff0007) != 0xffffffff) {
        state = 0;
        continue;
      }
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) == 0x00000000) {
      state = 1;
      continue;
    } else if ((word | 0xffff0007) != 0xffffffff) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) == 0x00000000) {
      state = 1;
      continue;
    } else if ((word | 0xffff0007) != 0xffffffff) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) != 0x00000000) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) == 0x00000000) {
      state = 2;
      continue;
    } else if ((word | 0xffff0007) != 0xffffffff) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) != 0x00000000) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) != 0x00000000) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) == 0x00000000) {
      state = 3;
      continue;
    } else if ((word | 0xffff0007) != 0xffffffff) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) != 0x00000000) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) != 0x00000000) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) != 0x00000000) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) == 0x00000000) {
      state = 4;
      continue;
    } else if ((word | 0xffff0007) != 0xffffffff) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(&word, wsize, 1, fp, wsize))
      return (-2);
    ncount++;
    if ((word & 0x0000fff8) == 0x00000000) {
      state = 1;
      continue;
    } else if ((word | 0xffff0007) != 0xffffffff) {
      state = 0;
      continue;
    }
    if (1 != fread_bo(buf, 2 * wsize, 1, fp, wsize))
      return (-2);
    return (0);
  }
  return (-1);
}


x86 assembly (clang, -O0):
<cmp_barker>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x4,-0x1c(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3a98,-0x18(%rbp)
jge    1940 <cmp_barker+0x830>
cmpl   $0x0,-0x28(%rbp)
jne    11ae <cmp_barker+0x9e>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     117c <cmp_barker+0x6c>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     11a2 <cmp_barker+0x92>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
movl   $0x1,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
cmpl   $0x1,-0x28(%rbp)
jne    121e <cmp_barker+0x10e>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     11ec <cmp_barker+0xdc>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     1212 <cmp_barker+0x102>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
movl   $0x2,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
cmpl   $0x2,-0x28(%rbp)
jne    128e <cmp_barker+0x17e>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     125c <cmp_barker+0x14c>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     1282 <cmp_barker+0x172>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
movl   $0x3,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
cmpl   $0x3,-0x28(%rbp)
jne    12fe <cmp_barker+0x1ee>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     12cc <cmp_barker+0x1bc>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     12f2 <cmp_barker+0x1e2>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
movl   $0x4,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
cmpl   $0x4,-0x28(%rbp)
jne    136e <cmp_barker+0x25e>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     133c <cmp_barker+0x22c>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     1362 <cmp_barker+0x252>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
movl   $0x5,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
cmpl   $0x5,-0x28(%rbp)
jne    13f9 <cmp_barker+0x2e9>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     13ac <cmp_barker+0x29c>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
jne    13d2 <cmp_barker+0x2c2>
movl   $0x5,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x14(%rbp),%eax
or     $0xffff0007,%eax
cmp    $0xffffffff,%eax
je     13ef <cmp_barker+0x2df>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
jmp    13f4 <cmp_barker+0x2e4>
jmp    13f9 <cmp_barker+0x2e9>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     142d <cmp_barker+0x31d>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
jne    1453 <cmp_barker+0x343>
movl   $0x1,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x14(%rbp),%eax
or     $0xffff0007,%eax
cmp    $0xffffffff,%eax
je     1470 <cmp_barker+0x360>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
jmp    1475 <cmp_barker+0x365>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     14a9 <cmp_barker+0x399>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
jne    14cf <cmp_barker+0x3bf>
movl   $0x1,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x14(%rbp),%eax
or     $0xffff0007,%eax
cmp    $0xffffffff,%eax
je     14ec <cmp_barker+0x3dc>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
jmp    14f1 <cmp_barker+0x3e1>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     1525 <cmp_barker+0x415>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     154b <cmp_barker+0x43b>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     157f <cmp_barker+0x46f>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
jne    15a5 <cmp_barker+0x495>
movl   $0x2,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x14(%rbp),%eax
or     $0xffff0007,%eax
cmp    $0xffffffff,%eax
je     15c2 <cmp_barker+0x4b2>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
jmp    15c7 <cmp_barker+0x4b7>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     15fb <cmp_barker+0x4eb>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     1621 <cmp_barker+0x511>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     1655 <cmp_barker+0x545>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     167b <cmp_barker+0x56b>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     16af <cmp_barker+0x59f>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
jne    16d5 <cmp_barker+0x5c5>
movl   $0x3,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x14(%rbp),%eax
or     $0xffff0007,%eax
cmp    $0xffffffff,%eax
je     16f2 <cmp_barker+0x5e2>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
jmp    16f7 <cmp_barker+0x5e7>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     172b <cmp_barker+0x61b>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     1751 <cmp_barker+0x641>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     1785 <cmp_barker+0x675>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     17ab <cmp_barker+0x69b>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     17df <cmp_barker+0x6cf>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
je     1805 <cmp_barker+0x6f5>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     1839 <cmp_barker+0x729>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
jne    185f <cmp_barker+0x74f>
movl   $0x4,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x14(%rbp),%eax
or     $0xffff0007,%eax
cmp    $0xffffffff,%eax
je     187c <cmp_barker+0x76c>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
jmp    1881 <cmp_barker+0x771>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     18b5 <cmp_barker+0x7a5>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfff8,%eax
cmp    $0x0,%eax
jne    18db <cmp_barker+0x7cb>
movl   $0x1,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
mov    -0x14(%rbp),%eax
or     $0xffff0007,%eax
cmp    $0xffffffff,%eax
je     18f8 <cmp_barker+0x7e8>
movl   $0x0,-0x28(%rbp)
jmp    1131 <cmp_barker+0x21>
jmp    18fd <cmp_barker+0x7ed>
lea    -0x24(%rbp),%rdi
mov    -0x1c(%rbp),%esi
shl    $0x1,%esi
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%r8d
mov    $0x1,%edx
call   1030 <fread_bo@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     1934 <cmp_barker+0x824>
movl   $0xfffffffe,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
movl   $0x0,-0x4(%rbp)
jmp    1947 <cmp_barker+0x837>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cmp_barker>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rdi,0x8(%rsp)
xor    %r12d,%r12d
mov    $0x1,%r15b
xor    %r14d,%r14d
xor    %ebx,%ebx
xor    %r13d,%r13d
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
test   $0x1,%r15b
je     1190 <cmp_barker+0x80>
cmp    $0x1,%eax
jne    15bc <cmp_barker+0x4ac>
add    $0x1,%ebp
testl  $0xfff8,0x4(%rsp)
sete   %r13b
setne  %r15b
xor    %ebx,%ebx
jmp    11b4 <cmp_barker+0xa4>
cs nopw 0x0(%rax,%rax,1)
nop
test   $0x1,%r13b
je     11d0 <cmp_barker+0xc0>
cmp    $0x1,%eax
jne    15bc <cmp_barker+0x4ac>
add    $0x1,%ebp
testl  $0xfff8,0x4(%rsp)
sete   %bl
setne  %r15b
xor    %r13d,%r13d
mov    %ebp,%eax
xor    %r14d,%r14d
xor    %r12d,%r12d
mov    %eax,%ebp
cmp    $0x3a98,%eax
jl     1140 <cmp_barker+0x30>
jmp    15c4 <cmp_barker+0x4b4>
xchg   %ax,%ax
test   $0x1,%bl
je     11fa <cmp_barker+0xea>
cmp    $0x1,%eax
jne    15bc <cmp_barker+0x4ac>
add    $0x1,%ebp
testl  $0xfff8,0x4(%rsp)
sete   %r14b
setne  %r15b
xor    %r13d,%r13d
mov    %ebp,%eax
xor    %ebx,%ebx
jmp    11b9 <cmp_barker+0xa9>
test   $0x1,%r14b
je     1228 <cmp_barker+0x118>
cmp    $0x1,%eax
jne    15bc <cmp_barker+0x4ac>
add    $0x1,%ebp
testl  $0xfff8,0x4(%rsp)
sete   %r12b
setne  %r15b
xor    %r13d,%r13d
mov    %ebp,%eax
xor    %ebx,%ebx
xor    %r14d,%r14d
jmp    11bc <cmp_barker+0xac>
test   $0x1,%r12b
je     1252 <cmp_barker+0x142>
cmp    $0x1,%eax
jne    15bc <cmp_barker+0x4ac>
add    $0x1,%ebp
movzwl 0x4(%rsp),%eax
test   $0xfff8,%eax
setne  %r15b
xor    %r13d,%r13d
mov    %ebp,%eax
jmp    159c <cmp_barker+0x48c>
mov    $0xfffffffe,%r15d
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
lea    0x1(%rbp),%eax
movzwl 0x4(%rsp),%ecx
and    $0xfff8,%cx
je     1343 <cmp_barker+0x233>
cmp    $0xfff8,%cx
jne    1596 <cmp_barker+0x486>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
lea    0x2(%rbp),%eax
movzwl 0x4(%rsp),%ecx
mov    $0x1,%r13b
and    $0xfff8,%cx
je     134b <cmp_barker+0x23b>
cmp    $0xfff8,%cx
jne    1596 <cmp_barker+0x486>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
lea    0x3(%rbp),%eax
movzwl 0x4(%rsp),%ecx
and    $0xfff8,%cx
je     134b <cmp_barker+0x23b>
cmp    $0xfff8,%cx
jne    1596 <cmp_barker+0x486>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
movzwl 0x4(%rsp),%eax
test   $0xfff8,%eax
je     1353 <cmp_barker+0x243>
add    $0x4,%ebp
mov    $0x1,%r15b
jmp    1248 <cmp_barker+0x138>
xor    %r15d,%r15d
jmp    1599 <cmp_barker+0x489>
xor    %r15d,%r15d
jmp    159c <cmp_barker+0x48c>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
lea    0x5(%rbp),%eax
movzwl 0x4(%rsp),%ecx
and    $0xfff8,%cx
je     13cf <cmp_barker+0x2bf>
cmp    $0xfff8,%cx
jne    1596 <cmp_barker+0x486>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
movzwl 0x4(%rsp),%eax
test   $0xfff8,%eax
je     13dc <cmp_barker+0x2cc>
add    $0x6,%ebp
jmp    133b <cmp_barker+0x22b>
mov    $0x1,%bl
xor    %r15d,%r15d
xor    %r13d,%r13d
jmp    11b6 <cmp_barker+0xa6>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
movzwl 0x4(%rsp),%eax
test   $0xfff8,%eax
je     1418 <cmp_barker+0x308>
add    $0x7,%ebp
jmp    133b <cmp_barker+0x22b>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
lea    0x8(%rbp),%eax
movzwl 0x4(%rsp),%ecx
and    $0xfff8,%cx
je     1494 <cmp_barker+0x384>
cmp    $0xfff8,%cx
jne    1596 <cmp_barker+0x486>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
movzwl 0x4(%rsp),%eax
test   $0xfff8,%eax
je     14a4 <cmp_barker+0x394>
add    $0x9,%ebp
jmp    133b <cmp_barker+0x22b>
mov    $0x1,%r14b
xor    %r15d,%r15d
xor    %r13d,%r13d
xor    %ebx,%ebx
jmp    11b9 <cmp_barker+0xa9>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
movzwl 0x4(%rsp),%eax
test   $0xfff8,%eax
je     14e0 <cmp_barker+0x3d0>
add    $0xa,%ebp
jmp    133b <cmp_barker+0x22b>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
movzwl 0x4(%rsp),%eax
test   $0xfff8,%eax
je     151c <cmp_barker+0x40c>
add    $0xb,%ebp
jmp    133b <cmp_barker+0x22b>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
lea    0xc(%rbp),%eax
movzwl 0x4(%rsp),%ecx
and    $0xfff8,%cx
je     15a3 <cmp_barker+0x493>
cmp    $0xfff8,%cx
jne    1596 <cmp_barker+0x486>
lea    0x4(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
cmp    $0x1,%eax
jne    15ca <cmp_barker+0x4ba>
add    $0xd,%ebp
movzwl 0x4(%rsp),%eax
and    $0xfff8,%ax
je     15b1 <cmp_barker+0x4a1>
cmp    $0xfff8,%ax
jne    133b <cmp_barker+0x22b>
jmp    15dc <cmp_barker+0x4cc>
mov    $0x1,%r15b
xor    %r13d,%r13d
xor    %ebx,%ebx
jmp    11b6 <cmp_barker+0xa6>
mov    $0x1,%r12b
xor    %r15d,%r15d
xor    %r13d,%r13d
jmp    1221 <cmp_barker+0x111>
mov    $0x1,%r13b
xor    %r15d,%r15d
jmp    124b <cmp_barker+0x13b>
mov    $0xfffffffe,%r15d
jmp    15ca <cmp_barker+0x4ba>
mov    $0xffffffff,%r15d
mov    %r15d,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x10(%rsp),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rcx
mov    $0x4,%r8d
call   1030 <fread_bo@plt>
xor    %ecx,%ecx
cmp    $0x1,%eax
sete   %cl
lea    (%rcx,%rcx,1),%r15d
add    $0xfffffffe,%r15d
jmp    15ca <cmp_barker+0x4ba>

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

LLVM IR (-O2):
define i32 @cmp_barker(i32* %0) {
%2 = alloca i32
%3 = alloca [2 x i32]
%4 = bitcast i32* %2 to i8*
%5 = bitcast [2 x i32]* %3 to i8*
br label %13
6: ; preds = %61
br label %91
7: ; preds = %69
br label %91
8: ; preds = %77
br label %91
9: ; preds = %102
br label %91
10: ; preds = %128
br label %91
11: ; preds = %163
br label %91
12: ; preds = %171
br label %91
13: ; preds = %1, %91
%14 = phi i1 [ false, %1 ], [ %97, %91 ]
%15 = phi i1 [ false, %1 ], [ %96, %91 ]
%16 = phi i1 [ false, %1 ], [ %95, %91 ]
%17 = phi i1 [ false, %1 ], [ %94, %91 ]
%18 = phi i1 [ true, %1 ], [ %93, %91 ]
%19 = phi i32 [ 0, %1 ], [ %92, %91 ]
%20 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%21 = icmp eq i32 %20, 1
br i1 %18, label %22, label %29
22: ; preds = %13
br i1 %21, label %23, label %181
23: ; preds = %22
%24 = add nsw i32 %19, 1
%25 = load i32, i32* %2
%26 = and i32 %25, 65528
%27 = icmp eq i32 %26, 0
%28 = xor i1 %27, true
br label %91
29: ; preds = %13
br i1 %17, label %30, label %37
30: ; preds = %29
br i1 %21, label %31, label %181
31: ; preds = %30
%32 = add nsw i32 %19, 1
%33 = load i32, i32* %2
%34 = and i32 %33, 65528
%35 = icmp eq i32 %34, 0
%36 = xor i1 %35, true
br label %91
37: ; preds = %29
br i1 %16, label %38, label %45
38: ; preds = %37
br i1 %21, label %39, label %181
39: ; preds = %38
%40 = add nsw i32 %19, 1
%41 = load i32, i32* %2
%42 = and i32 %41, 65528
%43 = icmp eq i32 %42, 0
%44 = xor i1 %43, true
br label %91
45: ; preds = %37
br i1 %15, label %46, label %53
46: ; preds = %45
br i1 %21, label %47, label %181
47: ; preds = %46
%48 = add nsw i32 %19, 1
%49 = load i32, i32* %2
%50 = and i32 %49, 65528
%51 = icmp eq i32 %50, 0
%52 = xor i1 %51, true
br label %91
53: ; preds = %45
br i1 %14, label %54, label %60
54: ; preds = %53
br i1 %21, label %55, label %181
55: ; preds = %54
%56 = add nsw i32 %19, 1
%57 = load i32, i32* %2
%58 = and i32 %57, 65528
%59 = icmp ne i32 %58, 0
br label %91
60: ; preds = %53
br i1 %21, label %61, label %181
61: ; preds = %60
%62 = add nsw i32 %19, 1
%63 = load i32, i32* %2
%64 = trunc i32 %63 to i16
%65 = and i16 %64, -8
switch i16 %65, label %6 [
i16 0, label %91
i16 -8, label %66
]
66: ; preds = %61
%67 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%68 = icmp eq i32 %67, 1
br i1 %68, label %69, label %181
69: ; preds = %66
%70 = add nsw i32 %19, 2
%71 = load i32, i32* %2
%72 = trunc i32 %71 to i16
%73 = and i16 %72, -8
switch i16 %73, label %7 [
i16 0, label %91
i16 -8, label %74
]
74: ; preds = %69
%75 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%76 = icmp eq i32 %75, 1
br i1 %76, label %77, label %181
77: ; preds = %74
%78 = add nsw i32 %19, 3
%79 = load i32, i32* %2
%80 = trunc i32 %79 to i16
%81 = and i16 %80, -8
switch i16 %81, label %8 [
i16 0, label %91
i16 -8, label %82
]
82: ; preds = %77
%83 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%84 = icmp eq i32 %83, 1
br i1 %84, label %85, label %181
85: ; preds = %82
%86 = load i32, i32* %2
%87 = and i32 %86, 65528
%88 = icmp eq i32 %87, 0
br i1 %88, label %99, label %89
89: ; preds = %85
%90 = add nsw i32 %19, 4
br label %91
91: ; preds = %89, %114, %123, %140, %149, %158, %23, %31, %39, %47, %55, %6, %61, %7, %69, %8, %77, %9, %102, %10, %128, %11, %163, %12, %171
%92 = phi i32 [ %90, %89 ], [ %115, %114 ], [ %124, %123 ], [ %141, %140 ], [ %150, %149 ], [ %159, %158 ], [ %24, %23 ], [ %32, %31 ], [ %40, %39 ], [ %48, %47 ], [ %56, %55 ], [ %62, %61 ], [ %70, %69 ], [ %78, %77 ], [ %103, %102 ], [ %129, %128 ], [ %164, %163 ], [ %172, %171 ], [ %62, %6 ], [ %70, %7 ], [ %78, %8 ], [ %103, %9 ], [ %129, %10 ], [ %164, %11 ], [ %172, %12 ]
%93 = phi i1 [ true, %89 ], [ true, %114 ], [ true, %123 ], [ true, %140 ], [ true, %149 ], [ true, %158 ], [ %28, %23 ], [ %36, %31 ], [ %44, %39 ], [ %52, %47 ], [ %59, %55 ], [ false, %61 ], [ false, %69 ], [ false, %77 ], [ false, %102 ], [ false, %128 ], [ false, %163 ], [ false, %171 ], [ true, %6 ], [ true, %7 ], [ true, %8 ], [ true, %9 ], [ true, %10 ], [ true, %11 ], [ true, %12 ]
%94 = phi i1 [ false, %89 ], [ false, %114 ], [ false, %123 ], [ false, %140 ], [ false, %149 ], [ false, %158 ], [ %27, %23 ], [ false, %31 ], [ false, %39 ], [ false, %47 ], [ false, %55 ], [ false, %61 ], [ true, %69 ], [ true, %77 ], [ false, %102 ], [ false, %128 ], [ false, %163 ], [ true, %171 ], [ false, %6 ], [ false, %7 ], [ false, %8 ], [ false, %9 ], [ false, %10 ], [ false, %11 ], [ false, %12 ]
%95 = phi i1 [ false, %89 ], [ false, %114 ], [ false, %123 ], [ false, %140 ], [ false, %149 ], [ false, %158 ], [ false, %23 ], [ %35, %31 ], [ false, %39 ], [ false, %47 ], [ false, %55 ], [ false, %61 ], [ false, %69 ], [ false, %77 ], [ true, %102 ], [ false, %128 ], [ false, %163 ], [ false, %171 ], [ false, %6 ], [ false, %7 ], [ false, %8 ], [ false, %9 ], [ false, %10 ], [ false, %11 ], [ false, %12 ]
%96 = phi i1 [ false, %89 ], [ false, %114 ], [ false, %123 ], [ false, %140 ], [ false, %149 ], [ false, %158 ], [ false, %23 ], [ false, %31 ], [ %43, %39 ], [ false, %47 ], [ false, %55 ], [ false, %61 ], [ false, %69 ], [ false, %77 ], [ false, %102 ], [ true, %128 ], [ false, %163 ], [ false, %171 ], [ false, %6 ], [ false, %7 ], [ false, %8 ], [ false, %9 ], [ false, %10 ], [ false, %11 ], [ false, %12 ]
%97 = phi i1 [ false, %89 ], [ false, %114 ], [ false, %123 ], [ false, %140 ], [ false, %149 ], [ false, %158 ], [ false, %23 ], [ false, %31 ], [ false, %39 ], [ %51, %47 ], [ false, %55 ], [ false, %61 ], [ false, %69 ], [ false, %77 ], [ false, %102 ], [ false, %128 ], [ true, %163 ], [ false, %171 ], [ false, %6 ], [ false, %7 ], [ false, %8 ], [ false, %9 ], [ false, %10 ], [ false, %11 ], [ false, %12 ]
%98 = icmp slt i32 %92, 15000
br i1 %98, label %13, label %181
99: ; preds = %85
%100 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%101 = icmp eq i32 %100, 1
br i1 %101, label %102, label %181
102: ; preds = %99
%103 = add nsw i32 %19, 5
%104 = load i32, i32* %2
%105 = trunc i32 %104 to i16
%106 = and i16 %105, -8
switch i16 %106, label %9 [
i16 0, label %91
i16 -8, label %107
]
107: ; preds = %102
%108 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%109 = icmp eq i32 %108, 1
br i1 %109, label %110, label %181
110: ; preds = %107
%111 = load i32, i32* %2
%112 = and i32 %111, 65528
%113 = icmp eq i32 %112, 0
br i1 %113, label %116, label %114
114: ; preds = %110
%115 = add nsw i32 %19, 6
br label %91
116: ; preds = %110
%117 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%118 = icmp eq i32 %117, 1
br i1 %118, label %119, label %181
119: ; preds = %116
%120 = load i32, i32* %2
%121 = and i32 %120, 65528
%122 = icmp eq i32 %121, 0
br i1 %122, label %125, label %123
123: ; preds = %119
%124 = add nsw i32 %19, 7
br label %91
125: ; preds = %119
%126 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%127 = icmp eq i32 %126, 1
br i1 %127, label %128, label %181
128: ; preds = %125
%129 = add nsw i32 %19, 8
%130 = load i32, i32* %2
%131 = trunc i32 %130 to i16
%132 = and i16 %131, -8
switch i16 %132, label %10 [
i16 0, label %91
i16 -8, label %133
]
133: ; preds = %128
%134 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%135 = icmp eq i32 %134, 1
br i1 %135, label %136, label %181
136: ; preds = %133
%137 = load i32, i32* %2
%138 = and i32 %137, 65528
%139 = icmp eq i32 %138, 0
br i1 %139, label %142, label %140
140: ; preds = %136
%141 = add nsw i32 %19, 9
br label %91
142: ; preds = %136
%143 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%144 = icmp eq i32 %143, 1
br i1 %144, label %145, label %181
145: ; preds = %142
%146 = load i32, i32* %2
%147 = and i32 %146, 65528
%148 = icmp eq i32 %147, 0
br i1 %148, label %151, label %149
149: ; preds = %145
%150 = add nsw i32 %19, 10
br label %91
151: ; preds = %145
%152 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%153 = icmp eq i32 %152, 1
br i1 %153, label %154, label %181
154: ; preds = %151
%155 = load i32, i32* %2
%156 = and i32 %155, 65528
%157 = icmp eq i32 %156, 0
br i1 %157, label %160, label %158
158: ; preds = %154
%159 = add nsw i32 %19, 11
br label %91
160: ; preds = %154
%161 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%162 = icmp eq i32 %161, 1
br i1 %162, label %163, label %181
163: ; preds = %160
%164 = add nsw i32 %19, 12
%165 = load i32, i32* %2
%166 = trunc i32 %165 to i16
%167 = and i16 %166, -8
switch i16 %167, label %11 [
i16 0, label %91
i16 -8, label %168
]
168: ; preds = %163
%169 = call i32 @fread_bo(i32* %2, i32 4, i32 1, i32* %0, i32 4)
%170 = icmp eq i32 %169, 1
br i1 %170, label %171, label %181
171: ; preds = %168
%172 = add nsw i32 %19, 13
%173 = load i32, i32* %2
%174 = trunc i32 %173 to i16
%175 = and i16 %174, -8
switch i16 %175, label %12 [
i16 0, label %91
i16 -8, label %176
]
176: ; preds = %171
%177 = getelementptr inbounds [2 x i32], [2 x i32]* %3, i64 0, i64 0
%178 = call i32 @fread_bo(i32* %177, i32 8, i32 1, i32* %0, i32 4)
%179 = icmp eq i32 %178, 1
%180 = select i1 %179, i32 0, i32 -2
br label %181
181: ; preds = %91, %168, %160, %151, %142, %133, %125, %116, %107, %99, %82, %74, %66, %60, %54, %46, %38, %30, %22, %176
%182 = phi i32 [ %180, %176 ], [ -1, %91 ], [ -2, %168 ], [ -2, %160 ], [ -2, %151 ], [ -2, %142 ], [ -2, %133 ], [ -2, %125 ], [ -2, %116 ], [ -2, %107 ], [ -2, %99 ], [ -2, %82 ], [ -2, %74 ], [ -2, %66 ], [ -2, %60 ], [ -2, %54 ], [ -2, %46 ], [ -2, %38 ], [ -2, %30 ], [ -2, %22 ]
ret i32 %182
}