#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 *, ...);
void printcmd(int cmd) {
  char *m;
  int arg;
  switch (cmd) {
  case 0x0000:
    printf("nop");
    return;
  case 0x0002:
    printf("ret");
    return;
  case 0x0003:
    printf("sleep");
    return;
  case 0x0004:
    printf("awake");
    return;
  case 0x0005:
    printf("reti");
    return;
  case 0x170a:
    printf("a--?");
    return;
  case 0x1d0a:
    printf("aw");
    return;
  case 0x1f0a:
    printf("a++?");
    return;
  case 0x250a:
    printf("a++z?");
    return;
  case 0x270a:
    printf("a--z?");
    return;
  case 0x290a:
    printf("az");
    return;
  case 0x2b0a:
    printf("as");
    return;
  case 0x330a:
    printf("a?");
    return;
  case 0x9a04:
    printf("z?");
    return;
  case 0x9204:
    printf("nz?");
    return;
  case 0x9804:
    printf("c?");
    return;
  case 0x9004:
    printf("b?");
    return;
  }
  switch (cmd >> 8) {
  case 0x01:
    m = "atx";
    goto shortop;
  case 0x02:
    m = "a-bx";
    goto shortop;
  case 0x03:
    m = "x-ba";
    goto shortop;
  case 0x04:
    m = "a-x";
    goto shortop;
  case 0x05:
    m = "x-a";
    goto shortop;
  case 0x06:
    m = "x--a";
    goto shortop;
  case 0x07:
    m = "x--";
    goto shortop;
  case 0x08:
    m = "a|x";
    goto shortop;
  case 0x09:
    m = "x|a";
    goto shortop;
  case 0x0a:
    m = "a&x";
    goto shortop;
  case 0x0b:
    m = "x&a";
    goto shortop;
  case 0x0c:
    m = "a^x";
    goto shortop;
  case 0x0d:
    m = "x^a";
    goto shortop;
  case 0x0e:
    m = "a+x";
    goto shortop;
  case 0x0f:
    m = "x+a";
    goto shortop;
  case 0x10:
    m = "a+cx";
    goto shortop;
  case 0x11:
    m = "x+ca";
    goto shortop;
  case 0x12:
    m = "xca";
    goto shortop;
  case 0x13:
    m = "xc";
    goto shortop;
  case 0x14:
    m = "x++a";
    goto shortop;
  case 0x15:
    m = "x++";
    goto shortop;
  case 0x16:
    m = "x--a?";
    goto shortop;
  case 0x17:
    m = "x--?";
    goto shortop;
  case 0x18:
    m = "xc>>a";
    goto shortop;
  case 0x19:
    m = "xc>>x";
    goto shortop;
  case 0x1a:
    m = "xc<<a";
    goto shortop;
  case 0x1b:
    m = "xc<<x";
    goto shortop;
  case 0x1c:
    m = "xwa";
    goto shortop;
  case 0x1d:
    m = "xw";
    goto shortop;
  case 0x1e:
    m = "x++a?";
    goto shortop;
  case 0x1f:
    m = "x++?";
    goto shortop;
  case 0x20:
    m = "x>>a";
    goto shortop;
  case 0x21:
    m = "x>>x";
    goto shortop;
  case 0x22:
    m = "x<<a";
    goto shortop;
  case 0x23:
    m = "x<<x";
    goto shortop;
  case 0x24:
    m = "x++az?";
    goto shortop;
  case 0x25:
    m = "x++z?";
    goto shortop;
  case 0x26:
    m = "x--az?";
    goto shortop;
  case 0x27:
    m = "x--z?";
    goto shortop;
  case 0x28:
    m = "xza";
    goto shortop;
  case 0x29:
    m = "xz";
    goto shortop;
  case 0x2a:
    m = "xsa";
    goto shortop;
  case 0x2b:
    m = "xs";
    goto shortop;
  case 0x2c:
    m = "anax";
    goto shortop;
  case 0x2d:
    m = "anx";
    goto shortop;
  case 0x2e:
    m = "adax";
    goto shortop;
  case 0x2f:
    m = "adx";
    goto shortop;
  case 0x30:
    m = "x>=a?";
    goto shortop;
  case 0x31:
    m = "x!=a?";
    goto shortop;
  case 0x32:
    m = "x<=a?";
    goto shortop;
  case 0x33:
    m = "x?";
    goto shortop;
  case 0x34:
    m = "a*x";
    goto shortop;
  case 0x6a:
    m = "xta";
    goto shortop;
  case 0xa0:
    m = "llx";
    goto shortop;
  case 0xa2:
    m = "lhx";
    goto shortop;
  case 0xa4:
    m = "xll";
    goto shortop;
  case 0xa6:
    m = "xhl";
    goto shortop;
  case 0xa8:
    m = "plx";
    goto shortop;
  case 0xa9:
    m = "pl++x";
    goto shortop;
  case 0xae:
    m = "xhp";
    goto shortop;
  case 0xaf:
    m = "xhp++";
    goto shortop;
  case 0xb0:
    m = "cta";
    goto shortop;
  case 0xb1:
    m = "a+c";
    goto shortop;
  case 0xb2:
    m = "c-a";
    goto shortop;
  case 0xb3:
    m = "a|c";
    goto shortop;
  case 0xb4:
    m = "a^c";
    goto shortop;
  case 0xb5:
    m = "a&c";
    goto shortop;
  case 0xb6:
    m = "retc";
    goto shortop;
  case 0xb7:
    m = "lcall";
    goto shortop;
  case 0xb8:
    m = "reg";
    goto shortop;
  case 0xba:
    m = "dat";
    goto shortop;
  case 0xbc:
    m = "a*c";
  shortop:
    printf("%s", m);
    arg = cmd & 0xff;
    if (arg)
      printf(" 0x%x", arg);
    return;
  }
  switch (cmd >> 8 & 0xf8) {
  case 0x38:
    m = "bt";
    goto bitop;
  case 0x80:
    m = "bs";
    goto bitop;
  case 0x88:
    m = "bz";
    goto bitop;
  case 0x90:
    m = "bz?";
    goto bitop;
  case 0x98:
    m = "bs?";
  bitop:
    printf("%s 0x%x, %d", m, cmd & 0xff, cmd >> 8 & 7);
    break;
  case 0xc0:
  case 0xc8:
  case 0xd0:
  case 0xd8:
    m = "goto";
    goto longop;
  case 0xe0:
  case 0xe8:
  case 0xf0:
  case 0xf8:
    m = "call";
  longop:
    printf("%s", m);
    arg = cmd & 0x1fff;
    if (arg)
      printf(" 0x%x", arg);
    break;
  case 0x60:
  case 0x68:
  case 0x70:
  case 0x78:
    printf("xtr 0x%x, 0x%x", cmd & 0xff, cmd >> 8 & 0x1f);
    break;
  case 0x40:
  case 0x48:
  case 0x50:
  case 0x58:
    printf("rtx 0x%x, 0x%x", cmd >> 8 & 0x1f, cmd & 0xff);
    break;
  default:
    printf("?");
    break;
  }
}


x86 assembly (clang, -O0):
<printcmd>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    -0x4(%rbp),%eax
mov    %eax,-0x18(%rbp)
test   %eax,%eax
je     1256 <printcmd+0x146>
jmp    112e <printcmd+0x1e>
mov    -0x18(%rbp),%eax
sub    $0x2,%eax
je     1269 <printcmd+0x159>
jmp    113f <printcmd+0x2f>
mov    -0x18(%rbp),%eax
sub    $0x3,%eax
je     127c <printcmd+0x16c>
jmp    1150 <printcmd+0x40>
mov    -0x18(%rbp),%eax
sub    $0x4,%eax
je     128f <printcmd+0x17f>
jmp    1161 <printcmd+0x51>
mov    -0x18(%rbp),%eax
sub    $0x5,%eax
je     12a2 <printcmd+0x192>
jmp    1172 <printcmd+0x62>
mov    -0x18(%rbp),%eax
sub    $0x170a,%eax
je     12b5 <printcmd+0x1a5>
jmp    1185 <printcmd+0x75>
mov    -0x18(%rbp),%eax
sub    $0x1d0a,%eax
je     12c8 <printcmd+0x1b8>
jmp    1198 <printcmd+0x88>
mov    -0x18(%rbp),%eax
sub    $0x1f0a,%eax
je     12db <printcmd+0x1cb>
jmp    11ab <printcmd+0x9b>
mov    -0x18(%rbp),%eax
sub    $0x250a,%eax
je     12ee <printcmd+0x1de>
jmp    11be <printcmd+0xae>
mov    -0x18(%rbp),%eax
sub    $0x270a,%eax
je     1301 <printcmd+0x1f1>
jmp    11d1 <printcmd+0xc1>
mov    -0x18(%rbp),%eax
sub    $0x290a,%eax
je     1314 <printcmd+0x204>
jmp    11e4 <printcmd+0xd4>
mov    -0x18(%rbp),%eax
sub    $0x2b0a,%eax
je     1327 <printcmd+0x217>
jmp    11f7 <printcmd+0xe7>
mov    -0x18(%rbp),%eax
sub    $0x330a,%eax
je     133a <printcmd+0x22a>
jmp    120a <printcmd+0xfa>
mov    -0x18(%rbp),%eax
sub    $0x9004,%eax
je     1386 <printcmd+0x276>
jmp    121d <printcmd+0x10d>
mov    -0x18(%rbp),%eax
sub    $0x9204,%eax
je     1360 <printcmd+0x250>
jmp    1230 <printcmd+0x120>
mov    -0x18(%rbp),%eax
sub    $0x9804,%eax
je     1373 <printcmd+0x263>
jmp    1243 <printcmd+0x133>
mov    -0x18(%rbp),%eax
sub    $0x9a04,%eax
je     134d <printcmd+0x23d>
jmp    1399 <printcmd+0x289>
lea    0x1397(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x1388(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x1379(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x136c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x135f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x1351(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x1343(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x1333(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x1325(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x1318(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x130b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x12fb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x137b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x12c9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x12c5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x12b6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0x12a6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
mov    -0x4(%rbp),%eax
sar    $0x8,%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0xbb,%eax
ja     187f <printcmd+0x76f>
mov    -0x20(%rbp),%rax
lea    0xc42(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1268(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x125c(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1251(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1246(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x123a(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x122e(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1223(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1217(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x120b(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11ff(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11f3(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11e7(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11db(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11cf(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11c3(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11b7(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11ac(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x11a1(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1195(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1188(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x117d(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1171(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1167(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x115c(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1152(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1148(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x113e(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1134(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1128(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x111b(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1111(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1106(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10fb(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10f0(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10e5(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10da(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10d1(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10c7(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10be(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10b4(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x10a8(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x109b(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x108f(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1082(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1077(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x106b(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1060(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1054(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x104a(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1040(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1036(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1029(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x101d(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1011(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0x1005(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xff9(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xfed(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xfe1(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xfd5(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xfcb(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xfbf(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xfb5(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xfa9(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf9d(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf91(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf85(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf79(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf6d(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf62(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf58(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf4c(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1842 <printcmd+0x732>
lea    0xf40(%rip),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rsi
lea    0xf35(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
and    $0xff,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     187a <printcmd+0x76a>
mov    -0x14(%rbp),%esi
lea    0xf3d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
mov    -0x4(%rbp),%eax
shr    $0x8,%eax
and    $0xf8,%eax
add    $0xffffffc8,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0xc0,%eax
ja     19c8 <printcmd+0x8b8>
mov    -0x28(%rbp),%rax
lea    0xa47(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xecc(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    18fd <printcmd+0x7ed>
lea    0xebf(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    18fd <printcmd+0x7ed>
lea    0xeb2(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    18fd <printcmd+0x7ed>
lea    0xea5(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    18fd <printcmd+0x7ed>
lea    0xe99(%rip),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rsi
mov    -0x4(%rbp),%edx
and    $0xff,%edx
mov    -0x4(%rbp),%ecx
sar    $0x8,%ecx
and    $0x7,%ecx
lea    0xe7c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0xe75(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    1941 <printcmd+0x831>
lea    0xe34(%rip),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rsi
lea    0xe36(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
and    $0x1fff,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1979 <printcmd+0x869>
mov    -0x14(%rbp),%esi
lea    0xe3e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
mov    -0x4(%rbp),%esi
and    $0xff,%esi
mov    -0x4(%rbp),%edx
sar    $0x8,%edx
and    $0x1f,%edx
lea    0xe10(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
mov    -0x4(%rbp),%esi
sar    $0x8,%esi
and    $0x1f,%esi
mov    -0x4(%rbp),%edx
and    $0xff,%edx
lea    0xdfa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19d6 <printcmd+0x8c6>
lea    0xc49(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<printcmd>:
push   %rbx
mov    %edi,%ebx
cmp    $0x2509,%edi
jle    116f <printcmd+0x4f>
cmp    $0x3309,%ebx
jle    119e <printcmd+0x7e>
cmp    $0x9203,%ebx
jle    11fa <printcmd+0xda>
cmp    $0x9204,%ebx
je     1254 <printcmd+0x134>
cmp    $0x9804,%ebx
je     125d <printcmd+0x13d>
cmp    $0x9a04,%ebx
jne    1299 <printcmd+0x179>
lea    0x122b(%rip),%rdi
jmp    1291 <printcmd+0x171>
cmp    $0x1709,%ebx
jg     11ca <printcmd+0xaa>
cmp    $0x5,%ebx
ja     1299 <printcmd+0x179>
mov    %ebx,%eax
lea    0xe77(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x11d3(%rip),%rdi
jmp    1291 <printcmd+0x171>
cmp    $0x2909,%ebx
jg     1217 <printcmd+0xf7>
cmp    $0x250a,%ebx
je     1266 <printcmd+0x146>
cmp    $0x270a,%ebx
jne    1299 <printcmd+0x179>
lea    0x11d3(%rip),%rdi
jmp    1291 <printcmd+0x171>
cmp    $0x170a,%ebx
je     126f <printcmd+0x14f>
cmp    $0x1d0a,%ebx
je     1278 <printcmd+0x158>
cmp    $0x1f0a,%ebx
jne    1299 <printcmd+0x179>
lea    0x1198(%rip),%rdi
jmp    1291 <printcmd+0x171>
cmp    $0x330a,%ebx
je     1281 <printcmd+0x161>
cmp    $0x9004,%ebx
jne    1299 <printcmd+0x179>
lea    0x1196(%rip),%rdi
jmp    1291 <printcmd+0x171>
cmp    $0x290a,%ebx
je     128a <printcmd+0x16a>
cmp    $0x2b0a,%ebx
jne    1299 <printcmd+0x179>
lea    0x1173(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x1139(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x1134(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x1131(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x112e(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x1149(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x1144(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x1125(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x110f(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x110b(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x11ac(%rip),%rdi
jmp    1291 <printcmd+0x171>
lea    0x110d(%rip),%rdi
xor    %eax,%eax
pop    %rbx
jmp    1040 <printf@plt>
mov    %ebx,%ecx
sar    $0x8,%ecx
lea    -0x1(%rcx),%eax
cmp    $0xbb,%eax
ja     151b <printcmd+0x3fb>
lea    0x10fb(%rip),%rsi
lea    0xd5e(%rip),%rdx
movslq (%rdx,%rax,4),%rax
add    %rdx,%rax
jmp    *%rax
lea    0x10e8(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10e1(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10da(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10d2(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10ca(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10c3(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10bb(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10b3(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10ab(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x10a3(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x109b(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1093(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x108b(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1083(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x107b(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1074(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x106d(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1065(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x105c(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1055(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x104d(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1047(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1040(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x103a(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1034(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x102e(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1028(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1020(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1017(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1011(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x100a(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0x1003(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xffc(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xff5(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfee(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfe9(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfe3(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfde(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfd8(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfd0(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfc7(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfbf(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfb6(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfaf(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfa7(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xfa0(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf98(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf92(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf8c(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf86(%rip),%rsi
jmp    1631 <printcmd+0x511>
mov    %ecx,%edx
and    $0xf8,%edx
add    $0xffffffc8,%edx
shr    $0x3,%edx
cmp    $0x18,%edx
ja     16c8 <printcmd+0x5a8>
lea    0xfe1(%rip),%rax
lea    0xfbd(%rip),%rsi
lea    0xdc1(%rip),%rdi
movslq (%rdi,%rdx,4),%rdx
add    %rdi,%rdx
jmp    *%rdx
and    $0x1f,%ecx
movzbl %bl,%edx
lea    0xfd1(%rip),%rdi
mov    %ecx,%esi
jmp    1667 <printcmd+0x547>
lea    0xf38(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf30(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf28(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf20(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf18(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf10(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf08(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf09(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf0a(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf05(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xf00(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xefb(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xef6(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xef1(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xef3(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xef2(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xe92(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xeab(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xeac(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xec0(%rip),%rsi
jmp    1631 <printcmd+0x511>
lea    0xec1(%rip),%rsi
lea    0xec2(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
and    $0xff,%ebx
je     168f <printcmd+0x56f>
lea    0xeda(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
pop    %rbx
jmp    1040 <printf@plt>
movzbl %bl,%esi
and    $0x1f,%ecx
lea    0xeba(%rip),%rdi
mov    %ecx,%edx
xor    %eax,%eax
pop    %rbx
jmp    1040 <printf@plt>
lea    0xe73(%rip),%rax
lea    0xe7d(%rip),%rdi
mov    %rax,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
and    $0x1fff,%ebx
jne    1647 <printcmd+0x527>
pop    %rbx
ret
lea    0xe68(%rip),%rsi
jmp    16b3 <printcmd+0x593>
lea    0xe62(%rip),%rsi
jmp    16b3 <printcmd+0x593>
lea    0xe5c(%rip),%rsi
jmp    16b3 <printcmd+0x593>
lea    0xe57(%rip),%rsi
movzbl %bl,%edx
and    $0x7,%ecx
lea    0xe4e(%rip),%rdi
xor    %eax,%eax
pop    %rbx
jmp    1040 <printf@plt>
mov    $0x3f,%edi
pop    %rbx
jmp    1030 <putchar@plt>

LLVM IR (-O0):
@.str = [4 x i8] c"nop\00"
@.str.1 = [4 x i8] c"ret\00"
@.str.2 = [6 x i8] c"sleep\00"
@.str.3 = [6 x i8] c"awake\00"
@.str.4 = [5 x i8] c"reti\00"
@.str.5 = [5 x i8] c"a--?\00"
@.str.6 = [3 x i8] c"aw\00"
@.str.7 = [5 x i8] c"a++?\00"
@.str.8 = [6 x i8] c"a++z?\00"
@.str.9 = [6 x i8] c"a--z?\00"
@.str.10 = [3 x i8] c"az\00"
@.str.11 = [3 x i8] c"as\00"
@.str.12 = [3 x i8] c"a?\00"
@.str.13 = [3 x i8] c"z?\00"
@.str.14 = [4 x i8] c"nz?\00"
@.str.15 = [3 x i8] c"c?\00"
@.str.16 = [3 x i8] c"b?\00"
@.str.17 = [4 x i8] c"atx\00"
@.str.18 = [5 x i8] c"a-bx\00"
@.str.19 = [5 x i8] c"x-ba\00"
@.str.20 = [4 x i8] c"a-x\00"
@.str.21 = [4 x i8] c"x-a\00"
@.str.22 = [5 x i8] c"x--a\00"
@.str.23 = [4 x i8] c"x--\00"
@.str.24 = [4 x i8] c"a|x\00"
@.str.25 = [4 x i8] c"x|a\00"
@.str.26 = [4 x i8] c"a&x\00"
@.str.27 = [4 x i8] c"x&a\00"
@.str.28 = [4 x i8] c"a^x\00"
@.str.29 = [4 x i8] c"x^a\00"
@.str.30 = [4 x i8] c"a+x\00"
@.str.31 = [4 x i8] c"x+a\00"
@.str.32 = [5 x i8] c"a+cx\00"
@.str.33 = [5 x i8] c"x+ca\00"
@.str.34 = [4 x i8] c"xca\00"
@.str.35 = [3 x i8] c"xc\00"
@.str.36 = [5 x i8] c"x++a\00"
@.str.37 = [4 x i8] c"x++\00"
@.str.38 = [6 x i8] c"x--a?\00"
@.str.39 = [5 x i8] c"x--?\00"
@.str.40 = [6 x i8] c"xc>>a\00"
@.str.41 = [6 x i8] c"xc>>x\00"
@.str.42 = [6 x i8] c"xc<<a\00"
@.str.43 = [6 x i8] c"xc<<x\00"
@.str.44 = [4 x i8] c"xwa\00"
@.str.45 = [3 x i8] c"xw\00"
@.str.46 = [6 x i8] c"x++a?\00"
@.str.47 = [5 x i8] c"x++?\00"
@.str.48 = [5 x i8] c"x>>a\00"
@.str.49 = [5 x i8] c"x>>x\00"
@.str.50 = [5 x i8] c"x<<a\00"
@.str.51 = [5 x i8] c"x<<x\00"
@.str.52 = [7 x i8] c"x++az?\00"
@.str.53 = [6 x i8] c"x++z?\00"
@.str.54 = [7 x i8] c"x--az?\00"
@.str.55 = [6 x i8] c"x--z?\00"
@.str.56 = [4 x i8] c"xza\00"
@.str.57 = [3 x i8] c"xz\00"
@.str.58 = [4 x i8] c"xsa\00"
@.str.59 = [3 x i8] c"xs\00"
@.str.60 = [5 x i8] c"anax\00"
@.str.61 = [4 x i8] c"anx\00"
@.str.62 = [5 x i8] c"adax\00"
@.str.63 = [4 x i8] c"adx\00"
@.str.64 = [6 x i8] c"x>=a?\00"
@.str.65 = [6 x i8] c"x!=a?\00"
@.str.66 = [6 x i8] c"x<=a?\00"
@.str.67 = [3 x i8] c"x?\00"
@.str.68 = [4 x i8] c"a*x\00"
@.str.69 = [4 x i8] c"xta\00"
@.str.70 = [4 x i8] c"llx\00"
@.str.71 = [4 x i8] c"lhx\00"
@.str.72 = [4 x i8] c"xll\00"
@.str.73 = [4 x i8] c"xhl\00"
@.str.74 = [4 x i8] c"plx\00"
@.str.75 = [6 x i8] c"pl++x\00"
@.str.76 = [4 x i8] c"xhp\00"
@.str.77 = [6 x i8] c"xhp++\00"
@.str.78 = [4 x i8] c"cta\00"
@.str.79 = [4 x i8] c"a+c\00"
@.str.80 = [4 x i8] c"c-a\00"
@.str.81 = [4 x i8] c"a|c\00"
@.str.82 = [4 x i8] c"a^c\00"
@.str.83 = [4 x i8] c"a&c\00"
@.str.84 = [5 x i8] c"retc\00"
@.str.85 = [6 x i8] c"lcall\00"
@.str.86 = [4 x i8] c"reg\00"
@.str.87 = [4 x i8] c"dat\00"
@.str.88 = [4 x i8] c"a*c\00"
@.str.89 = [3 x i8] c"%s\00"
@.str.90 = [6 x i8] c" 0x%x\00"
@.str.91 = [3 x i8] c"bt\00"
@.str.92 = [3 x i8] c"bs\00"
@.str.93 = [3 x i8] c"bz\00"
@.str.94 = [4 x i8] c"bz?\00"
@.str.95 = [4 x i8] c"bs?\00"
@.str.96 = [12 x i8] c"%s 0x%x, %d\00"
@.str.97 = [5 x i8] c"goto\00"
@.str.98 = [5 x i8] c"call\00"
@.str.99 = [15 x i8] c"xtr 0x%x, 0x%x\00"
@.str.100 = [15 x i8] c"rtx 0x%x, 0x%x\00"
@.str.101 = [2 x i8] c"?\00"
define void @printcmd(i32 %0) {
%2 = alloca i32
%3 = alloca i8*
%4 = alloca i32
store i32 %0, i32* %2
%5 = load i32, i32* %2
switch i32 %5, label %40 [
i32 0, label %6
i32 2, label %8
i32 3, label %10
i32 4, label %12
i32 5, label %14
i32 5898, label %16
i32 7434, label %18
i32 7946, label %20
i32 9482, label %22
i32 9994, label %24
i32 10506, label %26
i32 11018, label %28
i32 13066, label %30
i32 39428, label %32
i32 37380, label %34
i32 38916, label %36
i32 36868, label %38
]
6: ; preds = %1
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %172
8: ; preds = %1
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
br label %172
10: ; preds = %1
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
br label %172
12: ; preds = %1
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
br label %172
14: ; preds = %1
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %172
16: ; preds = %1
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
br label %172
18: ; preds = %1
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0))
br label %172
20: ; preds = %1
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
br label %172
22: ; preds = %1
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0))
br label %172
24: ; preds = %1
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0))
br label %172
26: ; preds = %1
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
br label %172
28: ; preds = %1
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
br label %172
30: ; preds = %1
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
br label %172
32: ; preds = %1
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0))
br label %172
34: ; preds = %1
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
br label %172
36: ; preds = %1
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0))
br label %172
38: ; preds = %1
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0))
br label %172
40: ; preds = %1
%41 = load i32, i32* %2
%42 = ashr i32 %41, 8
switch i32 %42, label %126 [
i32 1, label %43
i32 2, label %44
i32 3, label %45
i32 4, label %46
i32 5, label %47
i32 6, label %48
i32 7, label %49
i32 8, label %50
i32 9, label %51
i32 10, label %52
i32 11, label %53
i32 12, label %54
i32 13, label %55
i32 14, label %56
i32 15, label %57
i32 16, label %58
i32 17, label %59
i32 18, label %60
i32 19, label %61
i32 20, label %62
i32 21, label %63
i32 22, label %64
i32 23, label %65
i32 24, label %66
i32 25, label %67
i32 26, label %68
i32 27, label %69
i32 28, label %70
i32 29, label %71
i32 30, label %72
i32 31, label %73
i32 32, label %74
i32 33, label %75
i32 34, label %76
i32 35, label %77
i32 36, label %78
i32 37, label %79
i32 38, label %80
i32 39, label %81
i32 40, label %82
i32 41, label %83
i32 42, label %84
i32 43, label %85
i32 44, label %86
i32 45, label %87
i32 46, label %88
i32 47, label %89
i32 48, label %90
i32 49, label %91
i32 50, label %92
i32 51, label %93
i32 52, label %94
i32 106, label %95
i32 160, label %96
i32 162, label %97
i32 164, label %98
i32 166, label %99
i32 168, label %100
i32 169, label %101
i32 174, label %102
i32 175, label %103
i32 176, label %104
i32 177, label %105
i32 178, label %106
i32 179, label %107
i32 180, label %108
i32 181, label %109
i32 182, label %110
i32 183, label %111
i32 184, label %112
i32 186, label %113
i32 188, label %114
]
43: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i8** %3
br label %115
44: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), i8** %3
br label %115
45: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0), i8** %3
br label %115
46: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8** %3
br label %115
47: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), i8** %3
br label %115
48: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), i8** %3
br label %115
49: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), i8** %3
br label %115
50: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i8** %3
br label %115
51: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0), i8** %3
br label %115
52: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0), i8** %3
br label %115
53: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0), i8** %3
br label %115
54: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.28, i64 0, i64 0), i8** %3
br label %115
55: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0), i8** %3
br label %115
56: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0), i8** %3
br label %115
57: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), i8** %3
br label %115
58: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i8** %3
br label %115
59: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.33, i64 0, i64 0), i8** %3
br label %115
60: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i64 0, i64 0), i8** %3
br label %115
61: ; preds = %40
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i64 0, i64 0), i8** %3
br label %115
62: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i8** %3
br label %115
63: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0), i8** %3
br label %115
64: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0), i8** %3
br label %115
65: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.39, i64 0, i64 0), i8** %3
br label %115
66: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.40, i64 0, i64 0), i8** %3
br label %115
67: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.41, i64 0, i64 0), i8** %3
br label %115
68: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %3
br label %115
69: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.43, i64 0, i64 0), i8** %3
br label %115
70: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i8** %3
br label %115
71: ; preds = %40
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), i8** %3
br label %115
72: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.46, i64 0, i64 0), i8** %3
br label %115
73: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.47, i64 0, i64 0), i8** %3
br label %115
74: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), i8** %3
br label %115
75: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.49, i64 0, i64 0), i8** %3
br label %115
76: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.50, i64 0, i64 0), i8** %3
br label %115
77: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.51, i64 0, i64 0), i8** %3
br label %115
78: ; preds = %40
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.52, i64 0, i64 0), i8** %3
br label %115
79: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.53, i64 0, i64 0), i8** %3
br label %115
80: ; preds = %40
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.54, i64 0, i64 0), i8** %3
br label %115
81: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.55, i64 0, i64 0), i8** %3
br label %115
82: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.56, i64 0, i64 0), i8** %3
br label %115
83: ; preds = %40
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.57, i64 0, i64 0), i8** %3
br label %115
84: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.58, i64 0, i64 0), i8** %3
br label %115
85: ; preds = %40
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.59, i64 0, i64 0), i8** %3
br label %115
86: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.60, i64 0, i64 0), i8** %3
br label %115
87: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.61, i64 0, i64 0), i8** %3
br label %115
88: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.62, i64 0, i64 0), i8** %3
br label %115
89: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.63, i64 0, i64 0), i8** %3
br label %115
90: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.64, i64 0, i64 0), i8** %3
br label %115
91: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.65, i64 0, i64 0), i8** %3
br label %115
92: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.66, i64 0, i64 0), i8** %3
br label %115
93: ; preds = %40
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.67, i64 0, i64 0), i8** %3
br label %115
94: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.68, i64 0, i64 0), i8** %3
br label %115
95: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.69, i64 0, i64 0), i8** %3
br label %115
96: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.70, i64 0, i64 0), i8** %3
br label %115
97: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.71, i64 0, i64 0), i8** %3
br label %115
98: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.72, i64 0, i64 0), i8** %3
br label %115
99: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.73, i64 0, i64 0), i8** %3
br label %115
100: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.74, i64 0, i64 0), i8** %3
br label %115
101: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.75, i64 0, i64 0), i8** %3
br label %115
102: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.76, i64 0, i64 0), i8** %3
br label %115
103: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.77, i64 0, i64 0), i8** %3
br label %115
104: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.78, i64 0, i64 0), i8** %3
br label %115
105: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.79, i64 0, i64 0), i8** %3
br label %115
106: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.80, i64 0, i64 0), i8** %3
br label %115
107: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.81, i64 0, i64 0), i8** %3
br label %115
108: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.82, i64 0, i64 0), i8** %3
br label %115
109: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.83, i64 0, i64 0), i8** %3
br label %115
110: ; preds = %40
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.84, i64 0, i64 0), i8** %3
br label %115
111: ; preds = %40
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.85, i64 0, i64 0), i8** %3
br label %115
112: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.86, i64 0, i64 0), i8** %3
br label %115
113: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.87, i64 0, i64 0), i8** %3
br label %115
114: ; preds = %40
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.88, i64 0, i64 0), i8** %3
br label %115
115: ; preds = %114, %113, %112, %111, %110, %109, %108, %107, %106, %105, %104, %103, %102, %101, %100, %99, %98, %97, %96, %95, %94, %93, %92, %91, %90, %89, %88, %87, %86, %85, %84, %83, %82, %81, %80, %79, %78, %77, %76, %75, %74, %73, %72, %71, %70, %69, %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43
%116 = load i8*, i8** %3
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.89, i64 0, i64 0), i8* %116)
%118 = load i32, i32* %2
%119 = and i32 %118, 255
store i32 %119, i32* %4
%120 = load i32, i32* %4
%121 = icmp ne i32 %120, 0
br i1 %121, label %122, label %125
122: ; preds = %115
%123 = load i32, i32* %4
%124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.90, i64 0, i64 0), i32 %123)
br label %125
125: ; preds = %122, %115
br label %172
126: ; preds = %40
%127 = load i32, i32* %2
%128 = ashr i32 %127, 8
%129 = and i32 %128, 248
switch i32 %129, label %170 [
i32 56, label %130
i32 128, label %131
i32 136, label %132
i32 144, label %133
i32 152, label %134
i32 192, label %143
i32 200, label %143
i32 208, label %143
i32 216, label %143
i32 224, label %144
i32 232, label %144
i32 240, label %144
i32 248, label %144
i32 96, label %156
i32 104, label %156
i32 112, label %156
i32 120, label %156
i32 64, label %163
i32 72, label %163
i32 80, label %163
i32 88, label %163
]
130: ; preds = %126
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.91, i64 0, i64 0), i8** %3
br label %135
131: ; preds = %126
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.92, i64 0, i64 0), i8** %3
br label %135
132: ; preds = %126
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.93, i64 0, i64 0), i8** %3
br label %135
133: ; preds = %126
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.94, i64 0, i64 0), i8** %3
br label %135
134: ; preds = %126
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.95, i64 0, i64 0), i8** %3
br label %135
135: ; preds = %134, %133, %132, %131, %130
%136 = load i8*, i8** %3
%137 = load i32, i32* %2
%138 = and i32 %137, 255
%139 = load i32, i32* %2
%140 = ashr i32 %139, 8
%141 = and i32 %140, 7
%142 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.96, i64 0, i64 0), i8* %136, i32 %138, i32 %141)
br label %172
143: ; preds = %126, %126, %126, %126
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.97, i64 0, i64 0), i8** %3
br label %145
144: ; preds = %126, %126, %126, %126
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.98, i64 0, i64 0), i8** %3
br label %145
145: ; preds = %144, %143
%146 = load i8*, i8** %3
%147 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.89, i64 0, i64 0), i8* %146)
%148 = load i32, i32* %2
%149 = and i32 %148, 8191
store i32 %149, i32* %4
%150 = load i32, i32* %4
%151 = icmp ne i32 %150, 0
br i1 %151, label %152, label %155
152: ; preds = %145
%153 = load i32, i32* %4
%154 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.90, i64 0, i64 0), i32 %153)
br label %155
155: ; preds = %152, %145
br label %172
156: ; preds = %126, %126, %126, %126
%157 = load i32, i32* %2
%158 = and i32 %157, 255
%159 = load i32, i32* %2
%160 = ashr i32 %159, 8
%161 = and i32 %160, 31
%162 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.99, i64 0, i64 0), i32 %158, i32 %161)
br label %172
163: ; preds = %126, %126, %126, %126
%164 = load i32, i32* %2
%165 = ashr i32 %164, 8
%166 = and i32 %165, 31
%167 = load i32, i32* %2
%168 = and i32 %167, 255
%169 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.100, i64 0, i64 0), i32 %166, i32 %168)
br label %172
170: ; preds = %126
%171 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.101, i64 0, i64 0))
br label %172
172: ; preds = %6, %8, %10, %12, %14, %16, %18, %20, %22, %24, %26, %28, %30, %32, %34, %36, %38, %125, %170, %163, %156, %155, %135
ret void
}

LLVM IR (-O2):
@.str = [4 x i8] c"nop\00"
@.str.1 = [4 x i8] c"ret\00"
@.str.2 = [6 x i8] c"sleep\00"
@.str.3 = [6 x i8] c"awake\00"
@.str.4 = [5 x i8] c"reti\00"
@.str.5 = [5 x i8] c"a--?\00"
@.str.6 = [3 x i8] c"aw\00"
@.str.7 = [5 x i8] c"a++?\00"
@.str.8 = [6 x i8] c"a++z?\00"
@.str.9 = [6 x i8] c"a--z?\00"
@.str.10 = [3 x i8] c"az\00"
@.str.11 = [3 x i8] c"as\00"
@.str.12 = [3 x i8] c"a?\00"
@.str.13 = [3 x i8] c"z?\00"
@.str.14 = [4 x i8] c"nz?\00"
@.str.15 = [3 x i8] c"c?\00"
@.str.16 = [3 x i8] c"b?\00"
@.str.17 = [4 x i8] c"atx\00"
@.str.18 = [5 x i8] c"a-bx\00"
@.str.19 = [5 x i8] c"x-ba\00"
@.str.20 = [4 x i8] c"a-x\00"
@.str.21 = [4 x i8] c"x-a\00"
@.str.22 = [5 x i8] c"x--a\00"
@.str.23 = [4 x i8] c"x--\00"
@.str.24 = [4 x i8] c"a|x\00"
@.str.25 = [4 x i8] c"x|a\00"
@.str.26 = [4 x i8] c"a&x\00"
@.str.27 = [4 x i8] c"x&a\00"
@.str.28 = [4 x i8] c"a^x\00"
@.str.29 = [4 x i8] c"x^a\00"
@.str.30 = [4 x i8] c"a+x\00"
@.str.31 = [4 x i8] c"x+a\00"
@.str.32 = [5 x i8] c"a+cx\00"
@.str.33 = [5 x i8] c"x+ca\00"
@.str.34 = [4 x i8] c"xca\00"
@.str.35 = [3 x i8] c"xc\00"
@.str.36 = [5 x i8] c"x++a\00"
@.str.37 = [4 x i8] c"x++\00"
@.str.38 = [6 x i8] c"x--a?\00"
@.str.39 = [5 x i8] c"x--?\00"
@.str.40 = [6 x i8] c"xc>>a\00"
@.str.41 = [6 x i8] c"xc>>x\00"
@.str.42 = [6 x i8] c"xc<<a\00"
@.str.43 = [6 x i8] c"xc<<x\00"
@.str.44 = [4 x i8] c"xwa\00"
@.str.45 = [3 x i8] c"xw\00"
@.str.46 = [6 x i8] c"x++a?\00"
@.str.47 = [5 x i8] c"x++?\00"
@.str.48 = [5 x i8] c"x>>a\00"
@.str.49 = [5 x i8] c"x>>x\00"
@.str.50 = [5 x i8] c"x<<a\00"
@.str.51 = [5 x i8] c"x<<x\00"
@.str.52 = [7 x i8] c"x++az?\00"
@.str.53 = [6 x i8] c"x++z?\00"
@.str.54 = [7 x i8] c"x--az?\00"
@.str.55 = [6 x i8] c"x--z?\00"
@.str.56 = [4 x i8] c"xza\00"
@.str.57 = [3 x i8] c"xz\00"
@.str.58 = [4 x i8] c"xsa\00"
@.str.59 = [3 x i8] c"xs\00"
@.str.60 = [5 x i8] c"anax\00"
@.str.61 = [4 x i8] c"anx\00"
@.str.62 = [5 x i8] c"adax\00"
@.str.63 = [4 x i8] c"adx\00"
@.str.64 = [6 x i8] c"x>=a?\00"
@.str.65 = [6 x i8] c"x!=a?\00"
@.str.66 = [6 x i8] c"x<=a?\00"
@.str.67 = [3 x i8] c"x?\00"
@.str.68 = [4 x i8] c"a*x\00"
@.str.69 = [4 x i8] c"xta\00"
@.str.70 = [4 x i8] c"llx\00"
@.str.71 = [4 x i8] c"lhx\00"
@.str.72 = [4 x i8] c"xll\00"
@.str.73 = [4 x i8] c"xhl\00"
@.str.74 = [4 x i8] c"plx\00"
@.str.75 = [6 x i8] c"pl++x\00"
@.str.76 = [4 x i8] c"xhp\00"
@.str.77 = [6 x i8] c"xhp++\00"
@.str.78 = [4 x i8] c"cta\00"
@.str.79 = [4 x i8] c"a+c\00"
@.str.80 = [4 x i8] c"c-a\00"
@.str.81 = [4 x i8] c"a|c\00"
@.str.82 = [4 x i8] c"a^c\00"
@.str.83 = [4 x i8] c"a&c\00"
@.str.84 = [5 x i8] c"retc\00"
@.str.85 = [6 x i8] c"lcall\00"
@.str.86 = [4 x i8] c"reg\00"
@.str.87 = [4 x i8] c"dat\00"
@.str.88 = [4 x i8] c"a*c\00"
@.str.89 = [3 x i8] c"%s\00"
@.str.90 = [6 x i8] c" 0x%x\00"
@.str.91 = [3 x i8] c"bt\00"
@.str.92 = [3 x i8] c"bs\00"
@.str.93 = [3 x i8] c"bz\00"
@.str.94 = [4 x i8] c"bz?\00"
@.str.95 = [4 x i8] c"bs?\00"
@.str.96 = [12 x i8] c"%s 0x%x, %d\00"
@.str.97 = [5 x i8] c"goto\00"
@.str.98 = [5 x i8] c"call\00"
@.str.99 = [15 x i8] c"xtr 0x%x, 0x%x\00"
@.str.100 = [15 x i8] c"rtx 0x%x, 0x%x\00"
define void @printcmd(i32 %0) {
switch i32 %0, label %36 [
i32 0, label %2
i32 2, label %4
i32 3, label %6
i32 4, label %8
i32 5, label %10
i32 5898, label %12
i32 7434, label %14
i32 7946, label %16
i32 9482, label %18
i32 9994, label %20
i32 10506, label %22
i32 11018, label %24
i32 13066, label %26
i32 39428, label %28
i32 37380, label %30
i32 38916, label %32
i32 36868, label %34
]
2: ; preds = %1
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %147
4: ; preds = %1
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
br label %147
6: ; preds = %1
%7 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
br label %147
8: ; preds = %1
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
br label %147
10: ; preds = %1
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %147
12: ; preds = %1
%13 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
br label %147
14: ; preds = %1
%15 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0))
br label %147
16: ; preds = %1
%17 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
br label %147
18: ; preds = %1
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0))
br label %147
20: ; preds = %1
%21 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0))
br label %147
22: ; preds = %1
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
br label %147
24: ; preds = %1
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
br label %147
26: ; preds = %1
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
br label %147
28: ; preds = %1
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0))
br label %147
30: ; preds = %1
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
br label %147
32: ; preds = %1
%33 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0))
br label %147
34: ; preds = %1
%35 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0))
br label %147
36: ; preds = %1
%37 = ashr i32 %0, 8
switch i32 %37, label %116 [
i32 1, label %109
i32 2, label %38
i32 3, label %39
i32 4, label %40
i32 5, label %41
i32 6, label %42
i32 7, label %43
i32 8, label %44
i32 9, label %45
i32 10, label %46
i32 11, label %47
i32 12, label %48
i32 13, label %49
i32 14, label %50
i32 15, label %51
i32 16, label %52
i32 17, label %53
i32 18, label %54
i32 19, label %55
i32 20, label %56
i32 21, label %57
i32 22, label %58
i32 23, label %59
i32 24, label %60
i32 25, label %61
i32 26, label %62
i32 27, label %63
i32 28, label %64
i32 29, label %65
i32 30, label %66
i32 31, label %67
i32 32, label %68
i32 33, label %69
i32 34, label %70
i32 35, label %71
i32 36, label %72
i32 37, label %73
i32 38, label %74
i32 39, label %75
i32 40, label %76
i32 41, label %77
i32 42, label %78
i32 43, label %79
i32 44, label %80
i32 45, label %81
i32 46, label %82
i32 47, label %83
i32 48, label %84
i32 49, label %85
i32 50, label %86
i32 51, label %87
i32 52, label %88
i32 106, label %89
i32 160, label %90
i32 162, label %91
i32 164, label %92
i32 166, label %93
i32 168, label %94
i32 169, label %95
i32 174, label %96
i32 175, label %97
i32 176, label %98
i32 177, label %99
i32 178, label %100
i32 179, label %101
i32 180, label %102
i32 181, label %103
i32 182, label %104
i32 183, label %105
i32 184, label %106
i32 186, label %107
i32 188, label %108
]
38: ; preds = %36
br label %109
39: ; preds = %36
br label %109
40: ; preds = %36
br label %109
41: ; preds = %36
br label %109
42: ; preds = %36
br label %109
43: ; preds = %36
br label %109
44: ; preds = %36
br label %109
45: ; preds = %36
br label %109
46: ; preds = %36
br label %109
47: ; preds = %36
br label %109
48: ; preds = %36
br label %109
49: ; preds = %36
br label %109
50: ; preds = %36
br label %109
51: ; preds = %36
br label %109
52: ; preds = %36
br label %109
53: ; preds = %36
br label %109
54: ; preds = %36
br label %109
55: ; preds = %36
br label %109
56: ; preds = %36
br label %109
57: ; preds = %36
br label %109
58: ; preds = %36
br label %109
59: ; preds = %36
br label %109
60: ; preds = %36
br label %109
61: ; preds = %36
br label %109
62: ; preds = %36
br label %109
63: ; preds = %36
br label %109
64: ; preds = %36
br label %109
65: ; preds = %36
br label %109
66: ; preds = %36
br label %109
67: ; preds = %36
br label %109
68: ; preds = %36
br label %109
69: ; preds = %36
br label %109
70: ; preds = %36
br label %109
71: ; preds = %36
br label %109
72: ; preds = %36
br label %109
73: ; preds = %36
br label %109
74: ; preds = %36
br label %109
75: ; preds = %36
br label %109
76: ; preds = %36
br label %109
77: ; preds = %36
br label %109
78: ; preds = %36
br label %109
79: ; preds = %36
br label %109
80: ; preds = %36
br label %109
81: ; preds = %36
br label %109
82: ; preds = %36
br label %109
83: ; preds = %36
br label %109
84: ; preds = %36
br label %109
85: ; preds = %36
br label %109
86: ; preds = %36
br label %109
87: ; preds = %36
br label %109
88: ; preds = %36
br label %109
89: ; preds = %36
br label %109
90: ; preds = %36
br label %109
91: ; preds = %36
br label %109
92: ; preds = %36
br label %109
93: ; preds = %36
br label %109
94: ; preds = %36
br label %109
95: ; preds = %36
br label %109
96: ; preds = %36
br label %109
97: ; preds = %36
br label %109
98: ; preds = %36
br label %109
99: ; preds = %36
br label %109
100: ; preds = %36
br label %109
101: ; preds = %36
br label %109
102: ; preds = %36
br label %109
103: ; preds = %36
br label %109
104: ; preds = %36
br label %109
105: ; preds = %36
br label %109
106: ; preds = %36
br label %109
107: ; preds = %36
br label %109
108: ; preds = %36
br label %109
109: ; preds = %36, %108, %107, %106, %105, %104, %103, %102, %101, %100, %99, %98, %97, %96, %95, %94, %93, %92, %91, %90, %89, %88, %87, %86, %85, %84, %83, %82, %81, %80, %79, %78, %77, %76, %75, %74, %73, %72, %71, %70, %69, %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38
%110 = phi i8* [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.88, i64 0, i64 0), %108 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.87, i64 0, i64 0), %107 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.86, i64 0, i64 0), %106 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.85, i64 0, i64 0), %105 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.84, i64 0, i64 0), %104 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.83, i64 0, i64 0), %103 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.82, i64 0, i64 0), %102 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.81, i64 0, i64 0), %101 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.80, i64 0, i64 0), %100 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.79, i64 0, i64 0), %99 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.78, i64 0, i64 0), %98 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.77, i64 0, i64 0), %97 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.76, i64 0, i64 0), %96 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.75, i64 0, i64 0), %95 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.74, i64 0, i64 0), %94 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.73, i64 0, i64 0), %93 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.72, i64 0, i64 0), %92 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.71, i64 0, i64 0), %91 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.70, i64 0, i64 0), %90 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.69, i64 0, i64 0), %89 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.68, i64 0, i64 0), %88 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.67, i64 0, i64 0), %87 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.66, i64 0, i64 0), %86 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.65, i64 0, i64 0), %85 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.64, i64 0, i64 0), %84 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.63, i64 0, i64 0), %83 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.62, i64 0, i64 0), %82 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.61, i64 0, i64 0), %81 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.60, i64 0, i64 0), %80 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.59, i64 0, i64 0), %79 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.58, i64 0, i64 0), %78 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.57, i64 0, i64 0), %77 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.56, i64 0, i64 0), %76 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.55, i64 0, i64 0), %75 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.54, i64 0, i64 0), %74 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.53, i64 0, i64 0), %73 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.52, i64 0, i64 0), %72 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.51, i64 0, i64 0), %71 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.50, i64 0, i64 0), %70 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.49, i64 0, i64 0), %69 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), %68 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.47, i64 0, i64 0), %67 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.46, i64 0, i64 0), %66 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), %65 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), %64 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.43, i64 0, i64 0), %63 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), %62 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.41, i64 0, i64 0), %61 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.40, i64 0, i64 0), %60 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.39, i64 0, i64 0), %59 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0), %58 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0), %57 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), %56 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i64 0, i64 0), %55 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i64 0, i64 0), %54 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.33, i64 0, i64 0), %53 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), %52 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), %51 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0), %50 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0), %49 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.28, i64 0, i64 0), %48 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0), %47 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0), %46 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0), %45 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), %44 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), %43 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), %42 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), %41 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), %40 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0), %39 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), %38 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), %36 ]
%111 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.89, i64 0, i64 0), i8* %110)
%112 = and i32 %0, 255
%113 = icmp eq i32 %112, 0
br i1 %113, label %147, label %114
114: ; preds = %109
%115 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.90, i64 0, i64 0), i32 %112)
br label %147
116: ; preds = %36
%117 = and i32 %37, 248
%118 = add nsw i32 %117, -56
%119 = lshr exact i32 %118, 3
switch i32 %119, label %145 [
i32 0, label %124
i32 9, label %120
i32 10, label %121
i32 11, label %122
i32 12, label %123
i32 17, label %130
i32 18, label %130
i32 19, label %130
i32 20, label %130
i32 21, label %129
i32 22, label %129
i32 23, label %129
i32 24, label %129
i32 5, label %137
i32 6, label %137
i32 7, label %137
i32 8, label %137
i32 1, label %141
i32 2, label %141
i32 3, label %141
i32 4, label %141
]
120: ; preds = %116
br label %124
121: ; preds = %116
br label %124
122: ; preds = %116
br label %124
123: ; preds = %116
br label %124
124: ; preds = %116, %123, %122, %121, %120
%125 = phi i8* [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.95, i64 0, i64 0), %123 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.94, i64 0, i64 0), %122 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.93, i64 0, i64 0), %121 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.92, i64 0, i64 0), %120 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.91, i64 0, i64 0), %116 ]
%126 = and i32 %0, 255
%127 = and i32 %37, 7
%128 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.96, i64 0, i64 0), i8* %125, i32 %126, i32 %127)
br label %147
129: ; preds = %116, %116, %116, %116
br label %130
130: ; preds = %116, %116, %116, %116, %129
%131 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.98, i64 0, i64 0), %129 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.97, i64 0, i64 0), %116 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.97, i64 0, i64 0), %116 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.97, i64 0, i64 0), %116 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.97, i64 0, i64 0), %116 ]
%132 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.89, i64 0, i64 0), i8* %131)
%133 = and i32 %0, 8191
%134 = icmp eq i32 %133, 0
br i1 %134, label %147, label %135
135: ; preds = %130
%136 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.90, i64 0, i64 0), i32 %133)
br label %147
137: ; preds = %116, %116, %116, %116
%138 = and i32 %0, 255
%139 = and i32 %37, 31
%140 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.99, i64 0, i64 0), i32 %138, i32 %139)
br label %147
141: ; preds = %116, %116, %116, %116
%142 = and i32 %37, 31
%143 = and i32 %0, 255
%144 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.100, i64 0, i64 0), i32 %142, i32 %143)
br label %147
145: ; preds = %116
%146 = tail call i32 @putchar(i32 63)
br label %147
147: ; preds = %124, %137, %141, %145, %135, %130, %109, %114, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12, %10, %8, %6, %4, %2
ret void
}