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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, unsigned int, ...);
int main(void) {
  unsigned int a;
  unsigned int x;
  unsigned int d;
  unsigned int r;
  unsigned int p;
  unsigned int dc = 0U;
  for (a = 0x1U; a < 0xFFFFFFFFU; a++) {
    r = (0x100000000ULL / a);
    if (a < 0x4000U) {
      x = (0xFFFFU / a);
      p = ((0x10000U - x) * a) & 0xFFFFU;
      if (p == a) {
        p = 0U;
        x++;
      }
      x <<= 16;
      p <<= 2;
      x += ((p / a) << 14);
      p = ((p % a) << 2);
      x += ((p / a) << 12);
      p = ((p % a) << 2);
      x += ((p / a) << 10);
      p = ((p % a) << 2);
      x += ((p / a) << 8);
      p = ((p % a) << 2);
      x += ((p / a) << 6);
      p = ((p % a) << 2);
      x += ((p / a) << 4);
      p = ((p % a) << 2);
      x += ((p / a) << 2);
      p = ((p % a) << 2);
      x += (p / a);
    } else if (a >= 0x10000000U) {
      if (a <= 0x80000000U) {
        x = 0xFFFFU / ((a + 0x10000U) >> 16);
        p = (0x100000000ULL - (1ULL * x * a));
        if (a <= p) {
          x += 0x01U;
        }
      } else {
        x = 1U;
      }
    } else {
      if (a <= 0x04137U) {
        x = 0x3ECECU;
      } else if (a <= 0x0469FU) {
        x = 0x39FFEU;
      } else if (a <= 0x04C7FU) {
        x = 0x358B9U;
      } else if (a <= 0x05347U) {
        x = 0x312F5U;
      } else if (a <= 0x05AB7U) {
        x = 0x2D270U;
      } else if (a <= 0x06317U) {
        x = 0x29561U;
      } else if (a <= 0x06CA7U) {
        x = 0x25B2BU;
      } else if (a <= 0x07777U) {
        x = 0x22494U;
      } else if (a <= 0x083A7U) {
        x = 0x1F1CBU;
      } else if (a <= 0x091AFU) {
        x = 0x1C1DAU;
      } else if (a <= 0x0A1B7U) {
        x = 0x19541U;
      } else if (a <= 0x0B3C7U) {
        x = 0x16C8AU;
      } else if (a <= 0x0C8C7U) {
        x = 0x14669U;
      } else if (a <= 0x0E0CFU) {
        x = 0x12384U;
      } else if (a <= 0x0FCC7U) {
        x = 0x10343U;
      } else if (a <= 0x11D37U) {
        x = 0x0E5C7U;
      } else if (a <= 0x1435FU) {
        x = 0x0CAAAU;
      } else if (a <= 0x17027U) {
        x = 0x0B203U;
      } else if (a <= 0x1A547U) {
        x = 0x09B90U;
      } else if (a <= 0x1E447U) {
        x = 0x08753U;
      } else if (a <= 0x22FFFU) {
        x = 0x07507U;
      } else if (a <= 0x28B77U) {
        x = 0x06499U;
      } else if (a <= 0x2FACFU) {
        x = 0x055EAU;
      } else if (a <= 0x3838FU) {
        x = 0x048DAU;
      } else if (a <= 0x42CF7U) {
        x = 0x03D4EU;
      } else {
        x = 0xFFFFU / ((a + 0x10000U) >> 16);
      }
      x >>= 2;
      a <<= 2;
      p = ((0U - a) * x) & 0xFFFFFFFFU;
      x += (((p >> 16) * (x & 0xFFFFU)) >> 16);
      p = ((0U - a) * x) & 0xFFFFFFFFU;
      x += (((p >> 16) * (x & 0xFFFFU)) >> 16);
      p = ((0U - a) * x) & 0xFFFFFFFFU;
      x <<= 2;
      a >>= 2;
      a <<= 3;
      if (a <= p) {
        x += 0x08U;
        p -= a;
      }
      a >>= 1;
      if (a <= p) {
        x += 0x04U;
        p -= a;
      }
      a >>= 1;
      if (a <= p) {
        x += 0x02U;
        p -= a;
      }
      a >>= 1;
      if (a <= p) {
        x += 0x01U;
      }
    }
    d = r - x;
    if (d != 0U) {
      dc++;
    }
    if (d != 0U) {
      printf("%04X: r: %08X, x: %08X, d: %08X\n", a, r, x, d);
    }
    if (a < 0x00100000U) {
      if ((a & 0x00000FFFU) == 0U) {
        printf("At: %08X, diffs: %u\n", a, dc);
      }
    }
    if ((a & 0x00FFFFFFU) == 0U) {
      printf("At: %08X, diffs: %u\n", a, dc);
    }
  }
  printf("Finished, diffs: %u\n", dc);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x1,-0x8(%rbp)
cmpl   $0xffffffff,-0x8(%rbp)
jae    17e9 <main+0x6d9>
mov    -0x8(%rbp),%eax
mov    %eax,%ecx
movabs $0x100000000,%rax
xor    %edx,%edx
div    %rcx
mov    %eax,-0x14(%rbp)
cmpl   $0x4000,-0x8(%rbp)
jae    1296 <main+0x186>
mov    $0xffff,%eax
xor    %edx,%edx
divl   -0x8(%rbp)
mov    %eax,-0xc(%rbp)
mov    $0x10000,%eax
sub    -0xc(%rbp),%eax
imul   -0x8(%rbp),%eax
and    $0xffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x8(%rbp),%eax
jne    1198 <main+0x88>
movl   $0x0,-0x18(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
shl    $0x10,%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0xe,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x2,%edx
mov    %edx,-0x18(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0xc,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x2,%edx
mov    %edx,-0x18(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0xa,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x2,%edx
mov    %edx,-0x18(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x8,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x2,%edx
mov    %edx,-0x18(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x6,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x2,%edx
mov    %edx,-0x18(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x4,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x2,%edx
mov    %edx,-0x18(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x2,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
shl    $0x2,%edx
mov    %edx,-0x18(%rbp)
mov    -0x18(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
jmp    1739 <main+0x629>
cmpl   $0x10000000,-0x8(%rbp)
jb     130e <main+0x1fe>
cmpl   $0x80000000,-0x8(%rbp)
ja     1302 <main+0x1f2>
mov    -0x8(%rbp),%ecx
add    $0x10000,%ecx
shr    $0x10,%ecx
mov    $0xffff,%eax
xor    %edx,%edx
div    %ecx
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,%ecx
shl    $0x0,%rcx
mov    -0x8(%rbp),%eax
imul   %rax,%rcx
movabs $0x100000000,%rax
sub    %rcx,%rax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x18(%rbp),%eax
ja     12fd <main+0x1ed>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1309 <main+0x1f9>
movl   $0x1,-0xc(%rbp)
jmp    1734 <main+0x624>
cmpl   $0x4137,-0x8(%rbp)
ja     1327 <main+0x217>
movl   $0x3ecec,-0xc(%rbp)
jmp    160f <main+0x4ff>
cmpl   $0x469f,-0x8(%rbp)
ja     1340 <main+0x230>
movl   $0x39ffe,-0xc(%rbp)
jmp    160a <main+0x4fa>
cmpl   $0x4c7f,-0x8(%rbp)
ja     1359 <main+0x249>
movl   $0x358b9,-0xc(%rbp)
jmp    1605 <main+0x4f5>
cmpl   $0x5347,-0x8(%rbp)
ja     1372 <main+0x262>
movl   $0x312f5,-0xc(%rbp)
jmp    1600 <main+0x4f0>
cmpl   $0x5ab7,-0x8(%rbp)
ja     138b <main+0x27b>
movl   $0x2d270,-0xc(%rbp)
jmp    15fb <main+0x4eb>
cmpl   $0x6317,-0x8(%rbp)
ja     13a4 <main+0x294>
movl   $0x29561,-0xc(%rbp)
jmp    15f6 <main+0x4e6>
cmpl   $0x6ca7,-0x8(%rbp)
ja     13bd <main+0x2ad>
movl   $0x25b2b,-0xc(%rbp)
jmp    15f1 <main+0x4e1>
cmpl   $0x7777,-0x8(%rbp)
ja     13d6 <main+0x2c6>
movl   $0x22494,-0xc(%rbp)
jmp    15ec <main+0x4dc>
cmpl   $0x83a7,-0x8(%rbp)
ja     13ef <main+0x2df>
movl   $0x1f1cb,-0xc(%rbp)
jmp    15e7 <main+0x4d7>
cmpl   $0x91af,-0x8(%rbp)
ja     1408 <main+0x2f8>
movl   $0x1c1da,-0xc(%rbp)
jmp    15e2 <main+0x4d2>
cmpl   $0xa1b7,-0x8(%rbp)
ja     1421 <main+0x311>
movl   $0x19541,-0xc(%rbp)
jmp    15dd <main+0x4cd>
cmpl   $0xb3c7,-0x8(%rbp)
ja     143a <main+0x32a>
movl   $0x16c8a,-0xc(%rbp)
jmp    15d8 <main+0x4c8>
cmpl   $0xc8c7,-0x8(%rbp)
ja     1453 <main+0x343>
movl   $0x14669,-0xc(%rbp)
jmp    15d3 <main+0x4c3>
cmpl   $0xe0cf,-0x8(%rbp)
ja     146c <main+0x35c>
movl   $0x12384,-0xc(%rbp)
jmp    15ce <main+0x4be>
cmpl   $0xfcc7,-0x8(%rbp)
ja     1485 <main+0x375>
movl   $0x10343,-0xc(%rbp)
jmp    15c9 <main+0x4b9>
cmpl   $0x11d37,-0x8(%rbp)
ja     149e <main+0x38e>
movl   $0xe5c7,-0xc(%rbp)
jmp    15c4 <main+0x4b4>
cmpl   $0x1435f,-0x8(%rbp)
ja     14b7 <main+0x3a7>
movl   $0xcaaa,-0xc(%rbp)
jmp    15bf <main+0x4af>
cmpl   $0x17027,-0x8(%rbp)
ja     14d0 <main+0x3c0>
movl   $0xb203,-0xc(%rbp)
jmp    15ba <main+0x4aa>
cmpl   $0x1a547,-0x8(%rbp)
ja     14e9 <main+0x3d9>
movl   $0x9b90,-0xc(%rbp)
jmp    15b5 <main+0x4a5>
cmpl   $0x1e447,-0x8(%rbp)
ja     1502 <main+0x3f2>
movl   $0x8753,-0xc(%rbp)
jmp    15b0 <main+0x4a0>
cmpl   $0x22fff,-0x8(%rbp)
ja     151b <main+0x40b>
movl   $0x7507,-0xc(%rbp)
jmp    15ab <main+0x49b>
cmpl   $0x28b77,-0x8(%rbp)
ja     1534 <main+0x424>
movl   $0x6499,-0xc(%rbp)
jmp    15a6 <main+0x496>
cmpl   $0x2facf,-0x8(%rbp)
ja     154d <main+0x43d>
movl   $0x55ea,-0xc(%rbp)
jmp    15a1 <main+0x491>
cmpl   $0x3838f,-0x8(%rbp)
ja     1566 <main+0x456>
movl   $0x48da,-0xc(%rbp)
jmp    159c <main+0x48c>
cmpl   $0x42cf7,-0x8(%rbp)
ja     157f <main+0x46f>
movl   $0x3d4e,-0xc(%rbp)
jmp    1597 <main+0x487>
mov    -0x8(%rbp),%ecx
add    $0x10000,%ecx
shr    $0x10,%ecx
mov    $0xffff,%eax
xor    %edx,%edx
div    %ecx
mov    %eax,-0xc(%rbp)
jmp    159c <main+0x48c>
jmp    15a1 <main+0x491>
jmp    15a6 <main+0x496>
jmp    15ab <main+0x49b>
jmp    15b0 <main+0x4a0>
jmp    15b5 <main+0x4a5>
jmp    15ba <main+0x4aa>
jmp    15bf <main+0x4af>
jmp    15c4 <main+0x4b4>
jmp    15c9 <main+0x4b9>
jmp    15ce <main+0x4be>
jmp    15d3 <main+0x4c3>
jmp    15d8 <main+0x4c8>
jmp    15dd <main+0x4cd>
jmp    15e2 <main+0x4d2>
jmp    15e7 <main+0x4d7>
jmp    15ec <main+0x4dc>
jmp    15f1 <main+0x4e1>
jmp    15f6 <main+0x4e6>
jmp    15fb <main+0x4eb>
jmp    1600 <main+0x4f0>
jmp    1605 <main+0x4f5>
jmp    160a <main+0x4fa>
jmp    160f <main+0x4ff>
mov    -0xc(%rbp),%eax
shr    $0x2,%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0x8(%rbp)
xor    %eax,%eax
sub    -0x8(%rbp),%eax
imul   -0xc(%rbp),%eax
and    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
shr    $0x10,%eax
mov    -0xc(%rbp),%ecx
and    $0xffff,%ecx
imul   %ecx,%eax
shr    $0x10,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x8(%rbp),%eax
imul   -0xc(%rbp),%eax
and    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
shr    $0x10,%eax
mov    -0xc(%rbp),%ecx
and    $0xffff,%ecx
imul   %ecx,%eax
shr    $0x10,%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x8(%rbp),%eax
imul   -0xc(%rbp),%eax
and    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%eax
shr    $0x2,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x3,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x18(%rbp),%eax
ja     16bf <main+0x5af>
mov    -0xc(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%ecx
mov    -0x18(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
shr    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x18(%rbp),%eax
ja     16e8 <main+0x5d8>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%ecx
mov    -0x18(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
shr    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x18(%rbp),%eax
ja     1711 <main+0x601>
mov    -0xc(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%ecx
mov    -0x18(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
shr    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x18(%rbp),%eax
ja     172f <main+0x61f>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1734 <main+0x624>
jmp    1739 <main+0x629>
mov    -0x14(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
cmpl   $0x0,-0x10(%rbp)
je     1755 <main+0x645>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x10(%rbp)
je     177a <main+0x66a>
mov    -0x8(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0xc(%rbp),%ecx
mov    -0x10(%rbp),%r8d
lea    0x88d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x100000,-0x8(%rbp)
jae    17b1 <main+0x6a1>
mov    -0x8(%rbp),%eax
and    $0xfff,%eax
cmp    $0x0,%eax
jne    17ac <main+0x69c>
mov    -0x8(%rbp),%esi
mov    -0x1c(%rbp),%edx
lea    0x87c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17b1 <main+0x6a1>
mov    -0x8(%rbp),%eax
and    $0xffffff,%eax
cmp    $0x0,%eax
jne    17d6 <main+0x6c6>
mov    -0x8(%rbp),%esi
mov    -0x1c(%rbp),%edx
lea    0x852(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17db <main+0x6cb>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    112d <main+0x1d>
mov    -0x1c(%rbp),%esi
lea    0x843(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    $0x1,%r14d
mov    $0x2,%r12d
mov    $0x4,%r13d
mov    $0x8,%ebx
mov    $0xfffffffc,%esi
xor    %ebp,%ebp
jmp    1164 <main+0x54>
xchg   %ax,%ax
add    $0x1,%r14
add    $0x2,%r12d
add    $0x4,%r13d
add    $0x8,%ebx
mov    0xc(%rsp),%esi
add    $0xfffffffc,%esi
mov    $0xffffffff,%eax
cmp    %rax,%r14
je     1598 <main+0x488>
movabs $0x100000000,%rax
xor    %edx,%edx
div    %r14
mov    %rax,%r9
cmp    $0x3fff,%r14
mov    %esi,0xc(%rsp)
mov    %ebp,0x8(%rsp)
ja     1290 <main+0x180>
mov    $0xffff,%ax
xor    %edx,%edx
div    %r14w
mov    %r9,0x10(%rsp)
movzwl %ax,%r9d
mov    $0x10000,%eax
sub    %r9d,%eax
imul   %r14d,%eax
movzwl %ax,%edx
mov    %edx,%eax
shl    $0x2,%eax
xor    %ecx,%ecx
cmp    %rdx,%r14
sete   %cl
mov    $0x0,%edx
cmove  %edx,%eax
xor    %edx,%edx
div    %r14d
mov    %eax,%r15d
lea    0x0(,%rdx,4),%eax
xor    %edx,%edx
div    %r14w
mov    %eax,%r8d
lea    0x0(,%rdx,4),%eax
xor    %edx,%edx
div    %r14w
mov    %eax,%r10d
lea    0x0(,%rdx,4),%eax
xor    %edx,%edx
div    %r14w
mov    %eax,%r11d
lea    0x0(,%rdx,4),%eax
xor    %edx,%edx
div    %r14w
mov    %eax,%edi
lea    0x0(,%rdx,4),%eax
xor    %edx,%edx
div    %r14w
mov    %eax,%ebp
lea    0x0(,%rdx,4),%eax
xor    %edx,%edx
div    %r14w
add    %r9d,%ecx
shl    $0x10,%ecx
shl    $0xe,%r15d
movzwl %r8w,%esi
shl    $0xc,%esi
mov    %ebx,%r9d
movzwl %r10w,%ebx
shl    $0xa,%ebx
movzwl %r11w,%r8d
shl    $0x8,%r8d
movzwl %di,%edi
shl    $0x6,%edi
movzwl %bp,%ebp
shl    $0x4,%ebp
movzwl %ax,%r10d
lea    0x0(,%rdx,4),%eax
xor    %edx,%edx
div    %r14w
movzwl %ax,%eax
add    %r15d,%esi
add    %ebx,%esi
mov    %r9d,%ebx
mov    0x10(%rsp),%r9
add    %ecx,%esi
add    %r8d,%esi
add    %edi,%esi
add    %ebp,%esi
lea    (%rsi,%r10,4),%ecx
add    %eax,%ecx
jmp    1510 <main+0x400>
nopl   0x0(%rax)
cmp    $0x10000000,%r14
jb     12e0 <main+0x1d0>
mov    $0x1,%ecx
mov    $0x80000000,%eax
cmp    %rax,%r14
ja     1510 <main+0x400>
lea    0x10000(%r14),%ecx
shr    $0x10,%ecx
mov    $0xffff,%ax
xor    %edx,%edx
div    %cx
movzwl %ax,%eax
mov    %r14d,%edx
imul   %eax,%edx
neg    %edx
xor    %ecx,%ecx
cmp    %rdx,%r14
setbe  %cl
add    %eax,%ecx
jmp    1510 <main+0x400>
nopl   0x0(%rax)
mov    $0x3ecec,%eax
cmp    $0x4138,%r14
jb     14a0 <main+0x390>
mov    $0x39ffe,%eax
cmp    $0x46a0,%r14
jb     14a0 <main+0x390>
mov    $0x358b9,%eax
cmp    $0x4c80,%r14
jb     14a0 <main+0x390>
mov    $0x312f5,%eax
cmp    $0x5348,%r14
jb     14a0 <main+0x390>
mov    $0x2d270,%eax
cmp    $0x5ab8,%r14
jb     14a0 <main+0x390>
mov    $0x29561,%eax
cmp    $0x6318,%r14
jb     14a0 <main+0x390>
mov    $0x25b2b,%eax
cmp    $0x6ca8,%r14
jb     14a0 <main+0x390>
mov    $0x22494,%eax
cmp    $0x7778,%r14
jb     14a0 <main+0x390>
mov    $0x1f1cb,%eax
cmp    $0x83a8,%r14
jb     14a0 <main+0x390>
mov    $0x1c1da,%eax
cmp    $0x91b0,%r14
jb     14a0 <main+0x390>
mov    $0x19541,%eax
cmp    $0xa1b8,%r14
jb     14a0 <main+0x390>
mov    $0x16c8a,%eax
cmp    $0xb3c8,%r14
jb     14a0 <main+0x390>
mov    $0x14669,%eax
cmp    $0xc8c8,%r14
jb     14a0 <main+0x390>
mov    $0x12384,%eax
cmp    $0xe0d0,%r14
jb     14a0 <main+0x390>
mov    $0x10343,%eax
cmp    $0xfcc8,%r14
jb     14a0 <main+0x390>
mov    $0xe5c7,%eax
cmp    $0x11d38,%r14
jb     14a0 <main+0x390>
mov    $0xcaaa,%eax
cmp    $0x14360,%r14
jb     14a0 <main+0x390>
mov    $0xb203,%eax
cmp    $0x17028,%r14
jb     14a0 <main+0x390>
mov    $0x9b90,%eax
cmp    $0x1a548,%r14
jb     14a0 <main+0x390>
mov    $0x8753,%eax
cmp    $0x1e448,%r14
jb     14a0 <main+0x390>
mov    $0x7507,%eax
cmp    $0x23000,%r14
jb     14a0 <main+0x390>
mov    $0x6499,%eax
cmp    $0x28b78,%r14
jb     14a0 <main+0x390>
mov    $0x55ea,%eax
cmp    $0x2fad0,%r14
jb     14a0 <main+0x390>
mov    $0x48da,%eax
cmp    $0x38390,%r14
jb     14a0 <main+0x390>
mov    $0x3d4e,%eax
cmp    $0x42cf8,%r14
jb     14a0 <main+0x390>
lea    0x10000(%r14),%ecx
shr    $0x10,%ecx
mov    $0xffff,%ax
xor    %edx,%edx
div    %cx
movzwl %ax,%eax
nopl   0x0(%rax)
shr    $0x2,%eax
mov    %eax,%ecx
imul   %esi,%ecx
shr    $0x10,%ecx
imul   %eax,%ecx
shr    $0x10,%ecx
add    %eax,%ecx
mov    %ecx,%eax
imul   %esi,%eax
shr    $0x10,%eax
movzwl %cx,%edx
imul   %eax,%edx
shr    $0x10,%edx
add    %ecx,%edx
lea    0x0(,%rdx,4),%eax
lea    0x8(,%rdx,4),%ecx
imul   %esi,%edx
cmp    %ebx,%edx
cmovb  %eax,%ecx
mov    %ebx,%eax
mov    $0x0,%esi
cmovb  %esi,%eax
sub    %eax,%edx
lea    0x4(%rcx),%eax
cmp    %r13d,%edx
cmovb  %ecx,%eax
mov    %r13d,%ecx
cmovb  %esi,%ecx
sub    %ecx,%edx
lea    0x2(%rax),%ecx
cmp    %r12d,%edx
cmovb  %eax,%ecx
mov    %r12d,%eax
cmovb  %esi,%eax
sub    %eax,%edx
cmp    %r14,%rdx
sbb    $0xffffffff,%ecx
xor    %ebp,%ebp
cmp    %ecx,%r9d
setne  %r15b
mov    %r9d,%r8d
sub    %ecx,%r8d
je     1535 <main+0x425>
lea    0xad8(%rip),%rdi
mov    %r14d,%esi
mov    %r9d,%edx
xor    %eax,%eax
call   1030 <printf@plt>
mov    %r15b,%bpl
mov    0x8(%rsp),%eax
add    %ebp,%eax
mov    %eax,%ebp
test   $0xfff00fff,%r14d
je     1560 <main+0x450>
test   $0xffffff,%r14d
jne    1140 <main+0x30>
jmp    1580 <main+0x470>
nopl   0x0(%rax,%rax,1)
lea    0xaba(%rip),%rdi
mov    %r14d,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1030 <printf@plt>
test   $0xffffff,%r14d
jne    1140 <main+0x30>
lea    0xa9a(%rip),%rdi
mov    %r14d,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1030 <printf@plt>
jmp    1140 <main+0x30>
lea    0xa97(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [33 x i8] c"%04X: r: %08X, x: %08X, d: %08X\0A\00"
@.str.1 = [21 x i8] c"At: %08X, diffs: %u\0A\00"
@.str.2 = [21 x i8] c"Finished, diffs: %u\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %7
store i32 1, i32* %2
br label %8
8: ; preds = %394, %0
%9 = load i32, i32* %2
%10 = icmp ult i32 %9, -1
br i1 %10, label %11, label %397
11: ; preds = %8
%12 = load i32, i32* %2
%13 = zext i32 %12 to i64
%14 = udiv i64 4294967296, %13
%15 = trunc i64 %14 to i32
store i32 %15, i32* %5
%16 = load i32, i32* %2
%17 = icmp ult i32 %16, 16384
br i1 %17, label %18, label %112
18: ; preds = %11
%19 = load i32, i32* %2
%20 = udiv i32 65535, %19
store i32 %20, i32* %3
%21 = load i32, i32* %3
%22 = sub i32 65536, %21
%23 = load i32, i32* %2
%24 = mul i32 %22, %23
%25 = and i32 %24, 65535
store i32 %25, i32* %6
%26 = load i32, i32* %6
%27 = load i32, i32* %2
%28 = icmp eq i32 %26, %27
br i1 %28, label %29, label %32
29: ; preds = %18
store i32 0, i32* %6
%30 = load i32, i32* %3
%31 = add i32 %30, 1
store i32 %31, i32* %3
br label %32
32: ; preds = %29, %18
%33 = load i32, i32* %3
%34 = shl i32 %33, 16
store i32 %34, i32* %3
%35 = load i32, i32* %6
%36 = shl i32 %35, 2
store i32 %36, i32* %6
%37 = load i32, i32* %6
%38 = load i32, i32* %2
%39 = udiv i32 %37, %38
%40 = shl i32 %39, 14
%41 = load i32, i32* %3
%42 = add i32 %41, %40
store i32 %42, i32* %3
%43 = load i32, i32* %6
%44 = load i32, i32* %2
%45 = urem i32 %43, %44
%46 = shl i32 %45, 2
store i32 %46, i32* %6
%47 = load i32, i32* %6
%48 = load i32, i32* %2
%49 = udiv i32 %47, %48
%50 = shl i32 %49, 12
%51 = load i32, i32* %3
%52 = add i32 %51, %50
store i32 %52, i32* %3
%53 = load i32, i32* %6
%54 = load i32, i32* %2
%55 = urem i32 %53, %54
%56 = shl i32 %55, 2
store i32 %56, i32* %6
%57 = load i32, i32* %6
%58 = load i32, i32* %2
%59 = udiv i32 %57, %58
%60 = shl i32 %59, 10
%61 = load i32, i32* %3
%62 = add i32 %61, %60
store i32 %62, i32* %3
%63 = load i32, i32* %6
%64 = load i32, i32* %2
%65 = urem i32 %63, %64
%66 = shl i32 %65, 2
store i32 %66, i32* %6
%67 = load i32, i32* %6
%68 = load i32, i32* %2
%69 = udiv i32 %67, %68
%70 = shl i32 %69, 8
%71 = load i32, i32* %3
%72 = add i32 %71, %70
store i32 %72, i32* %3
%73 = load i32, i32* %6
%74 = load i32, i32* %2
%75 = urem i32 %73, %74
%76 = shl i32 %75, 2
store i32 %76, i32* %6
%77 = load i32, i32* %6
%78 = load i32, i32* %2
%79 = udiv i32 %77, %78
%80 = shl i32 %79, 6
%81 = load i32, i32* %3
%82 = add i32 %81, %80
store i32 %82, i32* %3
%83 = load i32, i32* %6
%84 = load i32, i32* %2
%85 = urem i32 %83, %84
%86 = shl i32 %85, 2
store i32 %86, i32* %6
%87 = load i32, i32* %6
%88 = load i32, i32* %2
%89 = udiv i32 %87, %88
%90 = shl i32 %89, 4
%91 = load i32, i32* %3
%92 = add i32 %91, %90
store i32 %92, i32* %3
%93 = load i32, i32* %6
%94 = load i32, i32* %2
%95 = urem i32 %93, %94
%96 = shl i32 %95, 2
store i32 %96, i32* %6
%97 = load i32, i32* %6
%98 = load i32, i32* %2
%99 = udiv i32 %97, %98
%100 = shl i32 %99, 2
%101 = load i32, i32* %3
%102 = add i32 %101, %100
store i32 %102, i32* %3
%103 = load i32, i32* %6
%104 = load i32, i32* %2
%105 = urem i32 %103, %104
%106 = shl i32 %105, 2
store i32 %106, i32* %6
%107 = load i32, i32* %6
%108 = load i32, i32* %2
%109 = udiv i32 %107, %108
%110 = load i32, i32* %3
%111 = add i32 %110, %109
store i32 %111, i32* %3
br label %355
112: ; preds = %11
%113 = load i32, i32* %2
%114 = icmp uge i32 %113, 268435456
br i1 %114, label %115, label %140
115: ; preds = %112
%116 = load i32, i32* %2
%117 = icmp ule i32 %116, -2147483648
br i1 %117, label %118, label %138
118: ; preds = %115
%119 = load i32, i32* %2
%120 = add i32 %119, 65536
%121 = lshr i32 %120, 16
%122 = udiv i32 65535, %121
store i32 %122, i32* %3
%123 = load i32, i32* %3
%124 = zext i32 %123 to i64
%125 = mul i64 1, %124
%126 = load i32, i32* %2
%127 = zext i32 %126 to i64
%128 = mul i64 %125, %127
%129 = sub i64 4294967296, %128
%130 = trunc i64 %129 to i32
store i32 %130, i32* %6
%131 = load i32, i32* %2
%132 = load i32, i32* %6
%133 = icmp ule i32 %131, %132
br i1 %133, label %134, label %137
134: ; preds = %118
%135 = load i32, i32* %3
%136 = add i32 %135, 1
store i32 %136, i32* %3
br label %137
137: ; preds = %134, %118
br label %139
138: ; preds = %115
store i32 1, i32* %3
br label %139
139: ; preds = %138, %137
br label %354
140: ; preds = %112
%141 = load i32, i32* %2
%142 = icmp ule i32 %141, 16695
br i1 %142, label %143, label %144
143: ; preds = %140
store i32 257260, i32* %3
br label %269
144: ; preds = %140
%145 = load i32, i32* %2
%146 = icmp ule i32 %145, 18079
br i1 %146, label %147, label %148
147: ; preds = %144
store i32 237566, i32* %3
br label %268
148: ; preds = %144
%149 = load i32, i32* %2
%150 = icmp ule i32 %149, 19583
br i1 %150, label %151, label %152
151: ; preds = %148
store i32 219321, i32* %3
br label %267
152: ; preds = %148
%153 = load i32, i32* %2
%154 = icmp ule i32 %153, 21319
br i1 %154, label %155, label %156
155: ; preds = %152
store i32 201461, i32* %3
br label %266
156: ; preds = %152
%157 = load i32, i32* %2
%158 = icmp ule i32 %157, 23223
br i1 %158, label %159, label %160
159: ; preds = %156
store i32 184944, i32* %3
br label %265
160: ; preds = %156
%161 = load i32, i32* %2
%162 = icmp ule i32 %161, 25367
br i1 %162, label %163, label %164
163: ; preds = %160
store i32 169313, i32* %3
br label %264
164: ; preds = %160
%165 = load i32, i32* %2
%166 = icmp ule i32 %165, 27815
br i1 %166, label %167, label %168
167: ; preds = %164
store i32 154411, i32* %3
br label %263
168: ; preds = %164
%169 = load i32, i32* %2
%170 = icmp ule i32 %169, 30583
br i1 %170, label %171, label %172
171: ; preds = %168
store i32 140436, i32* %3
br label %262
172: ; preds = %168
%173 = load i32, i32* %2
%174 = icmp ule i32 %173, 33703
br i1 %174, label %175, label %176
175: ; preds = %172
store i32 127435, i32* %3
br label %261
176: ; preds = %172
%177 = load i32, i32* %2
%178 = icmp ule i32 %177, 37295
br i1 %178, label %179, label %180
179: ; preds = %176
store i32 115162, i32* %3
br label %260
180: ; preds = %176
%181 = load i32, i32* %2
%182 = icmp ule i32 %181, 41399
br i1 %182, label %183, label %184
183: ; preds = %180
store i32 103745, i32* %3
br label %259
184: ; preds = %180
%185 = load i32, i32* %2
%186 = icmp ule i32 %185, 46023
br i1 %186, label %187, label %188
187: ; preds = %184
store i32 93322, i32* %3
br label %258
188: ; preds = %184
%189 = load i32, i32* %2
%190 = icmp ule i32 %189, 51399
br i1 %190, label %191, label %192
191: ; preds = %188
store i32 83561, i32* %3
br label %257
192: ; preds = %188
%193 = load i32, i32* %2
%194 = icmp ule i32 %193, 57551
br i1 %194, label %195, label %196
195: ; preds = %192
store i32 74628, i32* %3
br label %256
196: ; preds = %192
%197 = load i32, i32* %2
%198 = icmp ule i32 %197, 64711
br i1 %198, label %199, label %200
199: ; preds = %196
store i32 66371, i32* %3
br label %255
200: ; preds = %196
%201 = load i32, i32* %2
%202 = icmp ule i32 %201, 73015
br i1 %202, label %203, label %204
203: ; preds = %200
store i32 58823, i32* %3
br label %254
204: ; preds = %200
%205 = load i32, i32* %2
%206 = icmp ule i32 %205, 82783
br i1 %206, label %207, label %208
207: ; preds = %204
store i32 51882, i32* %3
br label %253
208: ; preds = %204
%209 = load i32, i32* %2
%210 = icmp ule i32 %209, 94247
br i1 %210, label %211, label %212
211: ; preds = %208
store i32 45571, i32* %3
br label %252
212: ; preds = %208
%213 = load i32, i32* %2
%214 = icmp ule i32 %213, 107847
br i1 %214, label %215, label %216
215: ; preds = %212
store i32 39824, i32* %3
br label %251
216: ; preds = %212
%217 = load i32, i32* %2
%218 = icmp ule i32 %217, 123975
br i1 %218, label %219, label %220
219: ; preds = %216
store i32 34643, i32* %3
br label %250
220: ; preds = %216
%221 = load i32, i32* %2
%222 = icmp ule i32 %221, 143359
br i1 %222, label %223, label %224
223: ; preds = %220
store i32 29959, i32* %3
br label %249
224: ; preds = %220
%225 = load i32, i32* %2
%226 = icmp ule i32 %225, 166775
br i1 %226, label %227, label %228
227: ; preds = %224
store i32 25753, i32* %3
br label %248
228: ; preds = %224
%229 = load i32, i32* %2
%230 = icmp ule i32 %229, 195279
br i1 %230, label %231, label %232
231: ; preds = %228
store i32 21994, i32* %3
br label %247
232: ; preds = %228
%233 = load i32, i32* %2
%234 = icmp ule i32 %233, 230287
br i1 %234, label %235, label %236
235: ; preds = %232
store i32 18650, i32* %3
br label %246
236: ; preds = %232
%237 = load i32, i32* %2
%238 = icmp ule i32 %237, 273655
br i1 %238, label %239, label %240
239: ; preds = %236
store i32 15694, i32* %3
br label %245
240: ; preds = %236
%241 = load i32, i32* %2
%242 = add i32 %241, 65536
%243 = lshr i32 %242, 16
%244 = udiv i32 65535, %243
store i32 %244, i32* %3
br label %245
245: ; preds = %240, %239
br label %246
246: ; preds = %245, %235
br label %247
247: ; preds = %246, %231
br label %248
248: ; preds = %247, %227
br label %249
249: ; preds = %248, %223
br label %250
250: ; preds = %249, %219
br label %251
251: ; preds = %250, %215
br label %252
252: ; preds = %251, %211
br label %253
253: ; preds = %252, %207
br label %254
254: ; preds = %253, %203
br label %255
255: ; preds = %254, %199
br label %256
256: ; preds = %255, %195
br label %257
257: ; preds = %256, %191
br label %258
258: ; preds = %257, %187
br label %259
259: ; preds = %258, %183
br label %260
260: ; preds = %259, %179
br label %261
261: ; preds = %260, %175
br label %262
262: ; preds = %261, %171
br label %263
263: ; preds = %262, %167
br label %264
264: ; preds = %263, %163
br label %265
265: ; preds = %264, %159
br label %266
266: ; preds = %265, %155
br label %267
267: ; preds = %266, %151
br label %268
268: ; preds = %267, %147
br label %269
269: ; preds = %268, %143
%270 = load i32, i32* %3
%271 = lshr i32 %270, 2
store i32 %271, i32* %3
%272 = load i32, i32* %2
%273 = shl i32 %272, 2
store i32 %273, i32* %2
%274 = load i32, i32* %2
%275 = sub i32 0, %274
%276 = load i32, i32* %3
%277 = mul i32 %275, %276
%278 = and i32 %277, -1
store i32 %278, i32* %6
%279 = load i32, i32* %6
%280 = lshr i32 %279, 16
%281 = load i32, i32* %3
%282 = and i32 %281, 65535
%283 = mul i32 %280, %282
%284 = lshr i32 %283, 16
%285 = load i32, i32* %3
%286 = add i32 %285, %284
store i32 %286, i32* %3
%287 = load i32, i32* %2
%288 = sub i32 0, %287
%289 = load i32, i32* %3
%290 = mul i32 %288, %289
%291 = and i32 %290, -1
store i32 %291, i32* %6
%292 = load i32, i32* %6
%293 = lshr i32 %292, 16
%294 = load i32, i32* %3
%295 = and i32 %294, 65535
%296 = mul i32 %293, %295
%297 = lshr i32 %296, 16
%298 = load i32, i32* %3
%299 = add i32 %298, %297
store i32 %299, i32* %3
%300 = load i32, i32* %2
%301 = sub i32 0, %300
%302 = load i32, i32* %3
%303 = mul i32 %301, %302
%304 = and i32 %303, -1
store i32 %304, i32* %6
%305 = load i32, i32* %3
%306 = shl i32 %305, 2
store i32 %306, i32* %3
%307 = load i32, i32* %2
%308 = lshr i32 %307, 2
store i32 %308, i32* %2
%309 = load i32, i32* %2
%310 = shl i32 %309, 3
store i32 %310, i32* %2
%311 = load i32, i32* %2
%312 = load i32, i32* %6
%313 = icmp ule i32 %311, %312
br i1 %313, label %314, label %320
314: ; preds = %269
%315 = load i32, i32* %3
%316 = add i32 %315, 8
store i32 %316, i32* %3
%317 = load i32, i32* %2
%318 = load i32, i32* %6
%319 = sub i32 %318, %317
store i32 %319, i32* %6
br label %320
320: ; preds = %314, %269
%321 = load i32, i32* %2
%322 = lshr i32 %321, 1
store i32 %322, i32* %2
%323 = load i32, i32* %2
%324 = load i32, i32* %6
%325 = icmp ule i32 %323, %324
br i1 %325, label %326, label %332
326: ; preds = %320
%327 = load i32, i32* %3
%328 = add i32 %327, 4
store i32 %328, i32* %3
%329 = load i32, i32* %2
%330 = load i32, i32* %6
%331 = sub i32 %330, %329
store i32 %331, i32* %6
br label %332
332: ; preds = %326, %320
%333 = load i32, i32* %2
%334 = lshr i32 %333, 1
store i32 %334, i32* %2
%335 = load i32, i32* %2
%336 = load i32, i32* %6
%337 = icmp ule i32 %335, %336
br i1 %337, label %338, label %344
338: ; preds = %332
%339 = load i32, i32* %3
%340 = add i32 %339, 2
store i32 %340, i32* %3
%341 = load i32, i32* %2
%342 = load i32, i32* %6
%343 = sub i32 %342, %341
store i32 %343, i32* %6
br label %344
344: ; preds = %338, %332
%345 = load i32, i32* %2
%346 = lshr i32 %345, 1
store i32 %346, i32* %2
%347 = load i32, i32* %2
%348 = load i32, i32* %6
%349 = icmp ule i32 %347, %348
br i1 %349, label %350, label %353
350: ; preds = %344
%351 = load i32, i32* %3
%352 = add i32 %351, 1
store i32 %352, i32* %3
br label %353
353: ; preds = %350, %344
br label %354
354: ; preds = %353, %139
br label %355
355: ; preds = %354, %32
%356 = load i32, i32* %5
%357 = load i32, i32* %3
%358 = sub i32 %356, %357
store i32 %358, i32* %4
%359 = load i32, i32* %4
%360 = icmp ne i32 %359, 0
br i1 %360, label %361, label %364
361: ; preds = %355
%362 = load i32, i32* %7
%363 = add i32 %362, 1
store i32 %363, i32* %7
br label %364
364: ; preds = %361, %355
%365 = load i32, i32* %4
%366 = icmp ne i32 %365, 0
br i1 %366, label %367, label %373
367: ; preds = %364
%368 = load i32, i32* %2
%369 = load i32, i32* %5
%370 = load i32, i32* %3
%371 = load i32, i32* %4
%372 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %368, i32 %369, i32 %370, i32 %371)
br label %373
373: ; preds = %367, %364
%374 = load i32, i32* %2
%375 = icmp ult i32 %374, 1048576
br i1 %375, label %376, label %385
376: ; preds = %373
%377 = load i32, i32* %2
%378 = and i32 %377, 4095
%379 = icmp eq i32 %378, 0
br i1 %379, label %380, label %384
380: ; preds = %376
%381 = load i32, i32* %2
%382 = load i32, i32* %7
%383 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0), i32 %381, i32 %382)
br label %384
384: ; preds = %380, %376
br label %385
385: ; preds = %384, %373
%386 = load i32, i32* %2
%387 = and i32 %386, 16777215
%388 = icmp eq i32 %387, 0
br i1 %388, label %389, label %393
389: ; preds = %385
%390 = load i32, i32* %2
%391 = load i32, i32* %7
%392 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0), i32 %390, i32 %391)
br label %393
393: ; preds = %389, %385
br label %394
394: ; preds = %393
%395 = load i32, i32* %2
%396 = add i32 %395, 1
store i32 %396, i32* %2
br label %8
397: ; preds = %8
%398 = load i32, i32* %7
%399 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.2, i64 0, i64 0), i32 %398)
ret i32 0
}

LLVM IR (-O2):
@.str = [33 x i8] c"%04X: r: %08X, x: %08X, d: %08X\0A\00"
@.str.1 = [21 x i8] c"At: %08X, diffs: %u\0A\00"
@.str.2 = [21 x i8] c"Finished, diffs: %u\0A\00"
define i32 @main() {
br label %1
1: ; preds = %0, %202
%2 = phi i64 [ 1, %0 ], [ %203, %202 ]
%3 = phi i32 [ 0, %0 ], [ %188, %202 ]
%4 = udiv i64 4294967296, %2
%5 = trunc i64 %4 to i32
%6 = icmp ult i64 %2, 16384
br i1 %6, label %7, label %67
7: ; preds = %1
%8 = trunc i64 %2 to i32
%9 = trunc i64 %2 to i16
%10 = udiv i16 -1, %9
%11 = zext i16 %10 to i32
%12 = sub nuw nsw i32 65536, %11
%13 = mul nuw nsw i32 %12, %8
%14 = and i32 %13, 65535
%15 = zext i32 %14 to i64
%16 = icmp eq i64 %2, %15
%17 = zext i1 %16 to i32
%18 = add nuw nsw i32 %17, %11
%19 = shl i32 %18, 16
%20 = shl nuw nsw i32 %14, 2
%21 = select i1 %16, i32 0, i32 %20
%22 = udiv i32 %21, %8
%23 = shl nuw i32 %22, 14
%24 = urem i32 %21, %8
%25 = trunc i32 %24 to i16
%26 = shl nuw i16 %25, 2
%27 = udiv i16 %26, %9
%28 = zext i16 %27 to i32
%29 = shl nuw nsw i32 %28, 12
%30 = urem i16 %26, %9
%31 = shl nuw i16 %30, 2
%32 = udiv i16 %31, %9
%33 = zext i16 %32 to i32
%34 = shl nuw nsw i32 %33, 10
%35 = urem i16 %31, %9
%36 = shl nuw i16 %35, 2
%37 = udiv i16 %36, %9
%38 = zext i16 %37 to i32
%39 = shl nuw nsw i32 %38, 8
%40 = urem i16 %36, %9
%41 = shl nuw i16 %40, 2
%42 = udiv i16 %41, %9
%43 = zext i16 %42 to i32
%44 = shl nuw nsw i32 %43, 6
%45 = urem i16 %41, %9
%46 = shl nuw i16 %45, 2
%47 = udiv i16 %46, %9
%48 = zext i16 %47 to i32
%49 = shl nuw nsw i32 %48, 4
%50 = urem i16 %46, %9
%51 = shl nuw i16 %50, 2
%52 = udiv i16 %51, %9
%53 = zext i16 %52 to i32
%54 = shl nuw nsw i32 %53, 2
%55 = urem i16 %51, %9
%56 = shl nuw i16 %55, 2
%57 = udiv i16 %56, %9
%58 = zext i16 %57 to i32
%59 = add i32 %29, %23
%60 = add i32 %59, %34
%61 = add i32 %60, %19
%62 = add i32 %61, %39
%63 = add i32 %62, %44
%64 = add i32 %63, %49
%65 = add i32 %64, %54
%66 = add i32 %65, %58
br label %182
67: ; preds = %1
%68 = icmp ugt i64 %2, 268435455
br i1 %68, label %69, label %85
69: ; preds = %67
%70 = icmp ult i64 %2, 2147483649
br i1 %70, label %71, label %182
71: ; preds = %69
%72 = trunc i64 %2 to i32
%73 = add nuw i32 %72, 65536
%74 = lshr i32 %73, 16
%75 = trunc i32 %74 to i16
%76 = udiv i16 -1, %75
%77 = zext i16 %76 to i32
%78 = trunc i64 %2 to i32
%79 = mul i32 %78, %77
%80 = sub i32 0, %79
%81 = zext i32 %80 to i64
%82 = icmp ule i64 %2, %81
%83 = zext i1 %82 to i32
%84 = add nuw nsw i32 %83, %77
br label %182
85: ; preds = %67
%86 = icmp ult i64 %2, 16696
br i1 %86, label %142, label %87
87: ; preds = %85
%88 = icmp ult i64 %2, 18080
br i1 %88, label %142, label %89
89: ; preds = %87
%90 = icmp ult i64 %2, 19584
br i1 %90, label %142, label %91
91: ; preds = %89
%92 = icmp ult i64 %2, 21320
br i1 %92, label %142, label %93
93: ; preds = %91
%94 = icmp ult i64 %2, 23224
br i1 %94, label %142, label %95
95: ; preds = %93
%96 = icmp ult i64 %2, 25368
br i1 %96, label %142, label %97
97: ; preds = %95
%98 = icmp ult i64 %2, 27816
br i1 %98, label %142, label %99
99: ; preds = %97
%100 = icmp ult i64 %2, 30584
br i1 %100, label %142, label %101
101: ; preds = %99
%102 = icmp ult i64 %2, 33704
br i1 %102, label %142, label %103
103: ; preds = %101
%104 = icmp ult i64 %2, 37296
br i1 %104, label %142, label %105
105: ; preds = %103
%106 = icmp ult i64 %2, 41400
br i1 %106, label %142, label %107
107: ; preds = %105
%108 = icmp ult i64 %2, 46024
br i1 %108, label %142, label %109
109: ; preds = %107
%110 = icmp ult i64 %2, 51400
br i1 %110, label %142, label %111
111: ; preds = %109
%112 = icmp ult i64 %2, 57552
br i1 %112, label %142, label %113
113: ; preds = %111
%114 = icmp ult i64 %2, 64712
br i1 %114, label %142, label %115
115: ; preds = %113
%116 = icmp ult i64 %2, 73016
br i1 %116, label %142, label %117
117: ; preds = %115
%118 = icmp ult i64 %2, 82784
br i1 %118, label %142, label %119
119: ; preds = %117
%120 = icmp ult i64 %2, 94248
br i1 %120, label %142, label %121
121: ; preds = %119
%122 = icmp ult i64 %2, 107848
br i1 %122, label %142, label %123
123: ; preds = %121
%124 = icmp ult i64 %2, 123976
br i1 %124, label %142, label %125
125: ; preds = %123
%126 = icmp ult i64 %2, 143360
br i1 %126, label %142, label %127
127: ; preds = %125
%128 = icmp ult i64 %2, 166776
br i1 %128, label %142, label %129
129: ; preds = %127
%130 = icmp ult i64 %2, 195280
br i1 %130, label %142, label %131
131: ; preds = %129
%132 = icmp ult i64 %2, 230288
br i1 %132, label %142, label %133
133: ; preds = %131
%134 = icmp ult i64 %2, 273656
br i1 %134, label %142, label %135
135: ; preds = %133
%136 = trunc i64 %2 to i32
%137 = add nuw nsw i32 %136, 65536
%138 = lshr i32 %137, 16
%139 = trunc i32 %138 to i16
%140 = udiv i16 -1, %139
%141 = zext i16 %140 to i32
br label %142
142: ; preds = %133, %131, %129, %127, %125, %123, %121, %119, %117, %115, %113, %111, %109, %107, %105, %103, %101, %99, %97, %95, %93, %91, %89, %87, %85, %135
%143 = phi i32 [ %141, %135 ], [ 257260, %85 ], [ 237566, %87 ], [ 219321, %89 ], [ 201461, %91 ], [ 184944, %93 ], [ 169313, %95 ], [ 154411, %97 ], [ 140436, %99 ], [ 127435, %101 ], [ 115162, %103 ], [ 103745, %105 ], [ 93322, %107 ], [ 83561, %109 ], [ 74628, %111 ], [ 66371, %113 ], [ 58823, %115 ], [ 51882, %117 ], [ 45571, %119 ], [ 39824, %121 ], [ 34643, %123 ], [ 29959, %125 ], [ 25753, %127 ], [ 21994, %129 ], [ 18650, %131 ], [ 15694, %133 ]
%144 = lshr i32 %143, 2
%145 = trunc i64 %2 to i32
%146 = mul nsw i32 %145, -4
%147 = mul i32 %144, %146
%148 = lshr i32 %147, 16
%149 = mul nuw i32 %148, %144
%150 = lshr i32 %149, 16
%151 = add nuw nsw i32 %150, %144
%152 = mul i32 %151, %146
%153 = lshr i32 %152, 16
%154 = and i32 %151, 65535
%155 = mul nuw i32 %153, %154
%156 = lshr i32 %155, 16
%157 = add nuw nsw i32 %156, %151
%158 = mul i32 %157, %146
%159 = shl nuw nsw i32 %157, 2
%160 = shl nuw nsw i32 %145, 3
%161 = icmp ult i32 %158, %160
%162 = add nuw nsw i32 %159, 8
%163 = select i1 %161, i32 %159, i32 %162
%164 = select i1 %161, i32 0, i32 %160
%165 = sub i32 %158, %164
%166 = shl nuw nsw i32 %145, 2
%167 = icmp ult i32 %165, %166
%168 = add nuw nsw i32 %163, 4
%169 = select i1 %167, i32 %163, i32 %168
%170 = select i1 %167, i32 0, i32 %166
%171 = sub i32 %165, %170
%172 = shl nuw nsw i32 %145, 1
%173 = icmp ult i32 %171, %172
%174 = or i32 %169, 2
%175 = select i1 %173, i32 %169, i32 %174
%176 = select i1 %173, i32 0, i32 %172
%177 = sub i32 %171, %176
%178 = zext i32 %177 to i64
%179 = icmp ule i64 %2, %178
%180 = zext i1 %179 to i32
%181 = add nuw nsw i32 %175, %180
br label %182
182: ; preds = %142, %71, %69, %7
%183 = phi i32 [ %66, %7 ], [ %84, %71 ], [ 1, %69 ], [ %181, %142 ]
%184 = sub i32 %5, %183
%185 = icmp eq i32 %184, 0
%186 = xor i1 %185, true
%187 = zext i1 %186 to i32
%188 = add i32 %3, %187
%189 = trunc i64 %2 to i32
br i1 %185, label %192, label %190
190: ; preds = %182
%191 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %189, i32 %5, i32 %183, i32 %184)
br label %192
192: ; preds = %182, %190
%193 = and i32 %189, -1044481
%194 = icmp eq i32 %193, 0
br i1 %194, label %195, label %197
195: ; preds = %192
%196 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0), i32 %189, i32 %188)
br label %197
197: ; preds = %195, %192
%198 = and i32 %189, 16777215
%199 = icmp eq i32 %198, 0
br i1 %199, label %200, label %202
200: ; preds = %197
%201 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0), i32 %189, i32 %188)
br label %202
202: ; preds = %197, %200
%203 = add nuw nsw i64 %2, 1
%204 = icmp eq i64 %203, 4294967295
br i1 %204, label %205, label %1
205: ; preds = %202
%206 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.2, i64 0, i64 0), i32 %188)
ret i32 0
}