getop(n) {
  switch (n & 0170000) {
  case 0000000:
    switch (n & 0177000) {
    case 0004000:
      return ("jsr");
    case 0077000:
      return ("sob");
    }
    switch (n & 0177400) {
    case 0000400:
      return ("br");
    case 0001000:
      return ("bne");
    case 0001400:
      return ("beq");
    case 0002000:
      return ("bge");
    case 0002400:
      return ("blt");
    case 0003000:
      return ("bgt");
    case 0003400:
      return ("ble");
    }
    switch (n & 0177700) {
    case 0000100:
      return ("jmp");
    case 0000300:
      return ("swab");
    case 0005000:
      return ("clr");
    case 0005100:
      return ("com");
    case 0005200:
      return ("inc");
    case 0005300:
      return ("dec");
    case 0005400:
      return ("neg");
    case 0005500:
      return ("adc");
    case 0005600:
      return ("sbc");
    case 0005700:
      return ("tst");
    case 0006000:
      return ("ror");
    case 0006100:
      return ("rol");
    case 0006200:
      return ("asr");
    case 0006300:
      return ("asl");
    case 0006400:
      return ("mark");
    case 0006500:
      return ("mfpi");
    case 0006600:
      return ("mtpi");
    case 0006700:
      return ("sxt");
    }
    switch (n & 0177740) {
    case 0000240:
      return ("flag");
    }
    switch (n & 0177770) {
    case 0000200:
      return ("rts");
    case 0000230:
      return ("spl");
    }
    switch (n & 0177777) {
    case 0000000:
      return ("halt");
    case 0000001:
      return ("wait");
    case 0000002:
      return ("rti");
    case 0000003:
      return ("bpt");
    case 0000004:
      return ("iot");
    case 0000005:
      return ("rset");
    case 0000006:
      return ("rtt");
    }
    break;
  case 0010000:
    return ("mov ");
  case 0020000:
    return ("cmp");
  case 0030000:
    return ("bit");
  case 0040000:
    return ("bic");
  case 0050000:
    return ("bis");
  case 0060000:
    return ("add");
  case 0070000:
    switch (n & 0177000) {
    case 0070000:
      return ("mul");
    case 0071000:
      return ("div");
    case 0072000:
      return ("ash");
    case 0073000:
      return ("ashc");
    case 0074000:
      return ("xor");
    }
    break;
  case 0100000:
    switch (n & 0177400) {
    case 0100000:
      return ("bpl");
    case 0100400:
      return ("bmi");
    case 0101000:
      return ("bhi");
    case 0101400:
      return ("blos");
    case 0102000:
      return ("bvc");
    case 0102400:
      return ("bvs");
    case 0103000:
      return ("bhis");
    case 0103400:
      return ("blo");
    case 0104000:
      return ("emt");
    case 0104400:
      return ("sys");
    }
    switch (n & 0177700) {
    case 0105000:
      return ("clrb");
    case 0105100:
      return ("comb");
    case 0105200:
      return ("incb");
    case 0105300:
      return ("decb");
    case 0105400:
      return ("negb");
    case 0105500:
      return ("adcb");
    case 0105600:
      return ("sbcb");
    case 0105700:
      return ("tstb");
    case 0106000:
      return ("rorb");
    case 0106100:
      return ("rolb");
    case 0106200:
      return ("asrb");
    case 0106300:
      return ("aslb");
    case 0106500:
      return ("mfpd");
    case 0106600:
      return ("mfpd");
    }
    break;
  case 0110000:
    return ("movb");
  case 0120000:
    return ("cmpb");
  case 0130000:
    return ("bitb");
  case 0140000:
    return ("bicb");
  case 0150000:
    return ("bisb");
  case 0160000:
    return ("sub");
  case 0170000:
    switch (n & 01777000) {
    case 0:
      0;
    }
    break;
  }
  return ("???");
}


x86 assembly (clang, -O0):
<getop>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    -0x8(%rbp),%eax
and    $0xf000,%eax
mov    %eax,-0xc(%rbp)
je     123a <getop+0x13a>
jmp    111d <getop+0x1d>
mov    -0xc(%rbp),%eax
sub    $0x1000,%eax
je     16ed <getop+0x5ed>
jmp    1130 <getop+0x30>
mov    -0xc(%rbp),%eax
sub    $0x2000,%eax
je     16fc <getop+0x5fc>
jmp    1143 <getop+0x43>
mov    -0xc(%rbp),%eax
sub    $0x3000,%eax
je     170b <getop+0x60b>
jmp    1156 <getop+0x56>
mov    -0xc(%rbp),%eax
sub    $0x4000,%eax
je     171a <getop+0x61a>
jmp    1169 <getop+0x69>
mov    -0xc(%rbp),%eax
sub    $0x5000,%eax
je     1729 <getop+0x629>
jmp    117c <getop+0x7c>
mov    -0xc(%rbp),%eax
sub    $0x6000,%eax
je     1738 <getop+0x638>
jmp    118f <getop+0x8f>
mov    -0xc(%rbp),%eax
sub    $0x7000,%eax
je     1747 <getop+0x647>
jmp    11a2 <getop+0xa2>
mov    -0xc(%rbp),%eax
sub    $0x8000,%eax
je     17fe <getop+0x6fe>
jmp    11b5 <getop+0xb5>
mov    -0xc(%rbp),%eax
sub    $0x9000,%eax
je     1b42 <getop+0xa42>
jmp    11c8 <getop+0xc8>
mov    -0xc(%rbp),%eax
sub    $0xa000,%eax
je     1b51 <getop+0xa51>
jmp    11db <getop+0xdb>
mov    -0xc(%rbp),%eax
sub    $0xb000,%eax
je     1b60 <getop+0xa60>
jmp    11ee <getop+0xee>
mov    -0xc(%rbp),%eax
sub    $0xc000,%eax
je     1b6f <getop+0xa6f>
jmp    1201 <getop+0x101>
mov    -0xc(%rbp),%eax
sub    $0xd000,%eax
je     1b7e <getop+0xa7e>
jmp    1214 <getop+0x114>
mov    -0xc(%rbp),%eax
sub    $0xe000,%eax
je     1b8d <getop+0xa8d>
jmp    1227 <getop+0x127>
mov    -0xc(%rbp),%eax
sub    $0xf000,%eax
je     1b9c <getop+0xa9c>
jmp    1bb9 <getop+0xab9>
mov    -0x8(%rbp),%eax
and    $0xfe00,%eax
mov    %eax,-0x10(%rbp)
sub    $0x800,%eax
je     1268 <getop+0x168>
jmp    1255 <getop+0x155>
mov    -0x10(%rbp),%eax
sub    $0x7e00,%eax
je     1277 <getop+0x177>
jmp    1286 <getop+0x186>
lea    0xdad(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xda2(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
movzbl -0x7(%rbp),%eax
shl    $0x8,%eax
mov    %eax,-0x14(%rbp)
sub    $0x100,%eax
je     1312 <getop+0x212>
jmp    12a0 <getop+0x1a0>
mov    -0x14(%rbp),%eax
sub    $0x200,%eax
je     1321 <getop+0x221>
jmp    12b3 <getop+0x1b3>
mov    -0x14(%rbp),%eax
sub    $0x300,%eax
je     1330 <getop+0x230>
jmp    12c6 <getop+0x1c6>
mov    -0x14(%rbp),%eax
sub    $0x400,%eax
je     133f <getop+0x23f>
jmp    12d9 <getop+0x1d9>
mov    -0x14(%rbp),%eax
sub    $0x500,%eax
je     134e <getop+0x24e>
jmp    12ec <getop+0x1ec>
mov    -0x14(%rbp),%eax
sub    $0x600,%eax
je     135d <getop+0x25d>
jmp    12ff <getop+0x1ff>
mov    -0x14(%rbp),%eax
sub    $0x700,%eax
je     136c <getop+0x26c>
jmp    137b <getop+0x27b>
lea    0xd0b(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xcff(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xcf4(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xce9(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xcde(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xcd3(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xcc8(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
mov    -0x8(%rbp),%eax
and    $0xffc0,%eax
mov    %eax,-0x18(%rbp)
sub    $0x40,%eax
je     14d7 <getop+0x3d7>
jmp    1394 <getop+0x294>
mov    -0x18(%rbp),%eax
sub    $0xc0,%eax
je     14e6 <getop+0x3e6>
jmp    13a7 <getop+0x2a7>
mov    -0x18(%rbp),%eax
sub    $0xa00,%eax
je     14f5 <getop+0x3f5>
jmp    13ba <getop+0x2ba>
mov    -0x18(%rbp),%eax
sub    $0xa40,%eax
je     1504 <getop+0x404>
jmp    13cd <getop+0x2cd>
mov    -0x18(%rbp),%eax
sub    $0xa80,%eax
je     1513 <getop+0x413>
jmp    13e0 <getop+0x2e0>
mov    -0x18(%rbp),%eax
sub    $0xac0,%eax
je     1522 <getop+0x422>
jmp    13f3 <getop+0x2f3>
mov    -0x18(%rbp),%eax
sub    $0xb00,%eax
je     1531 <getop+0x431>
jmp    1406 <getop+0x306>
mov    -0x18(%rbp),%eax
sub    $0xb40,%eax
je     1540 <getop+0x440>
jmp    1419 <getop+0x319>
mov    -0x18(%rbp),%eax
sub    $0xb80,%eax
je     154f <getop+0x44f>
jmp    142c <getop+0x32c>
mov    -0x18(%rbp),%eax
sub    $0xbc0,%eax
je     155e <getop+0x45e>
jmp    143f <getop+0x33f>
mov    -0x18(%rbp),%eax
sub    $0xc00,%eax
je     156d <getop+0x46d>
jmp    1452 <getop+0x352>
mov    -0x18(%rbp),%eax
sub    $0xc40,%eax
je     157c <getop+0x47c>
jmp    1465 <getop+0x365>
mov    -0x18(%rbp),%eax
sub    $0xc80,%eax
je     158b <getop+0x48b>
jmp    1478 <getop+0x378>
mov    -0x18(%rbp),%eax
sub    $0xcc0,%eax
je     159a <getop+0x49a>
jmp    148b <getop+0x38b>
mov    -0x18(%rbp),%eax
sub    $0xd00,%eax
je     15a9 <getop+0x4a9>
jmp    149e <getop+0x39e>
mov    -0x18(%rbp),%eax
sub    $0xd40,%eax
je     15b8 <getop+0x4b8>
jmp    14b1 <getop+0x3b1>
mov    -0x18(%rbp),%eax
sub    $0xd80,%eax
je     15c7 <getop+0x4c7>
jmp    14c4 <getop+0x3c4>
mov    -0x18(%rbp),%eax
sub    $0xdc0,%eax
je     15d6 <getop+0x4d6>
jmp    15e5 <getop+0x4e5>
lea    0xb61(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xb56(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xb4c(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xb41(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xb36(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xb2b(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xb20(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xb15(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xb0a(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xaff(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xaf4(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xae9(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xade(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xad3(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xac8(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xabe(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xab4(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xaaa(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
mov    -0x8(%rbp),%eax
and    $0xffe0,%eax
sub    $0xa0,%eax
jne    160c <getop+0x50c>
jmp    15fd <getop+0x4fd>
lea    0xa87(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
mov    -0x8(%rbp),%eax
and    $0xfff8,%eax
mov    %eax,-0x1c(%rbp)
sub    $0x80,%eax
je     163a <getop+0x53a>
jmp    1627 <getop+0x527>
mov    -0x1c(%rbp),%eax
sub    $0x98,%eax
je     1649 <getop+0x549>
jmp    1658 <getop+0x558>
lea    0xa4f(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xa44(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
movzwl -0x8(%rbp),%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x6,%eax
ja     16e8 <getop+0x5e8>
mov    -0x28(%rbp),%rax
lea    0x98a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xa12(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0xa08(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x9fe(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x9f3(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x9e8(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x9dd(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x9d3(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
jmp    1bb9 <getop+0xab9>
lea    0x9c3(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x9b9(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x9ae(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x9a3(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x998(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x98d(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
mov    -0x8(%rbp),%eax
and    $0xfe00,%eax
mov    %eax,-0x2c(%rbp)
sub    $0x7000,%eax
je     17ae <getop+0x6ae>
jmp    1762 <getop+0x662>
mov    -0x2c(%rbp),%eax
sub    $0x7200,%eax
je     17bd <getop+0x6bd>
jmp    1775 <getop+0x675>
mov    -0x2c(%rbp),%eax
sub    $0x7400,%eax
je     17cc <getop+0x6cc>
jmp    1788 <getop+0x688>
mov    -0x2c(%rbp),%eax
sub    $0x7600,%eax
je     17db <getop+0x6db>
jmp    179b <getop+0x69b>
mov    -0x2c(%rbp),%eax
sub    $0x7800,%eax
je     17ea <getop+0x6ea>
jmp    17f9 <getop+0x6f9>
lea    0x91b(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x910(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x905(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x8fa(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x8f0(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
jmp    1bb9 <getop+0xab9>
movzbl -0x7(%rbp),%eax
shl    $0x8,%eax
mov    %eax,-0x30(%rbp)
sub    $0x8000,%eax
je     18c3 <getop+0x7c3>
jmp    1818 <getop+0x718>
mov    -0x30(%rbp),%eax
sub    $0x8100,%eax
je     18d2 <getop+0x7d2>
jmp    182b <getop+0x72b>
mov    -0x30(%rbp),%eax
sub    $0x8200,%eax
je     18e1 <getop+0x7e1>
jmp    183e <getop+0x73e>
mov    -0x30(%rbp),%eax
sub    $0x8300,%eax
je     18f0 <getop+0x7f0>
jmp    1851 <getop+0x751>
mov    -0x30(%rbp),%eax
sub    $0x8400,%eax
je     18ff <getop+0x7ff>
jmp    1864 <getop+0x764>
mov    -0x30(%rbp),%eax
sub    $0x8500,%eax
je     190e <getop+0x80e>
jmp    1877 <getop+0x777>
mov    -0x30(%rbp),%eax
sub    $0x8600,%eax
je     191d <getop+0x81d>
jmp    188a <getop+0x78a>
mov    -0x30(%rbp),%eax
sub    $0x8700,%eax
je     192c <getop+0x82c>
jmp    189d <getop+0x79d>
mov    -0x30(%rbp),%eax
sub    $0x8800,%eax
je     193b <getop+0x83b>
jmp    18b0 <getop+0x7b0>
mov    -0x30(%rbp),%eax
sub    $0x8900,%eax
je     194a <getop+0x84a>
jmp    1959 <getop+0x859>
lea    0x81b(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x810(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x805(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x7fa(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x7f0(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x7e5(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x7da(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x7d0(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x7c5(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x7ba(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
mov    -0x8(%rbp),%eax
and    $0xffc0,%eax
mov    %eax,-0x34(%rbp)
sub    $0x8a00,%eax
je     1a6b <getop+0x96b>
jmp    1974 <getop+0x874>
mov    -0x34(%rbp),%eax
sub    $0x8a40,%eax
je     1a7a <getop+0x97a>
jmp    1987 <getop+0x887>
mov    -0x34(%rbp),%eax
sub    $0x8a80,%eax
je     1a89 <getop+0x989>
jmp    199a <getop+0x89a>
mov    -0x34(%rbp),%eax
sub    $0x8ac0,%eax
je     1a98 <getop+0x998>
jmp    19ad <getop+0x8ad>
mov    -0x34(%rbp),%eax
sub    $0x8b00,%eax
je     1aa7 <getop+0x9a7>
jmp    19c0 <getop+0x8c0>
mov    -0x34(%rbp),%eax
sub    $0x8b40,%eax
je     1ab6 <getop+0x9b6>
jmp    19d3 <getop+0x8d3>
mov    -0x34(%rbp),%eax
sub    $0x8b80,%eax
je     1ac5 <getop+0x9c5>
jmp    19e6 <getop+0x8e6>
mov    -0x34(%rbp),%eax
sub    $0x8bc0,%eax
je     1ad4 <getop+0x9d4>
jmp    19f9 <getop+0x8f9>
mov    -0x34(%rbp),%eax
sub    $0x8c00,%eax
je     1ae3 <getop+0x9e3>
jmp    1a0c <getop+0x90c>
mov    -0x34(%rbp),%eax
sub    $0x8c40,%eax
je     1af2 <getop+0x9f2>
jmp    1a1f <getop+0x91f>
mov    -0x34(%rbp),%eax
sub    $0x8c80,%eax
je     1b01 <getop+0xa01>
jmp    1a32 <getop+0x932>
mov    -0x34(%rbp),%eax
sub    $0x8cc0,%eax
je     1b10 <getop+0xa10>
jmp    1a45 <getop+0x945>
mov    -0x34(%rbp),%eax
sub    $0x8d40,%eax
je     1b1f <getop+0xa1f>
jmp    1a58 <getop+0x958>
mov    -0x34(%rbp),%eax
sub    $0x8d80,%eax
je     1b2e <getop+0xa2e>
jmp    1b3d <getop+0xa3d>
lea    0x69d(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x693(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x689(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x67f(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x675(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x66b(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x661(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x657(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x64d(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x643(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x639(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x62f(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x625(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x616(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
jmp    1bb9 <getop+0xab9>
lea    0x607(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x5fd(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x5f3(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x5e9(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x5df(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
lea    0x5d5(%rip),%rax
mov    %eax,-0x4(%rbp)
jmp    1bc3 <getop+0xac3>
mov    -0x8(%rbp),%eax
test   $0x7fe00,%eax
jne    1bb4 <getop+0xab4>
jmp    1baf <getop+0xaaf>
jmp    1bb4 <getop+0xab4>
jmp    1bb9 <getop+0xab9>
lea    0x5ad(%rip),%rax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<getop>:
mov    %edi,%ecx
shr    $0xc,%ecx
lea    0x107f(%rip),%rax
and    $0xf,%ecx
lea    0xeea(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    %edi,%eax
and    $0xfe00,%eax
cmp    $0x800,%eax
je     120f <getop+0x10f>
movzwl %ax,%eax
cmp    $0x7e00,%eax
jne    1217 <getop+0x117>
lea    0xfae(%rip),%rax
ret
lea    0x1042(%rip),%rax
ret
lea    0x103e(%rip),%rax
ret
lea    0x103a(%rip),%rax
ret
lea    0x1036(%rip),%rax
ret
lea    0x1032(%rip),%rax
ret
and    $0xfe00,%edi
add    $0xffff9000,%edi
shr    $0x9,%edi
cmp    $0x4,%edi
ja     1566 <getop+0x466>
lea    0x1016(%rip),%rax
lea    0xf0f(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
lea    0x1003(%rip),%rax
ret
mov    %edi,%ecx
and    $0xff00,%ecx
add    $0xffff8000,%ecx
shr    $0x8,%ecx
cmp    $0x9,%ecx
ja     1268 <getop+0x168>
lea    0xff2(%rip),%rax
lea    0xe72(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0xfdf(%rip),%rax
ret
lea    0x103e(%rip),%rax
ret
lea    0x103b(%rip),%rax
ret
lea    0x1038(%rip),%rax
ret
lea    0x1035(%rip),%rax
ret
lea    0x1032(%rip),%rax
ret
lea    0x102f(%rip),%rax
ret
lea    0xeda(%rip),%rax
ret
mov    %edi,%ecx
and    $0xff00,%ecx
add    $0xffffff00,%ecx
shr    $0x8,%ecx
cmp    $0x6,%ecx
ja     12df <getop+0x1df>
lea    0xec0(%rip),%rax
lea    0xe79(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0xeac(%rip),%rax
ret
lea    0xf55(%rip),%rax
ret
lea    0xf51(%rip),%rax
ret
lea    0xf4e(%rip),%rax
ret
and    $0xffc0,%edi
add    $0xffff7600,%edi
shr    $0x6,%edi
cmp    $0xe,%edi
ja     1566 <getop+0x466>
lea    0xf5c(%rip),%rax
lea    0xdda(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
lea    0xf81(%rip),%rax
ret
lea    0xf1b(%rip),%rax
ret
lea    0xf17(%rip),%rax
ret
lea    0xf14(%rip),%rax
ret
lea    0xf10(%rip),%rax
ret
lea    0xf0c(%rip),%rax
ret
lea    0xf09(%rip),%rax
ret
lea    0xf05(%rip),%rax
ret
lea    0xf01(%rip),%rax
ret
mov    %edi,%eax
and    $0xffffffc0,%eax
movswl %ax,%ecx
cmp    $0xbbf,%ecx
jg     135b <getop+0x25b>
cmp    $0xa7f,%ecx
jle    139b <getop+0x29b>
movzwl %ax,%eax
cmp    $0xaff,%ecx
jle    1449 <getop+0x349>
cmp    $0xb00,%eax
je     14b0 <getop+0x3b0>
cmp    $0xb40,%eax
je     14b8 <getop+0x3b8>
cmp    $0xb80,%eax
jne    1500 <getop+0x400>
lea    0xe02(%rip),%rax
ret
lea    0xdc5(%rip),%rax
ret
lea    0xdc1(%rip),%rax
ret
lea    0xdbd(%rip),%rax
ret
lea    0xdb9(%rip),%rax
ret
lea    0xdb5(%rip),%rax
ret
movzwl %ax,%eax
cmp    $0xcbf,%ecx
jle    13c7 <getop+0x2c7>
cmp    $0xd3f,%ecx
jle    1467 <getop+0x367>
cmp    $0xd40,%eax
je     14c0 <getop+0x3c0>
cmp    $0xd80,%eax
je     14c8 <getop+0x3c8>
cmp    $0xdc0,%eax
jne    1500 <getop+0x400>
lea    0xdc1(%rip),%rax
ret
cmp    $0x9ff,%ecx
jg     1481 <getop+0x381>
cmp    $0x40,%ax
je     14d0 <getop+0x3d0>
movzwl %ax,%eax
cmp    $0xc0,%eax
jne    1500 <getop+0x400>
lea    0xd51(%rip),%rax
ret
cmp    $0xc3f,%ecx
jg     149a <getop+0x39a>
cmp    $0xbc0,%eax
je     14d8 <getop+0x3d8>
cmp    $0xc00,%eax
jne    1500 <getop+0x400>
lea    0xd4c(%rip),%rax
ret
lea    0xdf0(%rip),%rax
ret
lea    0xded(%rip),%rax
ret
lea    0xdea(%rip),%rax
ret
lea    0xde7(%rip),%rax
ret
lea    0xde4(%rip),%rax
ret
lea    0xde1(%rip),%rax
ret
lea    0xdde(%rip),%rax
ret
lea    0xddb(%rip),%rax
ret
lea    0xdd8(%rip),%rax
ret
lea    0xdd5(%rip),%rax
ret
lea    0xdd2(%rip),%rax
ret
cmp    $0xa80,%eax
je     14e0 <getop+0x3e0>
cmp    $0xac0,%eax
jne    1500 <getop+0x400>
lea    0xcc2(%rip),%rax
ret
cmp    $0xcc0,%eax
je     14e8 <getop+0x3e8>
cmp    $0xd00,%eax
jne    1500 <getop+0x400>
lea    0xccc(%rip),%rax
ret
movzwl %ax,%eax
cmp    $0xa00,%eax
je     14f0 <getop+0x3f0>
cmp    $0xa40,%eax
jne    1500 <getop+0x400>
lea    0xc87(%rip),%rax
ret
cmp    $0xc40,%eax
je     14f8 <getop+0x3f8>
cmp    $0xc80,%eax
jne    1500 <getop+0x400>
lea    0xc95(%rip),%rax
ret
lea    0xc75(%rip),%rax
ret
lea    0xc71(%rip),%rax
ret
lea    0xc8a(%rip),%rax
ret
lea    0xc87(%rip),%rax
ret
lea    0xc3c(%rip),%rax
ret
lea    0xc59(%rip),%rax
ret
lea    0xc3d(%rip),%rax
ret
lea    0xc59(%rip),%rax
ret
lea    0xc25(%rip),%rax
ret
lea    0xc41(%rip),%rax
ret
mov    %edi,%eax
and    $0xffe0,%eax
cmp    $0xa0,%eax
jne    1516 <getop+0x416>
lea    0xc4a(%rip),%rax
ret
mov    %edi,%eax
and    $0xfff8,%eax
cmp    $0x80,%eax
je     1536 <getop+0x436>
movzwl %ax,%eax
cmp    $0x98,%eax
jne    153e <getop+0x43e>
lea    0xc33(%rip),%rax
ret
lea    0xc27(%rip),%rax
ret
cmp    $0x6,%di
ja     1566 <getop+0x466>
lea    0xc21(%rip),%rax
movzwl %di,%ecx
lea    0xb7f(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0xc0c(%rip),%rax
ret
lea    0xcd4(%rip),%rax
ret
lea    0xc01(%rip),%rax
ret
lea    0xbfd(%rip),%rax
ret
lea    0xbf9(%rip),%rax
ret
lea    0xbf5(%rip),%rax
ret
lea    0xbf2(%rip),%rax
ret

LLVM IR (-O0):
@.str = [4 x i8] c"jsr\00"
@.str.1 = [4 x i8] c"sob\00"
@.str.2 = [3 x i8] c"br\00"
@.str.3 = [4 x i8] c"bne\00"
@.str.4 = [4 x i8] c"beq\00"
@.str.5 = [4 x i8] c"bge\00"
@.str.6 = [4 x i8] c"blt\00"
@.str.7 = [4 x i8] c"bgt\00"
@.str.8 = [4 x i8] c"ble\00"
@.str.9 = [4 x i8] c"jmp\00"
@.str.10 = [5 x i8] c"swab\00"
@.str.11 = [4 x i8] c"clr\00"
@.str.12 = [4 x i8] c"com\00"
@.str.13 = [4 x i8] c"inc\00"
@.str.14 = [4 x i8] c"dec\00"
@.str.15 = [4 x i8] c"neg\00"
@.str.16 = [4 x i8] c"adc\00"
@.str.17 = [4 x i8] c"sbc\00"
@.str.18 = [4 x i8] c"tst\00"
@.str.19 = [4 x i8] c"ror\00"
@.str.20 = [4 x i8] c"rol\00"
@.str.21 = [4 x i8] c"asr\00"
@.str.22 = [4 x i8] c"asl\00"
@.str.23 = [5 x i8] c"mark\00"
@.str.24 = [5 x i8] c"mfpi\00"
@.str.25 = [5 x i8] c"mtpi\00"
@.str.26 = [4 x i8] c"sxt\00"
@.str.27 = [5 x i8] c"flag\00"
@.str.28 = [4 x i8] c"rts\00"
@.str.29 = [4 x i8] c"spl\00"
@.str.30 = [5 x i8] c"halt\00"
@.str.31 = [5 x i8] c"wait\00"
@.str.32 = [4 x i8] c"rti\00"
@.str.33 = [4 x i8] c"bpt\00"
@.str.34 = [4 x i8] c"iot\00"
@.str.35 = [5 x i8] c"rset\00"
@.str.36 = [4 x i8] c"rtt\00"
@.str.37 = [5 x i8] c"mov \00"
@.str.38 = [4 x i8] c"cmp\00"
@.str.39 = [4 x i8] c"bit\00"
@.str.40 = [4 x i8] c"bic\00"
@.str.41 = [4 x i8] c"bis\00"
@.str.42 = [4 x i8] c"add\00"
@.str.43 = [4 x i8] c"mul\00"
@.str.44 = [4 x i8] c"div\00"
@.str.45 = [4 x i8] c"ash\00"
@.str.46 = [5 x i8] c"ashc\00"
@.str.47 = [4 x i8] c"xor\00"
@.str.48 = [4 x i8] c"bpl\00"
@.str.49 = [4 x i8] c"bmi\00"
@.str.50 = [4 x i8] c"bhi\00"
@.str.51 = [5 x i8] c"blos\00"
@.str.52 = [4 x i8] c"bvc\00"
@.str.53 = [4 x i8] c"bvs\00"
@.str.54 = [5 x i8] c"bhis\00"
@.str.55 = [4 x i8] c"blo\00"
@.str.56 = [4 x i8] c"emt\00"
@.str.57 = [4 x i8] c"sys\00"
@.str.58 = [5 x i8] c"clrb\00"
@.str.59 = [5 x i8] c"comb\00"
@.str.60 = [5 x i8] c"incb\00"
@.str.61 = [5 x i8] c"decb\00"
@.str.62 = [5 x i8] c"negb\00"
@.str.63 = [5 x i8] c"adcb\00"
@.str.64 = [5 x i8] c"sbcb\00"
@.str.65 = [5 x i8] c"tstb\00"
@.str.66 = [5 x i8] c"rorb\00"
@.str.67 = [5 x i8] c"rolb\00"
@.str.68 = [5 x i8] c"asrb\00"
@.str.69 = [5 x i8] c"aslb\00"
@.str.70 = [5 x i8] c"mfpd\00"
@.str.71 = [5 x i8] c"movb\00"
@.str.72 = [5 x i8] c"cmpb\00"
@.str.73 = [5 x i8] c"bitb\00"
@.str.74 = [5 x i8] c"bicb\00"
@.str.75 = [5 x i8] c"bisb\00"
@.str.76 = [4 x i8] c"sub\00"
@.str.77 = [4 x i8] c"???\00"
define i32 @getop(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
%5 = and i32 %4, 61440
switch i32 %5, label %119 [
i32 0, label %6
i32 4096, label %62
i32 8192, label %63
i32 12288, label %64
i32 16384, label %65
i32 20480, label %66
i32 24576, label %67
i32 28672, label %68
i32 32768, label %77
i32 36864, label %108
i32 40960, label %109
i32 45056, label %110
i32 49152, label %111
i32 53248, label %112
i32 57344, label %113
i32 61440, label %114
]
6: ; preds = %1
%7 = load i32, i32* %3
%8 = and i32 %7, 65024
switch i32 %8, label %11 [
i32 2048, label %9
i32 32256, label %10
]
9: ; preds = %6
store i32 ptrtoint ([4 x i8]* @.str to i32), i32* %2
br label %120
10: ; preds = %6
store i32 ptrtoint ([4 x i8]* @.str.1 to i32), i32* %2
br label %120
11: ; preds = %6
%12 = load i32, i32* %3
%13 = and i32 %12, 65280
switch i32 %13, label %21 [
i32 256, label %14
i32 512, label %15
i32 768, label %16
i32 1024, label %17
i32 1280, label %18
i32 1536, label %19
i32 1792, label %20
]
14: ; preds = %11
store i32 ptrtoint ([3 x i8]* @.str.2 to i32), i32* %2
br label %120
15: ; preds = %11
store i32 ptrtoint ([4 x i8]* @.str.3 to i32), i32* %2
br label %120
16: ; preds = %11
store i32 ptrtoint ([4 x i8]* @.str.4 to i32), i32* %2
br label %120
17: ; preds = %11
store i32 ptrtoint ([4 x i8]* @.str.5 to i32), i32* %2
br label %120
18: ; preds = %11
store i32 ptrtoint ([4 x i8]* @.str.6 to i32), i32* %2
br label %120
19: ; preds = %11
store i32 ptrtoint ([4 x i8]* @.str.7 to i32), i32* %2
br label %120
20: ; preds = %11
store i32 ptrtoint ([4 x i8]* @.str.8 to i32), i32* %2
br label %120
21: ; preds = %11
%22 = load i32, i32* %3
%23 = and i32 %22, 65472
switch i32 %23, label %42 [
i32 64, label %24
i32 192, label %25
i32 2560, label %26
i32 2624, label %27
i32 2688, label %28
i32 2752, label %29
i32 2816, label %30
i32 2880, label %31
i32 2944, label %32
i32 3008, label %33
i32 3072, label %34
i32 3136, label %35
i32 3200, label %36
i32 3264, label %37
i32 3328, label %38
i32 3392, label %39
i32 3456, label %40
i32 3520, label %41
]
24: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.9 to i32), i32* %2
br label %120
25: ; preds = %21
store i32 ptrtoint ([5 x i8]* @.str.10 to i32), i32* %2
br label %120
26: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.11 to i32), i32* %2
br label %120
27: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.12 to i32), i32* %2
br label %120
28: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.13 to i32), i32* %2
br label %120
29: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.14 to i32), i32* %2
br label %120
30: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.15 to i32), i32* %2
br label %120
31: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.16 to i32), i32* %2
br label %120
32: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.17 to i32), i32* %2
br label %120
33: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.18 to i32), i32* %2
br label %120
34: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.19 to i32), i32* %2
br label %120
35: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.20 to i32), i32* %2
br label %120
36: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.21 to i32), i32* %2
br label %120
37: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.22 to i32), i32* %2
br label %120
38: ; preds = %21
store i32 ptrtoint ([5 x i8]* @.str.23 to i32), i32* %2
br label %120
39: ; preds = %21
store i32 ptrtoint ([5 x i8]* @.str.24 to i32), i32* %2
br label %120
40: ; preds = %21
store i32 ptrtoint ([5 x i8]* @.str.25 to i32), i32* %2
br label %120
41: ; preds = %21
store i32 ptrtoint ([4 x i8]* @.str.26 to i32), i32* %2
br label %120
42: ; preds = %21
%43 = load i32, i32* %3
%44 = and i32 %43, 65504
switch i32 %44, label %46 [
i32 160, label %45
]
45: ; preds = %42
store i32 ptrtoint ([5 x i8]* @.str.27 to i32), i32* %2
br label %120
46: ; preds = %42
%47 = load i32, i32* %3
%48 = and i32 %47, 65528
switch i32 %48, label %51 [
i32 128, label %49
i32 152, label %50
]
49: ; preds = %46
store i32 ptrtoint ([4 x i8]* @.str.28 to i32), i32* %2
br label %120
50: ; preds = %46
store i32 ptrtoint ([4 x i8]* @.str.29 to i32), i32* %2
br label %120
51: ; preds = %46
%52 = load i32, i32* %3
%53 = and i32 %52, 65535
switch i32 %53, label %61 [
i32 0, label %54
i32 1, label %55
i32 2, label %56
i32 3, label %57
i32 4, label %58
i32 5, label %59
i32 6, label %60
]
54: ; preds = %51
store i32 ptrtoint ([5 x i8]* @.str.30 to i32), i32* %2
br label %120
55: ; preds = %51
store i32 ptrtoint ([5 x i8]* @.str.31 to i32), i32* %2
br label %120
56: ; preds = %51
store i32 ptrtoint ([4 x i8]* @.str.32 to i32), i32* %2
br label %120
57: ; preds = %51
store i32 ptrtoint ([4 x i8]* @.str.33 to i32), i32* %2
br label %120
58: ; preds = %51
store i32 ptrtoint ([4 x i8]* @.str.34 to i32), i32* %2
br label %120
59: ; preds = %51
store i32 ptrtoint ([5 x i8]* @.str.35 to i32), i32* %2
br label %120
60: ; preds = %51
store i32 ptrtoint ([4 x i8]* @.str.36 to i32), i32* %2
br label %120
61: ; preds = %51
br label %119
62: ; preds = %1
store i32 ptrtoint ([5 x i8]* @.str.37 to i32), i32* %2
br label %120
63: ; preds = %1
store i32 ptrtoint ([4 x i8]* @.str.38 to i32), i32* %2
br label %120
64: ; preds = %1
store i32 ptrtoint ([4 x i8]* @.str.39 to i32), i32* %2
br label %120
65: ; preds = %1
store i32 ptrtoint ([4 x i8]* @.str.40 to i32), i32* %2
br label %120
66: ; preds = %1
store i32 ptrtoint ([4 x i8]* @.str.41 to i32), i32* %2
br label %120
67: ; preds = %1
store i32 ptrtoint ([4 x i8]* @.str.42 to i32), i32* %2
br label %120
68: ; preds = %1
%69 = load i32, i32* %3
%70 = and i32 %69, 65024
switch i32 %70, label %76 [
i32 28672, label %71
i32 29184, label %72
i32 29696, label %73
i32 30208, label %74
i32 30720, label %75
]
71: ; preds = %68
store i32 ptrtoint ([4 x i8]* @.str.43 to i32), i32* %2
br label %120
72: ; preds = %68
store i32 ptrtoint ([4 x i8]* @.str.44 to i32), i32* %2
br label %120
73: ; preds = %68
store i32 ptrtoint ([4 x i8]* @.str.45 to i32), i32* %2
br label %120
74: ; preds = %68
store i32 ptrtoint ([5 x i8]* @.str.46 to i32), i32* %2
br label %120
75: ; preds = %68
store i32 ptrtoint ([4 x i8]* @.str.47 to i32), i32* %2
br label %120
76: ; preds = %68
br label %119
77: ; preds = %1
%78 = load i32, i32* %3
%79 = and i32 %78, 65280
switch i32 %79, label %90 [
i32 32768, label %80
i32 33024, label %81
i32 33280, label %82
i32 33536, label %83
i32 33792, label %84
i32 34048, label %85
i32 34304, label %86
i32 34560, label %87
i32 34816, label %88
i32 35072, label %89
]
80: ; preds = %77
store i32 ptrtoint ([4 x i8]* @.str.48 to i32), i32* %2
br label %120
81: ; preds = %77
store i32 ptrtoint ([4 x i8]* @.str.49 to i32), i32* %2
br label %120
82: ; preds = %77
store i32 ptrtoint ([4 x i8]* @.str.50 to i32), i32* %2
br label %120
83: ; preds = %77
store i32 ptrtoint ([5 x i8]* @.str.51 to i32), i32* %2
br label %120
84: ; preds = %77
store i32 ptrtoint ([4 x i8]* @.str.52 to i32), i32* %2
br label %120
85: ; preds = %77
store i32 ptrtoint ([4 x i8]* @.str.53 to i32), i32* %2
br label %120
86: ; preds = %77
store i32 ptrtoint ([5 x i8]* @.str.54 to i32), i32* %2
br label %120
87: ; preds = %77
store i32 ptrtoint ([4 x i8]* @.str.55 to i32), i32* %2
br label %120
88: ; preds = %77
store i32 ptrtoint ([4 x i8]* @.str.56 to i32), i32* %2
br label %120
89: ; preds = %77
store i32 ptrtoint ([4 x i8]* @.str.57 to i32), i32* %2
br label %120
90: ; preds = %77
%91 = load i32, i32* %3
%92 = and i32 %91, 65472
switch i32 %92, label %107 [
i32 35328, label %93
i32 35392, label %94
i32 35456, label %95
i32 35520, label %96
i32 35584, label %97
i32 35648, label %98
i32 35712, label %99
i32 35776, label %100
i32 35840, label %101
i32 35904, label %102
i32 35968, label %103
i32 36032, label %104
i32 36160, label %105
i32 36224, label %106
]
93: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.58 to i32), i32* %2
br label %120
94: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.59 to i32), i32* %2
br label %120
95: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.60 to i32), i32* %2
br label %120
96: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.61 to i32), i32* %2
br label %120
97: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.62 to i32), i32* %2
br label %120
98: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.63 to i32), i32* %2
br label %120
99: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.64 to i32), i32* %2
br label %120
100: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.65 to i32), i32* %2
br label %120
101: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.66 to i32), i32* %2
br label %120
102: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.67 to i32), i32* %2
br label %120
103: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.68 to i32), i32* %2
br label %120
104: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.69 to i32), i32* %2
br label %120
105: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.70 to i32), i32* %2
br label %120
106: ; preds = %90
store i32 ptrtoint ([5 x i8]* @.str.70 to i32), i32* %2
br label %120
107: ; preds = %90
br label %119
108: ; preds = %1
store i32 ptrtoint ([5 x i8]* @.str.71 to i32), i32* %2
br label %120
109: ; preds = %1
store i32 ptrtoint ([5 x i8]* @.str.72 to i32), i32* %2
br label %120
110: ; preds = %1
store i32 ptrtoint ([5 x i8]* @.str.73 to i32), i32* %2
br label %120
111: ; preds = %1
store i32 ptrtoint ([5 x i8]* @.str.74 to i32), i32* %2
br label %120
112: ; preds = %1
store i32 ptrtoint ([5 x i8]* @.str.75 to i32), i32* %2
br label %120
113: ; preds = %1
store i32 ptrtoint ([4 x i8]* @.str.76 to i32), i32* %2
br label %120
114: ; preds = %1
%115 = load i32, i32* %3
%116 = and i32 %115, 523776
switch i32 %116, label %118 [
i32 0, label %117
]
117: ; preds = %114
br label %118
118: ; preds = %117, %114
br label %119
119: ; preds = %1, %118, %107, %76, %61
store i32 ptrtoint ([4 x i8]* @.str.77 to i32), i32* %2
br label %120
120: ; preds = %119, %113, %112, %111, %110, %109, %108, %106, %105, %104, %103, %102, %101, %100, %99, %98, %97, %96, %95, %94, %93, %89, %88, %87, %86, %85, %84, %83, %82, %81, %80, %75, %74, %73, %72, %71, %67, %66, %65, %64, %63, %62, %60, %59, %58, %57, %56, %55, %54, %50, %49, %45, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %20, %19, %18, %17, %16, %15, %14, %10, %9
%121 = load i32, i32* %2
ret i32 %121
}

LLVM IR (-O2):
@.str = [4 x i8] c"jsr\00"
@.str.1 = [4 x i8] c"sob\00"
@.str.2 = [3 x i8] c"br\00"
@.str.3 = [4 x i8] c"bne\00"
@.str.4 = [4 x i8] c"beq\00"
@.str.5 = [4 x i8] c"bge\00"
@.str.6 = [4 x i8] c"blt\00"
@.str.7 = [4 x i8] c"bgt\00"
@.str.8 = [4 x i8] c"ble\00"
@.str.9 = [4 x i8] c"jmp\00"
@.str.10 = [5 x i8] c"swab\00"
@.str.11 = [4 x i8] c"clr\00"
@.str.12 = [4 x i8] c"com\00"
@.str.13 = [4 x i8] c"inc\00"
@.str.14 = [4 x i8] c"dec\00"
@.str.15 = [4 x i8] c"neg\00"
@.str.16 = [4 x i8] c"adc\00"
@.str.17 = [4 x i8] c"sbc\00"
@.str.18 = [4 x i8] c"tst\00"
@.str.19 = [4 x i8] c"ror\00"
@.str.20 = [4 x i8] c"rol\00"
@.str.21 = [4 x i8] c"asr\00"
@.str.22 = [4 x i8] c"asl\00"
@.str.23 = [5 x i8] c"mark\00"
@.str.24 = [5 x i8] c"mfpi\00"
@.str.25 = [5 x i8] c"mtpi\00"
@.str.26 = [4 x i8] c"sxt\00"
@.str.27 = [5 x i8] c"flag\00"
@.str.28 = [4 x i8] c"rts\00"
@.str.29 = [4 x i8] c"spl\00"
@.str.30 = [5 x i8] c"halt\00"
@.str.31 = [5 x i8] c"wait\00"
@.str.32 = [4 x i8] c"rti\00"
@.str.33 = [4 x i8] c"bpt\00"
@.str.34 = [4 x i8] c"iot\00"
@.str.35 = [5 x i8] c"rset\00"
@.str.36 = [4 x i8] c"rtt\00"
@.str.37 = [5 x i8] c"mov \00"
@.str.38 = [4 x i8] c"cmp\00"
@.str.39 = [4 x i8] c"bit\00"
@.str.40 = [4 x i8] c"bic\00"
@.str.41 = [4 x i8] c"bis\00"
@.str.42 = [4 x i8] c"add\00"
@.str.43 = [4 x i8] c"mul\00"
@.str.44 = [4 x i8] c"div\00"
@.str.45 = [4 x i8] c"ash\00"
@.str.46 = [5 x i8] c"ashc\00"
@.str.47 = [4 x i8] c"xor\00"
@.str.48 = [4 x i8] c"bpl\00"
@.str.49 = [4 x i8] c"bmi\00"
@.str.50 = [4 x i8] c"bhi\00"
@.str.51 = [5 x i8] c"blos\00"
@.str.52 = [4 x i8] c"bvc\00"
@.str.53 = [4 x i8] c"bvs\00"
@.str.54 = [5 x i8] c"bhis\00"
@.str.55 = [4 x i8] c"blo\00"
@.str.56 = [4 x i8] c"emt\00"
@.str.57 = [4 x i8] c"sys\00"
@.str.58 = [5 x i8] c"clrb\00"
@.str.59 = [5 x i8] c"comb\00"
@.str.60 = [5 x i8] c"incb\00"
@.str.61 = [5 x i8] c"decb\00"
@.str.62 = [5 x i8] c"negb\00"
@.str.63 = [5 x i8] c"adcb\00"
@.str.64 = [5 x i8] c"sbcb\00"
@.str.65 = [5 x i8] c"tstb\00"
@.str.66 = [5 x i8] c"rorb\00"
@.str.67 = [5 x i8] c"rolb\00"
@.str.68 = [5 x i8] c"asrb\00"
@.str.69 = [5 x i8] c"aslb\00"
@.str.70 = [5 x i8] c"mfpd\00"
@.str.71 = [5 x i8] c"movb\00"
@.str.72 = [5 x i8] c"cmpb\00"
@.str.73 = [5 x i8] c"bitb\00"
@.str.74 = [5 x i8] c"bicb\00"
@.str.75 = [5 x i8] c"bisb\00"
@.str.76 = [4 x i8] c"sub\00"
@.str.77 = [4 x i8] c"???\00"
define i32 @getop(i32 %0) {
%2 = lshr i32 %0, 12
%3 = and i32 %2, 15
switch i32 %3, label %99 [
i32 0, label %4
i32 1, label %101
i32 2, label %50
i32 3, label %51
i32 4, label %52
i32 5, label %53
i32 6, label %54
i32 7, label %55
i32 8, label %63
i32 9, label %93
i32 10, label %94
i32 11, label %95
i32 12, label %96
i32 13, label %97
i32 14, label %98
i32 15, label %100
]
4: ; preds = %1
%5 = trunc i32 %0 to i16
%6 = and i16 %5, -512
switch i16 %6, label %8 [
i16 2048, label %101
i16 32256, label %7
]
7: ; preds = %4
br label %101
8: ; preds = %4
%9 = and i32 %0, 65280
%10 = add nsw i32 %9, -256
%11 = lshr exact i32 %10, 8
switch i32 %11, label %18 [
i32 0, label %101
i32 1, label %12
i32 2, label %13
i32 3, label %14
i32 4, label %15
i32 5, label %16
i32 6, label %17
]
12: ; preds = %8
br label %101
13: ; preds = %8
br label %101
14: ; preds = %8
br label %101
15: ; preds = %8
br label %101
16: ; preds = %8
br label %101
17: ; preds = %8
br label %101
18: ; preds = %8
%19 = and i16 %5, -64
switch i16 %19, label %37 [
i16 64, label %101
i16 192, label %20
i16 2560, label %21
i16 2624, label %22
i16 2688, label %23
i16 2752, label %24
i16 2816, label %25
i16 2880, label %26
i16 2944, label %27
i16 3008, label %28
i16 3072, label %29
i16 3136, label %30
i16 3200, label %31
i16 3264, label %32
i16 3328, label %33
i16 3392, label %34
i16 3456, label %35
i16 3520, label %36
]
20: ; preds = %18
br label %101
21: ; preds = %18
br label %101
22: ; preds = %18
br label %101
23: ; preds = %18
br label %101
24: ; preds = %18
br label %101
25: ; preds = %18
br label %101
26: ; preds = %18
br label %101
27: ; preds = %18
br label %101
28: ; preds = %18
br label %101
29: ; preds = %18
br label %101
30: ; preds = %18
br label %101
31: ; preds = %18
br label %101
32: ; preds = %18
br label %101
33: ; preds = %18
br label %101
34: ; preds = %18
br label %101
35: ; preds = %18
br label %101
36: ; preds = %18
br label %101
37: ; preds = %18
%38 = and i32 %0, 65504
%39 = icmp eq i32 %38, 160
br i1 %39, label %101, label %40
40: ; preds = %37
%41 = and i16 %5, -8
switch i16 %41, label %43 [
i16 128, label %101
i16 152, label %42
]
42: ; preds = %40
br label %101
43: ; preds = %40
switch i16 %5, label %100 [
i16 0, label %101
i16 1, label %44
i16 2, label %45
i16 3, label %46
i16 4, label %47
i16 5, label %48
i16 6, label %49
]
44: ; preds = %43
br label %101
45: ; preds = %43
br label %101
46: ; preds = %43
br label %101
47: ; preds = %43
br label %101
48: ; preds = %43
br label %101
49: ; preds = %43
br label %101
50: ; preds = %1
br label %101
51: ; preds = %1
br label %101
52: ; preds = %1
br label %101
53: ; preds = %1
br label %101
54: ; preds = %1
br label %101
55: ; preds = %1
%56 = and i32 %0, 65024
%57 = add nsw i32 %56, -28672
%58 = lshr exact i32 %57, 9
switch i32 %58, label %100 [
i32 0, label %101
i32 1, label %59
i32 2, label %60
i32 3, label %61
i32 4, label %62
]
59: ; preds = %55
br label %101
60: ; preds = %55
br label %101
61: ; preds = %55
br label %101
62: ; preds = %55
br label %101
63: ; preds = %1
%64 = and i32 %0, 65280
%65 = add nsw i32 %64, -32768
%66 = lshr exact i32 %65, 8
switch i32 %66, label %76 [
i32 0, label %101
i32 1, label %67
i32 2, label %68
i32 3, label %69
i32 4, label %70
i32 5, label %71
i32 6, label %72
i32 7, label %73
i32 8, label %74
i32 9, label %75
]
67: ; preds = %63
br label %101
68: ; preds = %63
br label %101
69: ; preds = %63
br label %101
70: ; preds = %63
br label %101
71: ; preds = %63
br label %101
72: ; preds = %63
br label %101
73: ; preds = %63
br label %101
74: ; preds = %63
br label %101
75: ; preds = %63
br label %101
76: ; preds = %63
%77 = and i32 %0, 65472
%78 = add nsw i32 %77, -35328
%79 = lshr exact i32 %78, 6
switch i32 %79, label %100 [
i32 0, label %101
i32 1, label %80
i32 2, label %81
i32 3, label %82
i32 4, label %83
i32 5, label %84
i32 6, label %85
i32 7, label %86
i32 8, label %87
i32 9, label %88
i32 10, label %89
i32 11, label %90
i32 13, label %91
i32 14, label %92
]
80: ; preds = %76
br label %101
81: ; preds = %76
br label %101
82: ; preds = %76
br label %101
83: ; preds = %76
br label %101
84: ; preds = %76
br label %101
85: ; preds = %76
br label %101
86: ; preds = %76
br label %101
87: ; preds = %76
br label %101
88: ; preds = %76
br label %101
89: ; preds = %76
br label %101
90: ; preds = %76
br label %101
91: ; preds = %76
br label %101
92: ; preds = %76
br label %101
93: ; preds = %1
br label %101
94: ; preds = %1
br label %101
95: ; preds = %1
br label %101
96: ; preds = %1
br label %101
97: ; preds = %1
br label %101
98: ; preds = %1
br label %101
99: ; preds = %1
unreachable
100: ; preds = %1, %76, %55, %43
br label %101
101: ; preds = %76, %63, %55, %1, %43, %40, %37, %18, %8, %4, %100, %98, %97, %96, %95, %94, %93, %92, %91, %90, %89, %88, %87, %86, %85, %84, %83, %82, %81, %80, %75, %74, %73, %72, %71, %70, %69, %68, %67, %62, %61, %60, %59, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %42, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %17, %16, %15, %14, %13, %12, %7
%102 = phi i32 [ ptrtoint ([4 x i8]* @.str.77 to i32), %100 ], [ ptrtoint ([4 x i8]* @.str.76 to i32), %98 ], [ ptrtoint ([5 x i8]* @.str.75 to i32), %97 ], [ ptrtoint ([5 x i8]* @.str.74 to i32), %96 ], [ ptrtoint ([5 x i8]* @.str.73 to i32), %95 ], [ ptrtoint ([5 x i8]* @.str.72 to i32), %94 ], [ ptrtoint ([5 x i8]* @.str.71 to i32), %93 ], [ ptrtoint ([5 x i8]* @.str.70 to i32), %92 ], [ ptrtoint ([5 x i8]* @.str.70 to i32), %91 ], [ ptrtoint ([5 x i8]* @.str.69 to i32), %90 ], [ ptrtoint ([5 x i8]* @.str.68 to i32), %89 ], [ ptrtoint ([5 x i8]* @.str.67 to i32), %88 ], [ ptrtoint ([5 x i8]* @.str.66 to i32), %87 ], [ ptrtoint ([5 x i8]* @.str.65 to i32), %86 ], [ ptrtoint ([5 x i8]* @.str.64 to i32), %85 ], [ ptrtoint ([5 x i8]* @.str.63 to i32), %84 ], [ ptrtoint ([5 x i8]* @.str.62 to i32), %83 ], [ ptrtoint ([5 x i8]* @.str.61 to i32), %82 ], [ ptrtoint ([5 x i8]* @.str.60 to i32), %81 ], [ ptrtoint ([5 x i8]* @.str.59 to i32), %80 ], [ ptrtoint ([4 x i8]* @.str.57 to i32), %75 ], [ ptrtoint ([4 x i8]* @.str.56 to i32), %74 ], [ ptrtoint ([4 x i8]* @.str.55 to i32), %73 ], [ ptrtoint ([5 x i8]* @.str.54 to i32), %72 ], [ ptrtoint ([4 x i8]* @.str.53 to i32), %71 ], [ ptrtoint ([4 x i8]* @.str.52 to i32), %70 ], [ ptrtoint ([5 x i8]* @.str.51 to i32), %69 ], [ ptrtoint ([4 x i8]* @.str.50 to i32), %68 ], [ ptrtoint ([4 x i8]* @.str.49 to i32), %67 ], [ ptrtoint ([4 x i8]* @.str.47 to i32), %62 ], [ ptrtoint ([5 x i8]* @.str.46 to i32), %61 ], [ ptrtoint ([4 x i8]* @.str.45 to i32), %60 ], [ ptrtoint ([4 x i8]* @.str.44 to i32), %59 ], [ ptrtoint ([4 x i8]* @.str.42 to i32), %54 ], [ ptrtoint ([4 x i8]* @.str.41 to i32), %53 ], [ ptrtoint ([4 x i8]* @.str.40 to i32), %52 ], [ ptrtoint ([4 x i8]* @.str.39 to i32), %51 ], [ ptrtoint ([4 x i8]* @.str.38 to i32), %50 ], [ ptrtoint ([4 x i8]* @.str.36 to i32), %49 ], [ ptrtoint ([5 x i8]* @.str.35 to i32), %48 ], [ ptrtoint ([4 x i8]* @.str.34 to i32), %47 ], [ ptrtoint ([4 x i8]* @.str.33 to i32), %46 ], [ ptrtoint ([4 x i8]* @.str.32 to i32), %45 ], [ ptrtoint ([5 x i8]* @.str.31 to i32), %44 ], [ ptrtoint ([4 x i8]* @.str.29 to i32), %42 ], [ ptrtoint ([4 x i8]* @.str.26 to i32), %36 ], [ ptrtoint ([5 x i8]* @.str.25 to i32), %35 ], [ ptrtoint ([5 x i8]* @.str.24 to i32), %34 ], [ ptrtoint ([5 x i8]* @.str.23 to i32), %33 ], [ ptrtoint ([4 x i8]* @.str.22 to i32), %32 ], [ ptrtoint ([4 x i8]* @.str.21 to i32), %31 ], [ ptrtoint ([4 x i8]* @.str.20 to i32), %30 ], [ ptrtoint ([4 x i8]* @.str.19 to i32), %29 ], [ ptrtoint ([4 x i8]* @.str.18 to i32), %28 ], [ ptrtoint ([4 x i8]* @.str.17 to i32), %27 ], [ ptrtoint ([4 x i8]* @.str.16 to i32), %26 ], [ ptrtoint ([4 x i8]* @.str.15 to i32), %25 ], [ ptrtoint ([4 x i8]* @.str.14 to i32), %24 ], [ ptrtoint ([4 x i8]* @.str.13 to i32), %23 ], [ ptrtoint ([4 x i8]* @.str.12 to i32), %22 ], [ ptrtoint ([4 x i8]* @.str.11 to i32), %21 ], [ ptrtoint ([5 x i8]* @.str.10 to i32), %20 ], [ ptrtoint ([4 x i8]* @.str.8 to i32), %17 ], [ ptrtoint ([4 x i8]* @.str.7 to i32), %16 ], [ ptrtoint ([4 x i8]* @.str.6 to i32), %15 ], [ ptrtoint ([4 x i8]* @.str.5 to i32), %14 ], [ ptrtoint ([4 x i8]* @.str.4 to i32), %13 ], [ ptrtoint ([4 x i8]* @.str.3 to i32), %12 ], [ ptrtoint ([4 x i8]* @.str.1 to i32), %7 ], [ ptrtoint ([4 x i8]* @.str to i32), %4 ], [ ptrtoint ([3 x i8]* @.str.2 to i32), %8 ], [ ptrtoint ([4 x i8]* @.str.9 to i32), %18 ], [ ptrtoint ([5 x i8]* @.str.27 to i32), %37 ], [ ptrtoint ([4 x i8]* @.str.28 to i32), %40 ], [ ptrtoint ([5 x i8]* @.str.30 to i32), %43 ], [ ptrtoint ([5 x i8]* @.str.37 to i32), %1 ], [ ptrtoint ([4 x i8]* @.str.43 to i32), %55 ], [ ptrtoint ([4 x i8]* @.str.48 to i32), %63 ], [ ptrtoint ([5 x i8]* @.str.58 to i32), %76 ]
ret i32 %102
}