void print_mz(unsigned cfg0, unsigned cfg1, unsigned cfg2, unsigned cfg3) {
  printf("    DEVCFG0 = %08x\n", cfg0);
  if ((~cfg0 & 0x00000003) == 0x00000002)
    printf("                     %u Debugger enabled\n", 0x00000003);
  else
    printf("                     %u Debugger disabled\n", 0x00000003);
  if (~cfg0 & 0x00000004)
    printf("                     %u JTAG disabled\n", 0x00000004);
  else
    printf("                     %u JTAG enabled\n", 0x00000004);
  if (~cfg0 & 0x00000008)
    printf("                     %u Use PGC2/PGD2\n", 0x00000008);
  if (~cfg0 & 0x00000020)
    printf("                    %u  Trace port disabled\n", 0x00000020 >> 4);
  if (~cfg0 & 0x00000040)
    printf("                    %u  Boot in microMIPS mode\n", 0x00000040 >> 4);
  switch (~cfg0 & 0x00000300) {
  case 0x00000300:
    printf("                   %u   Flash ECC enabled\n", 0x00000300 >> 8);
    break;
  case 0x00000200:
    printf("                   %u   Dynamic Flash ECC enabled\n",
           0x00000200 >> 8);
    break;
  case 0x00000100:
    printf("                   %u   Flash ECC disabled, locked\n",
           0x00000100 >> 8);
    break;
  default:
    printf("                   %u   Flash ECC disabled, unlocked\n",
           0x00000300 >> 8);
    break;
  }
  if (~cfg0 & 0x00000400)
    printf("                   %u   Flash power down controlled by VREGS bit\n",
           0x00000400 >> 8);
  if (~cfg0 & 0x00001000)
    printf("                  %u    Deny Debug access to group 0 regions\n",
           0x00001000 >> 12);
  if (~cfg0 & 0x00002000)
    printf("                  %u    Deny Debug access to group 1 regions\n",
           0x00002000 >> 12);
  if (~cfg0 & 0x00004000)
    printf("                  %u    Deny Debug access to group 2 regions\n",
           0x00004000 >> 12);
  if (~cfg0 & 0x40000000)
    printf("               %u       Reduced EJTAG functionality\n",
           0x40000000 >> 28);
  printf("    DEVCFG1 = %08x\n", cfg1);
  switch (cfg1 & 0x00000007) {
  case 0x00000001:
    printf("                     %u System PLL\n", 0x00000001);
    break;
  case 0x00000002:
    printf("                     %u Primary oscillator\n", 0x00000002);
    break;
  case 0x00000004:
    printf("                     %u Secondary oscillator\n", 0x00000004);
    break;
  case 0x00000005:
    printf("                     %u Low-power RC oscillator\n", 0x00000005);
    break;
  case 0x00000007:
    printf("                     %u Fast RC oscillator with divide-by-N\n",
           0x00000007);
    break;
  default:
    printf("                     %u UNKNOWN\n", cfg1 & 0x00000007);
    break;
  }
  if (cfg1 & 0x80000000) {
    switch (cfg1 & 0x00000038) {
    case 0x00000008:
      printf("                    %02x Deadman timer: 1/2\n", 0x00000008);
      break;
    case 0x00000010:
      printf("                    %02x Deadman timer: 3/4\n", 0x00000010);
      break;
    case 0x00000018:
      printf("                    %02x Deadman timer: 7/8\n", 0x00000018);
      break;
    case 0x00000020:
      printf("                    %02x Deadman timer: 15/16\n", 0x00000020);
      break;
    case 0x00000028:
      printf("                    %02x Deadman timer: 31/32\n", 0x00000028);
      break;
    case 0x00000030:
      printf("                    %02x Deadman timer: 63/64\n", 0x00000030);
      break;
    case 0x00000038:
      printf("                    %02x Deadman timer: 127/128\n", 0x00000038);
      break;
    }
  }
  if (cfg1 & 0x00000040)
    printf("                    %u  Secondary oscillator enabled\n",
           0x00000040 >> 4);
  if (cfg1 & 0x00000080)
    printf("                    %u  Internal-external switch over enabled\n",
           0x00000080 >> 4);
  switch (cfg1 & 0x00000300) {
  case 0x00000000:
    printf("                   %u   Primary oscillator: External\n",
           0x00000000 >> 8);
    break;
  case 0x00000200:
    printf("                   %u   Primary oscillator: HS\n", 0x00000200 >> 8);
    break;
  case 0x00000300:
    printf("                   %u   Primary oscillator: disabled\n",
           0x00000300 >> 8);
    break;
  }
  if (cfg1 & 0x00000400)
    printf("                   %u   CLKO output disabled\n", 0x00000400 >> 8);
  if (cfg1 & 0x00004000)
    printf("                  %u    Clock switching enabled\n",
           0x00004000 >> 12);
  if (cfg1 & 0x00008000)
    printf("                  %u    Fail-safe clock monitor enabled\n",
           0x00008000 >> 12);
  if (cfg1 & 0x00800000) {
    switch (cfg1 & 0x001f0000) {
    case 0x00000000:
      printf("                %2x     Watchdog postscale: 1/1\n",
             0x00000000 >> 16);
      break;
    case 0x00010000:
      printf("                %2x     Watchdog postscale: 1/2\n",
             0x00010000 >> 16);
      break;
    case 0x00020000:
      printf("                %2x     Watchdog postscale: 1/4\n",
             0x00020000 >> 16);
      break;
    case 0x00030000:
      printf("                %2x     Watchdog postscale: 1/8\n",
             0x00030000 >> 16);
      break;
    case 0x00040000:
      printf("                %2x     Watchdog postscale: 1/16\n",
             0x00040000 >> 16);
      break;
    case 0x00050000:
      printf("                %2x     Watchdog postscale: 1/32\n",
             0x00050000 >> 16);
      break;
    case 0x00060000:
      printf("                %2x     Watchdog postscale: 1/64\n",
             0x00060000 >> 16);
      break;
    case 0x00070000:
      printf("                %2x     Watchdog postscale: 1/128\n",
             0x00070000 >> 16);
      break;
    case 0x00080000:
      printf("                %2x     Watchdog postscale: 1/256\n",
             0x00080000 >> 16);
      break;
    case 0x00090000:
      printf("                %2x     Watchdog postscale: 1/512\n",
             0x00090000 >> 16);
      break;
    case 0x000a0000:
      printf("                %2x     Watchdog postscale: 1/1024\n",
             0x000a0000 >> 16);
      break;
    case 0x000b0000:
      printf("                %2x     Watchdog postscale: 1/2048\n",
             0x000b0000 >> 16);
      break;
    case 0x000c0000:
      printf("                %2x     Watchdog postscale: 1/4096\n",
             0x000c0000 >> 16);
      break;
    case 0x000d0000:
      printf("                %2x     Watchdog postscale: 1/8192\n",
             0x000d0000 >> 16);
      break;
    case 0x000e0000:
      printf("                %2x     Watchdog postscale: 1/16384\n",
             0x000e0000 >> 16);
      break;
    case 0x000f0000:
      printf("                %2x     Watchdog postscale: 1/32768\n",
             0x000f0000 >> 16);
      break;
    case 0x00100000:
      printf("                %2x     Watchdog postscale: 1/65536\n",
             0x00100000 >> 16);
      break;
    case 0x00110000:
      printf("                %2x     Watchdog postscale: 1/131072\n",
             0x00110000 >> 16);
      break;
    case 0x00120000:
      printf("                %2x     Watchdog postscale: 1/262144\n",
             0x00120000 >> 16);
      break;
    case 0x00130000:
      printf("                %2x     Watchdog postscale: 1/524288\n",
             0x00130000 >> 16);
      break;
    case 0x00140000:
      printf("                %2x     Watchdog postscale: 1/1048576\n",
             0x00140000 >> 16);
      break;
    }
    if (cfg1 & 0x00200000)
      printf(
          "                %u      Watchdog stops during Flash programming\n",
          0x00200000 >> 20);
    if (cfg1 & 0x00400000)
      printf("                %u      Watchdog in non-Window mode\n",
             0x00400000 >> 20);
    switch (cfg1 & 0x03000000) {
    case 0x00000000:
      printf("               %x       Watchdog window size: 75%%\n",
             0x00000000 >> 24);
      break;
    case 0x01000000:
      printf("               %x       Watchdog window size: 50%%\n",
             0x01000000 >> 24);
      break;
    case 0x02000000:
      printf("               %x       Watchdog window size: 37.5%%\n",
             0x02000000 >> 24);
      break;
    case 0x03000000:
      printf("               %x       Watchdog window size: 25%%\n",
             0x03000000 >> 24);
      break;
    }
    printf("                %u      Watchdog enable\n", 0x00800000 >> 20);
  }
  if (cfg1 & 0x80000000) {
    int dtc = (cfg1 >> 26) & 31;
    printf("             %02x        Deadman timer count: 2^%u\n", dtc,
           dtc + 8);
    printf("              %u        Deadman timer enable\n", 0x80000000 >> 28);
  }
  printf("    DEVCFG2 = %08x\n", cfg2);
  switch (cfg2 & 0x00000007) {
  case 0x00000000:
    printf("                     %u PLL divider: 1/1\n", 0x00000000);
    break;
  case 0x00000001:
    printf("                     %u PLL divider: 1/2\n", 0x00000001);
    break;
  case 0x00000002:
    printf("                     %u PLL divider: 1/3\n", 0x00000002);
    break;
  case 0x00000003:
    printf("                     %u PLL divider: 1/4\n", 0x00000003);
    break;
  case 0x00000004:
    printf("                     %u PLL divider: 1/5\n", 0x00000004);
    break;
  case 0x00000005:
    printf("                     %u PLL divider: 1/6\n", 0x00000005);
    break;
  case 0x00000006:
    printf("                     %u PLL divider: 1/7\n", 0x00000006);
    break;
  case 0x00000007:
    printf("                     %u PLL divider: 1/8\n", 0x00000007);
    break;
  }
  switch (cfg2 & 0x00000070) {
  case 0x00000010:
    printf("                    %u  PLL input frequency range: 5-10 MHz\n",
           0x00000010 >> 4);
    break;
  case 0x00000020:
    printf("                    %u  PLL input frequency range: 8-16 MHz\n",
           0x00000020 >> 4);
    break;
  case 0x00000030:
    printf("                    %u  PLL input frequency range: 13-26 MHz\n",
           0x00000030 >> 4);
    break;
  case 0x00000040:
    printf("                    %u  PLL input frequency range: 21-42 MHz\n",
           0x00000040 >> 4);
    break;
  case 0x00000050:
    printf("                    %u  PLL input frequency range: 34-64 MHz\n",
           0x00000050 >> 4);
    break;
  }
  if (cfg2 & 0x00000080)
    printf("                    %u  Select FRC as input to PLL\n",
           0x00000080 >> 4);
  int fpllmult = (cfg2 >> 8) & 0x3f;
  printf("                  %02x   PLL feedback divider: x%u\n", fpllmult,
         fpllmult + 1);
  switch (cfg2 & 0x00070000) {
  case 0x00000000:
  case 0x00010000:
    printf("                 %u     PLL postscaler: 1/2\n",
           (cfg2 & 0x00070000) >> 16);
    break;
  case 0x00020000:
    printf("                 %u     PLL postscaler: 1/4\n",
           (cfg2 & 0x00070000) >> 16);
    break;
  case 0x00030000:
    printf("                 %u     PLL postscaler: 1/8\n",
           (cfg2 & 0x00070000) >> 16);
    break;
  case 0x00040000:
    printf("                 %u     PLL postscaler: 1/16\n",
           (cfg2 & 0x00070000) >> 16);
    break;
  case 0x00050000:
  case 0x00060000:
  case 0x00070000:
    printf("                 %u     PLL postscaler: 1/32\n",
           (cfg2 & 0x00070000) >> 16);
    break;
  }
  if (cfg2 & 0x80000000) {
    if (cfg2 & 0x40000000)
      printf("              %u        USB PLL input clock: 24 MHz\n",
             0x40000000 >> 28);
    printf("              %u        Enable USB PLL\n", 0x80000000 >> 28);
  }
  printf("    DEVCFG3 = %08x\n", cfg3);
  if (~cfg3 & 0x0000ffff)
    printf("                  %04x User-defined ID\n", cfg3 & 0x0000ffff);
  if (cfg3 & 0x01000000)
    printf("               %u       Ethernet MII interface enable\n",
           0x01000000 >> 24);
  if (cfg3 & 0x02000000)
    printf("               %u       Default Ethernet pins\n", 0x02000000 >> 24);
  else
    printf("                       Alternate Ethernet pins\n");
  if (cfg3 & 0x08000000)
    printf("               %u       Permission Group Lock - only 1 reconfig\n",
           0x08000000 >> 24);
  if (cfg3 & 0x10000000)
    printf(
        "              %u        Peripheral Module Disable - only 1 reconfig\n",
        0x10000000 >> 28);
  if (cfg3 & 0x20000000)
    printf("              %u        Peripheral Pin Select - only 1 reconfig\n",
           0x20000000 >> 28);
  if (cfg3 & 0x40000000)
    printf("              %u        USBID pin: controlled by USB\n",
           0x40000000 >> 28);
  else
    printf("                       USBID pin: controlled by port\n");
}


x86 assembly (clang, -O0):
<print_mz>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    -0x4(%rbp),%esi
lea    0x1fd2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x3,%eax
cmp    $0x2,%eax
jne    115f <print_mz+0x4f>
lea    0x1fc6(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1172 <print_mz+0x62>
lea    0x1fd8(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     119c <print_mz+0x8c>
lea    0x1fde(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11af <print_mz+0x9f>
lea    0x1fed(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     11d4 <print_mz+0xc4>
lea    0x1fee(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     11f9 <print_mz+0xe9>
lea    0x1ff0(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     121e <print_mz+0x10e>
lea    0x1ff8(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
not    %eax
and    $0x300,%eax
mov    %eax,-0x1c(%rbp)
sub    $0x100,%eax
je     1291 <print_mz+0x181>
jmp    123b <print_mz+0x12b>
mov    -0x1c(%rbp),%eax
sub    $0x200,%eax
je     1279 <print_mz+0x169>
jmp    124e <print_mz+0x13e>
mov    -0x1c(%rbp),%eax
sub    $0x300,%eax
jne    12a9 <print_mz+0x199>
jmp    1261 <print_mz+0x151>
lea    0x1fd2(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12bc <print_mz+0x1ac>
lea    0x1fe5(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12bc <print_mz+0x1ac>
lea    0x2000(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12bc <print_mz+0x1ac>
lea    0x201c(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x400,%eax
cmp    $0x0,%eax
je     12e3 <print_mz+0x1d3>
lea    0x202b(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x1000,%eax
cmp    $0x0,%eax
je     130a <print_mz+0x1fa>
lea    0x2046(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x2000,%eax
cmp    $0x0,%eax
je     1331 <print_mz+0x221>
lea    0x205d(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x4000,%eax
cmp    $0x0,%eax
je     1358 <print_mz+0x248>
lea    0x2074(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
xor    $0xffffffff,%eax
and    $0x40000000,%eax
cmp    $0x0,%eax
je     137f <print_mz+0x26f>
lea    0x208b(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
lea    0x20aa(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x7,%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x6,%eax
ja     1434 <print_mz+0x324>
mov    -0x28(%rbp),%rax
lea    0x1c4d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x2084(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1448 <print_mz+0x338>
lea    0x2090(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1448 <print_mz+0x338>
lea    0x20a4(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1448 <print_mz+0x338>
lea    0x20ba(%rip),%rdi
mov    $0x5,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1448 <print_mz+0x338>
lea    0x20d3(%rip),%rdi
mov    $0x7,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1448 <print_mz+0x338>
mov    -0x8(%rbp),%esi
and    $0x7,%esi
lea    0x20f2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x80000000,%eax
cmp    $0x0,%eax
je     152d <print_mz+0x41d>
mov    -0x8(%rbp),%eax
and    $0x38,%eax
add    $0xfffffff8,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x30,%eax
ja     1528 <print_mz+0x418>
mov    -0x30(%rbp),%rax
lea    0x1ba0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x20c8(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1528 <print_mz+0x418>
lea    0x20dd(%rip),%rdi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1528 <print_mz+0x418>
lea    0x20f2(%rip),%rdi
mov    $0x18,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1528 <print_mz+0x418>
lea    0x2107(%rip),%rdi
mov    $0x20,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1528 <print_mz+0x418>
lea    0x211e(%rip),%rdi
mov    $0x28,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1528 <print_mz+0x418>
lea    0x2135(%rip),%rdi
mov    $0x30,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1528 <print_mz+0x418>
lea    0x214c(%rip),%rdi
mov    $0x38,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    152d <print_mz+0x41d>
mov    -0x8(%rbp),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     154f <print_mz+0x43f>
lea    0x2156(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     1573 <print_mz+0x463>
lea    0x2168(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x300,%eax
mov    %eax,-0x34(%rbp)
je     15af <print_mz+0x49f>
jmp    1589 <print_mz+0x479>
mov    -0x34(%rbp),%eax
sub    $0x200,%eax
je     15c4 <print_mz+0x4b4>
jmp    159c <print_mz+0x48c>
mov    -0x34(%rbp),%eax
sub    $0x300,%eax
je     15dc <print_mz+0x4cc>
jmp    15ef <print_mz+0x4df>
lea    0x2158(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15ef <print_mz+0x4df>
lea    0x2179(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15ef <print_mz+0x4df>
lea    0x2191(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x400,%eax
cmp    $0x0,%eax
je     1613 <print_mz+0x503>
lea    0x21a3(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x4000,%eax
cmp    $0x0,%eax
je     1637 <print_mz+0x527>
lea    0x21ad(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x8000,%eax
cmp    $0x0,%eax
je     165b <print_mz+0x54b>
lea    0x21ba(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x800000,%eax
cmp    $0x0,%eax
je     1af0 <print_mz+0x9e0>
mov    -0x8(%rbp),%eax
and    $0x1f0000,%eax
mov    %eax,-0x38(%rbp)
je     17fe <print_mz+0x6ee>
jmp    1682 <print_mz+0x572>
mov    -0x38(%rbp),%eax
sub    $0x10000,%eax
je     1813 <print_mz+0x703>
jmp    1695 <print_mz+0x585>
mov    -0x38(%rbp),%eax
sub    $0x20000,%eax
je     182b <print_mz+0x71b>
jmp    16a8 <print_mz+0x598>
mov    -0x38(%rbp),%eax
sub    $0x30000,%eax
je     1843 <print_mz+0x733>
jmp    16bb <print_mz+0x5ab>
mov    -0x38(%rbp),%eax
sub    $0x40000,%eax
je     185b <print_mz+0x74b>
jmp    16ce <print_mz+0x5be>
mov    -0x38(%rbp),%eax
sub    $0x50000,%eax
je     1873 <print_mz+0x763>
jmp    16e1 <print_mz+0x5d1>
mov    -0x38(%rbp),%eax
sub    $0x60000,%eax
je     188b <print_mz+0x77b>
jmp    16f4 <print_mz+0x5e4>
mov    -0x38(%rbp),%eax
sub    $0x70000,%eax
je     18a3 <print_mz+0x793>
jmp    1707 <print_mz+0x5f7>
mov    -0x38(%rbp),%eax
sub    $0x80000,%eax
je     18bb <print_mz+0x7ab>
jmp    171a <print_mz+0x60a>
mov    -0x38(%rbp),%eax
sub    $0x90000,%eax
je     18d3 <print_mz+0x7c3>
jmp    172d <print_mz+0x61d>
mov    -0x38(%rbp),%eax
sub    $0xa0000,%eax
je     18eb <print_mz+0x7db>
jmp    1740 <print_mz+0x630>
mov    -0x38(%rbp),%eax
sub    $0xb0000,%eax
je     1903 <print_mz+0x7f3>
jmp    1753 <print_mz+0x643>
mov    -0x38(%rbp),%eax
sub    $0xc0000,%eax
je     191b <print_mz+0x80b>
jmp    1766 <print_mz+0x656>
mov    -0x38(%rbp),%eax
sub    $0xd0000,%eax
je     1933 <print_mz+0x823>
jmp    1779 <print_mz+0x669>
mov    -0x38(%rbp),%eax
sub    $0xe0000,%eax
je     194b <print_mz+0x83b>
jmp    178c <print_mz+0x67c>
mov    -0x38(%rbp),%eax
sub    $0xf0000,%eax
je     1963 <print_mz+0x853>
jmp    179f <print_mz+0x68f>
mov    -0x38(%rbp),%eax
sub    $0x100000,%eax
je     197b <print_mz+0x86b>
jmp    17b2 <print_mz+0x6a2>
mov    -0x38(%rbp),%eax
sub    $0x110000,%eax
je     1993 <print_mz+0x883>
jmp    17c5 <print_mz+0x6b5>
mov    -0x38(%rbp),%eax
sub    $0x120000,%eax
je     19ab <print_mz+0x89b>
jmp    17d8 <print_mz+0x6c8>
mov    -0x38(%rbp),%eax
sub    $0x130000,%eax
je     19c3 <print_mz+0x8b3>
jmp    17eb <print_mz+0x6db>
mov    -0x38(%rbp),%eax
sub    $0x140000,%eax
je     19db <print_mz+0x8cb>
jmp    19ee <print_mz+0x8de>
lea    0x203d(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x2059(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x2072(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x208b(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x20a4(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x20be(%rip),%rdi
mov    $0x5,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x20d8(%rip),%rdi
mov    $0x6,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x20f2(%rip),%rdi
mov    $0x7,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x210d(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x2128(%rip),%rdi
mov    $0x9,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x2143(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x215f(%rip),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x217b(%rip),%rdi
mov    $0xc,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x2197(%rip),%rdi
mov    $0xd,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x21b3(%rip),%rdi
mov    $0xe,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x21d0(%rip),%rdi
mov    $0xf,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x21ed(%rip),%rdi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x220a(%rip),%rdi
mov    $0x11,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x2228(%rip),%rdi
mov    $0x12,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x2246(%rip),%rdi
mov    $0x13,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    19ee <print_mz+0x8de>
lea    0x2264(%rip),%rdi
mov    $0x14,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x200000,%eax
cmp    $0x0,%eax
je     1a12 <print_mz+0x902>
lea    0x2277(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x400000,%eax
cmp    $0x0,%eax
je     1a36 <print_mz+0x926>
lea    0x2294(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x3000000,%eax
mov    %eax,-0x3c(%rbp)
je     1a85 <print_mz+0x975>
jmp    1a4c <print_mz+0x93c>
mov    -0x3c(%rbp),%eax
sub    $0x1000000,%eax
je     1a9a <print_mz+0x98a>
jmp    1a5f <print_mz+0x94f>
mov    -0x3c(%rbp),%eax
sub    $0x2000000,%eax
je     1ab2 <print_mz+0x9a2>
jmp    1a72 <print_mz+0x962>
mov    -0x3c(%rbp),%eax
sub    $0x3000000,%eax
je     1aca <print_mz+0x9ba>
jmp    1add <print_mz+0x9cd>
lea    0x2267(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1add <print_mz+0x9cd>
lea    0x2286(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1add <print_mz+0x9cd>
lea    0x22a2(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1add <print_mz+0x9cd>
lea    0x22c0(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x22e1(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
and    $0x80000000,%eax
cmp    $0x0,%eax
je     1b37 <print_mz+0xa27>
mov    -0x8(%rbp),%eax
shr    $0x1a,%eax
and    $0x1f,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%esi
mov    -0x14(%rbp),%edx
add    $0x8,%edx
lea    0x22d1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x22f7(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%esi
lea    0x230f(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
and    $0x7,%eax
mov    %rax,-0x48(%rbp)
sub    $0x7,%eax
ja     1c27 <print_mz+0xb17>
mov    -0x48(%rbp),%rax
lea    0x157a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x22ee(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1c27 <print_mz+0xb17>
lea    0x2303(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1c27 <print_mz+0xb17>
lea    0x2315(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1c27 <print_mz+0xb17>
lea    0x2327(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1c27 <print_mz+0xb17>
lea    0x2339(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1c27 <print_mz+0xb17>
lea    0x234b(%rip),%rdi
mov    $0x5,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1c27 <print_mz+0xb17>
lea    0x235d(%rip),%rdi
mov    $0x6,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1c27 <print_mz+0xb17>
lea    0x236f(%rip),%rdi
mov    $0x7,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
and    $0x70,%eax
mov    %eax,-0x4c(%rbp)
sub    $0x10,%eax
je     1c82 <print_mz+0xb72>
jmp    1c3e <print_mz+0xb2e>
mov    -0x4c(%rbp),%eax
sub    $0x20,%eax
je     1c9a <print_mz+0xb8a>
jmp    1c4f <print_mz+0xb3f>
mov    -0x4c(%rbp),%eax
sub    $0x30,%eax
je     1cb2 <print_mz+0xba2>
jmp    1c60 <print_mz+0xb50>
mov    -0x4c(%rbp),%eax
sub    $0x40,%eax
je     1cca <print_mz+0xbba>
jmp    1c71 <print_mz+0xb61>
mov    -0x4c(%rbp),%eax
sub    $0x50,%eax
je     1ce2 <print_mz+0xbd2>
jmp    1cf5 <print_mz+0xbe5>
lea    0x232b(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1cf5 <print_mz+0xbe5>
lea    0x2350(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1cf5 <print_mz+0xbe5>
lea    0x2375(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1cf5 <print_mz+0xbe5>
lea    0x239b(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1cf5 <print_mz+0xbe5>
lea    0x23c1(%rip),%rdi
mov    $0x5,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     1d19 <print_mz+0xc09>
lea    0x23db(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
shr    $0x8,%eax
and    $0x3f,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%esi
mov    %esi,%edx
add    $0x1,%edx
lea    0x23e8(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
and    $0x70000,%eax
mov    %eax,-0x50(%rbp)
je     1dd6 <print_mz+0xcc6>
jmp    1d51 <print_mz+0xc41>
mov    -0x50(%rbp),%eax
sub    $0x10000,%eax
je     1dd6 <print_mz+0xcc6>
jmp    1d64 <print_mz+0xc54>
mov    -0x50(%rbp),%eax
sub    $0x20000,%eax
je     1df5 <print_mz+0xce5>
jmp    1d77 <print_mz+0xc67>
mov    -0x50(%rbp),%eax
sub    $0x30000,%eax
je     1e14 <print_mz+0xd04>
jmp    1d8a <print_mz+0xc7a>
mov    -0x50(%rbp),%eax
sub    $0x40000,%eax
je     1e33 <print_mz+0xd23>
jmp    1d9d <print_mz+0xc8d>
mov    -0x50(%rbp),%eax
sub    $0x50000,%eax
je     1e52 <print_mz+0xd42>
jmp    1db0 <print_mz+0xca0>
mov    -0x50(%rbp),%eax
sub    $0x60000,%eax
je     1e52 <print_mz+0xd42>
jmp    1dc3 <print_mz+0xcb3>
mov    -0x50(%rbp),%eax
sub    $0x70000,%eax
je     1e52 <print_mz+0xd42>
jmp    1e6c <print_mz+0xd5c>
mov    -0xc(%rbp),%esi
and    $0x70000,%esi
shr    $0x10,%esi
lea    0x2367(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1e6c <print_mz+0xd5c>
mov    -0xc(%rbp),%esi
and    $0x70000,%esi
shr    $0x10,%esi
lea    0x2375(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1e6c <print_mz+0xd5c>
mov    -0xc(%rbp),%esi
and    $0x70000,%esi
shr    $0x10,%esi
lea    0x2383(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1e6c <print_mz+0xd5c>
mov    -0xc(%rbp),%esi
and    $0x70000,%esi
shr    $0x10,%esi
lea    0x2391(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1e6c <print_mz+0xd5c>
mov    -0xc(%rbp),%esi
and    $0x70000,%esi
shr    $0x10,%esi
lea    0x23a0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
and    $0x80000000,%eax
cmp    $0x0,%eax
je     1eb4 <print_mz+0xda4>
mov    -0xc(%rbp),%eax
and    $0x40000000,%eax
cmp    $0x0,%eax
je     1ea1 <print_mz+0xd91>
lea    0x239e(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x23c0(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
lea    0x23d2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
xor    $0xffffffff,%eax
and    $0xffff,%eax
cmp    $0x0,%eax
je     1ef0 <print_mz+0xde0>
mov    -0x10(%rbp),%esi
and    $0xffff,%esi
lea    0x23bb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
and    $0x1000000,%eax
cmp    $0x0,%eax
je     1f14 <print_mz+0xe04>
lea    0x23c4(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
and    $0x2000000,%eax
cmp    $0x0,%eax
je     1f3d <print_mz+0xe2d>
lea    0x23d7(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1f4b <print_mz+0xe3b>
lea    0x23ee(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
and    $0x8000000,%eax
cmp    $0x0,%eax
je     1f6f <print_mz+0xe5f>
lea    0x23ff(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
and    $0x10000000,%eax
cmp    $0x0,%eax
je     1f93 <print_mz+0xe83>
lea    0x241c(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
and    $0x20000000,%eax
cmp    $0x0,%eax
je     1fb7 <print_mz+0xea7>
lea    0x243d(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
and    $0x40000000,%eax
cmp    $0x0,%eax
je     1fe0 <print_mz+0xed0>
lea    0x245a(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1fee <print_mz+0xede>
lea    0x2478(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_mz>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %ecx,%r14d
mov    %edx,%r15d
mov    %esi,%ebx
mov    %edi,%ebp
lea    0xfb8(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
not    %ebp
mov    %ebp,%eax
and    $0x3,%eax
cmp    $0x2,%eax
lea    0xfb2(%rip),%rax
lea    0xfd5(%rip),%rdi
cmove  %rax,%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x4,%bpl
lea    0x100c(%rip),%rax
lea    0xfde(%rip),%rdi
cmove  %rax,%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x8,%bpl
jne    11d5 <print_mz+0xb5>
test   $0x20,%bpl
jne    11ee <print_mz+0xce>
test   $0x40,%bpl
je     11b0 <print_mz+0x90>
lea    0x1056(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebp,%eax
and    $0x300,%eax
cmp    $0x100,%eax
je     1209 <print_mz+0xe9>
cmp    $0x200,%eax
je     1217 <print_mz+0xf7>
cmp    $0x300,%eax
jne    1225 <print_mz+0x105>
lea    0x1057(%rip),%rdi
jmp    122c <print_mz+0x10c>
lea    0xfca(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x20,%bpl
je     1197 <print_mz+0x77>
lea    0xfd8(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40,%bpl
jne    119d <print_mz+0x7d>
jmp    11b0 <print_mz+0x90>
lea    0x1078(%rip),%rdi
mov    $0x1,%esi
jmp    1231 <print_mz+0x111>
lea    0x1037(%rip),%rdi
mov    $0x2,%esi
jmp    1231 <print_mz+0x111>
lea    0x1090(%rip),%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x400,%ebp
jne    12c5 <print_mz+0x1a5>
test   $0x1000,%ebp
jne    12e4 <print_mz+0x1c4>
test   $0x2000,%ebp
jne    1303 <print_mz+0x1e3>
test   $0x4000,%ebp
jne    1322 <print_mz+0x202>
test   $0x40000000,%ebp
je     1283 <print_mz+0x163>
lea    0x1177(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x1199(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%esi
and    $0x7,%esi
lea    -0x1(%rsi),%eax
cmp    $0x6,%eax
ja     1354 <print_mz+0x234>
lea    0xd55(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x117c(%rip),%rdi
mov    $0x1,%esi
jmp    1385 <print_mz+0x265>
lea    0x1026(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x1000,%ebp
je     1250 <print_mz+0x130>
lea    0x1049(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x2000,%ebp
je     125c <print_mz+0x13c>
lea    0x1068(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x4000,%ebp
je     1268 <print_mz+0x148>
lea    0x1087(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40000000,%ebp
jne    1270 <print_mz+0x150>
jmp    1283 <print_mz+0x163>
lea    0x110e(%rip),%rdi
mov    $0x2,%esi
jmp    1385 <print_mz+0x265>
lea    0x11c8(%rip),%rdi
jmp    1385 <print_mz+0x265>
lea    0x1123(%rip),%rdi
mov    $0x4,%esi
jmp    1385 <print_mz+0x265>
lea    0x1143(%rip),%rdi
mov    $0x5,%esi
jmp    1385 <print_mz+0x265>
lea    0x1166(%rip),%rdi
mov    $0x7,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   %ebx,%ebx
jns    141b <print_mz+0x2fb>
mov    %ebx,%eax
and    $0x38,%eax
add    $0xfffffff8,%eax
shr    $0x3,%eax
cmp    $0x6,%eax
ja     141b <print_mz+0x2fb>
lea    0xc71(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1189(%rip),%rdi
mov    $0x8,%esi
jmp    1414 <print_mz+0x2f4>
lea    0x11a8(%rip),%rdi
mov    $0x10,%esi
jmp    1414 <print_mz+0x2f4>
lea    0x11c7(%rip),%rdi
mov    $0x18,%esi
jmp    1414 <print_mz+0x2f4>
lea    0x11e6(%rip),%rdi
mov    $0x20,%esi
jmp    1414 <print_mz+0x2f4>
lea    0x1207(%rip),%rdi
mov    $0x28,%esi
jmp    1414 <print_mz+0x2f4>
lea    0x1228(%rip),%rdi
mov    $0x30,%esi
jmp    1414 <print_mz+0x2f4>
lea    0x1249(%rip),%rdi
mov    $0x38,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40,%bl
je     1433 <print_mz+0x313>
lea    0x1262(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x80,%bl
je     144b <print_mz+0x32b>
lea    0x1280(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
and    $0x300,%eax
cmp    $0x300,%eax
je     14dd <print_mz+0x3bd>
cmp    $0x200,%eax
je     14eb <print_mz+0x3cb>
test   %eax,%eax
je     14f9 <print_mz+0x3d9>
test   $0x400,%ebx
jne    1515 <print_mz+0x3f5>
test   $0x4000,%ebx
jne    1534 <print_mz+0x414>
test   $0x8000,%ebx
jne    1553 <print_mz+0x433>
test   $0x800000,%ebx
jne    1572 <print_mz+0x452>
test   %ebx,%ebx
js     1a4a <print_mz+0x92a>
lea    0x1991(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15d,%eax
and    $0x7,%eax
lea    0xbd6(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x197e(%rip),%rdi
xor    %esi,%esi
jmp    1601 <print_mz+0x4e1>
lea    0x1280(%rip),%rdi
mov    $0x3,%esi
jmp    1502 <print_mz+0x3e2>
lea    0x1242(%rip),%rdi
mov    $0x2,%esi
jmp    1502 <print_mz+0x3e2>
lea    0x11fe(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x400,%ebx
je     147c <print_mz+0x35c>
lea    0x127e(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x4000,%ebx
je     1488 <print_mz+0x368>
lea    0x128d(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x8000,%ebx
je     1494 <print_mz+0x374>
lea    0x129f(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x800000,%ebx
je     14a0 <print_mz+0x380>
mov    %ebx,%eax
shr    $0x10,%eax
and    $0x1f,%eax
cmp    $0x14,%eax
ja     19a7 <print_mz+0x887>
lea    0xaae(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1298(%rip),%rdi
xor    %esi,%esi
jmp    19a0 <print_mz+0x880>
lea    0x18d6(%rip),%rdi
mov    $0x1,%esi
jmp    1601 <print_mz+0x4e1>
lea    0x18f2(%rip),%rdi
mov    $0x2,%esi
jmp    1601 <print_mz+0x4e1>
lea    0x190e(%rip),%rdi
mov    $0x3,%esi
jmp    1601 <print_mz+0x4e1>
lea    0x192a(%rip),%rdi
mov    $0x4,%esi
jmp    1601 <print_mz+0x4e1>
lea    0x1946(%rip),%rdi
mov    $0x5,%esi
jmp    1601 <print_mz+0x4e1>
lea    0x1962(%rip),%rdi
mov    $0x6,%esi
jmp    1601 <print_mz+0x4e1>
lea    0x197e(%rip),%rdi
mov    $0x7,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15d,%eax
and    $0x70,%eax
add    $0xfffffff0,%eax
shr    $0x4,%eax
cmp    $0x4,%eax
ja     1674 <print_mz+0x554>
lea    0xa9c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1974(%rip),%rdi
mov    $0x1,%esi
jmp    166d <print_mz+0x54d>
lea    0x19a3(%rip),%rdi
mov    $0x2,%esi
jmp    166d <print_mz+0x54d>
lea    0x19d2(%rip),%rdi
mov    $0x3,%esi
jmp    166d <print_mz+0x54d>
lea    0x1a02(%rip),%rdi
mov    $0x4,%esi
jmp    166d <print_mz+0x54d>
lea    0x1a32(%rip),%rdi
mov    $0x5,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x80,%r15b
je     168d <print_mz+0x56d>
lea    0x1a57(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15d,%esi
shr    $0x8,%esi
and    $0x3f,%esi
lea    0x1(%rsi),%edx
lea    0x1a6c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15d,%esi
shr    $0x10,%esi
and    $0x7,%esi
lea    0xa19(%rip),%rax
movslq (%rax,%rsi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    0x1b2e(%rip),%rdi
jmp    16d0 <print_mz+0x5b0>
lea    0x1a70(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   %r15d,%r15d
jns    170b <print_mz+0x5eb>
test   $0x40000000,%r15d
je     16f8 <print_mz+0x5d8>
lea    0x1b37(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x1b59(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x1b6e(%rip),%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
movzwl %r14w,%esi
cmp    $0xffff,%esi
jne    1751 <print_mz+0x631>
test   $0x1000000,%r14d
jne    1768 <print_mz+0x648>
test   $0x2000000,%r14d
jne    1784 <print_mz+0x664>
lea    0x1cde(%rip),%rdi
call   1030 <puts@plt>
test   $0x8000000,%r14d
jne    17a0 <print_mz+0x680>
jmp    17b3 <print_mz+0x693>
lea    0x1b3c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x1000000,%r14d
je     1731 <print_mz+0x611>
lea    0x1b4d(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x2000000,%r14d
je     173a <print_mz+0x61a>
lea    0x1b68(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x8000000,%r14d
je     17b3 <print_mz+0x693>
lea    0x1b7b(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x10000000,%r14d
jne    17e4 <print_mz+0x6c4>
test   $0x20000000,%r14d
jne    1800 <print_mz+0x6e0>
test   $0x40000000,%r14d
jne    181c <print_mz+0x6fc>
lea    0x1c79(%rip),%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <puts@plt>
lea    0x1b78(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x20000000,%r14d
je     17c5 <print_mz+0x6a5>
lea    0x1ba1(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40000000,%r14d
je     17ce <print_mz+0x6ae>
lea    0x1bc6(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <printf@plt>
lea    0x192d(%rip),%rdi
mov    $0x2,%esi
jmp    16d0 <print_mz+0x5b0>
lea    0x1949(%rip),%rdi
mov    $0x3,%esi
jmp    16d0 <print_mz+0x5b0>
lea    0x1965(%rip),%rdi
mov    $0x4,%esi
jmp    16d0 <print_mz+0x5b0>
lea    0xff0(%rip),%rdi
mov    $0x1,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1010(%rip),%rdi
mov    $0x2,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1030(%rip),%rdi
mov    $0x3,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1050(%rip),%rdi
mov    $0x4,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1071(%rip),%rdi
mov    $0x5,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1092(%rip),%rdi
mov    $0x6,%esi
jmp    19a0 <print_mz+0x880>
lea    0x10b3(%rip),%rdi
mov    $0x7,%esi
jmp    19a0 <print_mz+0x880>
lea    0x10d5(%rip),%rdi
mov    $0x8,%esi
jmp    19a0 <print_mz+0x880>
lea    0x10f7(%rip),%rdi
mov    $0x9,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1119(%rip),%rdi
mov    $0xa,%esi
jmp    19a0 <print_mz+0x880>
lea    0x113c(%rip),%rdi
mov    $0xb,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1162(%rip),%rdi
mov    $0xc,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1188(%rip),%rdi
mov    $0xd,%esi
jmp    19a0 <print_mz+0x880>
lea    0x11ae(%rip),%rdi
mov    $0xe,%esi
jmp    19a0 <print_mz+0x880>
lea    0x11d5(%rip),%rdi
mov    $0xf,%esi
jmp    19a0 <print_mz+0x880>
lea    0x11fc(%rip),%rdi
mov    $0x10,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1223(%rip),%rdi
mov    $0x11,%esi
jmp    19a0 <print_mz+0x880>
lea    0x124b(%rip),%rdi
mov    $0x12,%esi
jmp    19a0 <print_mz+0x880>
lea    0x1273(%rip),%rdi
mov    $0x13,%esi
jmp    19a0 <print_mz+0x880>
lea    0x129b(%rip),%rdi
mov    $0x14,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x200000,%ebx
je     19c2 <print_mz+0x8a2>
lea    0x12b7(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x400000,%ebx
je     19dd <print_mz+0x8bd>
lea    0x12dd(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
shr    $0x18,%eax
and    $0x3,%eax
lea    0x6a0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x12e7(%rip),%rdi
xor    %esi,%esi
jmp    1a28 <print_mz+0x908>
lea    0x1310(%rip),%rdi
mov    $0x1,%esi
jmp    1a28 <print_mz+0x908>
lea    0x1336(%rip),%rdi
mov    $0x2,%esi
jmp    1a28 <print_mz+0x908>
lea    0x135e(%rip),%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x137f(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   %ebx,%ebx
jns    14a8 <print_mz+0x388>
shr    $0x1a,%ebx
and    $0x1f,%ebx
lea    0x8(%rbx),%edx
lea    0x1384(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x13a8(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    14a8 <print_mz+0x388>

LLVM IR (-O0):
@.str = [20 x i8] c" DEVCFG0 = %08x\0A\00"
@.str.1 = [42 x i8] c" %u Debugger enabled\0A\00"
@.str.2 = [43 x i8] c" %u Debugger disabled\0A\00"
@.str.3 = [39 x i8] c" %u JTAG disabled\0A\00"
@.str.4 = [38 x i8] c" %u JTAG enabled\0A\00"
@.str.5 = [39 x i8] c" %u Use PGC2/PGD2\0A\00"
@.str.6 = [45 x i8] c" %u Trace port disabled\0A\00"
@.str.7 = [48 x i8] c" %u Boot in microMIPS mode\0A\00"
@.str.8 = [43 x i8] c" %u Flash ECC enabled\0A\00"
@.str.9 = [51 x i8] c" %u Dynamic Flash ECC enabled\0A\00"
@.str.10 = [52 x i8] c" %u Flash ECC disabled, locked\0A\00"
@.str.11 = [54 x i8] c" %u Flash ECC disabled, unlocked\0A\00"
@.str.12 = [66 x i8] c" %u Flash power down controlled by VREGS bit\0A\00"
@.str.13 = [62 x i8] c" %u Deny Debug access to group 0 regions\0A\00"
@.str.14 = [62 x i8] c" %u Deny Debug access to group 1 regions\0A\00"
@.str.15 = [62 x i8] c" %u Deny Debug access to group 2 regions\0A\00"
@.str.16 = [53 x i8] c" %u Reduced EJTAG functionality\0A\00"
@.str.17 = [20 x i8] c" DEVCFG1 = %08x\0A\00"
@.str.18 = [36 x i8] c" %u System PLL\0A\00"
@.str.19 = [44 x i8] c" %u Primary oscillator\0A\00"
@.str.20 = [46 x i8] c" %u Secondary oscillator\0A\00"
@.str.21 = [49 x i8] c" %u Low-power RC oscillator\0A\00"
@.str.22 = [61 x i8] c" %u Fast RC oscillator with divide-by-N\0A\00"
@.str.23 = [33 x i8] c" %u UNKNOWN\0A\00"
@.str.24 = [45 x i8] c" %02x Deadman timer: 1/2\0A\00"
@.str.25 = [45 x i8] c" %02x Deadman timer: 3/4\0A\00"
@.str.26 = [45 x i8] c" %02x Deadman timer: 7/8\0A\00"
@.str.27 = [47 x i8] c" %02x Deadman timer: 15/16\0A\00"
@.str.28 = [47 x i8] c" %02x Deadman timer: 31/32\0A\00"
@.str.29 = [47 x i8] c" %02x Deadman timer: 63/64\0A\00"
@.str.30 = [49 x i8] c" %02x Deadman timer: 127/128\0A\00"
@.str.31 = [54 x i8] c" %u Secondary oscillator enabled\0A\00"
@.str.32 = [63 x i8] c" %u Internal-external switch over enabled\0A\00"
@.str.33 = [54 x i8] c" %u Primary oscillator: External\0A\00"
@.str.34 = [48 x i8] c" %u Primary oscillator: HS\0A\00"
@.str.35 = [54 x i8] c" %u Primary oscillator: disabled\0A\00"
@.str.36 = [46 x i8] c" %u CLKO output disabled\0A\00"
@.str.37 = [49 x i8] c" %u Clock switching enabled\0A\00"
@.str.38 = [57 x i8] c" %u Fail-safe clock monitor enabled\0A\00"
@.str.39 = [49 x i8] c" %2x Watchdog postscale: 1/1\0A\00"
@.str.40 = [49 x i8] c" %2x Watchdog postscale: 1/2\0A\00"
@.str.41 = [49 x i8] c" %2x Watchdog postscale: 1/4\0A\00"
@.str.42 = [49 x i8] c" %2x Watchdog postscale: 1/8\0A\00"
@.str.43 = [50 x i8] c" %2x Watchdog postscale: 1/16\0A\00"
@.str.44 = [50 x i8] c" %2x Watchdog postscale: 1/32\0A\00"
@.str.45 = [50 x i8] c" %2x Watchdog postscale: 1/64\0A\00"
@.str.46 = [51 x i8] c" %2x Watchdog postscale: 1/128\0A\00"
@.str.47 = [51 x i8] c" %2x Watchdog postscale: 1/256\0A\00"
@.str.48 = [51 x i8] c" %2x Watchdog postscale: 1/512\0A\00"
@.str.49 = [52 x i8] c" %2x Watchdog postscale: 1/1024\0A\00"
@.str.50 = [52 x i8] c" %2x Watchdog postscale: 1/2048\0A\00"
@.str.51 = [52 x i8] c" %2x Watchdog postscale: 1/4096\0A\00"
@.str.52 = [52 x i8] c" %2x Watchdog postscale: 1/8192\0A\00"
@.str.53 = [53 x i8] c" %2x Watchdog postscale: 1/16384\0A\00"
@.str.54 = [53 x i8] c" %2x Watchdog postscale: 1/32768\0A\00"
@.str.55 = [53 x i8] c" %2x Watchdog postscale: 1/65536\0A\00"
@.str.56 = [54 x i8] c" %2x Watchdog postscale: 1/131072\0A\00"
@.str.57 = [54 x i8] c" %2x Watchdog postscale: 1/262144\0A\00"
@.str.58 = [54 x i8] c" %2x Watchdog postscale: 1/524288\0A\00"
@.str.59 = [55 x i8] c" %2x Watchdog postscale: 1/1048576\0A\00"
@.str.60 = [65 x i8] c" %u Watchdog stops during Flash programming\0A\00"
@.str.61 = [53 x i8] c" %u Watchdog in non-Window mode\0A\00"
@.str.62 = [52 x i8] c" %x Watchdog window size: 75%%\0A\00"
@.str.63 = [52 x i8] c" %x Watchdog window size: 50%%\0A\00"
@.str.64 = [54 x i8] c" %x Watchdog window size: 37.5%%\0A\00"
@.str.65 = [52 x i8] c" %x Watchdog window size: 25%%\0A\00"
@.str.66 = [41 x i8] c" %u Watchdog enable\0A\00"
@.str.67 = [52 x i8] c" %02x Deadman timer count: 2^%u\0A\00"
@.str.68 = [46 x i8] c" %u Deadman timer enable\0A\00"
@.str.69 = [20 x i8] c" DEVCFG2 = %08x\0A\00"
@.str.70 = [42 x i8] c" %u PLL divider: 1/1\0A\00"
@.str.71 = [42 x i8] c" %u PLL divider: 1/2\0A\00"
@.str.72 = [42 x i8] c" %u PLL divider: 1/3\0A\00"
@.str.73 = [42 x i8] c" %u PLL divider: 1/4\0A\00"
@.str.74 = [42 x i8] c" %u PLL divider: 1/5\0A\00"
@.str.75 = [42 x i8] c" %u PLL divider: 1/6\0A\00"
@.str.76 = [42 x i8] c" %u PLL divider: 1/7\0A\00"
@.str.77 = [42 x i8] c" %u PLL divider: 1/8\0A\00"
@.str.78 = [61 x i8] c" %u PLL input frequency range: 5-10 MHz\0A\00"
@.str.79 = [61 x i8] c" %u PLL input frequency range: 8-16 MHz\0A\00"
@.str.80 = [62 x i8] c" %u PLL input frequency range: 13-26 MHz\0A\00"
@.str.81 = [62 x i8] c" %u PLL input frequency range: 21-42 MHz\0A\00"
@.str.82 = [62 x i8] c" %u PLL input frequency range: 34-64 MHz\0A\00"
@.str.83 = [52 x i8] c" %u Select FRC as input to PLL\0A\00"
@.str.84 = [52 x i8] c" %02x PLL feedback divider: x%u\0A\00"
@.str.85 = [45 x i8] c" %u PLL postscaler: 1/2\0A\00"
@.str.86 = [45 x i8] c" %u PLL postscaler: 1/4\0A\00"
@.str.87 = [45 x i8] c" %u PLL postscaler: 1/8\0A\00"
@.str.88 = [46 x i8] c" %u PLL postscaler: 1/16\0A\00"
@.str.89 = [46 x i8] c" %u PLL postscaler: 1/32\0A\00"
@.str.90 = [53 x i8] c" %u USB PLL input clock: 24 MHz\0A\00"
@.str.91 = [40 x i8] c" %u Enable USB PLL\0A\00"
@.str.92 = [20 x i8] c" DEVCFG3 = %08x\0A\00"
@.str.93 = [40 x i8] c" %04x User-defined ID\0A\00"
@.str.94 = [55 x i8] c" %u Ethernet MII interface enable\0A\00"
@.str.95 = [47 x i8] c" %u Default Ethernet pins\0A\00"
@.str.96 = [48 x i8] c" Alternate Ethernet pins\0A\00"
@.str.97 = [65 x i8] c" %u Permission Group Lock - only 1 reconfig\0A\00"
@.str.98 = [69 x i8] c" %u Peripheral Module Disable - only 1 reconfig\0A\00"
@.str.99 = [65 x i8] c" %u Peripheral Pin Select - only 1 reconfig\0A\00"
@.str.100 = [54 x i8] c" %u USBID pin: controlled by USB\0A\00"
@.str.101 = [54 x i8] c" USBID pin: controlled by port\0A\00"
define void @print_mz(i32 %0, i32 %1, i32 %2, i32 %3) {
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%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* %5
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 %11)
%13 = load i32, i32* %5
%14 = xor i32 %13, -1
%15 = and i32 %14, 3
%16 = icmp eq i32 %15, 2
br i1 %16, label %17, label %19
17: ; preds = %4
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.1, i64 0, i64 0), i32 3)
br label %21
19: ; preds = %4
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.2, i64 0, i64 0), i32 3)
br label %21
21: ; preds = %19, %17
%22 = load i32, i32* %5
%23 = xor i32 %22, -1
%24 = and i32 %23, 4
%25 = icmp ne i32 %24, 0
br i1 %25, label %26, label %28
26: ; preds = %21
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.3, i64 0, i64 0), i32 4)
br label %30
28: ; preds = %21
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.4, i64 0, i64 0), i32 4)
br label %30
30: ; preds = %28, %26
%31 = load i32, i32* %5
%32 = xor i32 %31, -1
%33 = and i32 %32, 8
%34 = icmp ne i32 %33, 0
br i1 %34, label %35, label %37
35: ; preds = %30
%36 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.5, i64 0, i64 0), i32 8)
br label %37
37: ; preds = %35, %30
%38 = load i32, i32* %5
%39 = xor i32 %38, -1
%40 = and i32 %39, 32
%41 = icmp ne i32 %40, 0
br i1 %41, label %42, label %44
42: ; preds = %37
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.6, i64 0, i64 0), i32 2)
br label %44
44: ; preds = %42, %37
%45 = load i32, i32* %5
%46 = xor i32 %45, -1
%47 = and i32 %46, 64
%48 = icmp ne i32 %47, 0
br i1 %48, label %49, label %51
49: ; preds = %44
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.7, i64 0, i64 0), i32 4)
br label %51
51: ; preds = %49, %44
%52 = load i32, i32* %5
%53 = xor i32 %52, -1
%54 = and i32 %53, 768
switch i32 %54, label %61 [
i32 768, label %55
i32 512, label %57
i32 256, label %59
]
55: ; preds = %51
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.8, i64 0, i64 0), i32 3)
br label %63
57: ; preds = %51
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.9, i64 0, i64 0), i32 2)
br label %63
59: ; preds = %51
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.10, i64 0, i64 0), i32 1)
br label %63
61: ; preds = %51
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.11, i64 0, i64 0), i32 3)
br label %63
63: ; preds = %61, %59, %57, %55
%64 = load i32, i32* %5
%65 = xor i32 %64, -1
%66 = and i32 %65, 1024
%67 = icmp ne i32 %66, 0
br i1 %67, label %68, label %70
68: ; preds = %63
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.12, i64 0, i64 0), i32 4)
br label %70
70: ; preds = %68, %63
%71 = load i32, i32* %5
%72 = xor i32 %71, -1
%73 = and i32 %72, 4096
%74 = icmp ne i32 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %70
%76 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0), i32 1)
br label %77
77: ; preds = %75, %70
%78 = load i32, i32* %5
%79 = xor i32 %78, -1
%80 = and i32 %79, 8192
%81 = icmp ne i32 %80, 0
br i1 %81, label %82, label %84
82: ; preds = %77
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.14, i64 0, i64 0), i32 2)
br label %84
84: ; preds = %82, %77
%85 = load i32, i32* %5
%86 = xor i32 %85, -1
%87 = and i32 %86, 16384
%88 = icmp ne i32 %87, 0
br i1 %88, label %89, label %91
89: ; preds = %84
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.15, i64 0, i64 0), i32 4)
br label %91
91: ; preds = %89, %84
%92 = load i32, i32* %5
%93 = xor i32 %92, -1
%94 = and i32 %93, 1073741824
%95 = icmp ne i32 %94, 0
br i1 %95, label %96, label %98
96: ; preds = %91
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.16, i64 0, i64 0), i32 4)
br label %98
98: ; preds = %96, %91
%99 = load i32, i32* %6
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.17, i64 0, i64 0), i32 %99)
%101 = load i32, i32* %6
%102 = and i32 %101, 7
switch i32 %102, label %113 [
i32 1, label %103
i32 2, label %105
i32 4, label %107
i32 5, label %109
i32 7, label %111
]
103: ; preds = %98
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.18, i64 0, i64 0), i32 1)
br label %117
105: ; preds = %98
%106 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.19, i64 0, i64 0), i32 2)
br label %117
107: ; preds = %98
%108 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.20, i64 0, i64 0), i32 4)
br label %117
109: ; preds = %98
%110 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.21, i64 0, i64 0), i32 5)
br label %117
111: ; preds = %98
%112 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.22, i64 0, i64 0), i32 7)
br label %117
113: ; preds = %98
%114 = load i32, i32* %6
%115 = and i32 %114, 7
%116 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.23, i64 0, i64 0), i32 %115)
br label %117
117: ; preds = %113, %111, %109, %107, %105, %103
%118 = load i32, i32* %6
%119 = and i32 %118, -2147483648
%120 = icmp ne i32 %119, 0
br i1 %120, label %121, label %139
121: ; preds = %117
%122 = load i32, i32* %6
%123 = and i32 %122, 56
switch i32 %123, label %138 [
i32 8, label %124
i32 16, label %126
i32 24, label %128
i32 32, label %130
i32 40, label %132
i32 48, label %134
i32 56, label %136
]
124: ; preds = %121
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.24, i64 0, i64 0), i32 8)
br label %138
126: ; preds = %121
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.25, i64 0, i64 0), i32 16)
br label %138
128: ; preds = %121
%129 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.26, i64 0, i64 0), i32 24)
br label %138
130: ; preds = %121
%131 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.27, i64 0, i64 0), i32 32)
br label %138
132: ; preds = %121
%133 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.28, i64 0, i64 0), i32 40)
br label %138
134: ; preds = %121
%135 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.29, i64 0, i64 0), i32 48)
br label %138
136: ; preds = %121
%137 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.30, i64 0, i64 0), i32 56)
br label %138
138: ; preds = %121, %136, %134, %132, %130, %128, %126, %124
br label %139
139: ; preds = %138, %117
%140 = load i32, i32* %6
%141 = and i32 %140, 64
%142 = icmp ne i32 %141, 0
br i1 %142, label %143, label %145
143: ; preds = %139
%144 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.31, i64 0, i64 0), i32 4)
br label %145
145: ; preds = %143, %139
%146 = load i32, i32* %6
%147 = and i32 %146, 128
%148 = icmp ne i32 %147, 0
br i1 %148, label %149, label %151
149: ; preds = %145
%150 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.32, i64 0, i64 0), i32 8)
br label %151
151: ; preds = %149, %145
%152 = load i32, i32* %6
%153 = and i32 %152, 768
switch i32 %153, label %160 [
i32 0, label %154
i32 512, label %156
i32 768, label %158
]
154: ; preds = %151
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.33, i64 0, i64 0), i32 0)
br label %160
156: ; preds = %151
%157 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.34, i64 0, i64 0), i32 2)
br label %160
158: ; preds = %151
%159 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.35, i64 0, i64 0), i32 3)
br label %160
160: ; preds = %151, %158, %156, %154
%161 = load i32, i32* %6
%162 = and i32 %161, 1024
%163 = icmp ne i32 %162, 0
br i1 %163, label %164, label %166
164: ; preds = %160
%165 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.36, i64 0, i64 0), i32 4)
br label %166
166: ; preds = %164, %160
%167 = load i32, i32* %6
%168 = and i32 %167, 16384
%169 = icmp ne i32 %168, 0
br i1 %169, label %170, label %172
170: ; preds = %166
%171 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.37, i64 0, i64 0), i32 4)
br label %172
172: ; preds = %170, %166
%173 = load i32, i32* %6
%174 = and i32 %173, 32768
%175 = icmp ne i32 %174, 0
br i1 %175, label %176, label %178
176: ; preds = %172
%177 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.38, i64 0, i64 0), i32 8)
br label %178
178: ; preds = %176, %172
%179 = load i32, i32* %6
%180 = and i32 %179, 8388608
%181 = icmp ne i32 %180, 0
br i1 %181, label %182, label %252
182: ; preds = %178
%183 = load i32, i32* %6
%184 = and i32 %183, 2031616
switch i32 %184, label %227 [
i32 0, label %185
i32 65536, label %187
i32 131072, label %189
i32 196608, label %191
i32 262144, label %193
i32 327680, label %195
i32 393216, label %197
i32 458752, label %199
i32 524288, label %201
i32 589824, label %203
i32 655360, label %205
i32 720896, label %207
i32 786432, label %209
i32 851968, label %211
i32 917504, label %213
i32 983040, label %215
i32 1048576, label %217
i32 1114112, label %219
i32 1179648, label %221
i32 1245184, label %223
i32 1310720, label %225
]
185: ; preds = %182
%186 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.39, i64 0, i64 0), i32 0)
br label %227
187: ; preds = %182
%188 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.40, i64 0, i64 0), i32 1)
br label %227
189: ; preds = %182
%190 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.41, i64 0, i64 0), i32 2)
br label %227
191: ; preds = %182
%192 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.42, i64 0, i64 0), i32 3)
br label %227
193: ; preds = %182
%194 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.43, i64 0, i64 0), i32 4)
br label %227
195: ; preds = %182
%196 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.44, i64 0, i64 0), i32 5)
br label %227
197: ; preds = %182
%198 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.45, i64 0, i64 0), i32 6)
br label %227
199: ; preds = %182
%200 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.46, i64 0, i64 0), i32 7)
br label %227
201: ; preds = %182
%202 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.47, i64 0, i64 0), i32 8)
br label %227
203: ; preds = %182
%204 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.48, i64 0, i64 0), i32 9)
br label %227
205: ; preds = %182
%206 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.49, i64 0, i64 0), i32 10)
br label %227
207: ; preds = %182
%208 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.50, i64 0, i64 0), i32 11)
br label %227
209: ; preds = %182
%210 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.51, i64 0, i64 0), i32 12)
br label %227
211: ; preds = %182
%212 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.52, i64 0, i64 0), i32 13)
br label %227
213: ; preds = %182
%214 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.53, i64 0, i64 0), i32 14)
br label %227
215: ; preds = %182
%216 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.54, i64 0, i64 0), i32 15)
br label %227
217: ; preds = %182
%218 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.55, i64 0, i64 0), i32 16)
br label %227
219: ; preds = %182
%220 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.56, i64 0, i64 0), i32 17)
br label %227
221: ; preds = %182
%222 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.57, i64 0, i64 0), i32 18)
br label %227
223: ; preds = %182
%224 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.58, i64 0, i64 0), i32 19)
br label %227
225: ; preds = %182
%226 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.59, i64 0, i64 0), i32 20)
br label %227
227: ; preds = %182, %225, %223, %221, %219, %217, %215, %213, %211, %209, %207, %205, %203, %201, %199, %197, %195, %193, %191, %189, %187, %185
%228 = load i32, i32* %6
%229 = and i32 %228, 2097152
%230 = icmp ne i32 %229, 0
br i1 %230, label %231, label %233
231: ; preds = %227
%232 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.60, i64 0, i64 0), i32 2)
br label %233
233: ; preds = %231, %227
%234 = load i32, i32* %6
%235 = and i32 %234, 4194304
%236 = icmp ne i32 %235, 0
br i1 %236, label %237, label %239
237: ; preds = %233
%238 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.61, i64 0, i64 0), i32 4)
br label %239
239: ; preds = %237, %233
%240 = load i32, i32* %6
%241 = and i32 %240, 50331648
switch i32 %241, label %250 [
i32 0, label %242
i32 16777216, label %244
i32 33554432, label %246
i32 50331648, label %248
]
242: ; preds = %239
%243 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.62, i64 0, i64 0), i32 0)
br label %250
244: ; preds = %239
%245 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.63, i64 0, i64 0), i32 1)
br label %250
246: ; preds = %239
%247 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.64, i64 0, i64 0), i32 2)
br label %250
248: ; preds = %239
%249 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.65, i64 0, i64 0), i32 3)
br label %250
250: ; preds = %239, %248, %246, %244, %242
%251 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.66, i64 0, i64 0), i32 8)
br label %252
252: ; preds = %250, %178
%253 = load i32, i32* %6
%254 = and i32 %253, -2147483648
%255 = icmp ne i32 %254, 0
br i1 %255, label %256, label %265
256: ; preds = %252
%257 = load i32, i32* %6
%258 = lshr i32 %257, 26
%259 = and i32 %258, 31
store i32 %259, i32* %9
%260 = load i32, i32* %9
%261 = load i32, i32* %9
%262 = add nsw i32 %261, 8
%263 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.67, i64 0, i64 0), i32 %260, i32 %262)
%264 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.68, i64 0, i64 0), i32 8)
br label %265
265: ; preds = %256, %252
%266 = load i32, i32* %7
%267 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.69, i64 0, i64 0), i32 %266)
%268 = load i32, i32* %7
%269 = and i32 %268, 7
switch i32 %269, label %286 [
i32 0, label %270
i32 1, label %272
i32 2, label %274
i32 3, label %276
i32 4, label %278
i32 5, label %280
i32 6, label %282
i32 7, label %284
]
270: ; preds = %265
%271 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.70, i64 0, i64 0), i32 0)
br label %286
272: ; preds = %265
%273 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.71, i64 0, i64 0), i32 1)
br label %286
274: ; preds = %265
%275 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.72, i64 0, i64 0), i32 2)
br label %286
276: ; preds = %265
%277 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.73, i64 0, i64 0), i32 3)
br label %286
278: ; preds = %265
%279 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.74, i64 0, i64 0), i32 4)
br label %286
280: ; preds = %265
%281 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.75, i64 0, i64 0), i32 5)
br label %286
282: ; preds = %265
%283 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.76, i64 0, i64 0), i32 6)
br label %286
284: ; preds = %265
%285 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.77, i64 0, i64 0), i32 7)
br label %286
286: ; preds = %265, %284, %282, %280, %278, %276, %274, %272, %270
%287 = load i32, i32* %7
%288 = and i32 %287, 112
switch i32 %288, label %299 [
i32 16, label %289
i32 32, label %291
i32 48, label %293
i32 64, label %295
i32 80, label %297
]
289: ; preds = %286
%290 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.78, i64 0, i64 0), i32 1)
br label %299
291: ; preds = %286
%292 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.79, i64 0, i64 0), i32 2)
br label %299
293: ; preds = %286
%294 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.80, i64 0, i64 0), i32 3)
br label %299
295: ; preds = %286
%296 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), i32 4)
br label %299
297: ; preds = %286
%298 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.82, i64 0, i64 0), i32 5)
br label %299
299: ; preds = %286, %297, %295, %293, %291, %289
%300 = load i32, i32* %7
%301 = and i32 %300, 128
%302 = icmp ne i32 %301, 0
br i1 %302, label %303, label %305
303: ; preds = %299
%304 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.83, i64 0, i64 0), i32 8)
br label %305
305: ; preds = %303, %299
%306 = load i32, i32* %7
%307 = lshr i32 %306, 8
%308 = and i32 %307, 63
store i32 %308, i32* %10
%309 = load i32, i32* %10
%310 = load i32, i32* %10
%311 = add nsw i32 %310, 1
%312 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.84, i64 0, i64 0), i32 %309, i32 %311)
%313 = load i32, i32* %7
%314 = and i32 %313, 458752
switch i32 %314, label %340 [
i32 0, label %315
i32 65536, label %315
i32 131072, label %320
i32 196608, label %325
i32 262144, label %330
i32 327680, label %335
i32 393216, label %335
i32 458752, label %335
]
315: ; preds = %305, %305
%316 = load i32, i32* %7
%317 = and i32 %316, 458752
%318 = lshr i32 %317, 16
%319 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.85, i64 0, i64 0), i32 %318)
br label %340
320: ; preds = %305
%321 = load i32, i32* %7
%322 = and i32 %321, 458752
%323 = lshr i32 %322, 16
%324 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.86, i64 0, i64 0), i32 %323)
br label %340
325: ; preds = %305
%326 = load i32, i32* %7
%327 = and i32 %326, 458752
%328 = lshr i32 %327, 16
%329 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.87, i64 0, i64 0), i32 %328)
br label %340
330: ; preds = %305
%331 = load i32, i32* %7
%332 = and i32 %331, 458752
%333 = lshr i32 %332, 16
%334 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.88, i64 0, i64 0), i32 %333)
br label %340
335: ; preds = %305, %305, %305
%336 = load i32, i32* %7
%337 = and i32 %336, 458752
%338 = lshr i32 %337, 16
%339 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.89, i64 0, i64 0), i32 %338)
br label %340
340: ; preds = %305, %335, %330, %325, %320, %315
%341 = load i32, i32* %7
%342 = and i32 %341, -2147483648
%343 = icmp ne i32 %342, 0
br i1 %343, label %344, label %352
344: ; preds = %340
%345 = load i32, i32* %7
%346 = and i32 %345, 1073741824
%347 = icmp ne i32 %346, 0
br i1 %347, label %348, label %350
348: ; preds = %344
%349 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.90, i64 0, i64 0), i32 4)
br label %350
350: ; preds = %348, %344
%351 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.91, i64 0, i64 0), i32 8)
br label %352
352: ; preds = %350, %340
%353 = load i32, i32* %8
%354 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.92, i64 0, i64 0), i32 %353)
%355 = load i32, i32* %8
%356 = xor i32 %355, -1
%357 = and i32 %356, 65535
%358 = icmp ne i32 %357, 0
br i1 %358, label %359, label %363
359: ; preds = %352
%360 = load i32, i32* %8
%361 = and i32 %360, 65535
%362 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.93, i64 0, i64 0), i32 %361)
br label %363
363: ; preds = %359, %352
%364 = load i32, i32* %8
%365 = and i32 %364, 16777216
%366 = icmp ne i32 %365, 0
br i1 %366, label %367, label %369
367: ; preds = %363
%368 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.94, i64 0, i64 0), i32 1)
br label %369
369: ; preds = %367, %363
%370 = load i32, i32* %8
%371 = and i32 %370, 33554432
%372 = icmp ne i32 %371, 0
br i1 %372, label %373, label %375
373: ; preds = %369
%374 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.95, i64 0, i64 0), i32 2)
br label %377
375: ; preds = %369
%376 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.96, i64 0, i64 0))
br label %377
377: ; preds = %375, %373
%378 = load i32, i32* %8
%379 = and i32 %378, 134217728
%380 = icmp ne i32 %379, 0
br i1 %380, label %381, label %383
381: ; preds = %377
%382 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.97, i64 0, i64 0), i32 8)
br label %383
383: ; preds = %381, %377
%384 = load i32, i32* %8
%385 = and i32 %384, 268435456
%386 = icmp ne i32 %385, 0
br i1 %386, label %387, label %389
387: ; preds = %383
%388 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.98, i64 0, i64 0), i32 1)
br label %389
389: ; preds = %387, %383
%390 = load i32, i32* %8
%391 = and i32 %390, 536870912
%392 = icmp ne i32 %391, 0
br i1 %392, label %393, label %395
393: ; preds = %389
%394 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.99, i64 0, i64 0), i32 2)
br label %395
395: ; preds = %393, %389
%396 = load i32, i32* %8
%397 = and i32 %396, 1073741824
%398 = icmp ne i32 %397, 0
br i1 %398, label %399, label %401
399: ; preds = %395
%400 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.100, i64 0, i64 0), i32 4)
br label %403
401: ; preds = %395
%402 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.101, i64 0, i64 0))
br label %403
403: ; preds = %401, %399
ret void
}

LLVM IR (-O2):
@.str = [20 x i8] c" DEVCFG0 = %08x\0A\00"
@.str.1 = [42 x i8] c" %u Debugger enabled\0A\00"
@.str.2 = [43 x i8] c" %u Debugger disabled\0A\00"
@.str.3 = [39 x i8] c" %u JTAG disabled\0A\00"
@.str.4 = [38 x i8] c" %u JTAG enabled\0A\00"
@.str.5 = [39 x i8] c" %u Use PGC2/PGD2\0A\00"
@.str.6 = [45 x i8] c" %u Trace port disabled\0A\00"
@.str.7 = [48 x i8] c" %u Boot in microMIPS mode\0A\00"
@.str.8 = [43 x i8] c" %u Flash ECC enabled\0A\00"
@.str.9 = [51 x i8] c" %u Dynamic Flash ECC enabled\0A\00"
@.str.10 = [52 x i8] c" %u Flash ECC disabled, locked\0A\00"
@.str.11 = [54 x i8] c" %u Flash ECC disabled, unlocked\0A\00"
@.str.12 = [66 x i8] c" %u Flash power down controlled by VREGS bit\0A\00"
@.str.13 = [62 x i8] c" %u Deny Debug access to group 0 regions\0A\00"
@.str.14 = [62 x i8] c" %u Deny Debug access to group 1 regions\0A\00"
@.str.15 = [62 x i8] c" %u Deny Debug access to group 2 regions\0A\00"
@.str.16 = [53 x i8] c" %u Reduced EJTAG functionality\0A\00"
@.str.17 = [20 x i8] c" DEVCFG1 = %08x\0A\00"
@.str.18 = [36 x i8] c" %u System PLL\0A\00"
@.str.19 = [44 x i8] c" %u Primary oscillator\0A\00"
@.str.20 = [46 x i8] c" %u Secondary oscillator\0A\00"
@.str.21 = [49 x i8] c" %u Low-power RC oscillator\0A\00"
@.str.22 = [61 x i8] c" %u Fast RC oscillator with divide-by-N\0A\00"
@.str.23 = [33 x i8] c" %u UNKNOWN\0A\00"
@.str.24 = [45 x i8] c" %02x Deadman timer: 1/2\0A\00"
@.str.25 = [45 x i8] c" %02x Deadman timer: 3/4\0A\00"
@.str.26 = [45 x i8] c" %02x Deadman timer: 7/8\0A\00"
@.str.27 = [47 x i8] c" %02x Deadman timer: 15/16\0A\00"
@.str.28 = [47 x i8] c" %02x Deadman timer: 31/32\0A\00"
@.str.29 = [47 x i8] c" %02x Deadman timer: 63/64\0A\00"
@.str.30 = [49 x i8] c" %02x Deadman timer: 127/128\0A\00"
@.str.31 = [54 x i8] c" %u Secondary oscillator enabled\0A\00"
@.str.32 = [63 x i8] c" %u Internal-external switch over enabled\0A\00"
@.str.33 = [54 x i8] c" %u Primary oscillator: External\0A\00"
@.str.34 = [48 x i8] c" %u Primary oscillator: HS\0A\00"
@.str.35 = [54 x i8] c" %u Primary oscillator: disabled\0A\00"
@.str.36 = [46 x i8] c" %u CLKO output disabled\0A\00"
@.str.37 = [49 x i8] c" %u Clock switching enabled\0A\00"
@.str.38 = [57 x i8] c" %u Fail-safe clock monitor enabled\0A\00"
@.str.39 = [49 x i8] c" %2x Watchdog postscale: 1/1\0A\00"
@.str.40 = [49 x i8] c" %2x Watchdog postscale: 1/2\0A\00"
@.str.41 = [49 x i8] c" %2x Watchdog postscale: 1/4\0A\00"
@.str.42 = [49 x i8] c" %2x Watchdog postscale: 1/8\0A\00"
@.str.43 = [50 x i8] c" %2x Watchdog postscale: 1/16\0A\00"
@.str.44 = [50 x i8] c" %2x Watchdog postscale: 1/32\0A\00"
@.str.45 = [50 x i8] c" %2x Watchdog postscale: 1/64\0A\00"
@.str.46 = [51 x i8] c" %2x Watchdog postscale: 1/128\0A\00"
@.str.47 = [51 x i8] c" %2x Watchdog postscale: 1/256\0A\00"
@.str.48 = [51 x i8] c" %2x Watchdog postscale: 1/512\0A\00"
@.str.49 = [52 x i8] c" %2x Watchdog postscale: 1/1024\0A\00"
@.str.50 = [52 x i8] c" %2x Watchdog postscale: 1/2048\0A\00"
@.str.51 = [52 x i8] c" %2x Watchdog postscale: 1/4096\0A\00"
@.str.52 = [52 x i8] c" %2x Watchdog postscale: 1/8192\0A\00"
@.str.53 = [53 x i8] c" %2x Watchdog postscale: 1/16384\0A\00"
@.str.54 = [53 x i8] c" %2x Watchdog postscale: 1/32768\0A\00"
@.str.55 = [53 x i8] c" %2x Watchdog postscale: 1/65536\0A\00"
@.str.56 = [54 x i8] c" %2x Watchdog postscale: 1/131072\0A\00"
@.str.57 = [54 x i8] c" %2x Watchdog postscale: 1/262144\0A\00"
@.str.58 = [54 x i8] c" %2x Watchdog postscale: 1/524288\0A\00"
@.str.59 = [55 x i8] c" %2x Watchdog postscale: 1/1048576\0A\00"
@.str.60 = [65 x i8] c" %u Watchdog stops during Flash programming\0A\00"
@.str.61 = [53 x i8] c" %u Watchdog in non-Window mode\0A\00"
@.str.62 = [52 x i8] c" %x Watchdog window size: 75%%\0A\00"
@.str.63 = [52 x i8] c" %x Watchdog window size: 50%%\0A\00"
@.str.64 = [54 x i8] c" %x Watchdog window size: 37.5%%\0A\00"
@.str.65 = [52 x i8] c" %x Watchdog window size: 25%%\0A\00"
@.str.66 = [41 x i8] c" %u Watchdog enable\0A\00"
@.str.67 = [52 x i8] c" %02x Deadman timer count: 2^%u\0A\00"
@.str.68 = [46 x i8] c" %u Deadman timer enable\0A\00"
@.str.69 = [20 x i8] c" DEVCFG2 = %08x\0A\00"
@.str.70 = [42 x i8] c" %u PLL divider: 1/1\0A\00"
@.str.71 = [42 x i8] c" %u PLL divider: 1/2\0A\00"
@.str.72 = [42 x i8] c" %u PLL divider: 1/3\0A\00"
@.str.73 = [42 x i8] c" %u PLL divider: 1/4\0A\00"
@.str.74 = [42 x i8] c" %u PLL divider: 1/5\0A\00"
@.str.75 = [42 x i8] c" %u PLL divider: 1/6\0A\00"
@.str.76 = [42 x i8] c" %u PLL divider: 1/7\0A\00"
@.str.77 = [42 x i8] c" %u PLL divider: 1/8\0A\00"
@.str.78 = [61 x i8] c" %u PLL input frequency range: 5-10 MHz\0A\00"
@.str.79 = [61 x i8] c" %u PLL input frequency range: 8-16 MHz\0A\00"
@.str.80 = [62 x i8] c" %u PLL input frequency range: 13-26 MHz\0A\00"
@.str.81 = [62 x i8] c" %u PLL input frequency range: 21-42 MHz\0A\00"
@.str.82 = [62 x i8] c" %u PLL input frequency range: 34-64 MHz\0A\00"
@.str.83 = [52 x i8] c" %u Select FRC as input to PLL\0A\00"
@.str.84 = [52 x i8] c" %02x PLL feedback divider: x%u\0A\00"
@.str.85 = [45 x i8] c" %u PLL postscaler: 1/2\0A\00"
@.str.86 = [45 x i8] c" %u PLL postscaler: 1/4\0A\00"
@.str.87 = [45 x i8] c" %u PLL postscaler: 1/8\0A\00"
@.str.88 = [46 x i8] c" %u PLL postscaler: 1/16\0A\00"
@.str.89 = [46 x i8] c" %u PLL postscaler: 1/32\0A\00"
@.str.90 = [53 x i8] c" %u USB PLL input clock: 24 MHz\0A\00"
@.str.91 = [40 x i8] c" %u Enable USB PLL\0A\00"
@.str.92 = [20 x i8] c" DEVCFG3 = %08x\0A\00"
@.str.93 = [40 x i8] c" %04x User-defined ID\0A\00"
@.str.94 = [55 x i8] c" %u Ethernet MII interface enable\0A\00"
@.str.95 = [47 x i8] c" %u Default Ethernet pins\0A\00"
@.str.97 = [65 x i8] c" %u Permission Group Lock - only 1 reconfig\0A\00"
@.str.98 = [69 x i8] c" %u Peripheral Module Disable - only 1 reconfig\0A\00"
@.str.99 = [65 x i8] c" %u Peripheral Pin Select - only 1 reconfig\0A\00"
@.str.100 = [54 x i8] c" %u USBID pin: controlled by USB\0A\00"
@str = [47 x i8] c" Alternate Ethernet pins\00"
@str.102 = [53 x i8] c" USBID pin: controlled by port\00"
define void @print_mz(i32 %0, i32 %1, i32 %2, i32 %3) {
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 %0)
%6 = xor i32 %0, -1
%7 = and i32 %6, 3
%8 = icmp eq i32 %7, 2
%9 = select i1 %8, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.2, i64 0, i64 0)
%10 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %9, i32 3)
%11 = and i32 %6, 4
%12 = icmp eq i32 %11, 0
%13 = select i1 %12, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.3, i64 0, i64 0)
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %13, i32 4)
%15 = and i32 %6, 8
%16 = icmp eq i32 %15, 0
br i1 %16, label %19, label %17
17: ; preds = %4
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.5, i64 0, i64 0), i32 8)
br label %19
19: ; preds = %17, %4
%20 = and i32 %6, 32
%21 = icmp eq i32 %20, 0
br i1 %21, label %24, label %22
22: ; preds = %19
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.6, i64 0, i64 0), i32 2)
br label %24
24: ; preds = %22, %19
%25 = and i32 %6, 64
%26 = icmp eq i32 %25, 0
br i1 %26, label %29, label %27
27: ; preds = %24
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.7, i64 0, i64 0), i32 4)
br label %29
29: ; preds = %27, %24
%30 = and i32 %6, 768
switch i32 %30, label %37 [
i32 768, label %31
i32 512, label %33
i32 256, label %35
]
31: ; preds = %29
%32 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.8, i64 0, i64 0), i32 3)
br label %39
33: ; preds = %29
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.9, i64 0, i64 0), i32 2)
br label %39
35: ; preds = %29
%36 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.10, i64 0, i64 0), i32 1)
br label %39
37: ; preds = %29
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.11, i64 0, i64 0), i32 3)
br label %39
39: ; preds = %37, %35, %33, %31
%40 = and i32 %6, 1024
%41 = icmp eq i32 %40, 0
br i1 %41, label %44, label %42
42: ; preds = %39
%43 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str.12, i64 0, i64 0), i32 4)
br label %44
44: ; preds = %42, %39
%45 = and i32 %6, 4096
%46 = icmp eq i32 %45, 0
br i1 %46, label %49, label %47
47: ; preds = %44
%48 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0), i32 1)
br label %49
49: ; preds = %47, %44
%50 = and i32 %6, 8192
%51 = icmp eq i32 %50, 0
br i1 %51, label %54, label %52
52: ; preds = %49
%53 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.14, i64 0, i64 0), i32 2)
br label %54
54: ; preds = %52, %49
%55 = and i32 %6, 16384
%56 = icmp eq i32 %55, 0
br i1 %56, label %59, label %57
57: ; preds = %54
%58 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.15, i64 0, i64 0), i32 4)
br label %59
59: ; preds = %57, %54
%60 = and i32 %6, 1073741824
%61 = icmp eq i32 %60, 0
br i1 %61, label %64, label %62
62: ; preds = %59
%63 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.16, i64 0, i64 0), i32 4)
br label %64
64: ; preds = %62, %59
%65 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.17, i64 0, i64 0), i32 %1)
%66 = and i32 %1, 7
switch i32 %66, label %77 [
i32 1, label %67
i32 2, label %69
i32 4, label %71
i32 5, label %73
i32 7, label %75
]
67: ; preds = %64
%68 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @.str.18, i64 0, i64 0), i32 1)
br label %79
69: ; preds = %64
%70 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @.str.19, i64 0, i64 0), i32 2)
br label %79
71: ; preds = %64
%72 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.20, i64 0, i64 0), i32 4)
br label %79
73: ; preds = %64
%74 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.21, i64 0, i64 0), i32 5)
br label %79
75: ; preds = %64
%76 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.22, i64 0, i64 0), i32 7)
br label %79
77: ; preds = %64
%78 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.23, i64 0, i64 0), i32 %66)
br label %79
79: ; preds = %77, %75, %73, %71, %69, %67
%80 = icmp sgt i32 %1, -1
br i1 %80, label %99, label %81
81: ; preds = %79
%82 = and i32 %1, 56
%83 = add nsw i32 %82, -8
%84 = lshr exact i32 %83, 3
switch i32 %84, label %99 [
i32 0, label %85
i32 1, label %87
i32 2, label %89
i32 3, label %91
i32 4, label %93
i32 5, label %95
i32 6, label %97
]
85: ; preds = %81
%86 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.24, i64 0, i64 0), i32 8)
br label %99
87: ; preds = %81
%88 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.25, i64 0, i64 0), i32 16)
br label %99
89: ; preds = %81
%90 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.26, i64 0, i64 0), i32 24)
br label %99
91: ; preds = %81
%92 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.27, i64 0, i64 0), i32 32)
br label %99
93: ; preds = %81
%94 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.28, i64 0, i64 0), i32 40)
br label %99
95: ; preds = %81
%96 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.29, i64 0, i64 0), i32 48)
br label %99
97: ; preds = %81
%98 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.30, i64 0, i64 0), i32 56)
br label %99
99: ; preds = %85, %87, %89, %91, %93, %95, %97, %81, %79
%100 = and i32 %1, 64
%101 = icmp eq i32 %100, 0
br i1 %101, label %104, label %102
102: ; preds = %99
%103 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.31, i64 0, i64 0), i32 4)
br label %104
104: ; preds = %102, %99
%105 = and i32 %1, 128
%106 = icmp eq i32 %105, 0
br i1 %106, label %109, label %107
107: ; preds = %104
%108 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.32, i64 0, i64 0), i32 8)
br label %109
109: ; preds = %107, %104
%110 = and i32 %1, 768
switch i32 %110, label %117 [
i32 0, label %111
i32 512, label %113
i32 768, label %115
]
111: ; preds = %109
%112 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.33, i64 0, i64 0), i32 0)
br label %117
113: ; preds = %109
%114 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.34, i64 0, i64 0), i32 2)
br label %117
115: ; preds = %109
%116 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.35, i64 0, i64 0), i32 3)
br label %117
117: ; preds = %109, %115, %113, %111
%118 = and i32 %1, 1024
%119 = icmp eq i32 %118, 0
br i1 %119, label %122, label %120
120: ; preds = %117
%121 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.36, i64 0, i64 0), i32 4)
br label %122
122: ; preds = %120, %117
%123 = and i32 %1, 16384
%124 = icmp eq i32 %123, 0
br i1 %124, label %127, label %125
125: ; preds = %122
%126 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.37, i64 0, i64 0), i32 4)
br label %127
127: ; preds = %125, %122
%128 = and i32 %1, 32768
%129 = icmp eq i32 %128, 0
br i1 %129, label %132, label %130
130: ; preds = %127
%131 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.38, i64 0, i64 0), i32 8)
br label %132
132: ; preds = %130, %127
%133 = and i32 %1, 8388608
%134 = icmp eq i32 %133, 0
br i1 %134, label %204, label %135
135: ; preds = %132
%136 = lshr i32 %1, 16
%137 = and i32 %136, 31
switch i32 %137, label %180 [
i32 0, label %138
i32 1, label %140
i32 2, label %142
i32 3, label %144
i32 4, label %146
i32 5, label %148
i32 6, label %150
i32 7, label %152
i32 8, label %154
i32 9, label %156
i32 10, label %158
i32 11, label %160
i32 12, label %162
i32 13, label %164
i32 14, label %166
i32 15, label %168
i32 16, label %170
i32 17, label %172
i32 18, label %174
i32 19, label %176
i32 20, label %178
]
138: ; preds = %135
%139 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.39, i64 0, i64 0), i32 0)
br label %180
140: ; preds = %135
%141 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.40, i64 0, i64 0), i32 1)
br label %180
142: ; preds = %135
%143 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.41, i64 0, i64 0), i32 2)
br label %180
144: ; preds = %135
%145 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.42, i64 0, i64 0), i32 3)
br label %180
146: ; preds = %135
%147 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.43, i64 0, i64 0), i32 4)
br label %180
148: ; preds = %135
%149 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.44, i64 0, i64 0), i32 5)
br label %180
150: ; preds = %135
%151 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.45, i64 0, i64 0), i32 6)
br label %180
152: ; preds = %135
%153 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.46, i64 0, i64 0), i32 7)
br label %180
154: ; preds = %135
%155 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.47, i64 0, i64 0), i32 8)
br label %180
156: ; preds = %135
%157 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.48, i64 0, i64 0), i32 9)
br label %180
158: ; preds = %135
%159 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.49, i64 0, i64 0), i32 10)
br label %180
160: ; preds = %135
%161 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.50, i64 0, i64 0), i32 11)
br label %180
162: ; preds = %135
%163 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.51, i64 0, i64 0), i32 12)
br label %180
164: ; preds = %135
%165 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.52, i64 0, i64 0), i32 13)
br label %180
166: ; preds = %135
%167 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.53, i64 0, i64 0), i32 14)
br label %180
168: ; preds = %135
%169 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.54, i64 0, i64 0), i32 15)
br label %180
170: ; preds = %135
%171 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.55, i64 0, i64 0), i32 16)
br label %180
172: ; preds = %135
%173 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.56, i64 0, i64 0), i32 17)
br label %180
174: ; preds = %135
%175 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.57, i64 0, i64 0), i32 18)
br label %180
176: ; preds = %135
%177 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.58, i64 0, i64 0), i32 19)
br label %180
178: ; preds = %135
%179 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.59, i64 0, i64 0), i32 20)
br label %180
180: ; preds = %135, %178, %176, %174, %172, %170, %168, %166, %164, %162, %160, %158, %156, %154, %152, %150, %148, %146, %144, %142, %140, %138
%181 = and i32 %1, 2097152
%182 = icmp eq i32 %181, 0
br i1 %182, label %185, label %183
183: ; preds = %180
%184 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([65 x i8], [65 x i8]* @.str.60, i64 0, i64 0), i32 2)
br label %185
185: ; preds = %183, %180
%186 = and i32 %1, 4194304
%187 = icmp eq i32 %186, 0
br i1 %187, label %190, label %188
188: ; preds = %185
%189 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.61, i64 0, i64 0), i32 4)
br label %190
190: ; preds = %188, %185
%191 = lshr i32 %1, 24
%192 = and i32 %191, 3
switch i32 %192, label %201 [
i32 0, label %193
i32 1, label %195
i32 2, label %197
i32 3, label %199
]
193: ; preds = %190
%194 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.62, i64 0, i64 0), i32 0)
br label %202
195: ; preds = %190
%196 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.63, i64 0, i64 0), i32 1)
br label %202
197: ; preds = %190
%198 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.64, i64 0, i64 0), i32 2)
br label %202
199: ; preds = %190
%200 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.65, i64 0, i64 0), i32 3)
br label %202
201: ; preds = %190
unreachable
202: ; preds = %199, %197, %195, %193
%203 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.66, i64 0, i64 0), i32 8)
br label %204
204: ; preds = %202, %132
br i1 %80, label %211, label %205
205: ; preds = %204
%206 = lshr i32 %1, 26
%207 = and i32 %206, 31
%208 = add nuw nsw i32 %207, 8
%209 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.67, i64 0, i64 0), i32 %207, i32 %208)
%210 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.68, i64 0, i64 0), i32 8)
br label %211
211: ; preds = %205, %204
%212 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.69, i64 0, i64 0), i32 %2)
%213 = and i32 %2, 7
switch i32 %213, label %230 [
i32 0, label %214
i32 1, label %216
i32 2, label %218
i32 3, label %220
i32 4, label %222
i32 5, label %224
i32 6, label %226
i32 7, label %228
]
214: ; preds = %211
%215 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.70, i64 0, i64 0), i32 0)
br label %231
216: ; preds = %211
%217 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.71, i64 0, i64 0), i32 1)
br label %231
218: ; preds = %211
%219 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.72, i64 0, i64 0), i32 2)
br label %231
220: ; preds = %211
%221 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.73, i64 0, i64 0), i32 3)
br label %231
222: ; preds = %211
%223 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.74, i64 0, i64 0), i32 4)
br label %231
224: ; preds = %211
%225 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.75, i64 0, i64 0), i32 5)
br label %231
226: ; preds = %211
%227 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.76, i64 0, i64 0), i32 6)
br label %231
228: ; preds = %211
%229 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.77, i64 0, i64 0), i32 7)
br label %231
230: ; preds = %211
unreachable
231: ; preds = %228, %226, %224, %222, %220, %218, %216, %214
%232 = and i32 %2, 112
%233 = add nsw i32 %232, -16
%234 = lshr exact i32 %233, 4
switch i32 %234, label %245 [
i32 0, label %235
i32 1, label %237
i32 2, label %239
i32 3, label %241
i32 4, label %243
]
235: ; preds = %231
%236 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.78, i64 0, i64 0), i32 1)
br label %245
237: ; preds = %231
%238 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.79, i64 0, i64 0), i32 2)
br label %245
239: ; preds = %231
%240 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.80, i64 0, i64 0), i32 3)
br label %245
241: ; preds = %231
%242 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), i32 4)
br label %245
243: ; preds = %231
%244 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.82, i64 0, i64 0), i32 5)
br label %245
245: ; preds = %231, %243, %241, %239, %237, %235
%246 = and i32 %2, 128
%247 = icmp eq i32 %246, 0
br i1 %247, label %250, label %248
248: ; preds = %245
%249 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.83, i64 0, i64 0), i32 8)
br label %250
250: ; preds = %248, %245
%251 = lshr i32 %2, 8
%252 = and i32 %251, 63
%253 = add nuw nsw i32 %252, 1
%254 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.84, i64 0, i64 0), i32 %252, i32 %253)
%255 = lshr i32 %2, 16
%256 = and i32 %255, 7
switch i32 %256, label %267 [
i32 0, label %257
i32 1, label %257
i32 2, label %259
i32 3, label %261
i32 4, label %263
i32 5, label %265
i32 6, label %265
i32 7, label %265
]
257: ; preds = %250, %250
%258 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.85, i64 0, i64 0), i32 %256)
br label %268
259: ; preds = %250
%260 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.86, i64 0, i64 0), i32 2)
br label %268
261: ; preds = %250
%262 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.87, i64 0, i64 0), i32 3)
br label %268
263: ; preds = %250
%264 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.88, i64 0, i64 0), i32 4)
br label %268
265: ; preds = %250, %250, %250
%266 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.89, i64 0, i64 0), i32 %256)
br label %268
267: ; preds = %250
unreachable
268: ; preds = %265, %263, %261, %259, %257
%269 = icmp sgt i32 %2, -1
br i1 %269, label %277, label %270
270: ; preds = %268
%271 = and i32 %2, 1073741824
%272 = icmp eq i32 %271, 0
br i1 %272, label %275, label %273
273: ; preds = %270
%274 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.90, i64 0, i64 0), i32 4)
br label %275
275: ; preds = %273, %270
%276 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.91, i64 0, i64 0), i32 8)
br label %277
277: ; preds = %275, %268
%278 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.92, i64 0, i64 0), i32 %3)
%279 = and i32 %3, 65535
%280 = icmp eq i32 %279, 65535
br i1 %280, label %283, label %281
281: ; preds = %277
%282 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.93, i64 0, i64 0), i32 %279)
br label %283
283: ; preds = %281, %277
%284 = and i32 %3, 16777216
%285 = icmp eq i32 %284, 0
br i1 %285, label %288, label %286
286: ; preds = %283
%287 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.94, i64 0, i64 0), i32 1)
br label %288
288: ; preds = %286, %283
%289 = and i32 %3, 33554432
%290 = icmp eq i32 %289, 0
br i1 %290, label %293, label %291
291: ; preds = %288
%292 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.95, i64 0, i64 0), i32 2)
br label %295
293: ; preds = %288
%294 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str, i64 0, i64 0))
br label %295
295: ; preds = %293, %291
%296 = and i32 %3, 134217728
%297 = icmp eq i32 %296, 0
br i1 %297, label %300, label %298
298: ; preds = %295
%299 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([65 x i8], [65 x i8]* @.str.97, i64 0, i64 0), i32 8)
br label %300
300: ; preds = %298, %295
%301 = and i32 %3, 268435456
%302 = icmp eq i32 %301, 0
br i1 %302, label %305, label %303
303: ; preds = %300
%304 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @.str.98, i64 0, i64 0), i32 1)
br label %305
305: ; preds = %303, %300
%306 = and i32 %3, 536870912
%307 = icmp eq i32 %306, 0
br i1 %307, label %310, label %308
308: ; preds = %305
%309 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([65 x i8], [65 x i8]* @.str.99, i64 0, i64 0), i32 2)
br label %310
310: ; preds = %308, %305
%311 = and i32 %3, 1073741824
%312 = icmp eq i32 %311, 0
br i1 %312, label %315, label %313
313: ; preds = %310
%314 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.100, i64 0, i64 0), i32 4)
br label %317
315: ; preds = %310
%316 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.102, i64 0, i64 0))
br label %317
317: ; preds = %315, %313
ret void
}