#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*/ sqlite3;

/* Variables and functions */
int query_has_result(char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ sprintf(char *, char *, long);
bool position_exists_in_database(long position, sqlite3 *db) {
  char sql_text[100];
  short a, b, c, d, e, f, g, h;
  {
    h = position & 31;
    g = (position >> 5) & 31;
    f = (position >> 10) & 31;
    e = (position >> 15) & 31;
    d = (position >> 20) & 31;
    c = (position >> 25) & 31;
    b = (position >> 30) & 31;
    a = (position >> 35) & 31;
  }
  {
    if ((a != 0 && a % 4 != 1 && a % 4 != 2) ||
        (a == 0 && b != 0 && b % 4 != 1 && b % 4 != 2) ||
        (a == 0 && b == 0 && c != 0 && c % 4 != 1 && c % 4 != 2) ||
        (a == 0 && b == 0 && c == 0 && d != 0 && d % 4 != 1 && d % 4 != 2)) {
      {
        a = a ? 4 * ((a - 1) / 4) + 4 - ((a - 1) % 4) : 0;
        b = b ? 4 * ((b - 1) / 4) + 4 - ((b - 1) % 4) : 0;
        c = c ? 4 * ((c - 1) / 4) + 4 - ((c - 1) % 4) : 0;
        d = d ? 4 * ((d - 1) / 4) + 4 - ((d - 1) % 4) : 0;
        e = e ? 4 * ((e - 1) / 4) + 4 - ((e - 1) % 4) : 0;
        f = f ? 4 * ((f - 1) / 4) + 4 - ((f - 1) % 4) : 0;
        g = g ? 4 * ((g - 1) / 4) + 4 - ((g - 1) % 4) : 0;
        h = h ? 4 * ((h - 1) / 4) + 4 - ((h - 1) % 4) : 0;
      }
      {
        position = 0;
        position |= a;
        position <<= 5;
        position |= b;
        position <<= 5;
        position |= c;
        position <<= 5;
        position |= d;
        position <<= 5;
        position |= e;
        position <<= 5;
        position |= f;
        position <<= 5;
        position |= g;
        position <<= 5;
        position |= h;
      }
    }
  }
  sprintf(sql_text, "SELECT position FROM positions WHERE position = %ld;",
          position);
  return query_has_result(sql_text, db);
}


x86 assembly (clang, -O0):
<position_exists_in_database>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
and    $0x1f,%rax
mov    %ax,-0x90(%rbp)
mov    -0x8(%rbp),%rax
sar    $0x5,%rax
and    $0x1f,%rax
mov    %ax,-0x8e(%rbp)
mov    -0x8(%rbp),%rax
sar    $0xa,%rax
and    $0x1f,%rax
mov    %ax,-0x8c(%rbp)
mov    -0x8(%rbp),%rax
sar    $0xf,%rax
and    $0x1f,%rax
mov    %ax,-0x8a(%rbp)
mov    -0x8(%rbp),%rax
sar    $0x14,%rax
and    $0x1f,%rax
mov    %ax,-0x88(%rbp)
mov    -0x8(%rbp),%rax
sar    $0x19,%rax
and    $0x1f,%rax
mov    %ax,-0x86(%rbp)
mov    -0x8(%rbp),%rax
sar    $0x1e,%rax
and    $0x1f,%rax
mov    %ax,-0x84(%rbp)
mov    -0x8(%rbp),%rax
sar    $0x23,%rax
and    $0x1f,%rax
mov    %ax,-0x82(%rbp)
movswl -0x82(%rbp),%eax
cmp    $0x0,%eax
je     1207 <position_exists_in_database+0xe7>
movswl -0x82(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1207 <position_exists_in_database+0xe7>
movswl -0x82(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    1327 <position_exists_in_database+0x207>
movswl -0x82(%rbp),%eax
cmp    $0x0,%eax
jne    1257 <position_exists_in_database+0x137>
movswl -0x84(%rbp),%eax
cmp    $0x0,%eax
je     1257 <position_exists_in_database+0x137>
movswl -0x84(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1257 <position_exists_in_database+0x137>
movswl -0x84(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    1327 <position_exists_in_database+0x207>
movswl -0x82(%rbp),%eax
cmp    $0x0,%eax
jne    12b7 <position_exists_in_database+0x197>
movswl -0x84(%rbp),%eax
cmp    $0x0,%eax
jne    12b7 <position_exists_in_database+0x197>
movswl -0x86(%rbp),%eax
cmp    $0x0,%eax
je     12b7 <position_exists_in_database+0x197>
movswl -0x86(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     12b7 <position_exists_in_database+0x197>
movswl -0x86(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    1327 <position_exists_in_database+0x207>
movswl -0x82(%rbp),%eax
cmp    $0x0,%eax
jne    176b <position_exists_in_database+0x64b>
movswl -0x84(%rbp),%eax
cmp    $0x0,%eax
jne    176b <position_exists_in_database+0x64b>
movswl -0x86(%rbp),%eax
cmp    $0x0,%eax
jne    176b <position_exists_in_database+0x64b>
movswl -0x88(%rbp),%eax
cmp    $0x0,%eax
je     176b <position_exists_in_database+0x64b>
movswl -0x88(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     176b <position_exists_in_database+0x64b>
movswl -0x88(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
je     176b <position_exists_in_database+0x64b>
movswl -0x82(%rbp),%eax
cmp    $0x0,%eax
je     137a <position_exists_in_database+0x25a>
movswl -0x82(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x4,%eax
mov    %eax,-0x98(%rbp)
movswl -0x82(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0x98(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0x94(%rbp)
jmp    1387 <position_exists_in_database+0x267>
xor    %eax,%eax
mov    %eax,-0x94(%rbp)
jmp    1387 <position_exists_in_database+0x267>
mov    -0x94(%rbp),%eax
mov    %ax,-0x82(%rbp)
movswl -0x84(%rbp),%eax
cmp    $0x0,%eax
je     13e7 <position_exists_in_database+0x2c7>
movswl -0x84(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x4,%eax
mov    %eax,-0xa0(%rbp)
movswl -0x84(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0xa0(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0x9c(%rbp)
jmp    13f4 <position_exists_in_database+0x2d4>
xor    %eax,%eax
mov    %eax,-0x9c(%rbp)
jmp    13f4 <position_exists_in_database+0x2d4>
mov    -0x9c(%rbp),%eax
mov    %ax,-0x84(%rbp)
movswl -0x86(%rbp),%eax
cmp    $0x0,%eax
je     1454 <position_exists_in_database+0x334>
movswl -0x86(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x4,%eax
mov    %eax,-0xa8(%rbp)
movswl -0x86(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0xa8(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0xa4(%rbp)
jmp    1461 <position_exists_in_database+0x341>
xor    %eax,%eax
mov    %eax,-0xa4(%rbp)
jmp    1461 <position_exists_in_database+0x341>
mov    -0xa4(%rbp),%eax
mov    %ax,-0x86(%rbp)
movswl -0x88(%rbp),%eax
cmp    $0x0,%eax
je     14c1 <position_exists_in_database+0x3a1>
movswl -0x88(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x4,%eax
mov    %eax,-0xb0(%rbp)
movswl -0x88(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0xb0(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0xac(%rbp)
jmp    14ce <position_exists_in_database+0x3ae>
xor    %eax,%eax
mov    %eax,-0xac(%rbp)
jmp    14ce <position_exists_in_database+0x3ae>
mov    -0xac(%rbp),%eax
mov    %ax,-0x88(%rbp)
movswl -0x8a(%rbp),%eax
cmp    $0x0,%eax
je     152e <position_exists_in_database+0x40e>
movswl -0x8a(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x4,%eax
mov    %eax,-0xb8(%rbp)
movswl -0x8a(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0xb8(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0xb4(%rbp)
jmp    153b <position_exists_in_database+0x41b>
xor    %eax,%eax
mov    %eax,-0xb4(%rbp)
jmp    153b <position_exists_in_database+0x41b>
mov    -0xb4(%rbp),%eax
mov    %ax,-0x8a(%rbp)
movswl -0x8c(%rbp),%eax
cmp    $0x0,%eax
je     159b <position_exists_in_database+0x47b>
movswl -0x8c(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x4,%eax
mov    %eax,-0xc0(%rbp)
movswl -0x8c(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0xc0(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0xbc(%rbp)
jmp    15a8 <position_exists_in_database+0x488>
xor    %eax,%eax
mov    %eax,-0xbc(%rbp)
jmp    15a8 <position_exists_in_database+0x488>
mov    -0xbc(%rbp),%eax
mov    %ax,-0x8c(%rbp)
movswl -0x8e(%rbp),%eax
cmp    $0x0,%eax
je     1608 <position_exists_in_database+0x4e8>
movswl -0x8e(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x4,%eax
mov    %eax,-0xc8(%rbp)
movswl -0x8e(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0xc8(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0xc4(%rbp)
jmp    1615 <position_exists_in_database+0x4f5>
xor    %eax,%eax
mov    %eax,-0xc4(%rbp)
jmp    1615 <position_exists_in_database+0x4f5>
mov    -0xc4(%rbp),%eax
mov    %ax,-0x8e(%rbp)
movswl -0x90(%rbp),%eax
cmp    $0x0,%eax
je     1675 <position_exists_in_database+0x555>
movswl -0x90(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x4,%eax
mov    %eax,-0xd0(%rbp)
movswl -0x90(%rbp),%eax
sub    $0x1,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0xd0(%rbp),%eax
sub    %edx,%eax
mov    %eax,-0xcc(%rbp)
jmp    1682 <position_exists_in_database+0x562>
xor    %eax,%eax
mov    %eax,-0xcc(%rbp)
jmp    1682 <position_exists_in_database+0x562>
mov    -0xcc(%rbp),%eax
mov    %ax,-0x90(%rbp)
movq   $0x0,-0x8(%rbp)
movswq -0x82(%rbp),%rax
ff
or     -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
shl    $0x5,%rax
mov    %rax,-0x8(%rbp)
movswq -0x84(%rbp),%rax
ff
or     -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
shl    $0x5,%rax
mov    %rax,-0x8(%rbp)
movswq -0x86(%rbp),%rax
ff
or     -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
shl    $0x5,%rax
mov    %rax,-0x8(%rbp)
movswq -0x88(%rbp),%rax
ff
or     -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
shl    $0x5,%rax
mov    %rax,-0x8(%rbp)
movswq -0x8a(%rbp),%rax
ff
or     -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
shl    $0x5,%rax
mov    %rax,-0x8(%rbp)
movswq -0x8c(%rbp),%rax
ff
or     -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
shl    $0x5,%rax
mov    %rax,-0x8(%rbp)
movswq -0x8e(%rbp),%rax
ff
or     -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
shl    $0x5,%rax
mov    %rax,-0x8(%rbp)
movswq -0x90(%rbp),%rax
ff
or     -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
lea    -0x80(%rbp),%rdi
mov    -0x8(%rbp),%rdx
lea    0x886(%rip),%rsi
call   1040 <sprintf@plt>
lea    -0x80(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <query_has_result@plt>
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<position_exists_in_database>:
push   %r14
push   %rbx
sub    $0x68,%rsp
mov    %rsi,%r14
mov    %rdi,%r11
mov    %rdi,%rax
shr    $0x14,%rax
mov    %eax,%r9d
and    $0x1f,%r9d
mov    %rdi,%rdx
shr    $0x19,%rdx
mov    %edx,%r10d
and    $0x1f,%r10d
mov    %rdi,%rbx
shr    $0x1e,%rbx
mov    %ebx,%esi
and    $0x1f,%esi
shr    $0x23,%rdi
mov    %edi,%ecx
and    $0x1f,%ecx
je     11a0 <position_exists_in_database+0x80>
and    $0x3,%edi
add    $0xffffffff,%edi
cmp    $0x2,%edi
jb     11b0 <position_exists_in_database+0x90>
add    $0xffffffff,%ecx
mov    %ecx,%eax
and    $0xfc,%eax
and    $0x3,%ecx
sub    %ecx,%eax
shl    $0x5,%eax
sub    $0xffffff80,%eax
and    $0x1fffe0,%eax
test   %si,%si
jne    121b <position_exists_in_database+0xfb>
xor    %r8d,%r8d
test   %r10w,%r10w
jne    123b <position_exists_in_database+0x11b>
jmp    1263 <position_exists_in_database+0x143>
test   %si,%si
je     11f9 <position_exists_in_database+0xd9>
and    $0x3,%ebx
add    $0xffffffff,%ebx
cmp    $0x1,%ebx
ja     1219 <position_exists_in_database+0xf9>
test   %ecx,%ecx
sete   %bl
test   %si,%si
sete   %dl
and    %bl,%dl
test   %r9w,%r9w
je     1355 <position_exists_in_database+0x235>
test   %r10w,%r10w
jne    1355 <position_exists_in_database+0x235>
test   %dl,%dl
je     1355 <position_exists_in_database+0x235>
and    $0x3,%eax
add    $0xffffffff,%eax
cmp    $0x2,%eax
jb     1355 <position_exists_in_database+0x235>
test   %ecx,%ecx
jne    116b <position_exists_in_database+0x4b>
xor    %eax,%eax
test   %si,%si
jne    121b <position_exists_in_database+0xfb>
jmp    118e <position_exists_in_database+0x6e>
test   %r10w,%r10w
je     137d <position_exists_in_database+0x25d>
and    $0x3,%edx
add    $0xffffffff,%edx
cmp    $0x2,%edx
jb     1355 <position_exists_in_database+0x235>
xor    %r8d,%r8d
xor    %eax,%eax
jmp    123b <position_exists_in_database+0x11b>
xor    %eax,%eax
movzwl %si,%ecx
add    $0xffffffff,%ecx
mov    %ecx,%r8d
and    $0xfc,%r8d
and    $0x3,%ecx
sub    %ecx,%r8d
add    $0x4,%r8d
test   %r10w,%r10w
je     1263 <position_exists_in_database+0x143>
movzwl %r10w,%ecx
add    $0xffffffff,%ecx
mov    %ecx,%r10d
and    $0xfc,%r10d
and    $0x3,%ecx
sub    %ecx,%r10d
shl    $0x5,%r10d
sub    $0xffffff80,%r10d
and    $0x1fffe0,%r10d
jmp    1266 <position_exists_in_database+0x146>
xor    %r10d,%r10d
mov    %r11d,%ecx
shr    $0xa,%ecx
mov    %r11d,%esi
shr    $0xf,%esi
and    $0x1f,%esi
test   %r9w,%r9w
je     1298 <position_exists_in_database+0x178>
movzwl %r9w,%edx
add    $0xffffffff,%edx
mov    %edx,%r9d
and    $0xfc,%r9d
and    $0x3,%edx
sub    %edx,%r9d
add    $0x4,%r9d
jmp    129b <position_exists_in_database+0x17b>
xor    %r9d,%r9d
mov    %r11d,%edi
shr    $0x5,%edi
and    $0x1f,%ecx
test   %esi,%esi
je     12c6 <position_exists_in_database+0x1a6>
add    $0xffffffff,%esi
mov    %esi,%ebx
and    $0xfc,%ebx
and    $0x3,%esi
sub    %esi,%ebx
shl    $0x5,%ebx
sub    $0xffffff80,%ebx
and    $0x1fffe0,%ebx
jmp    12c8 <position_exists_in_database+0x1a8>
xor    %ebx,%ebx
and    $0x1f,%edi
test   %ecx,%ecx
je     12e4 <position_exists_in_database+0x1c4>
add    $0xffffffff,%ecx
mov    %ecx,%esi
and    $0xfc,%esi
and    $0x3,%ecx
sub    %ecx,%esi
add    $0x4,%esi
jmp    12e6 <position_exists_in_database+0x1c6>
xor    %esi,%esi
and    $0x1f,%r11d
test   %edi,%edi
je     1328 <position_exists_in_database+0x208>
add    $0xffffffff,%edi
mov    %edi,%ecx
and    $0xfc,%ecx
and    $0x3,%edi
sub    %edi,%ecx
shl    $0x5,%ecx
sub    $0xffffff80,%ecx
and    $0x1fffe0,%ecx
test   %r11d,%r11d
je     132f <position_exists_in_database+0x20f>
add    $0xffffffff,%r11d
mov    %r11d,%edi
and    $0xfc,%edi
and    $0x3,%r11d
sub    %r11d,%edi
add    $0x4,%edi
jmp    1331 <position_exists_in_database+0x211>
xor    %ecx,%ecx
test   %r11d,%r11d
jne    130f <position_exists_in_database+0x1ef>
xor    %edi,%edi
or     %r8,%rax
shl    $0xa,%rax
or     %r10,%rax
or     %r9,%rax
shl    $0xa,%rax
or     %rax,%rbx
or     %rsi,%rbx
shl    $0xa,%rbx
or     %rbx,%rcx
or     %rdi,%rcx
mov    %rcx,%r11
lea    0xca4(%rip),%rsi
mov    %rsp,%rbx
mov    %rbx,%rdi
mov    %r11,%rdx
call   1040 <sprintf@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
call   1030 <query_has_result@plt>
add    $0x68,%rsp
pop    %rbx
pop    %r14
ret
mov    $0x1,%dl
test   %r9w,%r9w
jne    11c7 <position_exists_in_database+0xa7>
jmp    1355 <position_exists_in_database+0x235>

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

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