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

/* Forward declarations */

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

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
int /*<<< orphan*/ print_reg(int /*<<< orphan*/ *, int);
void print_command(FILE *out, int line, int addr, int cmd) {
  char *m;
  int arg;
  if (line > 0)
    fprintf(out, " %4d", line);
  else
    fprintf(out, "     ");
  fprintf(out, " %04x %04x\t\t\t", addr, cmd);
  switch (cmd) {
  case 0x0000:
    fprintf(out, "nop");
    goto done;
  case 0x0001:
    fprintf(out, "wait");
    goto done;
  case 0x0002:
    fprintf(out, "rst");
    goto done;
  case 0x0003:
    fprintf(out, "ijmp");
    goto done;
  case 0x0004:
    fprintf(out, "tof");
    goto done;
  case 0x0005:
    fprintf(out, "tdc");
    goto done;
  case 0x0006:
    fprintf(out, "sksp");
    goto done;
  case 0x0007:
    fprintf(out, "ijsr");
    goto done;
  case 0x0008:
    fprintf(out, "slp");
    goto done;
  case 0x000c:
    fprintf(out, "rts");
    goto done;
  case 0x000d:
    fprintf(out, "rti");
    goto done;
  case 0x000e:
    fprintf(out, "rtsc\t0");
    goto done;
  case 0x000f:
    fprintf(out, "rtsc\t1");
    goto done;
  case 0x0181:
    fprintf(out, "stc");
    goto done;
  case 0x0182:
    fprintf(out, "stz");
    goto done;
  case 0x0184:
    fprintf(out, "stn");
    goto done;
  case 0x0188:
    fprintf(out, "stie");
    goto done;
  case 0x01c1:
    fprintf(out, "clc");
    goto done;
  case 0x01c2:
    fprintf(out, "clz");
    goto done;
  case 0x01c4:
    fprintf(out, "cln");
    goto done;
  case 0x01c8:
    fprintf(out, "clie");
    goto done;
  }
  switch (cmd >> 4) {
  case 0x001:
    fprintf(out, "%s\t#%c", (cmd & 8) ? "pop" : "push", (cmd & 7) + 'a');
    goto done;
  case 0x002:
  case 0x003:
    m = "swap";
    goto arg1op;
  case 0x004:
  case 0x005:
    m = "neg";
    goto arg1op;
  case 0x006:
  case 0x007:
    m = "not";
    goto arg1op;
  case 0x008:
  case 0x009:
    m = "shl";
    goto arg1op;
  case 0x00a:
  case 0x00b:
    m = "shr";
    goto arg1op;
  case 0x00c:
  case 0x00d:
    m = "shra";
    goto arg1op;
  case 0x00e:
  case 0x00f:
    m = "rlc";
    goto arg1op;
  case 0x010:
  case 0x011:
    m = "rrc";
    goto arg1op;
  case 0x012:
  case 0x013:
    m = "adc";
    goto arg1op;
  case 0x014:
  case 0x015:
    m = "sbc";
    goto arg1op;
  case 0x2c2:
  case 0x2c3:
    m = "dec";
    goto arg1op;
  case 0x302:
  case 0x303:
    m = "inc";
    goto arg1op;
  case 0x400:
  case 0x401:
    m = "clr";
    goto arg1op;
  arg1op:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    goto done;
  case 0x018:
    m = "sst";
    goto statusop;
  case 0x01c:
    m = "cst";
  statusop:
    fprintf(out, "%s\t0%xh", m, cmd & 0xf);
    goto done;
  }
  switch (cmd >> 12) {
  case 0x4:
  case 0x5:
    m = "movl";
    goto moveop;
  case 0x6:
  case 0x7:
    m = "cmpl";
  moveop:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    arg = (cmd >> 5) & 0xff;
    if (arg > 9)
      fprintf(out, ", 0%xh", arg);
    else
      fprintf(out, ", %d", arg);
    goto done;
  case 0x8:
    m = "jmp";
    goto jumpop;
  case 0x9:
    m = "jsr";
    goto jumpop;
  case 0xa:
    m = "jz";
    goto jumpop;
  case 0xb:
    m = "jnz";
    goto jumpop;
  case 0xc:
    m = "jns";
    goto jumpop;
  case 0xd:
    m = "js";
    goto jumpop;
  case 0xe:
    m = "jnc";
    goto jumpop;
  case 0xf:
    m = "jc";
  jumpop:
    fprintf(out, "%s", m);
    arg = cmd & 0xfff;
    if (arg > 9)
      fprintf(out, "\t0%xh", arg);
    else if (arg)
      fprintf(out, "\t%d", arg);
    goto done;
  }
  switch (cmd >> 8) {
  case 0x04:
  case 0x05:
  case 0x06:
  case 0x07:
    m = "mov";
    goto movop;
  case 0x08:
  case 0x09:
  case 0x0a:
  case 0x0b:
    m = "cmp";
    goto movop;
  case 0x0c:
  case 0x0d:
  case 0x0e:
  case 0x0f:
    m = "sub";
    goto movop;
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
    m = "add";
    goto movop;
  case 0x14:
  case 0x15:
  case 0x16:
  case 0x17:
    m = "and";
    goto movop;
  case 0x18:
  case 0x19:
  case 0x1a:
  case 0x1b:
    m = "or";
    goto movop;
  case 0x1c:
  case 0x1d:
  case 0x1e:
  case 0x1f:
    m = "xor";
  movop:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    fprintf(out, ", ");
    print_reg(out, cmd >> 5 & 0x1f);
    goto done;
  case 0x28:
  case 0x29:
    m = "bicl";
    goto bitop;
  case 0x2a:
  case 0x2b:
    m = "bich";
    goto bitop;
  case 0x34:
  case 0x35:
    m = "bttl";
    goto bitop;
  case 0x36:
  case 0x37:
    m = "btth";
    goto bitop;
  case 0x38:
  case 0x39:
    m = "bisl";
    goto bitop;
  case 0x3a:
  case 0x3b:
    m = "bish";
    goto bitop;
  case 0x3c:
  case 0x3d:
    m = "btgl";
    goto bitop;
  case 0x3e:
  case 0x3f:
    m = "btgh";
  bitop:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    fprintf(out, ", 0%xh", cmd >> 5 & 0xf);
    goto done;
  case 0x2c:
  case 0x2d:
  case 0x2e:
  case 0x2f:
    m = "subl";
    goto bit5op;
  case 0x30:
  case 0x31:
  case 0x32:
  case 0x33:
    m = "addl";
  bit5op:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    fprintf(out, ", 0%xh", cmd >> 5 & 0x1f);
    goto done;
  case 0x20:
  case 0x21:
  case 0x22:
  case 0x23:
  case 0x24:
  case 0x25:
  case 0x26:
  case 0x27:
    fprintf(out, "ldr\t#%c, ", (cmd & 7) + 'a');
    arg = (cmd >> 3) & 0xff;
    if (arg > 9)
      fprintf(out, "0%xh", arg);
    else
      fprintf(out, "%d", arg);
    goto done;
  case 0x02:
    fprintf(out, "mtpr\t#%c, ", ((cmd >> 5) & 7) + 'a');
    print_reg(out, cmd & 0x1f);
    goto done;
  case 0x03:
    fprintf(out, "mfpr\t");
    print_reg(out, cmd & 0x1f);
    fprintf(out, ", #%c", ((cmd >> 5) & 7) + 'a');
    goto done;
  }
  fprintf(out, "?");
  if (cmd >= ' ' && cmd <= '~')
    fprintf(out, "\t\t; `%c'", cmd);
done:
  fprintf(out, "\n");
}


x86 assembly (clang, -O0):
<print_command>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
cmpl   $0x0,-0xc(%rbp)
jle    1159 <print_command+0x39>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%edx
lea    0xfdb(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    116b <print_command+0x4b>
mov    -0x8(%rbp),%rdi
lea    0xfc9(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%edx
mov    -0x14(%rbp),%ecx
lea    0xfb7(%rip),%rsi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    -0x14(%rbp),%eax
mov    %eax,-0x28(%rbp)
test   %eax,%eax
je     12fa <print_command+0x1da>
jmp    1196 <print_command+0x76>
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
je     1311 <print_command+0x1f1>
jmp    11a7 <print_command+0x87>
mov    -0x28(%rbp),%eax
sub    $0x2,%eax
je     1328 <print_command+0x208>
jmp    11b8 <print_command+0x98>
mov    -0x28(%rbp),%eax
sub    $0x3,%eax
je     133f <print_command+0x21f>
jmp    11c9 <print_command+0xa9>
mov    -0x28(%rbp),%eax
sub    $0x4,%eax
je     1356 <print_command+0x236>
jmp    11da <print_command+0xba>
mov    -0x28(%rbp),%eax
sub    $0x5,%eax
je     136d <print_command+0x24d>
jmp    11eb <print_command+0xcb>
mov    -0x28(%rbp),%eax
sub    $0x6,%eax
je     1384 <print_command+0x264>
jmp    11fc <print_command+0xdc>
mov    -0x28(%rbp),%eax
sub    $0x7,%eax
je     139b <print_command+0x27b>
jmp    120d <print_command+0xed>
mov    -0x28(%rbp),%eax
sub    $0x8,%eax
je     13b2 <print_command+0x292>
jmp    121e <print_command+0xfe>
mov    -0x28(%rbp),%eax
sub    $0xc,%eax
je     13c9 <print_command+0x2a9>
jmp    122f <print_command+0x10f>
mov    -0x28(%rbp),%eax
sub    $0xd,%eax
je     13e0 <print_command+0x2c0>
jmp    1240 <print_command+0x120>
mov    -0x28(%rbp),%eax
sub    $0xe,%eax
je     13f7 <print_command+0x2d7>
jmp    1251 <print_command+0x131>
mov    -0x28(%rbp),%eax
sub    $0xf,%eax
je     140e <print_command+0x2ee>
jmp    1262 <print_command+0x142>
mov    -0x28(%rbp),%eax
sub    $0x181,%eax
je     1425 <print_command+0x305>
jmp    1275 <print_command+0x155>
mov    -0x28(%rbp),%eax
sub    $0x182,%eax
je     143c <print_command+0x31c>
jmp    1288 <print_command+0x168>
mov    -0x28(%rbp),%eax
sub    $0x184,%eax
je     1453 <print_command+0x333>
jmp    129b <print_command+0x17b>
mov    -0x28(%rbp),%eax
sub    $0x188,%eax
je     146a <print_command+0x34a>
jmp    12ae <print_command+0x18e>
mov    -0x28(%rbp),%eax
sub    $0x1c1,%eax
je     1481 <print_command+0x361>
jmp    12c1 <print_command+0x1a1>
mov    -0x28(%rbp),%eax
sub    $0x1c2,%eax
je     1498 <print_command+0x378>
jmp    12d4 <print_command+0x1b4>
mov    -0x28(%rbp),%eax
sub    $0x1c4,%eax
je     14af <print_command+0x38f>
jmp    12e7 <print_command+0x1c7>
mov    -0x28(%rbp),%eax
sub    $0x1c8,%eax
je     14c6 <print_command+0x3a6>
jmp    14dd <print_command+0x3bd>
mov    -0x8(%rbp),%rdi
lea    0xe3c(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xe29(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xe17(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xe04(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xdf2(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xddf(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xdcc(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xdba(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xda8(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd95(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd82(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd6f(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd5f(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd4f(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd3c(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd29(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd16(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xd04(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xcf1(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xcde(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0xccb(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x14(%rbp),%eax
sar    $0x4,%eax
mov    %eax,-0x2c(%rbp)
sub    $0x1,%eax
je     1620 <print_command+0x500>
jmp    14f4 <print_command+0x3d4>
mov    -0x2c(%rbp),%eax
add    $0xfffffffe,%eax
sub    $0x2,%eax
jb     165b <print_command+0x53b>
jmp    1508 <print_command+0x3e8>
mov    -0x2c(%rbp),%eax
add    $0xfffffffc,%eax
sub    $0x2,%eax
jb     166b <print_command+0x54b>
jmp    151c <print_command+0x3fc>
mov    -0x2c(%rbp),%eax
add    $0xfffffffa,%eax
sub    $0x2,%eax
jb     167b <print_command+0x55b>
jmp    1530 <print_command+0x410>
mov    -0x2c(%rbp),%eax
add    $0xfffffff8,%eax
sub    $0x2,%eax
jb     168b <print_command+0x56b>
jmp    1544 <print_command+0x424>
mov    -0x2c(%rbp),%eax
add    $0xfffffff6,%eax
sub    $0x2,%eax
jb     169b <print_command+0x57b>
jmp    1558 <print_command+0x438>
mov    -0x2c(%rbp),%eax
add    $0xfffffff4,%eax
sub    $0x2,%eax
jb     16ab <print_command+0x58b>
jmp    156c <print_command+0x44c>
mov    -0x2c(%rbp),%eax
add    $0xfffffff2,%eax
sub    $0x2,%eax
jb     16bb <print_command+0x59b>
jmp    1580 <print_command+0x460>
mov    -0x2c(%rbp),%eax
add    $0xfffffff0,%eax
sub    $0x2,%eax
jb     16cb <print_command+0x5ab>
jmp    1594 <print_command+0x474>
mov    -0x2c(%rbp),%eax
add    $0xffffffee,%eax
sub    $0x2,%eax
jb     16db <print_command+0x5bb>
jmp    15a8 <print_command+0x488>
mov    -0x2c(%rbp),%eax
add    $0xffffffec,%eax
sub    $0x2,%eax
jb     16eb <print_command+0x5cb>
jmp    15bc <print_command+0x49c>
mov    -0x2c(%rbp),%eax
sub    $0x18,%eax
je     1750 <print_command+0x630>
jmp    15cd <print_command+0x4ad>
mov    -0x2c(%rbp),%eax
sub    $0x1c,%eax
je     1760 <print_command+0x640>
jmp    15de <print_command+0x4be>
mov    -0x2c(%rbp),%eax
add    $0xfffffd3e,%eax
sub    $0x2,%eax
jb     16fb <print_command+0x5db>
jmp    15f4 <print_command+0x4d4>
mov    -0x2c(%rbp),%eax
add    $0xfffffcfe,%eax
sub    $0x2,%eax
jb     170b <print_command+0x5eb>
jmp    160a <print_command+0x4ea>
mov    -0x2c(%rbp),%eax
add    $0xfffffc00,%eax
sub    $0x2,%eax
jb     171b <print_command+0x5fb>
jmp    178c <print_command+0x66c>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%ecx
and    $0x8,%ecx
lea    0xb7b(%rip),%rdx
lea    0xb70(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
mov    -0x14(%rbp),%ecx
and    $0x7,%ecx
add    $0x61,%ecx
lea    0xb52(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
lea    0xb4f(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xb44(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xb38(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xb2c(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xb20(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xb14(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xb09(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xafd(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xaf1(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xae5(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xad9(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xacd(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1726 <print_command+0x606>
lea    0xac1(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0xab2(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1f,%esi
call   1030 <print_reg@plt>
jmp    1c4f <print_command+0xb2f>
lea    0xa94(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    176b <print_command+0x64b>
lea    0xa88(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%ecx
and    $0xf,%ecx
lea    0xa73(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x14(%rbp),%eax
sar    $0xc,%eax
add    $0xfffffffc,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0xb,%eax
ja     192d <print_command+0x80d>
mov    -0x38(%rbp),%rax
lea    0x851(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xa3c(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    17d3 <print_command+0x6b3>
lea    0xa31(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0xa05(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1f,%esi
call   1030 <print_reg@plt>
mov    -0x14(%rbp),%eax
sar    $0x5,%eax
and    $0xff,%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x9,-0x24(%rbp)
jle    182a <print_command+0x70a>
mov    -0x8(%rbp),%rdi
mov    -0x24(%rbp),%edx
lea    0x9e7(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    183f <print_command+0x71f>
mov    -0x8(%rbp),%rdi
mov    -0x24(%rbp),%edx
lea    0x9d4(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
lea    0x904(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    18bf <print_command+0x79f>
lea    0x906(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    18bf <print_command+0x79f>
lea    0x9a6(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    18bf <print_command+0x79f>
lea    0x999(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    18bf <print_command+0x79f>
lea    0x98d(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    18bf <print_command+0x79f>
lea    0x981(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    18bf <print_command+0x79f>
lea    0x974(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    18bf <print_command+0x79f>
lea    0x968(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x958(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x14(%rbp),%eax
and    $0xfff,%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x9,-0x24(%rbp)
jle    1904 <print_command+0x7e4>
mov    -0x8(%rbp),%rdi
mov    -0x24(%rbp),%edx
lea    0x8fd(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1928 <print_command+0x808>
cmpl   $0x0,-0x24(%rbp)
je     1923 <print_command+0x803>
mov    -0x8(%rbp),%rdi
mov    -0x24(%rbp),%edx
lea    0x90d(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1928 <print_command+0x808>
jmp    1c4f <print_command+0xb2f>
mov    -0x14(%rbp),%eax
sar    $0x8,%eax
add    $0xfffffffe,%eax
mov    %eax,%ecx
mov    %rcx,-0x40(%rbp)
sub    $0x3d,%eax
ja     1c0f <print_command+0xaef>
mov    -0x40(%rbp),%rax
lea    0x6e0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x8cd(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    19c4 <print_command+0x8a4>
lea    0x8c1(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    19c4 <print_command+0x8a4>
lea    0x8b5(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    19c4 <print_command+0x8a4>
lea    0x8a9(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    19c4 <print_command+0x8a4>
lea    0x89d(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    19c4 <print_command+0x8a4>
lea    0x892(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    19c4 <print_command+0x8a4>
lea    0x881(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x814(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1f,%esi
call   1030 <print_reg@plt>
mov    -0x8(%rbp),%rdi
lea    0x88a(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%esi
sar    $0x5,%esi
and    $0x1f,%esi
call   1030 <print_reg@plt>
jmp    1c4f <print_command+0xb2f>
lea    0x82c(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1a8d <print_command+0x96d>
lea    0x821(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1a8d <print_command+0x96d>
lea    0x816(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1a8d <print_command+0x96d>
lea    0x80b(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1a8d <print_command+0x96d>
lea    0x800(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1a8d <print_command+0x96d>
lea    0x7f5(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1a8d <print_command+0x96d>
lea    0x7ea(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1a8d <print_command+0x96d>
lea    0x7df(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x74b(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1f,%esi
call   1030 <print_reg@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%edx
sar    $0x5,%edx
and    $0xf,%edx
lea    0x73f(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
lea    0x794(%rip),%rax
mov    %rax,-0x20(%rbp)
jmp    1aed <print_command+0x9cd>
lea    0x789(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x6eb(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1f,%esi
call   1030 <print_reg@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%edx
sar    $0x5,%edx
and    $0x1f,%edx
lea    0x6df(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%edx
and    $0x7,%edx
add    $0x61,%edx
lea    0x731(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x14(%rbp),%eax
sar    $0x3,%eax
and    $0xff,%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x9,-0x24(%rbp)
jle    1b7f <print_command+0xa5f>
mov    -0x8(%rbp),%rdi
mov    -0x24(%rbp),%edx
lea    0x683(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1b94 <print_command+0xa74>
mov    -0x8(%rbp),%rdi
mov    -0x24(%rbp),%edx
lea    0x69d(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%edx
sar    $0x5,%edx
and    $0x7,%edx
add    $0x61,%edx
lea    0x6d1(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1f,%esi
call   1030 <print_reg@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0x6b6(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1f,%esi
call   1030 <print_reg@plt>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%edx
sar    $0x5,%edx
and    $0x7,%edx
add    $0x61,%edx
lea    0x68f(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0x67e(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
cmpl   $0x20,-0x14(%rbp)
jl     1c4a <print_command+0xb2a>
cmpl   $0x7e,-0x14(%rbp)
jg     1c4a <print_command+0xb2a>
mov    -0x8(%rbp),%rdi
mov    -0x14(%rbp),%edx
lea    0x657(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
jmp    1c4f <print_command+0xb2f>
mov    -0x8(%rbp),%rdi
lea    0x649(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_command>:
push   %rbp
push   %r14
push   %rbx
mov    %ecx,%ebx
mov    %edx,%ebp
mov    %rdi,%r14
test   %esi,%esi
jle    1174 <print_command+0x24>
mov    %esi,%edx
lea    0x1190(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <fprintf@plt>
jmp    118d <print_command+0x3d>
lea    0x1182(%rip),%rdi
mov    $0x5,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1070 <fwrite@plt>
lea    0x116f(%rip),%rsi
mov    %r14,%rdi
mov    %ebp,%edx
mov    %ebx,%ecx
xor    %eax,%eax
call   1060 <fprintf@plt>
cmp    $0xf,%ebx
ja     11c5 <print_command+0x75>
mov    %ebx,%eax
lea    0xe50(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1151(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    -0x181(%rbx),%eax
cmp    $0x47,%eax
ja     129e <print_command+0x14e>
lea    0xe65(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1164(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x111e(%rip),%rdi
mov    $0x4,%esi
jmp    1323 <print_command+0x1d3>
lea    0x1112(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x110a(%rip),%rdi
mov    $0x4,%esi
jmp    1323 <print_command+0x1d3>
lea    0x10fe(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x10f6(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x10ee(%rip),%rdi
mov    $0x4,%esi
jmp    1323 <print_command+0x1d3>
lea    0x10e2(%rip),%rdi
mov    $0x4,%esi
jmp    1323 <print_command+0x1d3>
lea    0x10d6(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x10ce(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x10c6(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x10be(%rip),%rdi
mov    $0x6,%esi
jmp    1323 <print_command+0x1d3>
lea    0x10b4(%rip),%rdi
mov    $0x6,%esi
jmp    1323 <print_command+0x1d3>
mov    %ebx,%ecx
sar    $0x4,%ecx
cmp    $0x2c1,%ecx
jg     134f <print_command+0x1ff>
add    $0xffffffff,%ecx
cmp    $0x1b,%ecx
ja     1444 <print_command+0x2f4>
lea    0x10f9(%rip),%rax
lea    0x10b8(%rip),%rdx
lea    0xe90(%rip),%rsi
movslq (%rsi,%rcx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
lea    0x10a6(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0x1067(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x1062(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x105d(%rip),%rdi
mov    $0x4,%esi
jmp    1323 <print_command+0x1d3>
lea    0x1054(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x104f(%rip),%rdi
jmp    131e <print_command+0x1ce>
lea    0x104a(%rip),%rdi
mov    $0x3,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1070 <fwrite@plt>
mov    $0xa,%edi
mov    %r14,%rsi
pop    %rbx
pop    %r14
pop    %rbp
jmp    1050 <fputc@plt>
lea    0x1024(%rip),%rdi
mov    $0x4,%esi
jmp    1323 <print_command+0x1d3>
lea    -0x2c2(%rcx),%eax
cmp    $0x2,%eax
jb     13c5 <print_command+0x275>
lea    -0x302(%rcx),%eax
cmp    $0x2,%eax
jb     13ce <print_command+0x27e>
add    $0xfffffc00,%ecx
cmp    $0x2,%ecx
jae    1444 <print_command+0x2f4>
lea    0x1038(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0x1006(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0x1001(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0xffc(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0xff7(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0xff3(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0xfee(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0xfe9(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0xfe4(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0xfdf(%rip),%rdx
jmp    13d5 <print_command+0x285>
lea    0xfda(%rip),%rdx
lea    0xfdb(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <fprintf@plt>
and    $0x1f,%ebx
mov    %r14,%rdi
mov    %ebx,%esi
call   1030 <print_reg@plt>
jmp    1330 <print_command+0x1e0>
test   $0x8,%bl
lea    0xf7a(%rip),%rax
lea    0xf6f(%rip),%rdx
cmove  %rax,%rdx
and    $0x7,%ebx
add    $0x61,%ebx
lea    0xf57(%rip),%rsi
mov    %r14,%rdi
jmp    1436 <print_command+0x2e6>
lea    0xf99(%rip),%rax
and    $0xf,%ebx
lea    0xf93(%rip),%rsi
mov    %r14,%rdi
mov    %rax,%rdx
mov    %ebx,%ecx
xor    %eax,%eax
call   1060 <fprintf@plt>
jmp    1330 <print_command+0x1e0>
mov    %ebx,%eax
sar    $0xc,%eax
add    $0xfffffffc,%eax
cmp    $0xb,%eax
ja     14bd <print_command+0x36d>
lea    0xec7(%rip),%rdi
lea    0xf6c(%rip),%rdx
lea    0xd6a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xf5a(%rip),%rdx
lea    0xf3a(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    %ebx,%esi
and    $0x1f,%esi
mov    %r14,%rdi
call   1030 <print_reg@plt>
shr    $0x5,%ebx
movzbl %bl,%edx
cmp    $0xa,%edx
jb     14ae <print_command+0x35e>
lea    0xf2f(%rip),%rsi
mov    %r14,%rdi
jmp    1594 <print_command+0x444>
lea    0xf27(%rip),%rsi
mov    %r14,%rdi
jmp    1594 <print_command+0x444>
mov    %ebx,%esi
sar    $0x8,%esi
add    $0xfffffffe,%esi
cmp    $0x3d,%esi
ja     1722 <print_command+0x5d2>
lea    0xf65(%rip),%rcx
lea    0xf36(%rip),%rdx
lea    0xf17(%rip),%rax
lea    0xd16(%rip),%rdi
movslq (%rdi,%rsi,4),%rsi
add    %rdi,%rsi
jmp    *%rsi
mov    %ebx,%edx
and    $0x7,%edx
add    $0x61,%edx
lea    0xf42(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <fprintf@plt>
shr    $0x3,%ebx
movzbl %bl,%edx
cmp    $0xa,%edx
jb     1604 <print_command+0x4b4>
lea    0xea4(%rip),%rsi
mov    %r14,%rdi
jmp    1594 <print_command+0x444>
lea    0xe03(%rip),%rdi
jmp    1564 <print_command+0x414>
lea    0xeaa(%rip),%rdi
jmp    1564 <print_command+0x414>
lea    0xea4(%rip),%rdi
jmp    1564 <print_command+0x414>
lea    0xe9f(%rip),%rdi
jmp    1564 <print_command+0x414>
lea    0xe9a(%rip),%rdi
jmp    1564 <print_command+0x414>
lea    0xe94(%rip),%rdi
jmp    1564 <print_command+0x414>
lea    0xe8f(%rip),%rdi
mov    %r14,%rsi
call   1040 <fputs@plt>
and    $0xfff,%ebx
cmp    $0xa,%ebx
jb     1580 <print_command+0x430>
lea    0xe47(%rip),%rsi
jmp    158f <print_command+0x43f>
test   %ebx,%ebx
je     1330 <print_command+0x1e0>
lea    0xe67(%rip),%rsi
mov    %r14,%rdi
mov    %ebx,%edx
xor    %eax,%eax
call   1060 <fprintf@plt>
jmp    1330 <print_command+0x1e0>
lea    0xe57(%rip),%rax
jmp    1617 <print_command+0x4c7>
lea    0xe52(%rip),%rax
jmp    1617 <print_command+0x4c7>
lea    0xe4d(%rip),%rax
jmp    1617 <print_command+0x4c7>
lea    0xe4d(%rip),%rax
jmp    1617 <print_command+0x4c7>
lea    0xe43(%rip),%rax
jmp    1617 <print_command+0x4c7>
lea    0xe6b(%rip),%rcx
lea    0xddc(%rip),%rsi
mov    %r14,%rdi
mov    %rcx,%rdx
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    %ebx,%esi
and    $0x1f,%esi
mov    %r14,%rdi
call   1030 <print_reg@plt>
shr    $0x5,%ebx
and    $0x1f,%ebx
lea    0xdd3(%rip),%rsi
jmp    158f <print_command+0x43f>
lea    0xdec(%rip),%rsi
mov    %r14,%rdi
jmp    1594 <print_command+0x444>
lea    0xdf3(%rip),%rax
lea    0xd99(%rip),%rsi
mov    %r14,%rdi
mov    %rax,%rdx
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    %ebx,%esi
and    $0x1f,%esi
mov    %r14,%rdi
call   1030 <print_reg@plt>
lea    0xe0c(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1070 <fwrite@plt>
shr    $0x5,%ebx
jmp    13e6 <print_command+0x296>
lea    0xdbc(%rip),%rdx
jmp    1696 <print_command+0x546>
lea    0xdbd(%rip),%rdx
jmp    1696 <print_command+0x546>
lea    0xdc3(%rip),%rdx
jmp    1696 <print_command+0x546>
lea    0xd9c(%rip),%rdx
jmp    1696 <print_command+0x546>
lea    0xd9d(%rip),%rdx
jmp    1696 <print_command+0x546>
lea    0xd9e(%rip),%rdx
jmp    1696 <print_command+0x546>
lea    0xd9a(%rip),%rdx
lea    0xd1a(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    %ebx,%esi
and    $0x1f,%esi
mov    %r14,%rdi
call   1030 <print_reg@plt>
shr    $0x5,%ebx
and    $0xf,%ebx
lea    0xd14(%rip),%rsi
jmp    158f <print_command+0x43f>
mov    %ebx,%edx
shr    $0x5,%edx
and    $0x7,%edx
add    $0x61,%edx
lea    0xd76(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <fprintf@plt>
jmp    13e6 <print_command+0x296>
lea    0xd6b(%rip),%rdi
mov    $0x5,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1070 <fwrite@plt>
mov    %ebx,%esi
and    $0x1f,%esi
mov    %r14,%rdi
call   1030 <print_reg@plt>
shr    $0x5,%ebx
and    $0x7,%ebx
add    $0x61,%ebx
lea    0xd42(%rip),%rsi
jmp    158f <print_command+0x43f>
mov    $0x3f,%edi
mov    %r14,%rsi
call   1050 <fputc@plt>
lea    -0x20(%rbx),%eax
cmp    $0x5e,%eax
ja     1330 <print_command+0x1e0>
lea    0xd23(%rip),%rsi
jmp    158f <print_command+0x43f>

LLVM IR (-O0):
@.str = [5 x i8] c" %4d\00"
@.str.1 = [6 x i8] c" \00"
@.str.2 = [14 x i8] c" %04x %04x\09\09\09\00"
@.str.3 = [4 x i8] c"nop\00"
@.str.4 = [5 x i8] c"wait\00"
@.str.5 = [4 x i8] c"rst\00"
@.str.6 = [5 x i8] c"ijmp\00"
@.str.7 = [4 x i8] c"tof\00"
@.str.8 = [4 x i8] c"tdc\00"
@.str.9 = [5 x i8] c"sksp\00"
@.str.10 = [5 x i8] c"ijsr\00"
@.str.11 = [4 x i8] c"slp\00"
@.str.12 = [4 x i8] c"rts\00"
@.str.13 = [4 x i8] c"rti\00"
@.str.14 = [7 x i8] c"rtsc\090\00"
@.str.15 = [7 x i8] c"rtsc\091\00"
@.str.16 = [4 x i8] c"stc\00"
@.str.17 = [4 x i8] c"stz\00"
@.str.18 = [4 x i8] c"stn\00"
@.str.19 = [5 x i8] c"stie\00"
@.str.20 = [4 x i8] c"clc\00"
@.str.21 = [4 x i8] c"clz\00"
@.str.22 = [4 x i8] c"cln\00"
@.str.23 = [5 x i8] c"clie\00"
@.str.24 = [7 x i8] c"%s\09#%c\00"
@.str.25 = [4 x i8] c"pop\00"
@.str.26 = [5 x i8] c"push\00"
@.str.27 = [5 x i8] c"swap\00"
@.str.28 = [4 x i8] c"neg\00"
@.str.29 = [4 x i8] c"not\00"
@.str.30 = [4 x i8] c"shl\00"
@.str.31 = [4 x i8] c"shr\00"
@.str.32 = [5 x i8] c"shra\00"
@.str.33 = [4 x i8] c"rlc\00"
@.str.34 = [4 x i8] c"rrc\00"
@.str.35 = [4 x i8] c"adc\00"
@.str.36 = [4 x i8] c"sbc\00"
@.str.37 = [4 x i8] c"dec\00"
@.str.38 = [4 x i8] c"inc\00"
@.str.39 = [4 x i8] c"clr\00"
@.str.40 = [4 x i8] c"%s\09\00"
@.str.41 = [4 x i8] c"sst\00"
@.str.42 = [4 x i8] c"cst\00"
@.str.43 = [8 x i8] c"%s\090%xh\00"
@.str.44 = [5 x i8] c"movl\00"
@.str.45 = [5 x i8] c"cmpl\00"
@.str.46 = [7 x i8] c", 0%xh\00"
@.str.47 = [5 x i8] c", %d\00"
@.str.48 = [4 x i8] c"jmp\00"
@.str.49 = [4 x i8] c"jsr\00"
@.str.50 = [3 x i8] c"jz\00"
@.str.51 = [4 x i8] c"jnz\00"
@.str.52 = [4 x i8] c"jns\00"
@.str.53 = [3 x i8] c"js\00"
@.str.54 = [4 x i8] c"jnc\00"
@.str.55 = [3 x i8] c"jc\00"
@.str.56 = [3 x i8] c"%s\00"
@.str.57 = [6 x i8] c"\090%xh\00"
@.str.58 = [4 x i8] c"\09%d\00"
@.str.59 = [4 x i8] c"mov\00"
@.str.60 = [4 x i8] c"cmp\00"
@.str.61 = [4 x i8] c"sub\00"
@.str.62 = [4 x i8] c"add\00"
@.str.63 = [4 x i8] c"and\00"
@.str.64 = [3 x i8] c"or\00"
@.str.65 = [4 x i8] c"xor\00"
@.str.66 = [3 x i8] c", \00"
@.str.67 = [5 x i8] c"bicl\00"
@.str.68 = [5 x i8] c"bich\00"
@.str.69 = [5 x i8] c"bttl\00"
@.str.70 = [5 x i8] c"btth\00"
@.str.71 = [5 x i8] c"bisl\00"
@.str.72 = [5 x i8] c"bish\00"
@.str.73 = [5 x i8] c"btgl\00"
@.str.74 = [5 x i8] c"btgh\00"
@.str.75 = [5 x i8] c"subl\00"
@.str.76 = [5 x i8] c"addl\00"
@.str.77 = [10 x i8] c"ldr\09#%c, \00"
@.str.78 = [5 x i8] c"0%xh\00"
@.str.79 = [3 x i8] c"%d\00"
@.str.80 = [11 x i8] c"mtpr\09#%c, \00"
@.str.81 = [6 x i8] c"mfpr\09\00"
@.str.82 = [6 x i8] c", #%c\00"
@.str.83 = [2 x i8] c"?\00"
@.str.84 = [9 x i8] c"\09\09; `%c'\00"
@.str.85 = [2 x i8] c"\0A\00"
define void @print_command(i32* %0, i32 %1, i32 %2, i32 %3) {
%5 = alloca i32*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i32
store i32* %0, i32** %5
store i32 %1, i32* %6
store i32 %2, i32* %7
store i32 %3, i32* %8
%11 = load i32, i32* %6
%12 = icmp sgt i32 %11, 0
br i1 %12, label %13, label %17
13: ; preds = %4
%14 = load i32*, i32** %5
%15 = load i32, i32* %6
%16 = call i32 (i32*, i8*, ...) @fprintf(i32* %14, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %15)
br label %20
17: ; preds = %4
%18 = load i32*, i32** %5
%19 = call i32 (i32*, i8*, ...) @fprintf(i32* %18, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
br label %20
20: ; preds = %17, %13
%21 = load i32*, i32** %5
%22 = load i32, i32* %7
%23 = load i32, i32* %8
%24 = call i32 (i32*, i8*, ...) @fprintf(i32* %21, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32 %22, i32 %23)
%25 = load i32, i32* %8
switch i32 %25, label %89 [
i32 0, label %26
i32 1, label %29
i32 2, label %32
i32 3, label %35
i32 4, label %38
i32 5, label %41
i32 6, label %44
i32 7, label %47
i32 8, label %50
i32 12, label %53
i32 13, label %56
i32 14, label %59
i32 15, label %62
i32 385, label %65
i32 386, label %68
i32 388, label %71
i32 392, label %74
i32 449, label %77
i32 450, label %80
i32 452, label %83
i32 456, label %86
]
26: ; preds = %20
%27 = load i32*, i32** %5
%28 = call i32 (i32*, i8*, ...) @fprintf(i32* %27, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
br label %306
29: ; preds = %20
%30 = load i32*, i32** %5
%31 = call i32 (i32*, i8*, ...) @fprintf(i32* %30, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %306
32: ; preds = %20
%33 = load i32*, i32** %5
%34 = call i32 (i32*, i8*, ...) @fprintf(i32* %33, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0))
br label %306
35: ; preds = %20
%36 = load i32*, i32** %5
%37 = call i32 (i32*, i8*, ...) @fprintf(i32* %36, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
br label %306
38: ; preds = %20
%39 = load i32*, i32** %5
%40 = call i32 (i32*, i8*, ...) @fprintf(i32* %39, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
br label %306
41: ; preds = %20
%42 = load i32*, i32** %5
%43 = call i32 (i32*, i8*, ...) @fprintf(i32* %42, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
br label %306
44: ; preds = %20
%45 = load i32*, i32** %5
%46 = call i32 (i32*, i8*, ...) @fprintf(i32* %45, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0))
br label %306
47: ; preds = %20
%48 = load i32*, i32** %5
%49 = call i32 (i32*, i8*, ...) @fprintf(i32* %48, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
br label %306
50: ; preds = %20
%51 = load i32*, i32** %5
%52 = call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0))
br label %306
53: ; preds = %20
%54 = load i32*, i32** %5
%55 = call i32 (i32*, i8*, ...) @fprintf(i32* %54, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0))
br label %306
56: ; preds = %20
%57 = load i32*, i32** %5
%58 = call i32 (i32*, i8*, ...) @fprintf(i32* %57, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
br label %306
59: ; preds = %20
%60 = load i32*, i32** %5
%61 = call i32 (i32*, i8*, ...) @fprintf(i32* %60, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0))
br label %306
62: ; preds = %20
%63 = load i32*, i32** %5
%64 = call i32 (i32*, i8*, ...) @fprintf(i32* %63, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
br label %306
65: ; preds = %20
%66 = load i32*, i32** %5
%67 = call i32 (i32*, i8*, ...) @fprintf(i32* %66, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0))
br label %306
68: ; preds = %20
%69 = load i32*, i32** %5
%70 = call i32 (i32*, i8*, ...) @fprintf(i32* %69, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0))
br label %306
71: ; preds = %20
%72 = load i32*, i32** %5
%73 = call i32 (i32*, i8*, ...) @fprintf(i32* %72, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0))
br label %306
74: ; preds = %20
%75 = load i32*, i32** %5
%76 = call i32 (i32*, i8*, ...) @fprintf(i32* %75, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0))
br label %306
77: ; preds = %20
%78 = load i32*, i32** %5
%79 = call i32 (i32*, i8*, ...) @fprintf(i32* %78, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
br label %306
80: ; preds = %20
%81 = load i32*, i32** %5
%82 = call i32 (i32*, i8*, ...) @fprintf(i32* %81, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0))
br label %306
83: ; preds = %20
%84 = load i32*, i32** %5
%85 = call i32 (i32*, i8*, ...) @fprintf(i32* %84, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
br label %306
86: ; preds = %20
%87 = load i32*, i32** %5
%88 = call i32 (i32*, i8*, ...) @fprintf(i32* %87, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0))
br label %306
89: ; preds = %20
%90 = load i32, i32* %8
%91 = ashr i32 %90, 4
switch i32 %91, label %132 [
i32 1, label %92
i32 2, label %103
i32 3, label %103
i32 4, label %104
i32 5, label %104
i32 6, label %105
i32 7, label %105
i32 8, label %106
i32 9, label %106
i32 10, label %107
i32 11, label %107
i32 12, label %108
i32 13, label %108
i32 14, label %109
i32 15, label %109
i32 16, label %110
i32 17, label %110
i32 18, label %111
i32 19, label %111
i32 20, label %112
i32 21, label %112
i32 706, label %113
i32 707, label %113
i32 770, label %114
i32 771, label %114
i32 1024, label %115
i32 1025, label %115
i32 24, label %124
i32 28, label %125
]
92: ; preds = %89
%93 = load i32*, i32** %5
%94 = load i32, i32* %8
%95 = and i32 %94, 8
%96 = icmp ne i32 %95, 0
%97 = zext i1 %96 to i64
%98 = select i1 %96, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i64 0, i64 0)
%99 = load i32, i32* %8
%100 = and i32 %99, 7
%101 = add nsw i32 %100, 97
%102 = call i32 (i32*, i8*, ...) @fprintf(i32* %93, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.24, i64 0, i64 0), i8* %98, i32 %101)
br label %306
103: ; preds = %89, %89
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.27, i64 0, i64 0), i8** %9
br label %116
104: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.28, i64 0, i64 0), i8** %9
br label %116
105: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0), i8** %9
br label %116
106: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0), i8** %9
br label %116
107: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), i8** %9
br label %116
108: ; preds = %89, %89
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i8** %9
br label %116
109: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.33, i64 0, i64 0), i8** %9
br label %116
110: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i64 0, i64 0), i8** %9
br label %116
111: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.35, i64 0, i64 0), i8** %9
br label %116
112: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.36, i64 0, i64 0), i8** %9
br label %116
113: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0), i8** %9
br label %116
114: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.38, i64 0, i64 0), i8** %9
br label %116
115: ; preds = %89, %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.39, i64 0, i64 0), i8** %9
br label %116
116: ; preds = %115, %114, %113, %112, %111, %110, %109, %108, %107, %106, %105, %104, %103
%117 = load i32*, i32** %5
%118 = load i8*, i8** %9
%119 = call i32 (i32*, i8*, ...) @fprintf(i32* %117, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %118)
%120 = load i32*, i32** %5
%121 = load i32, i32* %8
%122 = and i32 %121, 31
%123 = call i32 @print_reg(i32* %120, i32 %122)
br label %306
124: ; preds = %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.41, i64 0, i64 0), i8** %9
br label %126
125: ; preds = %89
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.42, i64 0, i64 0), i8** %9
br label %126
126: ; preds = %125, %124
%127 = load i32*, i32** %5
%128 = load i8*, i8** %9
%129 = load i32, i32* %8
%130 = and i32 %129, 15
%131 = call i32 (i32*, i8*, ...) @fprintf(i32* %127, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i64 0, i64 0), i8* %128, i32 %130)
br label %306
132: ; preds = %89
%133 = load i32, i32* %8
%134 = ashr i32 %133, 12
switch i32 %134, label %188 [
i32 4, label %135
i32 5, label %135
i32 6, label %136
i32 7, label %136
i32 8, label %159
i32 9, label %160
i32 10, label %161
i32 11, label %162
i32 12, label %163
i32 13, label %164
i32 14, label %165
i32 15, label %166
]
135: ; preds = %132, %132
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), i8** %9
br label %137
136: ; preds = %132, %132
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.45, i64 0, i64 0), i8** %9
br label %137
137: ; preds = %136, %135
%138 = load i32*, i32** %5
%139 = load i8*, i8** %9
%140 = call i32 (i32*, i8*, ...) @fprintf(i32* %138, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %139)
%141 = load i32*, i32** %5
%142 = load i32, i32* %8
%143 = and i32 %142, 31
%144 = call i32 @print_reg(i32* %141, i32 %143)
%145 = load i32, i32* %8
%146 = ashr i32 %145, 5
%147 = and i32 %146, 255
store i32 %147, i32* %10
%148 = load i32, i32* %10
%149 = icmp sgt i32 %148, 9
br i1 %149, label %150, label %154
150: ; preds = %137
%151 = load i32*, i32** %5
%152 = load i32, i32* %10
%153 = call i32 (i32*, i8*, ...) @fprintf(i32* %151, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.46, i64 0, i64 0), i32 %152)
br label %158
154: ; preds = %137
%155 = load i32*, i32** %5
%156 = load i32, i32* %10
%157 = call i32 (i32*, i8*, ...) @fprintf(i32* %155, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.47, i64 0, i64 0), i32 %156)
br label %158
158: ; preds = %154, %150
br label %306
159: ; preds = %132
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.48, i64 0, i64 0), i8** %9
br label %167
160: ; preds = %132
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.49, i64 0, i64 0), i8** %9
br label %167
161: ; preds = %132
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.50, i64 0, i64 0), i8** %9
br label %167
162: ; preds = %132
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.51, i64 0, i64 0), i8** %9
br label %167
163: ; preds = %132
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.52, i64 0, i64 0), i8** %9
br label %167
164: ; preds = %132
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.53, i64 0, i64 0), i8** %9
br label %167
165: ; preds = %132
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.54, i64 0, i64 0), i8** %9
br label %167
166: ; preds = %132
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.55, i64 0, i64 0), i8** %9
br label %167
167: ; preds = %166, %165, %164, %163, %162, %161, %160, %159
%168 = load i32*, i32** %5
%169 = load i8*, i8** %9
%170 = call i32 (i32*, i8*, ...) @fprintf(i32* %168, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.56, i64 0, i64 0), i8* %169)
%171 = load i32, i32* %8
%172 = and i32 %171, 4095
store i32 %172, i32* %10
%173 = load i32, i32* %10
%174 = icmp sgt i32 %173, 9
br i1 %174, label %175, label %179
175: ; preds = %167
%176 = load i32*, i32** %5
%177 = load i32, i32* %10
%178 = call i32 (i32*, i8*, ...) @fprintf(i32* %176, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.57, i64 0, i64 0), i32 %177)
br label %187
179: ; preds = %167
%180 = load i32, i32* %10
%181 = icmp ne i32 %180, 0
br i1 %181, label %182, label %186
182: ; preds = %179
%183 = load i32*, i32** %5
%184 = load i32, i32* %10
%185 = call i32 (i32*, i8*, ...) @fprintf(i32* %183, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.58, i64 0, i64 0), i32 %184)
br label %186
186: ; preds = %182, %179
br label %187
187: ; preds = %186, %175
br label %306
188: ; preds = %132
%189 = load i32, i32* %8
%190 = ashr i32 %189, 8
switch i32 %190, label %293 [
i32 4, label %191
i32 5, label %191
i32 6, label %191
i32 7, label %191
i32 8, label %192
i32 9, label %192
i32 10, label %192
i32 11, label %192
i32 12, label %193
i32 13, label %193
i32 14, label %193
i32 15, label %193
i32 16, label %194
i32 17, label %194
i32 18, label %194
i32 19, label %194
i32 20, label %195
i32 21, label %195
i32 22, label %195
i32 23, label %195
i32 24, label %196
i32 25, label %196
i32 26, label %196
i32 27, label %196
i32 28, label %197
i32 29, label %197
i32 30, label %197
i32 31, label %197
i32 40, label %213
i32 41, label %213
i32 42, label %214
i32 43, label %214
i32 52, label %215
i32 53, label %215
i32 54, label %216
i32 55, label %216
i32 56, label %217
i32 57, label %217
i32 58, label %218
i32 59, label %218
i32 60, label %219
i32 61, label %219
i32 62, label %220
i32 63, label %220
i32 44, label %234
i32 45, label %234
i32 46, label %234
i32 47, label %234
i32 48, label %235
i32 49, label %235
i32 50, label %235
i32 51, label %235
i32 32, label %249
i32 33, label %249
i32 34, label %249
i32 35, label %249
i32 36, label %249
i32 37, label %249
i32 38, label %249
i32 39, label %249
i32 2, label %269
i32 3, label %280
]
191: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.59, i64 0, i64 0), i8** %9
br label %198
192: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.60, i64 0, i64 0), i8** %9
br label %198
193: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.61, i64 0, i64 0), i8** %9
br label %198
194: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.62, i64 0, i64 0), i8** %9
br label %198
195: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.63, i64 0, i64 0), i8** %9
br label %198
196: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.64, i64 0, i64 0), i8** %9
br label %198
197: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.65, i64 0, i64 0), i8** %9
br label %198
198: ; preds = %197, %196, %195, %194, %193, %192, %191
%199 = load i32*, i32** %5
%200 = load i8*, i8** %9
%201 = call i32 (i32*, i8*, ...) @fprintf(i32* %199, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %200)
%202 = load i32*, i32** %5
%203 = load i32, i32* %8
%204 = and i32 %203, 31
%205 = call i32 @print_reg(i32* %202, i32 %204)
%206 = load i32*, i32** %5
%207 = call i32 (i32*, i8*, ...) @fprintf(i32* %206, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.66, i64 0, i64 0))
%208 = load i32*, i32** %5
%209 = load i32, i32* %8
%210 = ashr i32 %209, 5
%211 = and i32 %210, 31
%212 = call i32 @print_reg(i32* %208, i32 %211)
br label %306
213: ; preds = %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.67, i64 0, i64 0), i8** %9
br label %221
214: ; preds = %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0), i8** %9
br label %221
215: ; preds = %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.69, i64 0, i64 0), i8** %9
br label %221
216: ; preds = %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.70, i64 0, i64 0), i8** %9
br label %221
217: ; preds = %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.71, i64 0, i64 0), i8** %9
br label %221
218: ; preds = %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.72, i64 0, i64 0), i8** %9
br label %221
219: ; preds = %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.73, i64 0, i64 0), i8** %9
br label %221
220: ; preds = %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.74, i64 0, i64 0), i8** %9
br label %221
221: ; preds = %220, %219, %218, %217, %216, %215, %214, %213
%222 = load i32*, i32** %5
%223 = load i8*, i8** %9
%224 = call i32 (i32*, i8*, ...) @fprintf(i32* %222, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %223)
%225 = load i32*, i32** %5
%226 = load i32, i32* %8
%227 = and i32 %226, 31
%228 = call i32 @print_reg(i32* %225, i32 %227)
%229 = load i32*, i32** %5
%230 = load i32, i32* %8
%231 = ashr i32 %230, 5
%232 = and i32 %231, 15
%233 = call i32 (i32*, i8*, ...) @fprintf(i32* %229, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.46, i64 0, i64 0), i32 %232)
br label %306
234: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.75, i64 0, i64 0), i8** %9
br label %236
235: ; preds = %188, %188, %188, %188
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.76, i64 0, i64 0), i8** %9
br label %236
236: ; preds = %235, %234
%237 = load i32*, i32** %5
%238 = load i8*, i8** %9
%239 = call i32 (i32*, i8*, ...) @fprintf(i32* %237, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %238)
%240 = load i32*, i32** %5
%241 = load i32, i32* %8
%242 = and i32 %241, 31
%243 = call i32 @print_reg(i32* %240, i32 %242)
%244 = load i32*, i32** %5
%245 = load i32, i32* %8
%246 = ashr i32 %245, 5
%247 = and i32 %246, 31
%248 = call i32 (i32*, i8*, ...) @fprintf(i32* %244, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.46, i64 0, i64 0), i32 %247)
br label %306
249: ; preds = %188, %188, %188, %188, %188, %188, %188, %188
%250 = load i32*, i32** %5
%251 = load i32, i32* %8
%252 = and i32 %251, 7
%253 = add nsw i32 %252, 97
%254 = call i32 (i32*, i8*, ...) @fprintf(i32* %250, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.77, i64 0, i64 0), i32 %253)
%255 = load i32, i32* %8
%256 = ashr i32 %255, 3
%257 = and i32 %256, 255
store i32 %257, i32* %10
%258 = load i32, i32* %10
%259 = icmp sgt i32 %258, 9
br i1 %259, label %260, label %264
260: ; preds = %249
%261 = load i32*, i32** %5
%262 = load i32, i32* %10
%263 = call i32 (i32*, i8*, ...) @fprintf(i32* %261, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.78, i64 0, i64 0), i32 %262)
br label %268
264: ; preds = %249
%265 = load i32*, i32** %5
%266 = load i32, i32* %10
%267 = call i32 (i32*, i8*, ...) @fprintf(i32* %265, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.79, i64 0, i64 0), i32 %266)
br label %268
268: ; preds = %264, %260
br label %306
269: ; preds = %188
%270 = load i32*, i32** %5
%271 = load i32, i32* %8
%272 = ashr i32 %271, 5
%273 = and i32 %272, 7
%274 = add nsw i32 %273, 97
%275 = call i32 (i32*, i8*, ...) @fprintf(i32* %270, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.80, i64 0, i64 0), i32 %274)
%276 = load i32*, i32** %5
%277 = load i32, i32* %8
%278 = and i32 %277, 31
%279 = call i32 @print_reg(i32* %276, i32 %278)
br label %306
280: ; preds = %188
%281 = load i32*, i32** %5
%282 = call i32 (i32*, i8*, ...) @fprintf(i32* %281, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.81, i64 0, i64 0))
%283 = load i32*, i32** %5
%284 = load i32, i32* %8
%285 = and i32 %284, 31
%286 = call i32 @print_reg(i32* %283, i32 %285)
%287 = load i32*, i32** %5
%288 = load i32, i32* %8
%289 = ashr i32 %288, 5
%290 = and i32 %289, 7
%291 = add nsw i32 %290, 97
%292 = call i32 (i32*, i8*, ...) @fprintf(i32* %287, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.82, i64 0, i64 0), i32 %291)
br label %306
293: ; preds = %188
%294 = load i32*, i32** %5
%295 = call i32 (i32*, i8*, ...) @fprintf(i32* %294, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.83, i64 0, i64 0))
%296 = load i32, i32* %8
%297 = icmp sge i32 %296, 32
br i1 %297, label %298, label %305
298: ; preds = %293
%299 = load i32, i32* %8
%300 = icmp sle i32 %299, 126
br i1 %300, label %301, label %305
301: ; preds = %298
%302 = load i32*, i32** %5
%303 = load i32, i32* %8
%304 = call i32 (i32*, i8*, ...) @fprintf(i32* %302, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.84, i64 0, i64 0), i32 %303)
br label %305
305: ; preds = %301, %298, %293
br label %306
306: ; preds = %305, %280, %269, %268, %236, %221, %198, %187, %158, %126, %116, %92, %86, %83, %80, %77, %74, %71, %68, %65, %62, %59, %56, %53, %50, %47, %44, %41, %38, %35, %32, %29, %26
%307 = load i32*, i32** %5
%308 = call i32 (i32*, i8*, ...) @fprintf(i32* %307, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.85, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [5 x i8] c" %4d\00"
@.str.1 = [6 x i8] c" \00"
@.str.2 = [14 x i8] c" %04x %04x\09\09\09\00"
@.str.3 = [4 x i8] c"nop\00"
@.str.4 = [5 x i8] c"wait\00"
@.str.5 = [4 x i8] c"rst\00"
@.str.6 = [5 x i8] c"ijmp\00"
@.str.7 = [4 x i8] c"tof\00"
@.str.8 = [4 x i8] c"tdc\00"
@.str.9 = [5 x i8] c"sksp\00"
@.str.10 = [5 x i8] c"ijsr\00"
@.str.11 = [4 x i8] c"slp\00"
@.str.12 = [4 x i8] c"rts\00"
@.str.13 = [4 x i8] c"rti\00"
@.str.14 = [7 x i8] c"rtsc\090\00"
@.str.15 = [7 x i8] c"rtsc\091\00"
@.str.16 = [4 x i8] c"stc\00"
@.str.17 = [4 x i8] c"stz\00"
@.str.18 = [4 x i8] c"stn\00"
@.str.19 = [5 x i8] c"stie\00"
@.str.20 = [4 x i8] c"clc\00"
@.str.21 = [4 x i8] c"clz\00"
@.str.22 = [4 x i8] c"cln\00"
@.str.23 = [5 x i8] c"clie\00"
@.str.24 = [7 x i8] c"%s\09#%c\00"
@.str.25 = [4 x i8] c"pop\00"
@.str.26 = [5 x i8] c"push\00"
@.str.27 = [5 x i8] c"swap\00"
@.str.28 = [4 x i8] c"neg\00"
@.str.29 = [4 x i8] c"not\00"
@.str.30 = [4 x i8] c"shl\00"
@.str.31 = [4 x i8] c"shr\00"
@.str.32 = [5 x i8] c"shra\00"
@.str.33 = [4 x i8] c"rlc\00"
@.str.34 = [4 x i8] c"rrc\00"
@.str.35 = [4 x i8] c"adc\00"
@.str.36 = [4 x i8] c"sbc\00"
@.str.37 = [4 x i8] c"dec\00"
@.str.38 = [4 x i8] c"inc\00"
@.str.39 = [4 x i8] c"clr\00"
@.str.40 = [4 x i8] c"%s\09\00"
@.str.41 = [4 x i8] c"sst\00"
@.str.42 = [4 x i8] c"cst\00"
@.str.43 = [8 x i8] c"%s\090%xh\00"
@.str.44 = [5 x i8] c"movl\00"
@.str.45 = [5 x i8] c"cmpl\00"
@.str.46 = [7 x i8] c", 0%xh\00"
@.str.47 = [5 x i8] c", %d\00"
@.str.48 = [4 x i8] c"jmp\00"
@.str.49 = [4 x i8] c"jsr\00"
@.str.50 = [3 x i8] c"jz\00"
@.str.51 = [4 x i8] c"jnz\00"
@.str.52 = [4 x i8] c"jns\00"
@.str.53 = [3 x i8] c"js\00"
@.str.54 = [4 x i8] c"jnc\00"
@.str.55 = [3 x i8] c"jc\00"
@.str.57 = [6 x i8] c"\090%xh\00"
@.str.58 = [4 x i8] c"\09%d\00"
@.str.59 = [4 x i8] c"mov\00"
@.str.60 = [4 x i8] c"cmp\00"
@.str.61 = [4 x i8] c"sub\00"
@.str.62 = [4 x i8] c"add\00"
@.str.63 = [4 x i8] c"and\00"
@.str.64 = [3 x i8] c"or\00"
@.str.65 = [4 x i8] c"xor\00"
@.str.66 = [3 x i8] c", \00"
@.str.67 = [5 x i8] c"bicl\00"
@.str.68 = [5 x i8] c"bich\00"
@.str.69 = [5 x i8] c"bttl\00"
@.str.70 = [5 x i8] c"btth\00"
@.str.71 = [5 x i8] c"bisl\00"
@.str.72 = [5 x i8] c"bish\00"
@.str.73 = [5 x i8] c"btgl\00"
@.str.74 = [5 x i8] c"btgh\00"
@.str.75 = [5 x i8] c"subl\00"
@.str.76 = [5 x i8] c"addl\00"
@.str.77 = [10 x i8] c"ldr\09#%c, \00"
@.str.78 = [5 x i8] c"0%xh\00"
@.str.79 = [3 x i8] c"%d\00"
@.str.80 = [11 x i8] c"mtpr\09#%c, \00"
@.str.81 = [6 x i8] c"mfpr\09\00"
@.str.82 = [6 x i8] c", #%c\00"
@.str.84 = [9 x i8] c"\09\09; `%c'\00"
define void @print_command(i32* %0, i32 %1, i32 %2, i32 %3) {
%5 = icmp sgt i32 %1, 0
br i1 %5, label %6, label %8
6: ; preds = %4
%7 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %1)
br label %10
8: ; preds = %4
%9 = tail call i64 @fwrite(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i64 5, i64 1, i32* %0)
br label %10
10: ; preds = %8, %6
%11 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32 %2, i32 %3)
switch i32 %3, label %54 [
i32 0, label %12
i32 1, label %14
i32 2, label %16
i32 3, label %18
i32 4, label %20
i32 5, label %22
i32 6, label %24
i32 7, label %26
i32 8, label %28
i32 12, label %30
i32 13, label %32
i32 14, label %34
i32 15, label %36
i32 385, label %38
i32 386, label %40
i32 388, label %42
i32 392, label %44
i32 449, label %46
i32 450, label %48
i32 452, label %50
i32 456, label %52
]
12: ; preds = %10
%13 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
14: ; preds = %10
%15 = tail call i64 @fwrite(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i64 4, i64 1, i32* %0)
br label %191
16: ; preds = %10
%17 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
18: ; preds = %10
%19 = tail call i64 @fwrite(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i64 4, i64 1, i32* %0)
br label %191
20: ; preds = %10
%21 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
22: ; preds = %10
%23 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
24: ; preds = %10
%25 = tail call i64 @fwrite(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i64 4, i64 1, i32* %0)
br label %191
26: ; preds = %10
%27 = tail call i64 @fwrite(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i64 4, i64 1, i32* %0)
br label %191
28: ; preds = %10
%29 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
30: ; preds = %10
%31 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
32: ; preds = %10
%33 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
34: ; preds = %10
%35 = tail call i64 @fwrite(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0), i64 6, i64 1, i32* %0)
br label %191
36: ; preds = %10
%37 = tail call i64 @fwrite(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0), i64 6, i64 1, i32* %0)
br label %191
38: ; preds = %10
%39 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
40: ; preds = %10
%41 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
42: ; preds = %10
%43 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
44: ; preds = %10
%45 = tail call i64 @fwrite(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0), i64 4, i64 1, i32* %0)
br label %191
46: ; preds = %10
%47 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
48: ; preds = %10
%49 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
50: ; preds = %10
%51 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), i64 3, i64 1, i32* %0)
br label %191
52: ; preds = %10
%53 = tail call i64 @fwrite(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0), i64 4, i64 1, i32* %0)
br label %191
54: ; preds = %10
%55 = ashr i32 %3, 4
switch i32 %55, label %85 [
i32 1, label %56
i32 2, label %75
i32 3, label %75
i32 4, label %63
i32 5, label %63
i32 6, label %64
i32 7, label %64
i32 8, label %65
i32 9, label %65
i32 10, label %66
i32 11, label %66
i32 12, label %67
i32 13, label %67
i32 14, label %68
i32 15, label %68
i32 16, label %69
i32 17, label %69
i32 18, label %70
i32 19, label %70
i32 20, label %71
i32 21, label %71
i32 706, label %72
i32 707, label %72
i32 770, label %73
i32 771, label %73
i32 1024, label %74
i32 1025, label %74
i32 24, label %81
i32 28, label %80
]
56: ; preds = %54
%57 = and i32 %3, 8
%58 = icmp eq i32 %57, 0
%59 = select i1 %58, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0)
%60 = and i32 %3, 7
%61 = add nuw nsw i32 %60, 97
%62 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.24, i64 0, i64 0), i8* %59, i32 %61)
br label %191
63: ; preds = %54, %54
br label %75
64: ; preds = %54, %54
br label %75
65: ; preds = %54, %54
br label %75
66: ; preds = %54, %54
br label %75
67: ; preds = %54, %54
br label %75
68: ; preds = %54, %54
br label %75
69: ; preds = %54, %54
br label %75
70: ; preds = %54, %54
br label %75
71: ; preds = %54, %54
br label %75
72: ; preds = %54, %54
br label %75
73: ; preds = %54, %54
br label %75
74: ; preds = %54, %54
br label %75
75: ; preds = %54, %54, %74, %73, %72, %71, %70, %69, %68, %67, %66, %65, %64, %63
%76 = phi i8* [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.39, i64 0, i64 0), %74 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.38, i64 0, i64 0), %73 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0), %72 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.36, i64 0, i64 0), %71 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.35, i64 0, i64 0), %70 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i64 0, i64 0), %69 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.33, i64 0, i64 0), %68 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), %67 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), %66 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0), %65 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0), %64 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.28, i64 0, i64 0), %63 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.27, i64 0, i64 0), %54 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.27, i64 0, i64 0), %54 ]
%77 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %76)
%78 = and i32 %3, 31
%79 = tail call i32 @print_reg(i32* %0, i32 %78)
br label %191
80: ; preds = %54
br label %81
81: ; preds = %54, %80
%82 = phi i8* [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.42, i64 0, i64 0), %80 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.41, i64 0, i64 0), %54 ]
%83 = and i32 %3, 15
%84 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i64 0, i64 0), i8* %82, i32 %83)
br label %191
85: ; preds = %54
%86 = ashr i32 %3, 12
switch i32 %86, label %118 [
i32 4, label %88
i32 5, label %88
i32 6, label %87
i32 7, label %87
i32 8, label %107
i32 9, label %100
i32 10, label %101
i32 11, label %102
i32 12, label %103
i32 13, label %104
i32 14, label %105
i32 15, label %106
]
87: ; preds = %85, %85
br label %88
88: ; preds = %85, %85, %87
%89 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.45, i64 0, i64 0), %87 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), %85 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), %85 ]
%90 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %89)
%91 = and i32 %3, 31
%92 = tail call i32 @print_reg(i32* %0, i32 %91)
%93 = lshr i32 %3, 5
%94 = and i32 %93, 255
%95 = icmp ugt i32 %94, 9
br i1 %95, label %96, label %98
96: ; preds = %88
%97 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.46, i64 0, i64 0), i32 %94)
br label %191
98: ; preds = %88
%99 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.47, i64 0, i64 0), i32 %94)
br label %191
100: ; preds = %85
br label %107
101: ; preds = %85
br label %107
102: ; preds = %85
br label %107
103: ; preds = %85
br label %107
104: ; preds = %85
br label %107
105: ; preds = %85
br label %107
106: ; preds = %85
br label %107
107: ; preds = %85, %106, %105, %104, %103, %102, %101, %100
%108 = phi i8* [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.55, i64 0, i64 0), %106 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.54, i64 0, i64 0), %105 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.53, i64 0, i64 0), %104 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.52, i64 0, i64 0), %103 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.51, i64 0, i64 0), %102 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.50, i64 0, i64 0), %101 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.49, i64 0, i64 0), %100 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.48, i64 0, i64 0), %85 ]
%109 = tail call i32 @fputs(i8* %108, i32* %0)
%110 = and i32 %3, 4095
%111 = icmp ugt i32 %110, 9
br i1 %111, label %112, label %114
112: ; preds = %107
%113 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.57, i64 0, i64 0), i32 %110)
br label %191
114: ; preds = %107
%115 = icmp eq i32 %110, 0
br i1 %115, label %191, label %116
116: ; preds = %114
%117 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.58, i64 0, i64 0), i32 %110)
br label %191
118: ; preds = %85
%119 = ashr i32 %3, 8
switch i32 %119, label %185 [
i32 4, label %126
i32 5, label %126
i32 6, label %126
i32 7, label %126
i32 8, label %120
i32 9, label %120
i32 10, label %120
i32 11, label %120
i32 12, label %121
i32 13, label %121
i32 14, label %121
i32 15, label %121
i32 16, label %122
i32 17, label %122
i32 18, label %122
i32 19, label %122
i32 20, label %123
i32 21, label %123
i32 22, label %123
i32 23, label %123
i32 24, label %124
i32 25, label %124
i32 26, label %124
i32 27, label %124
i32 28, label %125
i32 29, label %125
i32 30, label %125
i32 31, label %125
i32 40, label %142
i32 41, label %142
i32 42, label %135
i32 43, label %135
i32 52, label %136
i32 53, label %136
i32 54, label %137
i32 55, label %137
i32 56, label %138
i32 57, label %138
i32 58, label %139
i32 59, label %139
i32 60, label %140
i32 61, label %140
i32 62, label %141
i32 63, label %141
i32 44, label %151
i32 45, label %151
i32 46, label %151
i32 47, label %151
i32 48, label %150
i32 49, label %150
i32 50, label %150
i32 51, label %150
i32 32, label %159
i32 33, label %159
i32 34, label %159
i32 35, label %159
i32 36, label %159
i32 37, label %159
i32 38, label %159
i32 39, label %159
i32 2, label %170
i32 3, label %177
]
120: ; preds = %118, %118, %118, %118
br label %126
121: ; preds = %118, %118, %118, %118
br label %126
122: ; preds = %118, %118, %118, %118
br label %126
123: ; preds = %118, %118, %118, %118
br label %126
124: ; preds = %118, %118, %118, %118
br label %126
125: ; preds = %118, %118, %118, %118
br label %126
126: ; preds = %118, %118, %118, %118, %125, %124, %123, %122, %121, %120
%127 = phi i8* [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.65, i64 0, i64 0), %125 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.64, i64 0, i64 0), %124 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.63, i64 0, i64 0), %123 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.62, i64 0, i64 0), %122 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.61, i64 0, i64 0), %121 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.60, i64 0, i64 0), %120 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.59, i64 0, i64 0), %118 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.59, i64 0, i64 0), %118 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.59, i64 0, i64 0), %118 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.59, i64 0, i64 0), %118 ]
%128 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %127)
%129 = and i32 %3, 31
%130 = tail call i32 @print_reg(i32* %0, i32 %129)
%131 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.66, i64 0, i64 0), i64 2, i64 1, i32* %0)
%132 = lshr i32 %3, 5
%133 = and i32 %132, 31
%134 = tail call i32 @print_reg(i32* %0, i32 %133)
br label %191
135: ; preds = %118, %118
br label %142
136: ; preds = %118, %118
br label %142
137: ; preds = %118, %118
br label %142
138: ; preds = %118, %118
br label %142
139: ; preds = %118, %118
br label %142
140: ; preds = %118, %118
br label %142
141: ; preds = %118, %118
br label %142
142: ; preds = %118, %118, %141, %140, %139, %138, %137, %136, %135
%143 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.74, i64 0, i64 0), %141 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.73, i64 0, i64 0), %140 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.72, i64 0, i64 0), %139 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.71, i64 0, i64 0), %138 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.70, i64 0, i64 0), %137 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.69, i64 0, i64 0), %136 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0), %135 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.67, i64 0, i64 0), %118 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.67, i64 0, i64 0), %118 ]
%144 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %143)
%145 = and i32 %3, 31
%146 = tail call i32 @print_reg(i32* %0, i32 %145)
%147 = lshr i32 %3, 5
%148 = and i32 %147, 15
%149 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.46, i64 0, i64 0), i32 %148)
br label %191
150: ; preds = %118, %118, %118, %118
br label %151
151: ; preds = %118, %118, %118, %118, %150
%152 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.76, i64 0, i64 0), %150 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.75, i64 0, i64 0), %118 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.75, i64 0, i64 0), %118 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.75, i64 0, i64 0), %118 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.75, i64 0, i64 0), %118 ]
%153 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0), i8* %152)
%154 = and i32 %3, 31
%155 = tail call i32 @print_reg(i32* %0, i32 %154)
%156 = lshr i32 %3, 5
%157 = and i32 %156, 31
%158 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.46, i64 0, i64 0), i32 %157)
br label %191
159: ; preds = %118, %118, %118, %118, %118, %118, %118, %118
%160 = and i32 %3, 7
%161 = add nuw nsw i32 %160, 97
%162 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.77, i64 0, i64 0), i32 %161)
%163 = lshr i32 %3, 3
%164 = and i32 %163, 255
%165 = icmp ugt i32 %164, 9
br i1 %165, label %166, label %168
166: ; preds = %159
%167 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.78, i64 0, i64 0), i32 %164)
br label %191
168: ; preds = %159
%169 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.79, i64 0, i64 0), i32 %164)
br label %191
170: ; preds = %118
%171 = lshr i32 %3, 5
%172 = and i32 %171, 7
%173 = add nuw nsw i32 %172, 97
%174 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.80, i64 0, i64 0), i32 %173)
%175 = and i32 %3, 31
%176 = tail call i32 @print_reg(i32* %0, i32 %175)
br label %191
177: ; preds = %118
%178 = tail call i64 @fwrite(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.81, i64 0, i64 0), i64 5, i64 1, i32* %0)
%179 = and i32 %3, 31
%180 = tail call i32 @print_reg(i32* %0, i32 %179)
%181 = lshr i32 %3, 5
%182 = and i32 %181, 7
%183 = add nuw nsw i32 %182, 97
%184 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.82, i64 0, i64 0), i32 %183)
br label %191
185: ; preds = %118
%186 = tail call i32 @fputc(i32 63, i32* %0)
%187 = add i32 %3, -32
%188 = icmp ult i32 %187, 95
br i1 %188, label %189, label %191
189: ; preds = %185
%190 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.84, i64 0, i64 0), i32 %3)
br label %191
191: ; preds = %185, %189, %166, %168, %112, %116, %114, %96, %98, %177, %170, %151, %142, %126, %81, %75, %56, %52, %50, %48, %46, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12
%192 = tail call i32 @fputc(i32 10, i32* %0)
ret void
}