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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
const char *disasm_get_spr(unsigned sprn) {
  switch (sprn) {
  case 0x3b3:
    return ("ccr0");
  case 0x009:
    return ("ctr");
  case 0x3f6:
    return ("dac1");
  case 0x3f7:
    return ("dac2");
  case 0x3f2:
    return ("dbcr0");
  case 0x3bd:
    return ("dbcr1");
  case 0x3f0:
    return ("dbsr");
  case 0x3fa:
    return ("dccr");
  case 0x3ba:
    return ("dcwr");
  case 0x3b6:
    return ("dvc1");
  case 0x3b7:
    return ("dvc2");
  case 0x3d5:
    return ("dear");
  case 0x3d4:
    return ("esr");
  case 0x3d6:
    return ("evpr");
  case 0x3f4:
    return ("iac1");
  case 0x3f5:
    return ("iac2");
  case 0x3b4:
    return ("iac3");
  case 0x3b5:
    return ("iac4");
  case 0x3fb:
    return ("iccr");
  case 0x3d3:
    return ("icdbdr");
  case 0x008:
    return ("lr");
  case 0x3b1:
    return ("pid");
  case 0x3db:
    return ("pit");
  case 0x11f:
    return ("pvr");
  case 0x3b9:
    return ("sgr");
  case 0x3bb:
    return ("sler");
  case 0x110:
    return ("sprg0");
  case 0x111:
    return ("sprg1");
  case 0x112:
    return ("sprg2");
  case 0x113:
    return ("sprg3");
  case 0x114:
    return ("sprg4");
  case 0x115:
    return ("sprg5");
  case 0x116:
    return ("sprg6");
  case 0x117:
    return ("sprg7");
  case 0x104:
    return ("sprg4r");
  case 0x105:
    return ("sprg5r");
  case 0x106:
    return ("sprg6r");
  case 0x107:
    return ("sprg7r");
  case 0x01a:
    return ("srr0");
  case 0x01b:
    return ("srr1");
  case 0x3de:
    return ("srr2");
  case 0x3df:
    return ("srr3");
  case 0x3bc:
    return ("su0r");
  case 0x11c:
    return ("tbl");
  case 0x11d:
    return ("tbu");
  case 0x3da:
    return ("tcr");
  case 0x3d8:
    return ("tsr");
  case 0x100:
    return ("usprg0");
  case 0x001:
    return ("XER");
  case 0x3b0:
    return ("ZPR");
  }
  return (NULL);
}


x86 assembly (clang, -O0):
<disasm_get_spr>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
sub    $0x1,%eax
je     17b6 <disasm_get_spr+0x6b6>
jmp    111b <disasm_get_spr+0x1b>
mov    -0x10(%rbp),%eax
sub    $0x8,%eax
je     15f6 <disasm_get_spr+0x4f6>
jmp    112c <disasm_get_spr+0x2c>
mov    -0x10(%rbp),%eax
sub    $0x9,%eax
je     14c6 <disasm_get_spr+0x3c6>
jmp    113d <disasm_get_spr+0x3d>
mov    -0x10(%rbp),%eax
sub    $0x1a,%eax
je     1716 <disasm_get_spr+0x616>
jmp    114e <disasm_get_spr+0x4e>
mov    -0x10(%rbp),%eax
sub    $0x1b,%eax
je     1726 <disasm_get_spr+0x626>
jmp    115f <disasm_get_spr+0x5f>
mov    -0x10(%rbp),%eax
sub    $0x100,%eax
je     17a6 <disasm_get_spr+0x6a6>
jmp    1172 <disasm_get_spr+0x72>
mov    -0x10(%rbp),%eax
sub    $0x104,%eax
je     16d6 <disasm_get_spr+0x5d6>
jmp    1185 <disasm_get_spr+0x85>
mov    -0x10(%rbp),%eax
sub    $0x105,%eax
je     16e6 <disasm_get_spr+0x5e6>
jmp    1198 <disasm_get_spr+0x98>
mov    -0x10(%rbp),%eax
sub    $0x106,%eax
je     16f6 <disasm_get_spr+0x5f6>
jmp    11ab <disasm_get_spr+0xab>
mov    -0x10(%rbp),%eax
sub    $0x107,%eax
je     1706 <disasm_get_spr+0x606>
jmp    11be <disasm_get_spr+0xbe>
mov    -0x10(%rbp),%eax
sub    $0x110,%eax
je     1656 <disasm_get_spr+0x556>
jmp    11d1 <disasm_get_spr+0xd1>
mov    -0x10(%rbp),%eax
sub    $0x111,%eax
je     1666 <disasm_get_spr+0x566>
jmp    11e4 <disasm_get_spr+0xe4>
mov    -0x10(%rbp),%eax
sub    $0x112,%eax
je     1676 <disasm_get_spr+0x576>
jmp    11f7 <disasm_get_spr+0xf7>
mov    -0x10(%rbp),%eax
sub    $0x113,%eax
je     1686 <disasm_get_spr+0x586>
jmp    120a <disasm_get_spr+0x10a>
mov    -0x10(%rbp),%eax
sub    $0x114,%eax
je     1696 <disasm_get_spr+0x596>
jmp    121d <disasm_get_spr+0x11d>
mov    -0x10(%rbp),%eax
sub    $0x115,%eax
je     16a6 <disasm_get_spr+0x5a6>
jmp    1230 <disasm_get_spr+0x130>
mov    -0x10(%rbp),%eax
sub    $0x116,%eax
je     16b6 <disasm_get_spr+0x5b6>
jmp    1243 <disasm_get_spr+0x143>
mov    -0x10(%rbp),%eax
sub    $0x117,%eax
je     16c6 <disasm_get_spr+0x5c6>
jmp    1256 <disasm_get_spr+0x156>
mov    -0x10(%rbp),%eax
sub    $0x11c,%eax
je     1766 <disasm_get_spr+0x666>
jmp    1269 <disasm_get_spr+0x169>
mov    -0x10(%rbp),%eax
sub    $0x11d,%eax
je     1776 <disasm_get_spr+0x676>
jmp    127c <disasm_get_spr+0x17c>
mov    -0x10(%rbp),%eax
sub    $0x11f,%eax
je     1626 <disasm_get_spr+0x526>
jmp    128f <disasm_get_spr+0x18f>
mov    -0x10(%rbp),%eax
sub    $0x3b0,%eax
je     17c6 <disasm_get_spr+0x6c6>
jmp    12a2 <disasm_get_spr+0x1a2>
mov    -0x10(%rbp),%eax
sub    $0x3b1,%eax
je     1606 <disasm_get_spr+0x506>
jmp    12b5 <disasm_get_spr+0x1b5>
mov    -0x10(%rbp),%eax
sub    $0x3b3,%eax
je     14b6 <disasm_get_spr+0x3b6>
jmp    12c8 <disasm_get_spr+0x1c8>
mov    -0x10(%rbp),%eax
sub    $0x3b4,%eax
je     15b6 <disasm_get_spr+0x4b6>
jmp    12db <disasm_get_spr+0x1db>
mov    -0x10(%rbp),%eax
sub    $0x3b5,%eax
je     15c6 <disasm_get_spr+0x4c6>
jmp    12ee <disasm_get_spr+0x1ee>
mov    -0x10(%rbp),%eax
sub    $0x3b6,%eax
je     1546 <disasm_get_spr+0x446>
jmp    1301 <disasm_get_spr+0x201>
mov    -0x10(%rbp),%eax
sub    $0x3b7,%eax
je     1556 <disasm_get_spr+0x456>
jmp    1314 <disasm_get_spr+0x214>
mov    -0x10(%rbp),%eax
sub    $0x3b9,%eax
je     1636 <disasm_get_spr+0x536>
jmp    1327 <disasm_get_spr+0x227>
mov    -0x10(%rbp),%eax
sub    $0x3ba,%eax
je     1536 <disasm_get_spr+0x436>
jmp    133a <disasm_get_spr+0x23a>
mov    -0x10(%rbp),%eax
sub    $0x3bb,%eax
je     1646 <disasm_get_spr+0x546>
jmp    134d <disasm_get_spr+0x24d>
mov    -0x10(%rbp),%eax
sub    $0x3bc,%eax
je     1756 <disasm_get_spr+0x656>
jmp    1360 <disasm_get_spr+0x260>
mov    -0x10(%rbp),%eax
sub    $0x3bd,%eax
je     1506 <disasm_get_spr+0x406>
jmp    1373 <disasm_get_spr+0x273>
mov    -0x10(%rbp),%eax
sub    $0x3d3,%eax
je     15e6 <disasm_get_spr+0x4e6>
jmp    1386 <disasm_get_spr+0x286>
mov    -0x10(%rbp),%eax
sub    $0x3d4,%eax
je     1576 <disasm_get_spr+0x476>
jmp    1399 <disasm_get_spr+0x299>
mov    -0x10(%rbp),%eax
sub    $0x3d5,%eax
je     1566 <disasm_get_spr+0x466>
jmp    13ac <disasm_get_spr+0x2ac>
mov    -0x10(%rbp),%eax
sub    $0x3d6,%eax
je     1586 <disasm_get_spr+0x486>
jmp    13bf <disasm_get_spr+0x2bf>
mov    -0x10(%rbp),%eax
sub    $0x3d8,%eax
je     1796 <disasm_get_spr+0x696>
jmp    13d2 <disasm_get_spr+0x2d2>
mov    -0x10(%rbp),%eax
sub    $0x3da,%eax
je     1786 <disasm_get_spr+0x686>
jmp    13e5 <disasm_get_spr+0x2e5>
mov    -0x10(%rbp),%eax
sub    $0x3db,%eax
je     1616 <disasm_get_spr+0x516>
jmp    13f8 <disasm_get_spr+0x2f8>
mov    -0x10(%rbp),%eax
sub    $0x3de,%eax
je     1736 <disasm_get_spr+0x636>
jmp    140b <disasm_get_spr+0x30b>
mov    -0x10(%rbp),%eax
sub    $0x3df,%eax
je     1746 <disasm_get_spr+0x646>
jmp    141e <disasm_get_spr+0x31e>
mov    -0x10(%rbp),%eax
sub    $0x3f0,%eax
je     1516 <disasm_get_spr+0x416>
jmp    1431 <disasm_get_spr+0x331>
mov    -0x10(%rbp),%eax
sub    $0x3f2,%eax
je     14f6 <disasm_get_spr+0x3f6>
jmp    1444 <disasm_get_spr+0x344>
mov    -0x10(%rbp),%eax
sub    $0x3f4,%eax
je     1596 <disasm_get_spr+0x496>
jmp    1457 <disasm_get_spr+0x357>
mov    -0x10(%rbp),%eax
sub    $0x3f5,%eax
je     15a6 <disasm_get_spr+0x4a6>
jmp    146a <disasm_get_spr+0x36a>
mov    -0x10(%rbp),%eax
sub    $0x3f6,%eax
je     14d6 <disasm_get_spr+0x3d6>
jmp    147d <disasm_get_spr+0x37d>
mov    -0x10(%rbp),%eax
sub    $0x3f7,%eax
je     14e6 <disasm_get_spr+0x3e6>
jmp    1490 <disasm_get_spr+0x390>
mov    -0x10(%rbp),%eax
sub    $0x3fa,%eax
je     1526 <disasm_get_spr+0x426>
jmp    14a3 <disasm_get_spr+0x3a3>
mov    -0x10(%rbp),%eax
sub    $0x3fb,%eax
je     15d6 <disasm_get_spr+0x4d6>
jmp    17d6 <disasm_get_spr+0x6d6>
lea    0xb43(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xb38(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xb2c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xb21(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xb16(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xb0c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xb02(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xaf7(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xaec(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xae1(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xad6(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xacb(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xac0(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xab4(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xaa9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa9e(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa93(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa88(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa7d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa72(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa69(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa5c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa50(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa44(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa38(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa2c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa91(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa11(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0xa07(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9fd(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9f3(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9e9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9df(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9d5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9cb(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9c2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9b9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9b0(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x9a7(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x99c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x991(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x986(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x97b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x970(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x964(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x958(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x94c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x940(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x937(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
lea    0x92b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17de <disasm_get_spr+0x6de>
movq   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<disasm_get_spr>:
lea    -0x3b0(%rdi),%ecx
cmp    $0x4b,%ecx
ja     112a <disasm_get_spr+0x2a>
lea    0x110a(%rip),%rax
lea    0xfd3(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0x11eb(%rip),%rax
ret
lea    -0x100(%rdi),%eax
cmp    $0x1f,%eax
ja     114d <disasm_get_spr+0x4d>
lea    0xf30(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x11bd(%rip),%rax
ret
add    $0xffffffff,%edi
cmp    $0x1a,%edi
ja     12c1 <disasm_get_spr+0x1c1>
lea    0xea0(%rip),%rax
movslq (%rax,%rdi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    0x11a0(%rip),%rax
ret
lea    0x110d(%rip),%rax
ret
lea    0x10ec(%rip),%rax
ret
lea    0x10e9(%rip),%rax
ret
lea    0x10ba(%rip),%rax
ret
lea    0x10b7(%rip),%rax
ret
lea    0x10f1(%rip),%rax
ret
lea    0x109d(%rip),%rax
ret
lea    0x10e5(%rip),%rax
ret
lea    0x113c(%rip),%rax
ret
lea    0x1075(%rip),%rax
ret
lea    0x10b3(%rip),%rax
ret
lea    0x1089(%rip),%rax
ret
lea    0x107c(%rip),%rax
ret
lea    0x107d(%rip),%rax
ret
lea    0x111d(%rip),%rax
ret
lea    0x1111(%rip),%rax
ret
lea    0x1091(%rip),%rax
ret
lea    0x10ea(%rip),%rax
ret
lea    0x10e7(%rip),%rax
ret
lea    0x102b(%rip),%rax
ret
lea    0x1017(%rip),%rax
ret
lea    0x1042(%rip),%rax
ret
lea    0x103f(%rip),%rax
ret
lea    0xff5(%rip),%rax
ret
lea    0xff2(%rip),%rax
ret
lea    0x1000(%rip),%rax
ret
lea    0x102e(%rip),%rax
ret
lea    0x1074(%rip),%rax
ret
lea    0x1073(%rip),%rax
ret
lea    0x1072(%rip),%rax
ret
lea    0x1071(%rip),%rax
ret
lea    0x109a(%rip),%rax
ret
lea    0x1022(%rip),%rax
ret
lea    0x1020(%rip),%rax
ret
lea    0x101e(%rip),%rax
ret
lea    0x101c(%rip),%rax
ret
lea    0x101a(%rip),%rax
ret
lea    0x1018(%rip),%rax
ret
lea    0x1016(%rip),%rax
ret
lea    0x1049(%rip),%rax
ret
lea    0x1045(%rip),%rax
ret
lea    0xfcd(%rip),%rax
ret
xor    %eax,%eax
ret
lea    0xfb7(%rip),%rax
ret
lea    0xf4e(%rip),%rax
ret
lea    0x1005(%rip),%rax
ret
lea    0x1002(%rip),%rax
ret

LLVM IR (-O0):
@.str = [5 x i8] c"ccr0\00"
@.str.1 = [4 x i8] c"ctr\00"
@.str.2 = [5 x i8] c"dac1\00"
@.str.3 = [5 x i8] c"dac2\00"
@.str.4 = [6 x i8] c"dbcr0\00"
@.str.5 = [6 x i8] c"dbcr1\00"
@.str.6 = [5 x i8] c"dbsr\00"
@.str.7 = [5 x i8] c"dccr\00"
@.str.8 = [5 x i8] c"dcwr\00"
@.str.9 = [5 x i8] c"dvc1\00"
@.str.10 = [5 x i8] c"dvc2\00"
@.str.11 = [5 x i8] c"dear\00"
@.str.12 = [4 x i8] c"esr\00"
@.str.13 = [5 x i8] c"evpr\00"
@.str.14 = [5 x i8] c"iac1\00"
@.str.15 = [5 x i8] c"iac2\00"
@.str.16 = [5 x i8] c"iac3\00"
@.str.17 = [5 x i8] c"iac4\00"
@.str.18 = [5 x i8] c"iccr\00"
@.str.19 = [7 x i8] c"icdbdr\00"
@.str.20 = [3 x i8] c"lr\00"
@.str.21 = [4 x i8] c"pid\00"
@.str.22 = [4 x i8] c"pit\00"
@.str.23 = [4 x i8] c"pvr\00"
@.str.24 = [4 x i8] c"sgr\00"
@.str.25 = [5 x i8] c"sler\00"
@.str.26 = [6 x i8] c"sprg0\00"
@.str.27 = [6 x i8] c"sprg1\00"
@.str.28 = [6 x i8] c"sprg2\00"
@.str.29 = [6 x i8] c"sprg3\00"
@.str.30 = [6 x i8] c"sprg4\00"
@.str.31 = [6 x i8] c"sprg5\00"
@.str.32 = [6 x i8] c"sprg6\00"
@.str.33 = [6 x i8] c"sprg7\00"
@.str.34 = [7 x i8] c"sprg4r\00"
@.str.35 = [7 x i8] c"sprg5r\00"
@.str.36 = [7 x i8] c"sprg6r\00"
@.str.37 = [7 x i8] c"sprg7r\00"
@.str.38 = [5 x i8] c"srr0\00"
@.str.39 = [5 x i8] c"srr1\00"
@.str.40 = [5 x i8] c"srr2\00"
@.str.41 = [5 x i8] c"srr3\00"
@.str.42 = [5 x i8] c"su0r\00"
@.str.43 = [4 x i8] c"tbl\00"
@.str.44 = [4 x i8] c"tbu\00"
@.str.45 = [4 x i8] c"tcr\00"
@.str.46 = [4 x i8] c"tsr\00"
@.str.47 = [7 x i8] c"usprg0\00"
@.str.48 = [4 x i8] c"XER\00"
@.str.49 = [4 x i8] c"ZPR\00"
define i8* @disasm_get_spr(i32 %0) {
%2 = alloca i8*
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %55 [
i32 947, label %5
i32 9, label %6
i32 1014, label %7
i32 1015, label %8
i32 1010, label %9
i32 957, label %10
i32 1008, label %11
i32 1018, label %12
i32 954, label %13
i32 950, label %14
i32 951, label %15
i32 981, label %16
i32 980, label %17
i32 982, label %18
i32 1012, label %19
i32 1013, label %20
i32 948, label %21
i32 949, label %22
i32 1019, label %23
i32 979, label %24
i32 8, label %25
i32 945, label %26
i32 987, label %27
i32 287, label %28
i32 953, label %29
i32 955, label %30
i32 272, label %31
i32 273, label %32
i32 274, label %33
i32 275, label %34
i32 276, label %35
i32 277, label %36
i32 278, label %37
i32 279, label %38
i32 260, label %39
i32 261, label %40
i32 262, label %41
i32 263, label %42
i32 26, label %43
i32 27, label %44
i32 990, label %45
i32 991, label %46
i32 956, label %47
i32 284, label %48
i32 285, label %49
i32 986, label %50
i32 984, label %51
i32 256, label %52
i32 1, label %53
i32 944, label %54
]
5: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i8** %2
br label %56
6: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %56
7: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %56
8: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %56
9: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %56
10: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %56
11: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %56
12: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %56
13: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %56
14: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %56
15: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %56
16: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %56
17: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %56
18: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %56
19: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %56
20: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %56
21: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %56
22: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %56
23: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %56
24: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %56
25: ; preds = %1
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %56
26: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), i8** %2
br label %56
27: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), i8** %2
br label %56
28: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), i8** %2
br label %56
29: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i8** %2
br label %56
30: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0), i8** %2
br label %56
31: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %2
br label %56
32: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), i8** %2
br label %56
33: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.28, i64 0, i64 0), i8** %2
br label %56
34: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.29, i64 0, i64 0), i8** %2
br label %56
35: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.30, i64 0, i64 0), i8** %2
br label %56
36: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0), i8** %2
br label %56
37: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.32, i64 0, i64 0), i8** %2
br label %56
38: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.33, i64 0, i64 0), i8** %2
br label %56
39: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0), i8** %2
br label %56
40: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.35, i64 0, i64 0), i8** %2
br label %56
41: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.36, i64 0, i64 0), i8** %2
br label %56
42: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), i8** %2
br label %56
43: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.38, i64 0, i64 0), i8** %2
br label %56
44: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.39, i64 0, i64 0), i8** %2
br label %56
45: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.40, i64 0, i64 0), i8** %2
br label %56
46: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.41, i64 0, i64 0), i8** %2
br label %56
47: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.42, i64 0, i64 0), i8** %2
br label %56
48: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.43, i64 0, i64 0), i8** %2
br label %56
49: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i8** %2
br label %56
50: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.45, i64 0, i64 0), i8** %2
br label %56
51: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.46, i64 0, i64 0), i8** %2
br label %56
52: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.47, i64 0, i64 0), i8** %2
br label %56
53: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.48, i64 0, i64 0), i8** %2
br label %56
54: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.49, i64 0, i64 0), i8** %2
br label %56
55: ; preds = %1
store i8* null, i8** %2
br label %56
56: ; preds = %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5
%57 = load i8*, i8** %2
ret i8* %57
}

LLVM IR (-O2):
@.str = [5 x i8] c"ccr0\00"
@.str.1 = [4 x i8] c"ctr\00"
@.str.2 = [5 x i8] c"dac1\00"
@.str.3 = [5 x i8] c"dac2\00"
@.str.4 = [6 x i8] c"dbcr0\00"
@.str.5 = [6 x i8] c"dbcr1\00"
@.str.6 = [5 x i8] c"dbsr\00"
@.str.7 = [5 x i8] c"dccr\00"
@.str.8 = [5 x i8] c"dcwr\00"
@.str.9 = [5 x i8] c"dvc1\00"
@.str.10 = [5 x i8] c"dvc2\00"
@.str.11 = [5 x i8] c"dear\00"
@.str.12 = [4 x i8] c"esr\00"
@.str.13 = [5 x i8] c"evpr\00"
@.str.14 = [5 x i8] c"iac1\00"
@.str.15 = [5 x i8] c"iac2\00"
@.str.16 = [5 x i8] c"iac3\00"
@.str.17 = [5 x i8] c"iac4\00"
@.str.18 = [5 x i8] c"iccr\00"
@.str.19 = [7 x i8] c"icdbdr\00"
@.str.20 = [3 x i8] c"lr\00"
@.str.21 = [4 x i8] c"pid\00"
@.str.22 = [4 x i8] c"pit\00"
@.str.23 = [4 x i8] c"pvr\00"
@.str.24 = [4 x i8] c"sgr\00"
@.str.25 = [5 x i8] c"sler\00"
@.str.26 = [6 x i8] c"sprg0\00"
@.str.27 = [6 x i8] c"sprg1\00"
@.str.28 = [6 x i8] c"sprg2\00"
@.str.29 = [6 x i8] c"sprg3\00"
@.str.30 = [6 x i8] c"sprg4\00"
@.str.31 = [6 x i8] c"sprg5\00"
@.str.32 = [6 x i8] c"sprg6\00"
@.str.33 = [6 x i8] c"sprg7\00"
@.str.34 = [7 x i8] c"sprg4r\00"
@.str.35 = [7 x i8] c"sprg5r\00"
@.str.36 = [7 x i8] c"sprg6r\00"
@.str.37 = [7 x i8] c"sprg7r\00"
@.str.38 = [5 x i8] c"srr0\00"
@.str.39 = [5 x i8] c"srr1\00"
@.str.40 = [5 x i8] c"srr2\00"
@.str.41 = [5 x i8] c"srr3\00"
@.str.42 = [5 x i8] c"su0r\00"
@.str.43 = [4 x i8] c"tbl\00"
@.str.44 = [4 x i8] c"tbu\00"
@.str.45 = [4 x i8] c"tcr\00"
@.str.46 = [4 x i8] c"tsr\00"
@.str.47 = [7 x i8] c"usprg0\00"
@.str.48 = [4 x i8] c"XER\00"
@.str.49 = [4 x i8] c"ZPR\00"
define i8* @disasm_get_spr(i32 %0) {
switch i32 %0, label %51 [
i32 947, label %52
i32 9, label %2
i32 1014, label %3
i32 1015, label %4
i32 1010, label %5
i32 957, label %6
i32 1008, label %7
i32 1018, label %8
i32 954, label %9
i32 950, label %10
i32 951, label %11
i32 981, label %12
i32 980, label %13
i32 982, label %14
i32 1012, label %15
i32 1013, label %16
i32 948, label %17
i32 949, label %18
i32 1019, label %19
i32 979, label %20
i32 8, label %21
i32 945, label %22
i32 987, label %23
i32 287, label %24
i32 953, label %25
i32 955, label %26
i32 272, label %27
i32 273, label %28
i32 274, label %29
i32 275, label %30
i32 276, label %31
i32 277, label %32
i32 278, label %33
i32 279, label %34
i32 260, label %35
i32 261, label %36
i32 262, label %37
i32 263, label %38
i32 26, label %39
i32 27, label %40
i32 990, label %41
i32 991, label %42
i32 956, label %43
i32 284, label %44
i32 285, label %45
i32 986, label %46
i32 984, label %47
i32 256, label %48
i32 1, label %49
i32 944, label %50
]
2: ; preds = %1
br label %52
3: ; preds = %1
br label %52
4: ; preds = %1
br label %52
5: ; preds = %1
br label %52
6: ; preds = %1
br label %52
7: ; preds = %1
br label %52
8: ; preds = %1
br label %52
9: ; preds = %1
br label %52
10: ; preds = %1
br label %52
11: ; preds = %1
br label %52
12: ; preds = %1
br label %52
13: ; preds = %1
br label %52
14: ; preds = %1
br label %52
15: ; preds = %1
br label %52
16: ; preds = %1
br label %52
17: ; preds = %1
br label %52
18: ; preds = %1
br label %52
19: ; preds = %1
br label %52
20: ; preds = %1
br label %52
21: ; preds = %1
br label %52
22: ; preds = %1
br label %52
23: ; preds = %1
br label %52
24: ; preds = %1
br label %52
25: ; preds = %1
br label %52
26: ; preds = %1
br label %52
27: ; preds = %1
br label %52
28: ; preds = %1
br label %52
29: ; preds = %1
br label %52
30: ; preds = %1
br label %52
31: ; preds = %1
br label %52
32: ; preds = %1
br label %52
33: ; preds = %1
br label %52
34: ; preds = %1
br label %52
35: ; preds = %1
br label %52
36: ; preds = %1
br label %52
37: ; preds = %1
br label %52
38: ; preds = %1
br label %52
39: ; preds = %1
br label %52
40: ; preds = %1
br label %52
41: ; preds = %1
br label %52
42: ; preds = %1
br label %52
43: ; preds = %1
br label %52
44: ; preds = %1
br label %52
45: ; preds = %1
br label %52
46: ; preds = %1
br label %52
47: ; preds = %1
br label %52
48: ; preds = %1
br label %52
49: ; preds = %1
br label %52
50: ; preds = %1
br label %52
51: ; preds = %1
br label %52
52: ; preds = %1, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2
%53 = phi i8* [ null, %51 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.49, i64 0, i64 0), %50 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.48, i64 0, i64 0), %49 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.47, i64 0, i64 0), %48 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.46, i64 0, i64 0), %47 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.45, i64 0, i64 0), %46 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), %45 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.43, i64 0, i64 0), %44 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.42, i64 0, i64 0), %43 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.41, i64 0, i64 0), %42 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.40, i64 0, i64 0), %41 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.39, i64 0, i64 0), %40 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.38, i64 0, i64 0), %39 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), %38 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.36, i64 0, i64 0), %37 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.35, i64 0, i64 0), %36 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0), %35 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.33, i64 0, i64 0), %34 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.32, i64 0, i64 0), %33 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0), %32 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.30, i64 0, i64 0), %31 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.29, i64 0, i64 0), %30 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.28, i64 0, i64 0), %29 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), %28 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), %27 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0), %26 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), %25 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), %24 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), %23 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), %22 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), %21 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.19, i64 0, i64 0), %20 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), %19 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), %18 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0), %17 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), %16 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), %15 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), %14 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), %13 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), %12 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), %11 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), %10 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), %9 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0), %8 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), %7 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), %6 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), %5 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), %4 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), %3 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), %2 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), %1 ]
ret i8* %53
}