#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 fail(char *, int);
unsigned char getreg(int);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ setreg(int, int);
void register_test() {
  printf("register test\n");
  printf("Passed line %i\n", 168);
  {
    ((getreg(((0x9c000000) + 0)) == 0x00) ? 1 : fail("?", 170));
    ((getreg(((0x9c000000) + 1)) == 0x00) ? 1 : fail("?", 171));
    ((getreg(((0x9c000000) + 2)) == 0xc1) ? 1 : fail("?", 172));
    ((getreg(((0x9c000000) + 3)) == 0x03) ? 1 : fail("?", 173));
    ((getreg(((0x9c000000) + 4)) == 0x00) ? 1 : fail("?", 174));
    ((getreg(((0x9c000000) + 5)) == 0x60) ? 1 : fail("?", 175));
    ((getreg(((0x9c000000) + 6)) == 0x00) ? 1 : fail("?", 176));
    ((getreg(((0x9c000000) + 7)) == 0x00) ? 1 : fail("?", 177));
    setreg(((0x9c000000) + 3), (0x80));
    ((getreg(((0x9c000000) + 0)) == 0x00) ? 1 : fail("?", 180));
    ((getreg(((0x9c000000) + 1)) == 0x00) ? 1 : fail("?", 181));
    setreg(((0x9c000000) + 3), 0x00);
  }
  setreg(((0x9c000000) + 3), 0x00);
  setreg(((0x9c000000) + 3), 0x00);
  setreg(((0x9c000000) + 3), 0x00);
  setreg(((0x9c000000) + 3), 0x00);
  setreg(((0x9c000000) + 3), 0x00);
  printf("Passed line %i\n", 190);
  {
    unsigned long tmp;
    int i;
    tmp = getreg(((0x9c000000) + 5));
    setreg(((0x9c000000) + 5), ~tmp);
    ((getreg(((0x9c000000) + 5)) == tmp) ? 1 : fail("?", 196));
    for (i = 0; i < 9; i++) {
      setreg(((0x9c000000) + 5), 1 << i);
      ((getreg(((0x9c000000) + 5)) == tmp) ? 1 : fail("?", 200));
    }
    tmp = getreg(((0x9c000000) + 6));
    setreg(((0x9c000000) + 6), ~tmp);
    ((getreg(((0x9c000000) + 6)) == tmp) ? 1 : fail("?", 205));
    for (i = 0; i < 9; i++) {
      setreg(((0x9c000000) + 6), 1 << i);
      ((getreg(((0x9c000000) + 6)) == tmp) ? 1 : fail("?", 209));
    }
  }
  printf("Passed line %i\n", 213);
  {
    ((getreg(((0x9c000000) + 4)) == 0x00) ? 1 : fail("?", 215));
    setreg(((0x9c000000) + 4), 0x45);
    ((getreg(((0x9c000000) + 4)) == 0x00) ? 1 : fail("?", 217));
    setreg(((0x9c000000) + 4), 0xaa);
    ((getreg(((0x9c000000) + 4)) == 0x00) ? 1 : fail("?", 219));
  }
  ((!(getreg(((0x9c000000) + 5)) & 0x1f)) ? 1 : fail("?", 221));
  printf("Passed line %i\n", 222);
  {
    int i;
    setreg(((0x9c000000) + 3), (0x80));
    ((getreg(((0x9c000000) + 3)) == (0x80)) ? 1 : fail("?", 226));
    for (i = 0; i < 16; i++) {
      unsigned short tmp = 0xdead << i;
      setreg(((0x9c000000) + 1), tmp >> 8);
      setreg(((0x9c000000) + 0), tmp & 0xff);
      ((getreg(((0x9c000000) + 0)) == (tmp & 0xff)) ? 1 : fail("?", 231));
      ((getreg(((0x9c000000) + 1)) == (tmp >> 8)) ? 1 : fail("?", 232));
    }
    setreg(((0x9c000000) + 1), 0xa1);
    setreg(((0x9c000000) + 1), 0xa1);
    setreg(((0x9c000000) + 1), 0xa1);
    setreg(((0x9c000000) + 1), 0xa1);
    setreg(((0x9c000000) + 1), 0xa1);
    ((!(getreg(((0x9c000000) + 5)) & 0x1f)) ? 1 : fail("?", 240));
    for (i = 0; i < 16; i++) {
      unsigned short tmp = 0xdead << i;
      setreg(((0x9c000000) + 0), tmp >> 8);
      setreg(((0x9c000000) + 1), tmp & 0xff);
      ((getreg(((0x9c000000) + 0)) == (tmp >> 8)) ? 1 : fail("?", 245));
      ((getreg(((0x9c000000) + 1)) == (tmp & 0xff)) ? 1 : fail("?", 246));
    }
    setreg(((0x9c000000) + 1), 0xa2);
    setreg(((0x9c000000) + 1), 0xa2);
    setreg(((0x9c000000) + 1), 0xa2);
    setreg(((0x9c000000) + 1), 0xa2);
    setreg(((0x9c000000) + 1), 0xa2);
    setreg(((0x9c000000) + 3), 0x00);
    ((getreg(((0x9c000000) + 3)) == 0x00) ? 1 : fail("?", 255));
    ((!(getreg(((0x9c000000) + 5)) & 0x1f)) ? 1 : fail("?", 256));
  }
  printf("Passed line %i\n", 258);
  {
    int i;
    for (i = 0; i < 6; i++) {
      unsigned short tmp = (0xde << i) & 0x3f;
      setreg(((0x9c000000) + 3), tmp);
      ((getreg(((0x9c000000) + 3)) == tmp) ? 1 : fail("?", 264));
    }
    ((!(getreg(((0x9c000000) + 5)) & 0x1f)) ? 1 : fail("?", 266));
  }
  setreg(((0x9c000000) + 3), 0xa3);
  setreg(((0x9c000000) + 3), 0xa3);
  setreg(((0x9c000000) + 3), 0xa3);
  setreg(((0x9c000000) + 3), 0xa3);
  setreg(((0x9c000000) + 3), 0xa3);
  printf("Passed line %i\n", 274);
  {
    int i;
    setreg(((0x9c000000) + 7), 0);
    ((getreg(((0x9c000000) + 7)) == 0) ? 1 : fail("?", 279));
    setreg(((0x9c000000) + 7), 0xff);
    ((getreg(((0x9c000000) + 7)) == 0xff) ? 1 : fail("?", 281));
    for (i = 0; i < 16; i++) {
      unsigned char tmp = 0xdead << i;
      setreg(((0x9c000000) + 7), tmp);
      ((getreg(((0x9c000000) + 7)) == tmp) ? 1 : fail("?", 285));
    }
  }
  setreg(((0x9c000000) + 7), 0xa5);
  setreg(((0x9c000000) + 7), 0xa5);
  setreg(((0x9c000000) + 7), 0xa5);
  setreg(((0x9c000000) + 7), 0xa5);
  setreg(((0x9c000000) + 7), 0xa5);
  printf("Passed line %i\n", 294);
}


x86 assembly (clang, -O0):
<register_test>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
lea    0xeb1(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xeb2(%rip),%rdi
mov    $0xa8,%esi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x9c000000,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    1184 <register_test+0x44>
jmp    1195 <register_test+0x55>
lea    0xe94(%rip),%rdi
mov    $0xaa,%esi
call   1030 <fail@plt>
mov    $0x9c000001,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    11b0 <register_test+0x70>
jmp    11c1 <register_test+0x81>
lea    0xe68(%rip),%rdi
mov    $0xab,%esi
call   1030 <fail@plt>
mov    $0x9c000002,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0xc1,%eax
jne    11de <register_test+0x9e>
jmp    11ef <register_test+0xaf>
lea    0xe3a(%rip),%rdi
mov    $0xac,%esi
call   1030 <fail@plt>
mov    $0x9c000003,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x3,%eax
jne    120a <register_test+0xca>
jmp    121b <register_test+0xdb>
lea    0xe0e(%rip),%rdi
mov    $0xad,%esi
call   1030 <fail@plt>
mov    $0x9c000004,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    1236 <register_test+0xf6>
jmp    1247 <register_test+0x107>
lea    0xde2(%rip),%rdi
mov    $0xae,%esi
call   1030 <fail@plt>
mov    $0x9c000005,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x60,%eax
jne    1262 <register_test+0x122>
jmp    1273 <register_test+0x133>
lea    0xdb6(%rip),%rdi
mov    $0xaf,%esi
call   1030 <fail@plt>
mov    $0x9c000006,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    128e <register_test+0x14e>
jmp    129f <register_test+0x15f>
lea    0xd8a(%rip),%rdi
mov    $0xb0,%esi
call   1030 <fail@plt>
mov    $0x9c000007,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    12ba <register_test+0x17a>
jmp    12cb <register_test+0x18b>
lea    0xd5e(%rip),%rdi
mov    $0xb1,%esi
call   1030 <fail@plt>
mov    $0x9c000003,%edi
mov    $0x80,%esi
call   1040 <setreg@plt>
mov    $0x9c000000,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    12f5 <register_test+0x1b5>
jmp    1306 <register_test+0x1c6>
lea    0xd23(%rip),%rdi
mov    $0xb4,%esi
call   1030 <fail@plt>
mov    $0x9c000001,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    1321 <register_test+0x1e1>
jmp    1332 <register_test+0x1f2>
lea    0xcf7(%rip),%rdi
mov    $0xb5,%esi
call   1030 <fail@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1040 <setreg@plt>
lea    0xc8e(%rip),%rdi
mov    $0xbe,%esi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x9c000005,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
xor    $0xffffffffffffffff,%rax
mov    %eax,%esi
mov    $0x9c000005,%edi
call   1040 <setreg@plt>
mov    $0x9c000005,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    -0x8(%rbp),%rax
jne    13ce <register_test+0x28e>
jmp    13df <register_test+0x29f>
lea    0xc4a(%rip),%rdi
mov    $0xc4,%esi
call   1030 <fail@plt>
movl   $0x0,-0xc(%rbp)
cmpl   $0x9,-0xc(%rbp)
jge    143f <register_test+0x2ff>
mov    -0xc(%rbp),%ecx
mov    $0x1,%esi
shl    %cl,%esi
mov    $0x9c000005,%edi
call   1040 <setreg@plt>
mov    $0x9c000005,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    -0x8(%rbp),%rax
jne    1420 <register_test+0x2e0>
jmp    1431 <register_test+0x2f1>
lea    0xbf8(%rip),%rdi
mov    $0xc8,%esi
call   1030 <fail@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    13e6 <register_test+0x2a6>
mov    $0x9c000006,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
xor    $0xffffffffffffffff,%rax
mov    %eax,%esi
mov    $0x9c000006,%edi
call   1040 <setreg@plt>
mov    $0x9c000006,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    -0x8(%rbp),%rax
jne    1480 <register_test+0x340>
jmp    1491 <register_test+0x351>
lea    0xb98(%rip),%rdi
mov    $0xcd,%esi
call   1030 <fail@plt>
movl   $0x0,-0xc(%rbp)
cmpl   $0x9,-0xc(%rbp)
jge    14f1 <register_test+0x3b1>
mov    -0xc(%rbp),%ecx
mov    $0x1,%esi
shl    %cl,%esi
mov    $0x9c000006,%edi
call   1040 <setreg@plt>
mov    $0x9c000006,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    -0x8(%rbp),%rax
jne    14d2 <register_test+0x392>
jmp    14e3 <register_test+0x3a3>
lea    0xb46(%rip),%rdi
mov    $0xd1,%esi
call   1030 <fail@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1498 <register_test+0x358>
lea    0xb17(%rip),%rdi
mov    $0xd5,%esi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x9c000004,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    151f <register_test+0x3df>
jmp    1530 <register_test+0x3f0>
lea    0xaf9(%rip),%rdi
mov    $0xd7,%esi
call   1030 <fail@plt>
mov    $0x9c000004,%edi
mov    $0x45,%esi
call   1040 <setreg@plt>
mov    $0x9c000004,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    155a <register_test+0x41a>
jmp    156b <register_test+0x42b>
lea    0xabe(%rip),%rdi
mov    $0xd9,%esi
call   1030 <fail@plt>
mov    $0x9c000004,%edi
mov    $0xaa,%esi
call   1040 <setreg@plt>
mov    $0x9c000004,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    1595 <register_test+0x455>
jmp    15a6 <register_test+0x466>
lea    0xa83(%rip),%rdi
mov    $0xdb,%esi
call   1030 <fail@plt>
mov    $0x9c000005,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
and    $0x1f,%eax
cmp    $0x0,%eax
jne    15c4 <register_test+0x484>
jmp    15d5 <register_test+0x495>
lea    0xa54(%rip),%rdi
mov    $0xdd,%esi
call   1030 <fail@plt>
lea    0xa33(%rip),%rdi
mov    $0xde,%esi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x9c000003,%edi
mov    $0x80,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x80,%eax
jne    1614 <register_test+0x4d4>
jmp    1625 <register_test+0x4e5>
lea    0xa04(%rip),%rdi
mov    $0xe2,%esi
call   1030 <fail@plt>
movl   $0x0,-0x10(%rbp)
cmpl   $0x10,-0x10(%rbp)
jge    16de <register_test+0x59e>
mov    -0x10(%rbp),%ecx
mov    $0xdead,%eax
shl    %cl,%eax
mov    %ax,-0x12(%rbp)
movzwl -0x12(%rbp),%esi
sar    $0x8,%esi
mov    $0x9c000001,%edi
call   1040 <setreg@plt>
movzwl -0x12(%rbp),%esi
and    $0xff,%esi
mov    $0x9c000000,%edi
call   1040 <setreg@plt>
mov    $0x9c000000,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
movzwl -0x12(%rbp),%ecx
and    $0xff,%ecx
cmp    %ecx,%eax
jne    168d <register_test+0x54d>
jmp    169e <register_test+0x55e>
lea    0x98b(%rip),%rdi
mov    $0xe7,%esi
call   1030 <fail@plt>
mov    $0x9c000001,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
movzwl -0x12(%rbp),%ecx
sar    $0x8,%ecx
cmp    %ecx,%eax
jne    16bf <register_test+0x57f>
jmp    16d0 <register_test+0x590>
lea    0x959(%rip),%rdi
mov    $0xe8,%esi
call   1030 <fail@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    162c <register_test+0x4ec>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1040 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1040 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1040 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1040 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1040 <setreg@plt>
mov    $0x9c000005,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
and    $0x1f,%eax
cmp    $0x0,%eax
jne    1747 <register_test+0x607>
jmp    1758 <register_test+0x618>
lea    0x8d1(%rip),%rdi
mov    $0xf0,%esi
call   1030 <fail@plt>
movl   $0x0,-0x10(%rbp)
cmpl   $0x10,-0x10(%rbp)
jge    1811 <register_test+0x6d1>
mov    -0x10(%rbp),%ecx
mov    $0xdead,%eax
shl    %cl,%eax
mov    %ax,-0x14(%rbp)
movzwl -0x14(%rbp),%esi
sar    $0x8,%esi
mov    $0x9c000000,%edi
call   1040 <setreg@plt>
movzwl -0x14(%rbp),%esi
and    $0xff,%esi
mov    $0x9c000001,%edi
call   1040 <setreg@plt>
mov    $0x9c000000,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
movzwl -0x14(%rbp),%ecx
sar    $0x8,%ecx
cmp    %ecx,%eax
jne    17bd <register_test+0x67d>
jmp    17ce <register_test+0x68e>
lea    0x85b(%rip),%rdi
mov    $0xf5,%esi
call   1030 <fail@plt>
mov    $0x9c000001,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
movzwl -0x14(%rbp),%ecx
and    $0xff,%ecx
cmp    %ecx,%eax
jne    17f2 <register_test+0x6b2>
jmp    1803 <register_test+0x6c3>
lea    0x826(%rip),%rdi
mov    $0xf6,%esi
call   1030 <fail@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    175f <register_test+0x61f>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1040 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1040 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1040 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1040 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    1883 <register_test+0x743>
jmp    1894 <register_test+0x754>
lea    0x795(%rip),%rdi
mov    $0xff,%esi
call   1030 <fail@plt>
mov    $0x9c000005,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
and    $0x1f,%eax
cmp    $0x0,%eax
jne    18b2 <register_test+0x772>
jmp    18c3 <register_test+0x783>
lea    0x766(%rip),%rdi
mov    $0x100,%esi
call   1030 <fail@plt>
lea    0x745(%rip),%rdi
mov    $0x102,%esi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x18(%rbp)
cmpl   $0x6,-0x18(%rbp)
jge    1943 <register_test+0x803>
mov    -0x18(%rbp),%ecx
mov    $0xde,%eax
shl    %cl,%eax
and    $0x3f,%eax
mov    %ax,-0x1a(%rbp)
movzwl -0x1a(%rbp),%esi
mov    $0x9c000003,%edi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
movzwl -0x1a(%rbp),%ecx
cmp    %ecx,%eax
jne    1924 <register_test+0x7e4>
jmp    1935 <register_test+0x7f5>
lea    0x6f4(%rip),%rdi
mov    $0x108,%esi
call   1030 <fail@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    18dd <register_test+0x79d>
mov    $0x9c000005,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
and    $0x1f,%eax
cmp    $0x0,%eax
jne    1961 <register_test+0x821>
jmp    1972 <register_test+0x832>
lea    0x6b7(%rip),%rdi
mov    $0x10a,%esi
call   1030 <fail@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1040 <setreg@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1040 <setreg@plt>
lea    0x64b(%rip),%rdi
mov    $0x112,%esi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x9c000007,%edi
xor    %esi,%esi
call   1040 <setreg@plt>
mov    $0x9c000007,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0x0,%eax
jne    19f7 <register_test+0x8b7>
jmp    1a08 <register_test+0x8c8>
lea    0x621(%rip),%rdi
mov    $0x117,%esi
call   1030 <fail@plt>
mov    $0x9c000007,%edi
mov    $0xff,%esi
call   1040 <setreg@plt>
mov    $0x9c000007,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
cmp    $0xff,%eax
jne    1a34 <register_test+0x8f4>
jmp    1a45 <register_test+0x905>
lea    0x5e4(%rip),%rdi
mov    $0x119,%esi
call   1030 <fail@plt>
movl   $0x0,-0x20(%rbp)
cmpl   $0x10,-0x20(%rbp)
jge    1aae <register_test+0x96e>
mov    -0x20(%rbp),%ecx
mov    $0xdead,%eax
shl    %cl,%eax
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%esi
mov    $0x9c000007,%edi
call   1040 <setreg@plt>
mov    $0x9c000007,%edi
call   1060 <getreg@plt>
movzbl %al,%eax
movzbl -0x21(%rbp),%ecx
cmp    %ecx,%eax
jne    1a8f <register_test+0x94f>
jmp    1aa0 <register_test+0x960>
lea    0x589(%rip),%rdi
mov    $0x11d,%esi
call   1030 <fail@plt>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1a4c <register_test+0x90c>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1040 <setreg@plt>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1040 <setreg@plt>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1040 <setreg@plt>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1040 <setreg@plt>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1040 <setreg@plt>
lea    0x50f(%rip),%rdi
mov    $0x126,%esi
mov    $0x0,%al
call   1050 <printf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<register_test>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
lea    0xeb4(%rip),%rdi
call   1030 <puts@plt>
lea    0xe96(%rip),%rdi
mov    $0xa8,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x9c000000,%edi
call   1070 <getreg@plt>
test   %al,%al
je     1195 <register_test+0x45>
lea    0xe85(%rip),%rdi
mov    $0xaa,%esi
call   1040 <fail@plt>
mov    $0x9c000001,%edi
call   1070 <getreg@plt>
test   %al,%al
je     11b4 <register_test+0x64>
lea    0xe66(%rip),%rdi
mov    $0xab,%esi
call   1040 <fail@plt>
mov    $0x9c000002,%edi
call   1070 <getreg@plt>
cmp    $0xc1,%al
je     11d3 <register_test+0x83>
lea    0xe47(%rip),%rdi
mov    $0xac,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
cmp    $0x3,%al
je     11f2 <register_test+0xa2>
lea    0xe28(%rip),%rdi
mov    $0xad,%esi
call   1040 <fail@plt>
mov    $0x9c000004,%edi
call   1070 <getreg@plt>
test   %al,%al
je     1211 <register_test+0xc1>
lea    0xe09(%rip),%rdi
mov    $0xae,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    $0x60,%al
je     1230 <register_test+0xe0>
lea    0xdea(%rip),%rdi
mov    $0xaf,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
test   %al,%al
je     124f <register_test+0xff>
lea    0xdcb(%rip),%rdi
mov    $0xb0,%esi
call   1040 <fail@plt>
mov    $0x9c000007,%edi
call   1070 <getreg@plt>
test   %al,%al
je     126e <register_test+0x11e>
lea    0xdac(%rip),%rdi
mov    $0xb1,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
mov    $0x80,%esi
call   1050 <setreg@plt>
mov    $0x9c000000,%edi
call   1070 <getreg@plt>
test   %al,%al
je     129c <register_test+0x14c>
lea    0xd7e(%rip),%rdi
mov    $0xb4,%esi
call   1040 <fail@plt>
mov    $0x9c000001,%edi
call   1070 <getreg@plt>
test   %al,%al
je     12bb <register_test+0x16b>
lea    0xd5f(%rip),%rdi
mov    $0xb5,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
lea    0xcf6(%rip),%rdi
mov    $0xbe,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
mov    %eax,%ebx
movzbl %al,%ebp
mov    %ebp,%esi
not    %esi
mov    $0x9c000005,%edi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bpl,%al
je     1353 <register_test+0x203>
lea    0xcc7(%rip),%rdi
mov    $0xc4,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x1,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     1381 <register_test+0x231>
lea    0xc99(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x2,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     13af <register_test+0x25f>
lea    0xc6b(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x4,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     13dd <register_test+0x28d>
lea    0xc3d(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x8,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     140b <register_test+0x2bb>
lea    0xc0f(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x10,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     1439 <register_test+0x2e9>
lea    0xbe1(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x20,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     1467 <register_test+0x317>
lea    0xbb3(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x40,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     1495 <register_test+0x345>
lea    0xb85(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x80,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     14c3 <register_test+0x373>
lea    0xb57(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
mov    $0x100,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     14f1 <register_test+0x3a1>
lea    0xb29(%rip),%rdi
mov    $0xc8,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
mov    %eax,%ebx
movzbl %al,%ebp
mov    %ebp,%esi
not    %esi
mov    $0x9c000006,%edi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bpl,%al
je     152e <register_test+0x3de>
lea    0xaec(%rip),%rdi
mov    $0xcd,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x1,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     155c <register_test+0x40c>
lea    0xabe(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x2,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     158a <register_test+0x43a>
lea    0xa90(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x4,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     15b8 <register_test+0x468>
lea    0xa62(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x8,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     15e6 <register_test+0x496>
lea    0xa34(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x10,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     1614 <register_test+0x4c4>
lea    0xa06(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x20,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     1642 <register_test+0x4f2>
lea    0x9d8(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x40,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     1670 <register_test+0x520>
lea    0x9aa(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x80,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     169e <register_test+0x54e>
lea    0x97c(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
mov    $0x9c000006,%edi
mov    $0x100,%esi
call   1050 <setreg@plt>
mov    $0x9c000006,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     16cc <register_test+0x57c>
lea    0x94e(%rip),%rdi
mov    $0xd1,%esi
call   1040 <fail@plt>
lea    0x92d(%rip),%rdi
mov    $0xd5,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x9c000004,%edi
call   1070 <getreg@plt>
test   %al,%al
je     16fe <register_test+0x5ae>
lea    0x91c(%rip),%rdi
mov    $0xd7,%esi
call   1040 <fail@plt>
mov    $0x9c000004,%edi
mov    $0x45,%esi
call   1050 <setreg@plt>
mov    $0x9c000004,%edi
call   1070 <getreg@plt>
test   %al,%al
je     172c <register_test+0x5dc>
lea    0x8ee(%rip),%rdi
mov    $0xd9,%esi
call   1040 <fail@plt>
mov    $0x9c000004,%edi
mov    $0xaa,%esi
call   1050 <setreg@plt>
mov    $0x9c000004,%edi
call   1070 <getreg@plt>
test   %al,%al
je     175a <register_test+0x60a>
lea    0x8c0(%rip),%rdi
mov    $0xdb,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
test   $0x1f,%al
je     1779 <register_test+0x629>
lea    0x8a1(%rip),%rdi
mov    $0xdd,%esi
call   1040 <fail@plt>
lea    0x880(%rip),%rdi
xor    %r15d,%r15d
mov    $0xde,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x9c000003,%edi
mov    $0x80,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
cmp    $0x80,%al
je     17bd <register_test+0x66d>
lea    0x85d(%rip),%rdi
mov    $0xe2,%esi
call   1040 <fail@plt>
lea    0x84c(%rip),%r14
jmp    17da <register_test+0x68a>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%r15d
cmp    $0x10,%r15d
je     183f <register_test+0x6ef>
mov    $0xdead,%ebp
mov    %r15d,%ecx
shl    %cl,%ebp
mov    %ebp,%ebx
shr    $0x8,%ebx
movzbl %bl,%esi
mov    $0x9c000001,%edi
call   1050 <setreg@plt>
movzbl %bpl,%ebp
mov    $0x9c000000,%edi
mov    %ebp,%esi
call   1050 <setreg@plt>
mov    $0x9c000000,%edi
call   1070 <getreg@plt>
cmp    %bpl,%al
je     1822 <register_test+0x6d2>
mov    %r14,%rdi
mov    $0xe7,%esi
call   1040 <fail@plt>
mov    $0x9c000001,%edi
call   1070 <getreg@plt>
cmp    %bl,%al
je     17d0 <register_test+0x680>
mov    %r14,%rdi
mov    $0xe8,%esi
call   1040 <fail@plt>
jmp    17d0 <register_test+0x680>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1050 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1050 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1050 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1050 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa1,%esi
call   1050 <setreg@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
test   $0x1f,%al
je     18a9 <register_test+0x759>
lea    0x771(%rip),%rdi
mov    $0xf0,%esi
call   1040 <fail@plt>
xor    %ebx,%ebx
lea    0x75e(%rip),%r14
jmp    18c8 <register_test+0x778>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%ebx
cmp    $0x10,%ebx
je     192f <register_test+0x7df>
mov    $0xdead,%ebp
mov    %ebx,%ecx
shl    %cl,%ebp
mov    %ebp,%eax
shr    $0x8,%eax
movzbl %al,%r15d
mov    $0x9c000000,%edi
mov    %r15d,%esi
call   1050 <setreg@plt>
movzbl %bpl,%esi
mov    $0x9c000001,%edi
call   1050 <setreg@plt>
mov    $0x9c000000,%edi
call   1070 <getreg@plt>
cmp    %r15b,%al
je     1911 <register_test+0x7c1>
mov    %r14,%rdi
mov    $0xf5,%esi
call   1040 <fail@plt>
mov    $0x9c000001,%edi
call   1070 <getreg@plt>
cmp    %bpl,%al
je     18c0 <register_test+0x770>
mov    %r14,%rdi
mov    $0xf6,%esi
call   1040 <fail@plt>
jmp    18c0 <register_test+0x770>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1050 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1050 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1050 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1050 <setreg@plt>
mov    $0x9c000001,%edi
mov    $0xa2,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
test   %al,%al
je     19a5 <register_test+0x855>
lea    0x675(%rip),%rdi
mov    $0xff,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
test   $0x1f,%al
je     19c4 <register_test+0x874>
lea    0x656(%rip),%rdi
mov    $0x100,%esi
call   1040 <fail@plt>
lea    0x635(%rip),%rdi
mov    $0x102,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x9c000003,%edi
mov    $0x1e,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
cmp    $0x1e,%al
je     1a05 <register_test+0x8b5>
lea    0x615(%rip),%rdi
mov    $0x108,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
mov    $0x3c,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
cmp    $0x3c,%al
je     1a33 <register_test+0x8e3>
lea    0x5e7(%rip),%rdi
mov    $0x108,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
mov    $0x38,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
cmp    $0x38,%al
je     1a61 <register_test+0x911>
lea    0x5b9(%rip),%rdi
mov    $0x108,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
mov    $0x30,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
cmp    $0x30,%al
je     1a8f <register_test+0x93f>
lea    0x58b(%rip),%rdi
mov    $0x108,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
mov    $0x20,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
cmp    $0x20,%al
je     1abd <register_test+0x96d>
lea    0x55d(%rip),%rdi
mov    $0x108,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
call   1070 <getreg@plt>
test   %al,%al
je     1ae8 <register_test+0x998>
lea    0x532(%rip),%rdi
mov    $0x108,%esi
call   1040 <fail@plt>
mov    $0x9c000005,%edi
call   1070 <getreg@plt>
test   $0x1f,%al
je     1b07 <register_test+0x9b7>
lea    0x513(%rip),%rdi
mov    $0x10a,%esi
call   1040 <fail@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1050 <setreg@plt>
mov    $0x9c000003,%edi
mov    $0xa3,%esi
call   1050 <setreg@plt>
lea    0x4a7(%rip),%rdi
mov    $0x112,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x9c000007,%edi
xor    %esi,%esi
call   1050 <setreg@plt>
mov    $0x9c000007,%edi
call   1070 <getreg@plt>
test   %al,%al
je     1b90 <register_test+0xa40>
lea    0x48a(%rip),%rdi
mov    $0x117,%esi
call   1040 <fail@plt>
mov    $0x9c000007,%edi
mov    $0xff,%esi
call   1050 <setreg@plt>
mov    $0x9c000007,%edi
call   1070 <getreg@plt>
cmp    $0xff,%al
je     1bbe <register_test+0xa6e>
lea    0x45c(%rip),%rdi
mov    $0x119,%esi
call   1040 <fail@plt>
xor    %ebx,%ebx
lea    0x449(%rip),%r14
jmp    1bd8 <register_test+0xa88>
nopl   0x0(%rax)
add    $0x1,%ebx
cmp    $0x10,%ebx
je     1c0e <register_test+0xabe>
mov    $0xdead,%eax
mov    %ebx,%ecx
shl    %cl,%eax
movzbl %al,%ebp
mov    $0x9c000007,%edi
mov    %ebp,%esi
call   1050 <setreg@plt>
mov    $0x9c000007,%edi
call   1070 <getreg@plt>
cmp    %bpl,%al
je     1bd0 <register_test+0xa80>
mov    %r14,%rdi
mov    $0x11d,%esi
call   1040 <fail@plt>
jmp    1bd0 <register_test+0xa80>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1050 <setreg@plt>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1050 <setreg@plt>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1050 <setreg@plt>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1050 <setreg@plt>
mov    $0x9c000007,%edi
mov    $0xa5,%esi
call   1050 <setreg@plt>
lea    0x3a0(%rip),%rdi
mov    $0x126,%esi
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1060 <printf@plt>

LLVM IR (-O0):
@.str = [15 x i8] c"register test\0A\00"
@.str.1 = [16 x i8] c"Passed line %i\0A\00"
@.str.2 = [2 x i8] c"?\00"
define void @register_test() {
%1 = alloca i64
%2 = alloca i32
%3 = alloca i32
%4 = alloca i16
%5 = alloca i16
%6 = alloca i32
%7 = alloca i16
%8 = alloca i32
%9 = alloca i8
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0))
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i32 168)
%12 = call zeroext i8 @getreg(i32 -1677721600)
%13 = zext i8 %12 to i32
%14 = icmp eq i32 %13, 0
br i1 %14, label %15, label %16
15: ; preds = %0
br label %18
16: ; preds = %0
%17 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 170)
br label %18
18: ; preds = %16, %15
%19 = phi i32 [ 1, %15 ], [ %17, %16 ]
%20 = call zeroext i8 @getreg(i32 -1677721599)
%21 = zext i8 %20 to i32
%22 = icmp eq i32 %21, 0
br i1 %22, label %23, label %24
23: ; preds = %18
br label %26
24: ; preds = %18
%25 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 171)
br label %26
26: ; preds = %24, %23
%27 = phi i32 [ 1, %23 ], [ %25, %24 ]
%28 = call zeroext i8 @getreg(i32 -1677721598)
%29 = zext i8 %28 to i32
%30 = icmp eq i32 %29, 193
br i1 %30, label %31, label %32
31: ; preds = %26
br label %34
32: ; preds = %26
%33 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 172)
br label %34
34: ; preds = %32, %31
%35 = phi i32 [ 1, %31 ], [ %33, %32 ]
%36 = call zeroext i8 @getreg(i32 -1677721597)
%37 = zext i8 %36 to i32
%38 = icmp eq i32 %37, 3
br i1 %38, label %39, label %40
39: ; preds = %34
br label %42
40: ; preds = %34
%41 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 173)
br label %42
42: ; preds = %40, %39
%43 = phi i32 [ 1, %39 ], [ %41, %40 ]
%44 = call zeroext i8 @getreg(i32 -1677721596)
%45 = zext i8 %44 to i32
%46 = icmp eq i32 %45, 0
br i1 %46, label %47, label %48
47: ; preds = %42
br label %50
48: ; preds = %42
%49 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 174)
br label %50
50: ; preds = %48, %47
%51 = phi i32 [ 1, %47 ], [ %49, %48 ]
%52 = call zeroext i8 @getreg(i32 -1677721595)
%53 = zext i8 %52 to i32
%54 = icmp eq i32 %53, 96
br i1 %54, label %55, label %56
55: ; preds = %50
br label %58
56: ; preds = %50
%57 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 175)
br label %58
58: ; preds = %56, %55
%59 = phi i32 [ 1, %55 ], [ %57, %56 ]
%60 = call zeroext i8 @getreg(i32 -1677721594)
%61 = zext i8 %60 to i32
%62 = icmp eq i32 %61, 0
br i1 %62, label %63, label %64
63: ; preds = %58
br label %66
64: ; preds = %58
%65 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 176)
br label %66
66: ; preds = %64, %63
%67 = phi i32 [ 1, %63 ], [ %65, %64 ]
%68 = call zeroext i8 @getreg(i32 -1677721593)
%69 = zext i8 %68 to i32
%70 = icmp eq i32 %69, 0
br i1 %70, label %71, label %72
71: ; preds = %66
br label %74
72: ; preds = %66
%73 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 177)
br label %74
74: ; preds = %72, %71
%75 = phi i32 [ 1, %71 ], [ %73, %72 ]
%76 = call i32 @setreg(i32 -1677721597, i32 128)
%77 = call zeroext i8 @getreg(i32 -1677721600)
%78 = zext i8 %77 to i32
%79 = icmp eq i32 %78, 0
br i1 %79, label %80, label %81
80: ; preds = %74
br label %83
81: ; preds = %74
%82 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 180)
br label %83
83: ; preds = %81, %80
%84 = phi i32 [ 1, %80 ], [ %82, %81 ]
%85 = call zeroext i8 @getreg(i32 -1677721599)
%86 = zext i8 %85 to i32
%87 = icmp eq i32 %86, 0
br i1 %87, label %88, label %89
88: ; preds = %83
br label %91
89: ; preds = %83
%90 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 181)
br label %91
91: ; preds = %89, %88
%92 = phi i32 [ 1, %88 ], [ %90, %89 ]
%93 = call i32 @setreg(i32 -1677721597, i32 0)
%94 = call i32 @setreg(i32 -1677721597, i32 0)
%95 = call i32 @setreg(i32 -1677721597, i32 0)
%96 = call i32 @setreg(i32 -1677721597, i32 0)
%97 = call i32 @setreg(i32 -1677721597, i32 0)
%98 = call i32 @setreg(i32 -1677721597, i32 0)
%99 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i32 190)
%100 = call zeroext i8 @getreg(i32 -1677721595)
%101 = zext i8 %100 to i64
store i64 %101, i64* %1
%102 = load i64, i64* %1
%103 = xor i64 %102, -1
%104 = trunc i64 %103 to i32
%105 = call i32 @setreg(i32 -1677721595, i32 %104)
%106 = call zeroext i8 @getreg(i32 -1677721595)
%107 = zext i8 %106 to i64
%108 = load i64, i64* %1
%109 = icmp eq i64 %107, %108
br i1 %109, label %110, label %111
110: ; preds = %91
br label %113
111: ; preds = %91
%112 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 196)
br label %113
113: ; preds = %111, %110
%114 = phi i32 [ 1, %110 ], [ %112, %111 ]
store i32 0, i32* %2
br label %115
115: ; preds = %131, %113
%116 = load i32, i32* %2
%117 = icmp slt i32 %116, 9
br i1 %117, label %118, label %134
118: ; preds = %115
%119 = load i32, i32* %2
%120 = shl i32 1, %119
%121 = call i32 @setreg(i32 -1677721595, i32 %120)
%122 = call zeroext i8 @getreg(i32 -1677721595)
%123 = zext i8 %122 to i64
%124 = load i64, i64* %1
%125 = icmp eq i64 %123, %124
br i1 %125, label %126, label %127
126: ; preds = %118
br label %129
127: ; preds = %118
%128 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 200)
br label %129
129: ; preds = %127, %126
%130 = phi i32 [ 1, %126 ], [ %128, %127 ]
br label %131
131: ; preds = %129
%132 = load i32, i32* %2
%133 = add nsw i32 %132, 1
store i32 %133, i32* %2
br label %115
134: ; preds = %115
%135 = call zeroext i8 @getreg(i32 -1677721594)
%136 = zext i8 %135 to i64
store i64 %136, i64* %1
%137 = load i64, i64* %1
%138 = xor i64 %137, -1
%139 = trunc i64 %138 to i32
%140 = call i32 @setreg(i32 -1677721594, i32 %139)
%141 = call zeroext i8 @getreg(i32 -1677721594)
%142 = zext i8 %141 to i64
%143 = load i64, i64* %1
%144 = icmp eq i64 %142, %143
br i1 %144, label %145, label %146
145: ; preds = %134
br label %148
146: ; preds = %134
%147 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 205)
br label %148
148: ; preds = %146, %145
%149 = phi i32 [ 1, %145 ], [ %147, %146 ]
store i32 0, i32* %2
br label %150
150: ; preds = %166, %148
%151 = load i32, i32* %2
%152 = icmp slt i32 %151, 9
br i1 %152, label %153, label %169
153: ; preds = %150
%154 = load i32, i32* %2
%155 = shl i32 1, %154
%156 = call i32 @setreg(i32 -1677721594, i32 %155)
%157 = call zeroext i8 @getreg(i32 -1677721594)
%158 = zext i8 %157 to i64
%159 = load i64, i64* %1
%160 = icmp eq i64 %158, %159
br i1 %160, label %161, label %162
161: ; preds = %153
br label %164
162: ; preds = %153
%163 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 209)
br label %164
164: ; preds = %162, %161
%165 = phi i32 [ 1, %161 ], [ %163, %162 ]
br label %166
166: ; preds = %164
%167 = load i32, i32* %2
%168 = add nsw i32 %167, 1
store i32 %168, i32* %2
br label %150
169: ; preds = %150
%170 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i32 213)
%171 = call zeroext i8 @getreg(i32 -1677721596)
%172 = zext i8 %171 to i32
%173 = icmp eq i32 %172, 0
br i1 %173, label %174, label %175
174: ; preds = %169
br label %177
175: ; preds = %169
%176 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 215)
br label %177
177: ; preds = %175, %174
%178 = phi i32 [ 1, %174 ], [ %176, %175 ]
%179 = call i32 @setreg(i32 -1677721596, i32 69)
%180 = call zeroext i8 @getreg(i32 -1677721596)
%181 = zext i8 %180 to i32
%182 = icmp eq i32 %181, 0
br i1 %182, label %183, label %184
183: ; preds = %177
br label %186
184: ; preds = %177
%185 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 217)
br label %186
186: ; preds = %184, %183
%187 = phi i32 [ 1, %183 ], [ %185, %184 ]
%188 = call i32 @setreg(i32 -1677721596, i32 170)
%189 = call zeroext i8 @getreg(i32 -1677721596)
%190 = zext i8 %189 to i32
%191 = icmp eq i32 %190, 0
br i1 %191, label %192, label %193
192: ; preds = %186
br label %195
193: ; preds = %186
%194 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 219)
br label %195
195: ; preds = %193, %192
%196 = phi i32 [ 1, %192 ], [ %194, %193 ]
%197 = call zeroext i8 @getreg(i32 -1677721595)
%198 = zext i8 %197 to i32
%199 = and i32 %198, 31
%200 = icmp ne i32 %199, 0
br i1 %200, label %202, label %201
201: ; preds = %195
br label %204
202: ; preds = %195
%203 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 221)
br label %204
204: ; preds = %202, %201
%205 = phi i32 [ 1, %201 ], [ %203, %202 ]
%206 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i32 222)
%207 = call i32 @setreg(i32 -1677721597, i32 128)
%208 = call zeroext i8 @getreg(i32 -1677721597)
%209 = zext i8 %208 to i32
%210 = icmp eq i32 %209, 128
br i1 %210, label %211, label %212
211: ; preds = %204
br label %214
212: ; preds = %204
%213 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 226)
br label %214
214: ; preds = %212, %211
%215 = phi i32 [ 1, %211 ], [ %213, %212 ]
store i32 0, i32* %3
br label %216
216: ; preds = %253, %214
%217 = load i32, i32* %3
%218 = icmp slt i32 %217, 16
br i1 %218, label %219, label %256
219: ; preds = %216
%220 = load i32, i32* %3
%221 = shl i32 57005, %220
%222 = trunc i32 %221 to i16
store i16 %222, i16* %4
%223 = load i16, i16* %4
%224 = zext i16 %223 to i32
%225 = ashr i32 %224, 8
%226 = call i32 @setreg(i32 -1677721599, i32 %225)
%227 = load i16, i16* %4
%228 = zext i16 %227 to i32
%229 = and i32 %228, 255
%230 = call i32 @setreg(i32 -1677721600, i32 %229)
%231 = call zeroext i8 @getreg(i32 -1677721600)
%232 = zext i8 %231 to i32
%233 = load i16, i16* %4
%234 = zext i16 %233 to i32
%235 = and i32 %234, 255
%236 = icmp eq i32 %232, %235
br i1 %236, label %237, label %238
237: ; preds = %219
br label %240
238: ; preds = %219
%239 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 231)
br label %240
240: ; preds = %238, %237
%241 = phi i32 [ 1, %237 ], [ %239, %238 ]
%242 = call zeroext i8 @getreg(i32 -1677721599)
%243 = zext i8 %242 to i32
%244 = load i16, i16* %4
%245 = zext i16 %244 to i32
%246 = ashr i32 %245, 8
%247 = icmp eq i32 %243, %246
br i1 %247, label %248, label %249
248: ; preds = %240
br label %251
249: ; preds = %240
%250 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 232)
br label %251
251: ; preds = %249, %248
%252 = phi i32 [ 1, %248 ], [ %250, %249 ]
br label %253
253: ; preds = %251
%254 = load i32, i32* %3
%255 = add nsw i32 %254, 1
store i32 %255, i32* %3
br label %216
256: ; preds = %216
%257 = call i32 @setreg(i32 -1677721599, i32 161)
%258 = call i32 @setreg(i32 -1677721599, i32 161)
%259 = call i32 @setreg(i32 -1677721599, i32 161)
%260 = call i32 @setreg(i32 -1677721599, i32 161)
%261 = call i32 @setreg(i32 -1677721599, i32 161)
%262 = call zeroext i8 @getreg(i32 -1677721595)
%263 = zext i8 %262 to i32
%264 = and i32 %263, 31
%265 = icmp ne i32 %264, 0
br i1 %265, label %267, label %266
266: ; preds = %256
br label %269
267: ; preds = %256
%268 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 240)
br label %269
269: ; preds = %267, %266
%270 = phi i32 [ 1, %266 ], [ %268, %267 ]
store i32 0, i32* %3
br label %271
271: ; preds = %308, %269
%272 = load i32, i32* %3
%273 = icmp slt i32 %272, 16
br i1 %273, label %274, label %311
274: ; preds = %271
%275 = load i32, i32* %3
%276 = shl i32 57005, %275
%277 = trunc i32 %276 to i16
store i16 %277, i16* %5
%278 = load i16, i16* %5
%279 = zext i16 %278 to i32
%280 = ashr i32 %279, 8
%281 = call i32 @setreg(i32 -1677721600, i32 %280)
%282 = load i16, i16* %5
%283 = zext i16 %282 to i32
%284 = and i32 %283, 255
%285 = call i32 @setreg(i32 -1677721599, i32 %284)
%286 = call zeroext i8 @getreg(i32 -1677721600)
%287 = zext i8 %286 to i32
%288 = load i16, i16* %5
%289 = zext i16 %288 to i32
%290 = ashr i32 %289, 8
%291 = icmp eq i32 %287, %290
br i1 %291, label %292, label %293
292: ; preds = %274
br label %295
293: ; preds = %274
%294 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 245)
br label %295
295: ; preds = %293, %292
%296 = phi i32 [ 1, %292 ], [ %294, %293 ]
%297 = call zeroext i8 @getreg(i32 -1677721599)
%298 = zext i8 %297 to i32
%299 = load i16, i16* %5
%300 = zext i16 %299 to i32
%301 = and i32 %300, 255
%302 = icmp eq i32 %298, %301
br i1 %302, label %303, label %304
303: ; preds = %295
br label %306
304: ; preds = %295
%305 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 246)
br label %306
306: ; preds = %304, %303
%307 = phi i32 [ 1, %303 ], [ %305, %304 ]
br label %308
308: ; preds = %306
%309 = load i32, i32* %3
%310 = add nsw i32 %309, 1
store i32 %310, i32* %3
br label %271
311: ; preds = %271
%312 = call i32 @setreg(i32 -1677721599, i32 162)
%313 = call i32 @setreg(i32 -1677721599, i32 162)
%314 = call i32 @setreg(i32 -1677721599, i32 162)
%315 = call i32 @setreg(i32 -1677721599, i32 162)
%316 = call i32 @setreg(i32 -1677721599, i32 162)
%317 = call i32 @setreg(i32 -1677721597, i32 0)
%318 = call zeroext i8 @getreg(i32 -1677721597)
%319 = zext i8 %318 to i32
%320 = icmp eq i32 %319, 0
br i1 %320, label %321, label %322
321: ; preds = %311
br label %324
322: ; preds = %311
%323 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 255)
br label %324
324: ; preds = %322, %321
%325 = phi i32 [ 1, %321 ], [ %323, %322 ]
%326 = call zeroext i8 @getreg(i32 -1677721595)
%327 = zext i8 %326 to i32
%328 = and i32 %327, 31
%329 = icmp ne i32 %328, 0
br i1 %329, label %331, label %330
330: ; preds = %324
br label %333
331: ; preds = %324
%332 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 256)
br label %333
333: ; preds = %331, %330
%334 = phi i32 [ 1, %330 ], [ %332, %331 ]
%335 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i32 258)
store i32 0, i32* %6
br label %336
336: ; preds = %357, %333
%337 = load i32, i32* %6
%338 = icmp slt i32 %337, 6
br i1 %338, label %339, label %360
339: ; preds = %336
%340 = load i32, i32* %6
%341 = shl i32 222, %340
%342 = and i32 %341, 63
%343 = trunc i32 %342 to i16
store i16 %343, i16* %7
%344 = load i16, i16* %7
%345 = zext i16 %344 to i32
%346 = call i32 @setreg(i32 -1677721597, i32 %345)
%347 = call zeroext i8 @getreg(i32 -1677721597)
%348 = zext i8 %347 to i32
%349 = load i16, i16* %7
%350 = zext i16 %349 to i32
%351 = icmp eq i32 %348, %350
br i1 %351, label %352, label %353
352: ; preds = %339
br label %355
353: ; preds = %339
%354 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 264)
br label %355
355: ; preds = %353, %352
%356 = phi i32 [ 1, %352 ], [ %354, %353 ]
br label %357
357: ; preds = %355
%358 = load i32, i32* %6
%359 = add nsw i32 %358, 1
store i32 %359, i32* %6
br label %336
360: ; preds = %336
%361 = call zeroext i8 @getreg(i32 -1677721595)
%362 = zext i8 %361 to i32
%363 = and i32 %362, 31
%364 = icmp ne i32 %363, 0
br i1 %364, label %366, label %365
365: ; preds = %360
br label %368
366: ; preds = %360
%367 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 266)
br label %368
368: ; preds = %366, %365
%369 = phi i32 [ 1, %365 ], [ %367, %366 ]
%370 = call i32 @setreg(i32 -1677721597, i32 163)
%371 = call i32 @setreg(i32 -1677721597, i32 163)
%372 = call i32 @setreg(i32 -1677721597, i32 163)
%373 = call i32 @setreg(i32 -1677721597, i32 163)
%374 = call i32 @setreg(i32 -1677721597, i32 163)
%375 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i32 274)
%376 = call i32 @setreg(i32 -1677721593, i32 0)
%377 = call zeroext i8 @getreg(i32 -1677721593)
%378 = zext i8 %377 to i32
%379 = icmp eq i32 %378, 0
br i1 %379, label %380, label %381
380: ; preds = %368
br label %383
381: ; preds = %368
%382 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 279)
br label %383
383: ; preds = %381, %380
%384 = phi i32 [ 1, %380 ], [ %382, %381 ]
%385 = call i32 @setreg(i32 -1677721593, i32 255)
%386 = call zeroext i8 @getreg(i32 -1677721593)
%387 = zext i8 %386 to i32
%388 = icmp eq i32 %387, 255
br i1 %388, label %389, label %390
389: ; preds = %383
br label %392
390: ; preds = %383
%391 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 281)
br label %392
392: ; preds = %390, %389
%393 = phi i32 [ 1, %389 ], [ %391, %390 ]
store i32 0, i32* %8
br label %394
394: ; preds = %414, %392
%395 = load i32, i32* %8
%396 = icmp slt i32 %395, 16
br i1 %396, label %397, label %417
397: ; preds = %394
%398 = load i32, i32* %8
%399 = shl i32 57005, %398
%400 = trunc i32 %399 to i8
store i8 %400, i8* %9
%401 = load i8, i8* %9
%402 = zext i8 %401 to i32
%403 = call i32 @setreg(i32 -1677721593, i32 %402)
%404 = call zeroext i8 @getreg(i32 -1677721593)
%405 = zext i8 %404 to i32
%406 = load i8, i8* %9
%407 = zext i8 %406 to i32
%408 = icmp eq i32 %405, %407
br i1 %408, label %409, label %410
409: ; preds = %397
br label %412
410: ; preds = %397
%411 = call i32 @fail(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 285)
br label %412
412: ; preds = %410, %409
%413 = phi i32 [ 1, %409 ], [ %411, %410 ]
br label %414
414: ; preds = %412
%415 = load i32, i32* %8
%416 = add nsw i32 %415, 1
store i32 %416, i32* %8
br label %394
417: ; preds = %394
%418 = call i32 @setreg(i32 -1677721593, i32 165)
%419 = call i32 @setreg(i32 -1677721593, i32 165)
%420 = call i32 @setreg(i32 -1677721593, i32 165)
%421 = call i32 @setreg(i32 -1677721593, i32 165)
%422 = call i32 @setreg(i32 -1677721593, i32 165)
%423 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i32 294)
ret void
}

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