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

/* Forward declarations */

/* Type definitions */
typedef scalar_t__ uint32_t;

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
void print_mk_devcfg0(uint32_t devcfg0, uint32_t alternate) {
  if (0 == alternate) {
    printf(" BF1DEVCFG0 = 0x%08X\n", devcfg0);
  } else {
    printf(" BF2DEVCFG0 = 0x%08X\n", devcfg0);
  }
  if (devcfg0 & 0x40000000) {
    printf("                %01x        Normal EJTAG functionality\n",
           0x40000000 >> 28);
  } else {
    printf("                %01x        Reduced EJTAG functionality\n", 0);
  }
  if (devcfg0 & 0x00200000) {
    printf("                  %01x      Boost the kick start of the POSC\n",
           0x00200000 >> 20);
  } else {
    printf("                  %01x      Normal start of the POSC\n", 0);
  }
  switch (devcfg0 & 0x00180000) {
  case 0x00180000:
    printf("                  %02x     POSC gain level 3 (highest)\n",
           0x00180000 >> 16);
    break;
  case 0x00100000:
    printf("                  %02x     POSC gain level 2\n", 0x00100000 >> 16);
    break;
  case 0x00080000:
    printf("                  %02x     POSC gain level 1\n", 0x00080000 >> 16);
    break;
  case 0x00000000:
    printf("                  %02x     POSC gain level 0 (lowest)\n",
           0x00000000 >> 16);
    break;
  }
  if (devcfg0 & 0x00040000) {
    printf("                   %01x     Boost the kick start of the SOSC\n",
           0x00040000 >> 16);
  } else {
    printf("                   %01x     Normal start of the SOSC\n", 0);
  }
  switch (devcfg0 & 0x00030000) {
  case 0x00030000:
    printf("                   %01x     SOSC gain level 3 (highest)\n",
           0x00030000 >> 16);
    break;
  case 0x00020000:
    printf("                   %01x     SOSC gain level 2\n", 0x00020000 >> 16);
    break;
  case 0x00010000:
    printf("                   %01x     SOSC gain level 1\n", 0x00010000 >> 16);
    break;
  case 0x00000000:
    printf("                   %01x     SOSC gain level 0 (lowest)\n",
           0x00000000 >> 16);
    break;
  }
  if (devcfg0 & 0x00008000) {
    printf(
        "                    %01x    MCLR pin generates normal system Reset\n",
        0x00008000 >> 12);
  } else {
    printf("                    %01x    MCLR pin generates a POR Reset\n", 0);
  }
  printf("                    %01x    Debug mode CPU Access Permission bits\n",
         (devcfg0 & 0x00007000) >> 12);
  if ((devcfg0 & 0x00007000) & 0x00004000) {
    printf("                         CPU access to Permissions Group 2: "
           "ALLOWED\n");
  } else {
    printf(
        "                         CPU access to Permissions Group 2: DENIED\n");
  }
  if ((devcfg0 & 0x00007000) & 0x00002000) {
    printf("                         CPU access to Permissions Group 1: "
           "ALLOWED\n");
  } else {
    printf(
        "                         CPU access to Permissions Group 1: DENIED\n");
  }
  if ((devcfg0 & 0x00007000) & 0x00001000) {
    printf("                         CPU access to Permissions Group 0: "
           "ALLOWED\n");
  } else {
    printf(
        "                         CPU access to Permissions Group 0: DENIED\n");
  }
  if (devcfg0 & 0x00000400) {
    printf("                     %01x   Flash powered down in sleep mode\n",
           0x00000400 >> 8);
  } else {
    printf("                     %01x   Flash power down controlled by VREGS "
           "bit\n",
           0);
  }
  if (devcfg0 & 0x00000040) {
    printf("                      %01x  Boot and exception code is MIPS32\n",
           0x00000040 >> 4);
  } else {
    printf("                      %01x  Boot and exception code is microMIPS\n",
           0);
  }
  if (devcfg0 & 0x00000020) {
    printf("                      %01x  Trace features enabled\n",
           0x00000020 >> 4);
  } else {
    printf("                      %01x  Trace features disabled\n", 0);
  }
  switch (devcfg0 & 0x00000018) {
  case 0x00000018:
    printf("                      %02x PGEC1/PGED1 pair in use\n", 0x00000018);
    break;
  case 0x00000010:
    printf("                      %02x PGEC2/PGED2 pair in use\n", 0x00020000);
    break;
  case 0x00000008:
    printf("                      %02x PGEC3/PGED3 pair in use\n", 0x00010000);
    break;
  case 0x00000000:
    printf("                      %02x Reserved setting\n", 0x00000000);
    break;
  }
  if (devcfg0 & 0x00000004) {
    printf("                       %01x JTAG enabled\n", 0x00000004);
  } else {
    printf("                       %01x JTAG disabled\n", 0);
  }
  switch (devcfg0 & 0x00000003) {
  case 0x00000003:
    printf("                       %01x JTAG enabled, ICSP disabled, ICD "
           "disabled\n",
           0x00000003);
    break;
  case 0x00000002:
    printf("                       %01x JTAG enabled, ICSP disabled, ICD "
           "enabled\n",
           0x00000002);
    break;
  case 0x00000001:
    printf("                       %01x JTAG disabled, ICSP enabled, ICD "
           "disabled\n",
           0x00000001);
    break;
  case 0x00000000:
    printf("                       %01x JTAG disabled, ICSP enabled, ICD "
           "enabled\n",
           0x00000000);
    break;
  }
}


x86 assembly (clang, -O0):
<print_mk_devcfg0>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
xor    %eax,%eax
cmp    -0x10(%rbp),%rax
jne    1143 <print_mk_devcfg0+0x33>
mov    -0x8(%rbp),%rsi
lea    0xf3d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1155 <print_mk_devcfg0+0x45>
mov    -0x8(%rbp),%rsi
lea    0xf3c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x40000000,%rax
cmp    $0x0,%rax
je     1181 <print_mk_devcfg0+0x71>
lea    0xf30(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1191 <print_mk_devcfg0+0x81>
lea    0xf50(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x200000,%rax
cmp    $0x0,%rax
je     11bd <print_mk_devcfg0+0xad>
lea    0xf65(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11cd <print_mk_devcfg0+0xbd>
lea    0xf8b(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x180000,%rax
mov    %rax,-0x18(%rbp)
je     126d <print_mk_devcfg0+0x15d>
jmp    11e6 <print_mk_devcfg0+0xd6>
mov    -0x18(%rbp),%rax
sub    $0x80000,%rax
je     1255 <print_mk_devcfg0+0x145>
jmp    11fb <print_mk_devcfg0+0xeb>
mov    -0x18(%rbp),%rax
sub    $0x100000,%rax
je     123d <print_mk_devcfg0+0x12d>
jmp    1210 <print_mk_devcfg0+0x100>
mov    -0x18(%rbp),%rax
sub    $0x180000,%rax
jne    127d <print_mk_devcfg0+0x16d>
jmp    1225 <print_mk_devcfg0+0x115>
lea    0xf59(%rip),%rdi
mov    $0x18,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    127d <print_mk_devcfg0+0x16d>
lea    0xf79(%rip),%rdi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    127d <print_mk_devcfg0+0x16d>
lea    0xf8f(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    127d <print_mk_devcfg0+0x16d>
lea    0xfa5(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x40000,%rax
cmp    $0x0,%rax
je     12a9 <print_mk_devcfg0+0x199>
lea    0xfb8(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12b9 <print_mk_devcfg0+0x1a9>
lea    0xfde(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x30000,%rax
mov    %rax,-0x20(%rbp)
je     1359 <print_mk_devcfg0+0x249>
jmp    12d2 <print_mk_devcfg0+0x1c2>
mov    -0x20(%rbp),%rax
sub    $0x10000,%rax
je     1341 <print_mk_devcfg0+0x231>
jmp    12e7 <print_mk_devcfg0+0x1d7>
mov    -0x20(%rbp),%rax
sub    $0x20000,%rax
je     1329 <print_mk_devcfg0+0x219>
jmp    12fc <print_mk_devcfg0+0x1ec>
mov    -0x20(%rbp),%rax
sub    $0x30000,%rax
jne    1369 <print_mk_devcfg0+0x259>
jmp    1311 <print_mk_devcfg0+0x201>
lea    0xfac(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1369 <print_mk_devcfg0+0x259>
lea    0xfcd(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1369 <print_mk_devcfg0+0x259>
lea    0xfe4(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1369 <print_mk_devcfg0+0x259>
lea    0xffb(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x8000,%rax
cmp    $0x0,%rax
je     1395 <print_mk_devcfg0+0x285>
lea    0x100f(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13a5 <print_mk_devcfg0+0x295>
lea    0x103b(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rsi
and    $0x7000,%rsi
sar    $0xc,%rsi
lea    0x1058(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x7000,%rax
and    $0x4000,%rax
cmp    $0x0,%rax
je     13ef <print_mk_devcfg0+0x2df>
lea    0x1073(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13fd <print_mk_devcfg0+0x2ed>
lea    0x10a5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x7000,%rax
and    $0x2000,%rax
cmp    $0x0,%rax
je     142a <print_mk_devcfg0+0x31a>
lea    0x10c1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1438 <print_mk_devcfg0+0x328>
lea    0x10f3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x7000,%rax
and    $0x1000,%rax
cmp    $0x0,%rax
je     1465 <print_mk_devcfg0+0x355>
lea    0x110f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1473 <print_mk_devcfg0+0x363>
lea    0x1141(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x400,%rax
cmp    $0x0,%rax
je     149f <print_mk_devcfg0+0x38f>
lea    0x1163(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14af <print_mk_devcfg0+0x39f>
lea    0x1189(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x40,%rax
cmp    $0x0,%rax
je     14d9 <print_mk_devcfg0+0x3c9>
lea    0x11ad(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14e9 <print_mk_devcfg0+0x3d9>
lea    0x11d4(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x20,%rax
cmp    $0x0,%rax
je     1513 <print_mk_devcfg0+0x403>
lea    0x11f4(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1523 <print_mk_devcfg0+0x413>
lea    0x1210(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x18,%eax
mov    %rax,-0x28(%rbp)
sub    $0x18,%rax
ja     15a4 <print_mk_devcfg0+0x494>
mov    -0x28(%rbp),%rax
lea    0xabd(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x120c(%rip),%rdi
mov    $0x18,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15a4 <print_mk_devcfg0+0x494>
lea    0x1228(%rip),%rdi
mov    $0x20000,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15a4 <print_mk_devcfg0+0x494>
lea    0x1244(%rip),%rdi
mov    $0x10000,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15a4 <print_mk_devcfg0+0x494>
lea    0x1260(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x4,%rax
cmp    $0x0,%rax
je     15ce <print_mk_devcfg0+0x4be>
lea    0x126b(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15de <print_mk_devcfg0+0x4ce>
lea    0x127d(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x3,%eax
mov    %rax,-0x30(%rbp)
sub    $0x3,%rax
ja     165f <print_mk_devcfg0+0x54f>
mov    -0x30(%rbp),%rax
lea    0xa66(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x126f(%rip),%rdi
mov    $0x3,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    165f <print_mk_devcfg0+0x54f>
lea    0x129e(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    165f <print_mk_devcfg0+0x54f>
lea    0x12cc(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    165f <print_mk_devcfg0+0x54f>
lea    0x12fb(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_mk_devcfg0>:
push   %rbx
mov    %rdi,%rbx
test   %rsi,%rsi
lea    0xf12(%rip),%rax
lea    0xf21(%rip),%rdi
cmove  %rax,%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40000000,%ebx
jne    1156 <print_mk_devcfg0+0x36>
lea    0xf52(%rip),%rdi
xor    %esi,%esi
jmp    1162 <print_mk_devcfg0+0x42>
lea    0xf0f(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x200000,%ebx
jne    1199 <print_mk_devcfg0+0x79>
lea    0xfa3(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
shr    $0x13,%eax
and    $0x3,%eax
lea    0xe70(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xf3d(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
shr    $0x13,%eax
and    $0x3,%eax
lea    0xe45(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x101a(%rip),%rdi
xor    %esi,%esi
jmp    11f7 <print_mk_devcfg0+0xd7>
lea    0xfb3(%rip),%rdi
mov    $0x10,%esi
jmp    11f7 <print_mk_devcfg0+0xd7>
lea    0xf6d(%rip),%rdi
mov    $0x18,%esi
jmp    11f7 <print_mk_devcfg0+0xd7>
lea    0xfc5(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40000,%ebx
jne    122e <print_mk_devcfg0+0x10e>
lea    0x104d(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
shr    $0x10,%eax
and    $0x3,%eax
lea    0xdeb(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xfe7(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
shr    $0x10,%eax
and    $0x3,%eax
lea    0xdc0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x10c7(%rip),%rdi
xor    %esi,%esi
jmp    128c <print_mk_devcfg0+0x16c>
lea    0x105e(%rip),%rdi
mov    $0x2,%esi
jmp    128c <print_mk_devcfg0+0x16c>
lea    0x1017(%rip),%rdi
mov    $0x3,%esi
jmp    128c <print_mk_devcfg0+0x16c>
lea    0x1071(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x8000,%ebx
jne    12a6 <print_mk_devcfg0+0x186>
lea    0x1101(%rip),%rdi
xor    %esi,%esi
jmp    12b2 <print_mk_devcfg0+0x192>
lea    0x10b2(%rip),%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%esi
shr    $0xc,%esi
and    $0x7,%esi
lea    0x1117(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x4000,%ebx
lea    0x14ec(%rip),%rax
lea    0x1636(%rip),%rdi
cmove  %rax,%rdi
call   1030 <puts@plt>
test   $0x2000,%ebx
lea    0x1512(%rip),%rax
lea    0x15d5(%rip),%rdi
cmove  %rax,%rdi
call   1030 <puts@plt>
test   $0x1000,%ebx
lea    0x1538(%rip),%rax
lea    0x1574(%rip),%rdi
cmove  %rax,%rdi
call   1030 <puts@plt>
test   $0x400,%ebx
jne    1339 <print_mk_devcfg0+0x219>
lea    0x112b(%rip),%rdi
xor    %esi,%esi
jmp    1345 <print_mk_devcfg0+0x225>
lea    0x10e2(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40,%bl
jne    135c <print_mk_devcfg0+0x23c>
lea    0x118d(%rip),%rdi
xor    %esi,%esi
jmp    1368 <print_mk_devcfg0+0x248>
lea    0x1143(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x20,%bl
jne    139c <print_mk_devcfg0+0x27c>
lea    0x11e0(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
shr    $0x3,%eax
and    $0x3,%eax
lea    0xc8d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1184(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
shr    $0x3,%eax
and    $0x3,%eax
lea    0xc62(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x125e(%rip),%rdi
xor    %esi,%esi
jmp    13fa <print_mk_devcfg0+0x2da>
lea    0x11eb(%rip),%rdi
mov    $0x20000,%esi
jmp    13fa <print_mk_devcfg0+0x2da>
lea    0x11a9(%rip),%rdi
mov    $0x18,%esi
jmp    13fa <print_mk_devcfg0+0x2da>
lea    0x1203(%rip),%rdi
mov    $0x10000,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x4,%bl
jne    1429 <print_mk_devcfg0+0x309>
lea    0x1276(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
and    $0x3,%ebx
lea    0xc10(%rip),%rax
movslq (%rax,%rbx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    0x1229(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1040 <printf@plt>
and    $0x3,%ebx
lea    0xbea(%rip),%rax
movslq (%rax,%rbx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    0x132c(%rip),%rdi
xor    %esi,%esi
jmp    1482 <print_mk_devcfg0+0x362>
lea    0x1294(%rip),%rdi
mov    $0x2,%esi
jmp    1482 <print_mk_devcfg0+0x362>
lea    0x123f(%rip),%rdi
mov    $0x3,%esi
jmp    1482 <print_mk_devcfg0+0x362>
lea    0x12be(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
pop    %rbx
jmp    1040 <printf@plt>

LLVM IR (-O0):
@.str = [22 x i8] c" BF1DEVCFG0 = 0x%08X\0A\00"
@.str.1 = [22 x i8] c" BF2DEVCFG0 = 0x%08X\0A\00"
@.str.2 = [56 x i8] c" %01x Normal EJTAG functionality\0A\00"
@.str.3 = [57 x i8] c" %01x Reduced EJTAG functionality\0A\00"
@.str.4 = [62 x i8] c" %01x Boost the kick start of the POSC\0A\00"
@.str.5 = [54 x i8] c" %01x Normal start of the POSC\0A\00"
@.str.6 = [56 x i8] c" %02x POSC gain level 3 (highest)\0A\00"
@.str.7 = [46 x i8] c" %02x POSC gain level 2\0A\00"
@.str.8 = [46 x i8] c" %02x POSC gain level 1\0A\00"
@.str.9 = [55 x i8] c" %02x POSC gain level 0 (lowest)\0A\00"
@.str.10 = [62 x i8] c" %01x Boost the kick start of the SOSC\0A\00"
@.str.11 = [54 x i8] c" %01x Normal start of the SOSC\0A\00"
@.str.12 = [57 x i8] c" %01x SOSC gain level 3 (highest)\0A\00"
@.str.13 = [47 x i8] c" %01x SOSC gain level 2\0A\00"
@.str.14 = [47 x i8] c" %01x SOSC gain level 1\0A\00"
@.str.15 = [56 x i8] c" %01x SOSC gain level 0 (lowest)\0A\00"
@.str.16 = [68 x i8] c" %01x MCLR pin generates normal system Reset\0A\00"
@.str.17 = [60 x i8] c" %01x MCLR pin generates a POR Reset\0A\00"
@.str.18 = [67 x i8] c" %01x Debug mode CPU Access Permission bits\0A\00"
@.str.19 = [69 x i8] c" CPU access to Permissions Group 2: ALLOWED\0A\00"
@.str.20 = [68 x i8] c" CPU access to Permissions Group 2: DENIED\0A\00"
@.str.21 = [69 x i8] c" CPU access to Permissions Group 1: ALLOWED\0A\00"
@.str.22 = [68 x i8] c" CPU access to Permissions Group 1: DENIED\0A\00"
@.str.23 = [69 x i8] c" CPU access to Permissions Group 0: ALLOWED\0A\00"
@.str.24 = [68 x i8] c" CPU access to Permissions Group 0: DENIED\0A\00"
@.str.25 = [62 x i8] c" %01x Flash powered down in sleep mode\0A\00"
@.str.26 = [70 x i8] c" %01x Flash power down controlled by VREGS bit\0A\00"
@.str.27 = [63 x i8] c" %01x Boot and exception code is MIPS32\0A\00"
@.str.28 = [66 x i8] c" %01x Boot and exception code is microMIPS\0A\00"
@.str.29 = [52 x i8] c" %01x Trace features enabled\0A\00"
@.str.30 = [53 x i8] c" %01x Trace features disabled\0A\00"
@.str.31 = [52 x i8] c" %02x PGEC1/PGED1 pair in use\0A\00"
@.str.32 = [52 x i8] c" %02x PGEC2/PGED2 pair in use\0A\00"
@.str.33 = [52 x i8] c" %02x PGEC3/PGED3 pair in use\0A\00"
@.str.34 = [45 x i8] c" %02x Reserved setting\0A\00"
@.str.35 = [42 x i8] c" %01x JTAG enabled\0A\00"
@.str.36 = [43 x i8] c" %01x JTAG disabled\0A\00"
@.str.37 = [71 x i8] c" %01x JTAG enabled, ICSP disabled, ICD disabled\0A\00"
@.str.38 = [70 x i8] c" %01x JTAG enabled, ICSP disabled, ICD enabled\0A\00"
@.str.39 = [71 x i8] c" %01x JTAG disabled, ICSP enabled, ICD disabled\0A\00"
@.str.40 = [70 x i8] c" %01x JTAG disabled, ICSP enabled, ICD enabled\0A\00"
define void @print_mk_devcfg0(i64 %0, i64 %1) {
%3 = alloca i64
%4 = alloca i64
store i64 %0, i64* %3
store i64 %1, i64* %4
%5 = load i64, i64* %4
%6 = icmp eq i64 0, %5
br i1 %6, label %7, label %10
7: ; preds = %2
%8 = load i64, i64* %3
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i64 %8)
br label %13
10: ; preds = %2
%11 = load i64, i64* %3
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.1, i64 0, i64 0), i64 %11)
br label %13
13: ; preds = %10, %7
%14 = load i64, i64* %3
%15 = and i64 %14, 1073741824
%16 = icmp ne i64 %15, 0
br i1 %16, label %17, label %19
17: ; preds = %13
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.2, i64 0, i64 0), i32 4)
br label %21
19: ; preds = %13
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.3, i64 0, i64 0), i32 0)
br label %21
21: ; preds = %19, %17
%22 = load i64, i64* %3
%23 = and i64 %22, 2097152
%24 = icmp ne i64 %23, 0
br i1 %24, label %25, label %27
25: ; preds = %21
%26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.4, i64 0, i64 0), i32 2)
br label %29
27: ; preds = %21
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.5, i64 0, i64 0), i32 0)
br label %29
29: ; preds = %27, %25
%30 = load i64, i64* %3
%31 = and i64 %30, 1572864
switch i64 %31, label %40 [
i64 1572864, label %32
i64 1048576, label %34
i64 524288, label %36
i64 0, label %38
]
32: ; preds = %29
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.6, i64 0, i64 0), i32 24)
br label %40
34: ; preds = %29
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0), i32 16)
br label %40
36: ; preds = %29
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.8, i64 0, i64 0), i32 8)
br label %40
38: ; preds = %29
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i32 0)
br label %40
40: ; preds = %29, %38, %36, %34, %32
%41 = load i64, i64* %3
%42 = and i64 %41, 262144
%43 = icmp ne i64 %42, 0
br i1 %43, label %44, label %46
44: ; preds = %40
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.10, i64 0, i64 0), i32 4)
br label %48
46: ; preds = %40
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.11, i64 0, i64 0), i32 0)
br label %48
48: ; preds = %46, %44
%49 = load i64, i64* %3
%50 = and i64 %49, 196608
switch i64 %50, label %59 [
i64 196608, label %51
i64 131072, label %53
i64 65536, label %55
i64 0, label %57
]
51: ; preds = %48
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.12, i64 0, i64 0), i32 3)
br label %59
53: ; preds = %48
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.13, i64 0, i64 0), i32 2)
br label %59
55: ; preds = %48
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.14, i64 0, i64 0), i32 1)
br label %59
57: ; preds = %48
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.15, i64 0, i64 0), i32 0)
br label %59
59: ; preds = %48, %57, %55, %53, %51
%60 = load i64, i64* %3
%61 = and i64 %60, 32768
%62 = icmp ne i64 %61, 0
br i1 %62, label %63, label %65
63: ; preds = %59
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.16, i64 0, i64 0), i32 8)
br label %67
65: ; preds = %59
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.17, i64 0, i64 0), i32 0)
br label %67
67: ; preds = %65, %63
%68 = load i64, i64* %3
%69 = and i64 %68, 28672
%70 = ashr i64 %69, 12
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.18, i64 0, i64 0), i64 %70)
%72 = load i64, i64* %3
%73 = and i64 %72, 28672
%74 = and i64 %73, 16384
%75 = icmp ne i64 %74, 0
br i1 %75, label %76, label %78
76: ; preds = %67
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.19, i64 0, i64 0))
br label %80
78: ; preds = %67
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.20, i64 0, i64 0))
br label %80
80: ; preds = %78, %76
%81 = load i64, i64* %3
%82 = and i64 %81, 28672
%83 = and i64 %82, 8192
%84 = icmp ne i64 %83, 0
br i1 %84, label %85, label %87
85: ; preds = %80
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.21, i64 0, i64 0))
br label %89
87: ; preds = %80
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.22, i64 0, i64 0))
br label %89
89: ; preds = %87, %85
%90 = load i64, i64* %3
%91 = and i64 %90, 28672
%92 = and i64 %91, 4096
%93 = icmp ne i64 %92, 0
br i1 %93, label %94, label %96
94: ; preds = %89
%95 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.23, i64 0, i64 0))
br label %98
96: ; preds = %89
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.24, i64 0, i64 0))
br label %98
98: ; preds = %96, %94
%99 = load i64, i64* %3
%100 = and i64 %99, 1024
%101 = icmp ne i64 %100, 0
br i1 %101, label %102, label %104
102: ; preds = %98
%103 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.25, i64 0, i64 0), i32 4)
br label %106
104: ; preds = %98
%105 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.26, i64 0, i64 0), i32 0)
br label %106
106: ; preds = %104, %102
%107 = load i64, i64* %3
%108 = and i64 %107, 64
%109 = icmp ne i64 %108, 0
br i1 %109, label %110, label %112
110: ; preds = %106
%111 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.27, i64 0, i64 0), i32 4)
br label %114
112: ; preds = %106
%113 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.28, i64 0, i64 0), i32 0)
br label %114
114: ; preds = %112, %110
%115 = load i64, i64* %3
%116 = and i64 %115, 32
%117 = icmp ne i64 %116, 0
br i1 %117, label %118, label %120
118: ; preds = %114
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.29, i64 0, i64 0), i32 2)
br label %122
120: ; preds = %114
%121 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.30, i64 0, i64 0), i32 0)
br label %122
122: ; preds = %120, %118
%123 = load i64, i64* %3
%124 = and i64 %123, 24
switch i64 %124, label %133 [
i64 24, label %125
i64 16, label %127
i64 8, label %129
i64 0, label %131
]
125: ; preds = %122
%126 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.31, i64 0, i64 0), i32 24)
br label %133
127: ; preds = %122
%128 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.32, i64 0, i64 0), i32 131072)
br label %133
129: ; preds = %122
%130 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.33, i64 0, i64 0), i32 65536)
br label %133
131: ; preds = %122
%132 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.34, i64 0, i64 0), i32 0)
br label %133
133: ; preds = %122, %131, %129, %127, %125
%134 = load i64, i64* %3
%135 = and i64 %134, 4
%136 = icmp ne i64 %135, 0
br i1 %136, label %137, label %139
137: ; preds = %133
%138 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.35, i64 0, i64 0), i32 4)
br label %141
139: ; preds = %133
%140 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.36, i64 0, i64 0), i32 0)
br label %141
141: ; preds = %139, %137
%142 = load i64, i64* %3
%143 = and i64 %142, 3
switch i64 %143, label %152 [
i64 3, label %144
i64 2, label %146
i64 1, label %148
i64 0, label %150
]
144: ; preds = %141
%145 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.37, i64 0, i64 0), i32 3)
br label %152
146: ; preds = %141
%147 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.38, i64 0, i64 0), i32 2)
br label %152
148: ; preds = %141
%149 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.39, i64 0, i64 0), i32 1)
br label %152
150: ; preds = %141
%151 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.40, i64 0, i64 0), i32 0)
br label %152
152: ; preds = %141, %150, %148, %146, %144
ret void
}

LLVM IR (-O2):
@.str = [22 x i8] c" BF1DEVCFG0 = 0x%08X\0A\00"
@.str.1 = [22 x i8] c" BF2DEVCFG0 = 0x%08X\0A\00"
@.str.2 = [56 x i8] c" %01x Normal EJTAG functionality\0A\00"
@.str.3 = [57 x i8] c" %01x Reduced EJTAG functionality\0A\00"
@.str.4 = [62 x i8] c" %01x Boost the kick start of the POSC\0A\00"
@.str.5 = [54 x i8] c" %01x Normal start of the POSC\0A\00"
@.str.6 = [56 x i8] c" %02x POSC gain level 3 (highest)\0A\00"
@.str.7 = [46 x i8] c" %02x POSC gain level 2\0A\00"
@.str.8 = [46 x i8] c" %02x POSC gain level 1\0A\00"
@.str.9 = [55 x i8] c" %02x POSC gain level 0 (lowest)\0A\00"
@.str.10 = [62 x i8] c" %01x Boost the kick start of the SOSC\0A\00"
@.str.11 = [54 x i8] c" %01x Normal start of the SOSC\0A\00"
@.str.12 = [57 x i8] c" %01x SOSC gain level 3 (highest)\0A\00"
@.str.13 = [47 x i8] c" %01x SOSC gain level 2\0A\00"
@.str.14 = [47 x i8] c" %01x SOSC gain level 1\0A\00"
@.str.15 = [56 x i8] c" %01x SOSC gain level 0 (lowest)\0A\00"
@.str.16 = [68 x i8] c" %01x MCLR pin generates normal system Reset\0A\00"
@.str.17 = [60 x i8] c" %01x MCLR pin generates a POR Reset\0A\00"
@.str.18 = [67 x i8] c" %01x Debug mode CPU Access Permission bits\0A\00"
@.str.25 = [62 x i8] c" %01x Flash powered down in sleep mode\0A\00"
@.str.26 = [70 x i8] c" %01x Flash power down controlled by VREGS bit\0A\00"
@.str.27 = [63 x i8] c" %01x Boot and exception code is MIPS32\0A\00"
@.str.28 = [66 x i8] c" %01x Boot and exception code is microMIPS\0A\00"
@.str.29 = [52 x i8] c" %01x Trace features enabled\0A\00"
@.str.30 = [53 x i8] c" %01x Trace features disabled\0A\00"
@.str.31 = [52 x i8] c" %02x PGEC1/PGED1 pair in use\0A\00"
@.str.32 = [52 x i8] c" %02x PGEC2/PGED2 pair in use\0A\00"
@.str.33 = [52 x i8] c" %02x PGEC3/PGED3 pair in use\0A\00"
@.str.34 = [45 x i8] c" %02x Reserved setting\0A\00"
@.str.35 = [42 x i8] c" %01x JTAG enabled\0A\00"
@.str.36 = [43 x i8] c" %01x JTAG disabled\0A\00"
@.str.37 = [71 x i8] c" %01x JTAG enabled, ICSP disabled, ICD disabled\0A\00"
@.str.38 = [70 x i8] c" %01x JTAG enabled, ICSP disabled, ICD enabled\0A\00"
@.str.39 = [71 x i8] c" %01x JTAG disabled, ICSP enabled, ICD disabled\0A\00"
@.str.40 = [70 x i8] c" %01x JTAG disabled, ICSP enabled, ICD enabled\0A\00"
@str = [67 x i8] c" CPU access to Permissions Group 2: DENIED\00"
@str.41 = [67 x i8] c" CPU access to Permissions Group 1: DENIED\00"
@str.42 = [67 x i8] c" CPU access to Permissions Group 0: DENIED\00"
@str.43 = [68 x i8] c" CPU access to Permissions Group 0: ALLOWED\00"
@str.44 = [68 x i8] c" CPU access to Permissions Group 1: ALLOWED\00"
@str.45 = [68 x i8] c" CPU access to Permissions Group 2: ALLOWED\00"
define void @print_mk_devcfg0(i64 %0, i64 %1) {
%3 = icmp eq i64 %1, 0
%4 = select i1 %3, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.1, i64 0, i64 0)
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %4, i64 %0)
%6 = and i64 %0, 1073741824
%7 = icmp eq i64 %6, 0
br i1 %7, label %10, label %8
8: ; preds = %2
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.2, i64 0, i64 0), i32 4)
br label %12
10: ; preds = %2
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.3, i64 0, i64 0), i32 0)
br label %12
12: ; preds = %10, %8
%13 = and i64 %0, 2097152
%14 = icmp eq i64 %13, 0
br i1 %14, label %17, label %15
15: ; preds = %12
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.4, i64 0, i64 0), i32 2)
br label %19
17: ; preds = %12
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.5, i64 0, i64 0), i32 0)
br label %19
19: ; preds = %17, %15
%20 = lshr i64 %0, 19
%21 = and i64 %20, 3
switch i64 %21, label %30 [
i64 3, label %22
i64 2, label %24
i64 1, label %26
i64 0, label %28
]
22: ; preds = %19
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.6, i64 0, i64 0), i32 24)
br label %31
24: ; preds = %19
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0), i32 16)
br label %31
26: ; preds = %19
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.8, i64 0, i64 0), i32 8)
br label %31
28: ; preds = %19
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0), i32 0)
br label %31
30: ; preds = %19
unreachable
31: ; preds = %28, %26, %24, %22
%32 = and i64 %0, 262144
%33 = icmp eq i64 %32, 0
br i1 %33, label %36, label %34
34: ; preds = %31
%35 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.10, i64 0, i64 0), i32 4)
br label %38
36: ; preds = %31
%37 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.11, i64 0, i64 0), i32 0)
br label %38
38: ; preds = %36, %34
%39 = lshr i64 %0, 16
%40 = and i64 %39, 3
switch i64 %40, label %49 [
i64 3, label %41
i64 2, label %43
i64 1, label %45
i64 0, label %47
]
41: ; preds = %38
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.12, i64 0, i64 0), i32 3)
br label %50
43: ; preds = %38
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.13, i64 0, i64 0), i32 2)
br label %50
45: ; preds = %38
%46 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.14, i64 0, i64 0), i32 1)
br label %50
47: ; preds = %38
%48 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.15, i64 0, i64 0), i32 0)
br label %50
49: ; preds = %38
unreachable
50: ; preds = %47, %45, %43, %41
%51 = and i64 %0, 32768
%52 = icmp eq i64 %51, 0
br i1 %52, label %55, label %53
53: ; preds = %50
%54 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([68 x i8], [68 x i8]* @.str.16, i64 0, i64 0), i32 8)
br label %57
55: ; preds = %50
%56 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.17, i64 0, i64 0), i32 0)
br label %57
57: ; preds = %55, %53
%58 = lshr i64 %0, 12
%59 = and i64 %58, 7
%60 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([67 x i8], [67 x i8]* @.str.18, i64 0, i64 0), i64 %59)
%61 = and i64 %0, 16384
%62 = icmp eq i64 %61, 0
%63 = select i1 %62, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @str, i64 0, i64 0), i8* getelementptr inbounds ([68 x i8], [68 x i8]* @str.45, i64 0, i64 0)
%64 = tail call i32 @puts(i8* dereferenceable(1) %63)
%65 = and i64 %0, 8192
%66 = icmp eq i64 %65, 0
%67 = select i1 %66, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @str.41, i64 0, i64 0), i8* getelementptr inbounds ([68 x i8], [68 x i8]* @str.44, i64 0, i64 0)
%68 = tail call i32 @puts(i8* dereferenceable(1) %67)
%69 = and i64 %0, 4096
%70 = icmp eq i64 %69, 0
%71 = select i1 %70, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @str.42, i64 0, i64 0), i8* getelementptr inbounds ([68 x i8], [68 x i8]* @str.43, i64 0, i64 0)
%72 = tail call i32 @puts(i8* dereferenceable(1) %71)
%73 = and i64 %0, 1024
%74 = icmp eq i64 %73, 0
br i1 %74, label %77, label %75
75: ; preds = %57
%76 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.25, i64 0, i64 0), i32 4)
br label %79
77: ; preds = %57
%78 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @.str.26, i64 0, i64 0), i32 0)
br label %79
79: ; preds = %77, %75
%80 = and i64 %0, 64
%81 = icmp eq i64 %80, 0
br i1 %81, label %84, label %82
82: ; preds = %79
%83 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.27, i64 0, i64 0), i32 4)
br label %86
84: ; preds = %79
%85 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str.28, i64 0, i64 0), i32 0)
br label %86
86: ; preds = %84, %82
%87 = and i64 %0, 32
%88 = icmp eq i64 %87, 0
br i1 %88, label %91, label %89
89: ; preds = %86
%90 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.29, i64 0, i64 0), i32 2)
br label %93
91: ; preds = %86
%92 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.30, i64 0, i64 0), i32 0)
br label %93
93: ; preds = %91, %89
%94 = lshr i64 %0, 3
%95 = and i64 %94, 3
switch i64 %95, label %104 [
i64 3, label %96
i64 2, label %98
i64 1, label %100
i64 0, label %102
]
96: ; preds = %93
%97 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.31, i64 0, i64 0), i32 24)
br label %105
98: ; preds = %93
%99 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.32, i64 0, i64 0), i32 131072)
br label %105
100: ; preds = %93
%101 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.33, i64 0, i64 0), i32 65536)
br label %105
102: ; preds = %93
%103 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.34, i64 0, i64 0), i32 0)
br label %105
104: ; preds = %93
unreachable
105: ; preds = %102, %100, %98, %96
%106 = and i64 %0, 4
%107 = icmp eq i64 %106, 0
br i1 %107, label %110, label %108
108: ; preds = %105
%109 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.35, i64 0, i64 0), i32 4)
br label %112
110: ; preds = %105
%111 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.36, i64 0, i64 0), i32 0)
br label %112
112: ; preds = %110, %108
%113 = and i64 %0, 3
switch i64 %113, label %122 [
i64 3, label %114
i64 2, label %116
i64 1, label %118
i64 0, label %120
]
114: ; preds = %112
%115 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @.str.37, i64 0, i64 0), i32 3)
br label %123
116: ; preds = %112
%117 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @.str.38, i64 0, i64 0), i32 2)
br label %123
118: ; preds = %112
%119 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @.str.39, i64 0, i64 0), i32 1)
br label %123
120: ; preds = %112
%121 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @.str.40, i64 0, i64 0), i32 0)
br label %123
122: ; preds = %112
unreachable
123: ; preds = %120, %118, %116, %114
ret void
}