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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
void feed_main_dump_key(unsigned short int const i_code,
                        unsigned char const *const p_data,
                        unsigned long int const i_data_length) {
  printf("\"");
  if (i_code) {
    unsigned char c;
    c = (unsigned char)(i_code & 0xFFu);
    if (((unsigned short int)(1024u)) & i_code) {
      printf("<ctrl>-");
    }
    if (((unsigned short int)(256u)) & i_code) {
      printf("<shift>-");
    }
    if (((unsigned short int)(512u)) & i_code) {
      printf("<alt>-");
    }
    if (c < 32u) {
      printf("<.>");
    } else if (c < 127u) {
      printf("<%c>", (char)(c));
    } else {
      if (((unsigned short int)(130u)) == c) {
        printf("<up>");
      } else if (((unsigned short int)(131u)) == c) {
        printf("<down>");
      } else if (((unsigned short int)(133u)) == c) {
        printf("<left>");
      } else if (((unsigned short int)(132u)) == c) {
        printf("<right>");
      } else if (((unsigned short int)(134u)) == c) {
        printf("<insert>");
      } else if (((unsigned short int)(135u)) == c) {
        printf("<delete>");
      } else if (((unsigned short int)(136u)) == c) {
        printf("<home>");
      } else if (((unsigned short int)(137u)) == c) {
        printf("<end>");
      } else if (((unsigned short int)(138u)) == c) {
        printf("<pageup>");
      } else if (((unsigned short int)(139u)) == c) {
        printf("<pagedown>");
      } else if (((unsigned short int)(141u)) == c) {
        printf("<f1>");
      } else if (((unsigned short int)(142u)) == c) {
        printf("<f2>");
      } else if (((unsigned short int)(143u)) == c) {
        printf("<f3>");
      } else if (((unsigned short int)(144u)) == c) {
        printf("<f4>");
      } else if (((unsigned short int)(145u)) == c) {
        printf("<f5>");
      } else if (((unsigned short int)(146u)) == c) {
        printf("<f6>");
      } else if (((unsigned short int)(147u)) == c) {
        printf("<f7>");
      } else if (((unsigned short int)(148u)) == c) {
        printf("<f8>");
      } else if (((unsigned short int)(149u)) == c) {
        printf("<f9>");
      } else if (((unsigned short int)(150u)) == c) {
        printf("<f10>");
      } else if (((unsigned short int)(151u)) == c) {
        printf("<f11>");
      } else if (((unsigned short int)(152u)) == c) {
        printf("<f12>");
      } else {
        printf("<0x%02x>", (unsigned int)(i_code & 0xFFu));
      }
    }
  } else {
    if (1ul == i_data_length) {
      unsigned char c;
      c = (p_data[0u]);
      if ((c >= 32u) && (c < 127u)) {
        printf("<%c>", (char)(c));
      }
    }
  }
  printf("\"");
  {
    unsigned long int i_data_iterator;
    printf(" {");
    for (i_data_iterator = 0ul; i_data_iterator < i_data_length;
         i_data_iterator++) {
      unsigned char c;
      c = p_data[i_data_iterator];
      if (i_data_iterator) {
        printf(",");
      }
      if (c < 32u) {
        printf(" %u", (unsigned int)(c));
      } else if (c < 127u) {
        printf(" \'%c\'", (char)(c));
      } else {
        printf(" 0x%02x", (unsigned int)(c));
      }
    }
    printf(" }");
  }
  printf("\n");
}


x86 assembly (clang, -O0):
<feed_main_dump_key>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %di,%ax
mov    %ax,-0x2(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
lea    0xed2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpw   $0x0,-0x2(%rbp)
je     1598 <feed_main_dump_key+0x488>
movzwl -0x2(%rbp),%eax
and    $0xff,%eax
mov    %al,-0x19(%rbp)
movzwl -0x2(%rbp),%eax
and    $0x400,%eax
cmp    $0x0,%eax
je     116c <feed_main_dump_key+0x5c>
lea    0xe9d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movzwl -0x2(%rbp),%eax
and    $0x100,%eax
cmp    $0x0,%eax
je     118c <feed_main_dump_key+0x7c>
lea    0xe85(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movzwl -0x2(%rbp),%eax
and    $0x200,%eax
cmp    $0x0,%eax
je     11ac <feed_main_dump_key+0x9c>
lea    0xe6e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movzbl -0x19(%rbp),%eax
cmp    $0x20,%eax
jae    11cc <feed_main_dump_key+0xbc>
lea    0xe5a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1593 <feed_main_dump_key+0x483>
movzbl -0x19(%rbp),%eax
cmp    $0x7f,%eax
jae    11f0 <feed_main_dump_key+0xe0>
movsbl -0x19(%rbp),%esi
lea    0xe3a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    158e <feed_main_dump_key+0x47e>
movzbl -0x19(%rbp),%ecx
mov    $0x82,%eax
cmp    %ecx,%eax
jne    1214 <feed_main_dump_key+0x104>
lea    0xe1b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1589 <feed_main_dump_key+0x479>
movzbl -0x19(%rbp),%ecx
mov    $0x83,%eax
cmp    %ecx,%eax
jne    1238 <feed_main_dump_key+0x128>
lea    0xdfc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1584 <feed_main_dump_key+0x474>
movzbl -0x19(%rbp),%ecx
mov    $0x85,%eax
cmp    %ecx,%eax
jne    125c <feed_main_dump_key+0x14c>
lea    0xddf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    157f <feed_main_dump_key+0x46f>
movzbl -0x19(%rbp),%ecx
mov    $0x84,%eax
cmp    %ecx,%eax
jne    1280 <feed_main_dump_key+0x170>
lea    0xdc2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    157a <feed_main_dump_key+0x46a>
movzbl -0x19(%rbp),%ecx
mov    $0x86,%eax
cmp    %ecx,%eax
jne    12a4 <feed_main_dump_key+0x194>
lea    0xda6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1575 <feed_main_dump_key+0x465>
movzbl -0x19(%rbp),%ecx
mov    $0x87,%eax
cmp    %ecx,%eax
jne    12c8 <feed_main_dump_key+0x1b8>
lea    0xd8b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1570 <feed_main_dump_key+0x460>
movzbl -0x19(%rbp),%ecx
mov    $0x88,%eax
cmp    %ecx,%eax
jne    12ec <feed_main_dump_key+0x1dc>
lea    0xd70(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    156b <feed_main_dump_key+0x45b>
movzbl -0x19(%rbp),%ecx
mov    $0x89,%eax
cmp    %ecx,%eax
jne    1310 <feed_main_dump_key+0x200>
lea    0xd53(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1566 <feed_main_dump_key+0x456>
movzbl -0x19(%rbp),%ecx
mov    $0x8a,%eax
cmp    %ecx,%eax
jne    1334 <feed_main_dump_key+0x224>
lea    0xd35(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1561 <feed_main_dump_key+0x451>
movzbl -0x19(%rbp),%ecx
mov    $0x8b,%eax
cmp    %ecx,%eax
jne    1358 <feed_main_dump_key+0x248>
lea    0xd1a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    155c <feed_main_dump_key+0x44c>
movzbl -0x19(%rbp),%ecx
mov    $0x8d,%eax
cmp    %ecx,%eax
jne    137c <feed_main_dump_key+0x26c>
lea    0xd01(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1557 <feed_main_dump_key+0x447>
movzbl -0x19(%rbp),%ecx
mov    $0x8e,%eax
cmp    %ecx,%eax
jne    13a0 <feed_main_dump_key+0x290>
lea    0xce2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1552 <feed_main_dump_key+0x442>
movzbl -0x19(%rbp),%ecx
mov    $0x8f,%eax
cmp    %ecx,%eax
jne    13c4 <feed_main_dump_key+0x2b4>
lea    0xcc3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    154d <feed_main_dump_key+0x43d>
movzbl -0x19(%rbp),%ecx
mov    $0x90,%eax
cmp    %ecx,%eax
jne    13e8 <feed_main_dump_key+0x2d8>
lea    0xca4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1548 <feed_main_dump_key+0x438>
movzbl -0x19(%rbp),%ecx
mov    $0x91,%eax
cmp    %ecx,%eax
jne    140c <feed_main_dump_key+0x2fc>
lea    0xc85(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1543 <feed_main_dump_key+0x433>
movzbl -0x19(%rbp),%ecx
mov    $0x92,%eax
cmp    %ecx,%eax
jne    1430 <feed_main_dump_key+0x320>
lea    0xc66(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    153e <feed_main_dump_key+0x42e>
movzbl -0x19(%rbp),%ecx
mov    $0x93,%eax
cmp    %ecx,%eax
jne    1454 <feed_main_dump_key+0x344>
lea    0xc47(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1539 <feed_main_dump_key+0x429>
movzbl -0x19(%rbp),%ecx
mov    $0x94,%eax
cmp    %ecx,%eax
jne    1478 <feed_main_dump_key+0x368>
lea    0xc28(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1534 <feed_main_dump_key+0x424>
movzbl -0x19(%rbp),%ecx
mov    $0x95,%eax
cmp    %ecx,%eax
jne    149c <feed_main_dump_key+0x38c>
lea    0xc09(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    152f <feed_main_dump_key+0x41f>
movzbl -0x19(%rbp),%ecx
mov    $0x96,%eax
cmp    %ecx,%eax
jne    14c0 <feed_main_dump_key+0x3b0>
lea    0xbea(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    152a <feed_main_dump_key+0x41a>
movzbl -0x19(%rbp),%ecx
mov    $0x97,%eax
cmp    %ecx,%eax
jne    14e4 <feed_main_dump_key+0x3d4>
lea    0xbcc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1525 <feed_main_dump_key+0x415>
movzbl -0x19(%rbp),%ecx
mov    $0x98,%eax
cmp    %ecx,%eax
jne    1508 <feed_main_dump_key+0x3f8>
lea    0xbae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1520 <feed_main_dump_key+0x410>
movzwl -0x2(%rbp),%esi
and    $0xff,%esi
lea    0xb97(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1525 <feed_main_dump_key+0x415>
jmp    152a <feed_main_dump_key+0x41a>
jmp    152f <feed_main_dump_key+0x41f>
jmp    1534 <feed_main_dump_key+0x424>
jmp    1539 <feed_main_dump_key+0x429>
jmp    153e <feed_main_dump_key+0x42e>
jmp    1543 <feed_main_dump_key+0x433>
jmp    1548 <feed_main_dump_key+0x438>
jmp    154d <feed_main_dump_key+0x43d>
jmp    1552 <feed_main_dump_key+0x442>
jmp    1557 <feed_main_dump_key+0x447>
jmp    155c <feed_main_dump_key+0x44c>
jmp    1561 <feed_main_dump_key+0x451>
jmp    1566 <feed_main_dump_key+0x456>
jmp    156b <feed_main_dump_key+0x45b>
jmp    1570 <feed_main_dump_key+0x460>
jmp    1575 <feed_main_dump_key+0x465>
jmp    157a <feed_main_dump_key+0x46a>
jmp    157f <feed_main_dump_key+0x46f>
jmp    1584 <feed_main_dump_key+0x474>
jmp    1589 <feed_main_dump_key+0x479>
jmp    158e <feed_main_dump_key+0x47e>
jmp    1593 <feed_main_dump_key+0x483>
jmp    15e6 <feed_main_dump_key+0x4d6>
mov    $0x1,%eax
cmp    -0x18(%rbp),%rax
jne    15e1 <feed_main_dump_key+0x4d1>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x1a(%rbp)
movzbl -0x1a(%rbp),%eax
cmp    $0x20,%eax
jb     15dc <feed_main_dump_key+0x4cc>
movzbl -0x1a(%rbp),%eax
cmp    $0x7f,%eax
jae    15dc <feed_main_dump_key+0x4cc>
movsbl -0x1a(%rbp),%esi
lea    0xa49(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15e1 <feed_main_dump_key+0x4d1>
jmp    15e6 <feed_main_dump_key+0x4d6>
lea    0xa13(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xabe(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x18(%rbp),%rax
jae    16b4 <feed_main_dump_key+0x5a4>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x29(%rbp)
cmpq   $0x0,-0x28(%rbp)
je     163f <feed_main_dump_key+0x52f>
lea    0xa84(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movzbl -0x29(%rbp),%eax
cmp    $0x20,%eax
jae    1663 <feed_main_dump_key+0x553>
movzbl -0x29(%rbp),%esi
lea    0xa67(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    169e <feed_main_dump_key+0x58e>
movzbl -0x29(%rbp),%eax
cmp    $0x7f,%eax
jae    1687 <feed_main_dump_key+0x577>
movsbl -0x29(%rbp),%esi
lea    0xa47(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1699 <feed_main_dump_key+0x589>
movzbl -0x29(%rbp),%esi
lea    0xa36(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    169e <feed_main_dump_key+0x58e>
jmp    16a3 <feed_main_dump_key+0x593>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    160a <feed_main_dump_key+0x4fa>
lea    0xa15(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xa0a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<feed_main_dump_key>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdx,%r12
mov    %rsi,(%rsp)
mov    %edi,%ebp
mov    $0x22,%edi
call   1030 <putchar@plt>
test   %ebp,%ebp
je     1189 <feed_main_dump_key+0x69>
movzwl %bp,%r15d
test   $0x400,%r15d
jne    11ad <feed_main_dump_key+0x8d>
test   $0x100,%r15d
jne    11c4 <feed_main_dump_key+0xa4>
test   $0x200,%r15d
je     116f <feed_main_dump_key+0x4f>
lea    0xf05(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
movzbl %bpl,%eax
cmp    $0x1f,%ax
ja     11dd <feed_main_dump_key+0xbd>
lea    0xef4(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    11f9 <feed_main_dump_key+0xd9>
cmp    $0x1,%r12
mov    (%rsp),%rbx
jne    11fd <feed_main_dump_key+0xdd>
movzbl (%rbx),%esi
lea    -0x20(%rsi),%eax
cmp    $0x5e,%al
ja     11fd <feed_main_dump_key+0xdd>
lea    0xed4(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    11fd <feed_main_dump_key+0xdd>
lea    0xea8(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x100,%r15d
je     1158 <feed_main_dump_key+0x38>
lea    0xe99(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x200,%r15d
jne    1161 <feed_main_dump_key+0x41>
jmp    116f <feed_main_dump_key+0x4f>
cmp    $0x7e,%ax
ja     12bc <feed_main_dump_key+0x19c>
movsbl %r15b,%esi
lea    0xe86(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    (%rsp),%rbx
mov    $0x22,%edi
call   1030 <putchar@plt>
lea    0xf05(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   %r12,%r12
je     1296 <feed_main_dump_key+0x176>
movzbl (%rbx),%esi
cmp    $0x7f,%esi
lea    0xeef(%rip),%r15
lea    0xeee(%rip),%r13
mov    %r13,%rdi
cmovb  %r15,%rdi
cmp    $0x20,%esi
lea    0xed3(%rip),%rbx
cmovb  %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x1,%r12
je     1296 <feed_main_dump_key+0x176>
mov    $0x1,%r14d
nopw   0x0(%rax,%rax,1)
mov    (%rsp),%rax
movzbl (%rax,%r14,1),%ebp
mov    $0x2c,%edi
call   1030 <putchar@plt>
cmp    $0x7f,%ebp
mov    %r13,%rdi
cmovb  %r15,%rdi
cmp    $0x20,%ebp
cmovb  %rbx,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
add    $0x1,%r14
cmp    %r14,%r12
jne    1260 <feed_main_dump_key+0x140>
lea    0xe8b(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <putchar@plt>
add    $0x7e,%bpl
cmp    $0x16,%bpl
ja     1356 <feed_main_dump_key+0x236>
movzbl %bpl,%eax
lea    0xd2b(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xd98(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd91(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd93(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd80(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd83(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd80(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd7d(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd78(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd72(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd6f(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
movzbl %r15b,%esi
lea    0xda9(%rip),%rdi
jmp    11f2 <feed_main_dump_key+0xd2>
lea    0xd5e(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd57(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd50(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd49(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd42(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd3b(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd34(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd2d(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd26(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd1f(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd19(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>
lea    0xd13(%rip),%rdi
jmp    1180 <feed_main_dump_key+0x60>

LLVM IR (-O0):
@.str = [2 x i8] c"\22\00"
@.str.1 = [8 x i8] c"<ctrl>-\00"
@.str.2 = [9 x i8] c"<shift>-\00"
@.str.3 = [7 x i8] c"<alt>-\00"
@.str.4 = [4 x i8] c"<.>\00"
@.str.5 = [5 x i8] c"<%c>\00"
@.str.6 = [5 x i8] c"<up>\00"
@.str.7 = [7 x i8] c"<down>\00"
@.str.8 = [7 x i8] c"<left>\00"
@.str.9 = [8 x i8] c"<right>\00"
@.str.10 = [9 x i8] c"<insert>\00"
@.str.11 = [9 x i8] c"<delete>\00"
@.str.12 = [7 x i8] c"<home>\00"
@.str.13 = [6 x i8] c"<end>\00"
@.str.14 = [9 x i8] c"<pageup>\00"
@.str.15 = [11 x i8] c"<pagedown>\00"
@.str.16 = [5 x i8] c"<f1>\00"
@.str.17 = [5 x i8] c"<f2>\00"
@.str.18 = [5 x i8] c"<f3>\00"
@.str.19 = [5 x i8] c"<f4>\00"
@.str.20 = [5 x i8] c"<f5>\00"
@.str.21 = [5 x i8] c"<f6>\00"
@.str.22 = [5 x i8] c"<f7>\00"
@.str.23 = [5 x i8] c"<f8>\00"
@.str.24 = [5 x i8] c"<f9>\00"
@.str.25 = [6 x i8] c"<f10>\00"
@.str.26 = [6 x i8] c"<f11>\00"
@.str.27 = [6 x i8] c"<f12>\00"
@.str.28 = [9 x i8] c"<0x%02x>\00"
@.str.29 = [3 x i8] c" {\00"
@.str.30 = [2 x i8] c",\00"
@.str.31 = [4 x i8] c" %u\00"
@.str.32 = [6 x i8] c" '%c'\00"
@.str.33 = [8 x i8] c" 0x%02x\00"
@.str.34 = [3 x i8] c" }\00"
@.str.35 = [2 x i8] c"\0A\00"
define void @feed_main_dump_key(i16 zeroext %0, i8* %1, i64 %2) {
%4 = alloca i16
%5 = alloca i8*
%6 = alloca i64
%7 = alloca i8
%8 = alloca i8
%9 = alloca i64
%10 = alloca i8
store i16 %0, i16* %4
store i8* %1, i8** %5
store i64 %2, i64* %6
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%12 = load i16, i16* %4
%13 = icmp ne i16 %12, 0
br i1 %13, label %14, label %214
14: ; preds = %3
%15 = load i16, i16* %4
%16 = zext i16 %15 to i32
%17 = and i32 %16, 255
%18 = trunc i32 %17 to i8
store i8 %18, i8* %7
%19 = load i16, i16* %4
%20 = zext i16 %19 to i32
%21 = and i32 1024, %20
%22 = icmp ne i32 %21, 0
br i1 %22, label %23, label %25
23: ; preds = %14
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %25
25: ; preds = %23, %14
%26 = load i16, i16* %4
%27 = zext i16 %26 to i32
%28 = and i32 256, %27
%29 = icmp ne i32 %28, 0
br i1 %29, label %30, label %32
30: ; preds = %25
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %32
32: ; preds = %30, %25
%33 = load i16, i16* %4
%34 = zext i16 %33 to i32
%35 = and i32 512, %34
%36 = icmp ne i32 %35, 0
br i1 %36, label %37, label %39
37: ; preds = %32
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0))
br label %39
39: ; preds = %37, %32
%40 = load i8, i8* %7
%41 = zext i8 %40 to i32
%42 = icmp ult i32 %41, 32
br i1 %42, label %43, label %45
43: ; preds = %39
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
br label %213
45: ; preds = %39
%46 = load i8, i8* %7
%47 = zext i8 %46 to i32
%48 = icmp ult i32 %47, 127
br i1 %48, label %49, label %53
49: ; preds = %45
%50 = load i8, i8* %7
%51 = sext i8 %50 to i32
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %51)
br label %212
53: ; preds = %45
%54 = load i8, i8* %7
%55 = zext i8 %54 to i32
%56 = icmp eq i32 130, %55
br i1 %56, label %57, label %59
57: ; preds = %53
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
br label %211
59: ; preds = %53
%60 = load i8, i8* %7
%61 = zext i8 %60 to i32
%62 = icmp eq i32 131, %61
br i1 %62, label %63, label %65
63: ; preds = %59
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
br label %210
65: ; preds = %59
%66 = load i8, i8* %7
%67 = zext i8 %66 to i32
%68 = icmp eq i32 133, %67
br i1 %68, label %69, label %71
69: ; preds = %65
%70 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0))
br label %209
71: ; preds = %65
%72 = load i8, i8* %7
%73 = zext i8 %72 to i32
%74 = icmp eq i32 132, %73
br i1 %74, label %75, label %77
75: ; preds = %71
%76 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
br label %208
77: ; preds = %71
%78 = load i8, i8* %7
%79 = zext i8 %78 to i32
%80 = icmp eq i32 134, %79
br i1 %80, label %81, label %83
81: ; preds = %77
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0))
br label %207
83: ; preds = %77
%84 = load i8, i8* %7
%85 = zext i8 %84 to i32
%86 = icmp eq i32 135, %85
br i1 %86, label %87, label %89
87: ; preds = %83
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0))
br label %206
89: ; preds = %83
%90 = load i8, i8* %7
%91 = zext i8 %90 to i32
%92 = icmp eq i32 136, %91
br i1 %92, label %93, label %95
93: ; preds = %89
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
br label %205
95: ; preds = %89
%96 = load i8, i8* %7
%97 = zext i8 %96 to i32
%98 = icmp eq i32 137, %97
br i1 %98, label %99, label %101
99: ; preds = %95
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0))
br label %204
101: ; preds = %95
%102 = load i8, i8* %7
%103 = zext i8 %102 to i32
%104 = icmp eq i32 138, %103
br i1 %104, label %105, label %107
105: ; preds = %101
%106 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0))
br label %203
107: ; preds = %101
%108 = load i8, i8* %7
%109 = zext i8 %108 to i32
%110 = icmp eq i32 139, %109
br i1 %110, label %111, label %113
111: ; preds = %107
%112 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.15, i64 0, i64 0))
br label %202
113: ; preds = %107
%114 = load i8, i8* %7
%115 = zext i8 %114 to i32
%116 = icmp eq i32 141, %115
br i1 %116, label %117, label %119
117: ; preds = %113
%118 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0))
br label %201
119: ; preds = %113
%120 = load i8, i8* %7
%121 = zext i8 %120 to i32
%122 = icmp eq i32 142, %121
br i1 %122, label %123, label %125
123: ; preds = %119
%124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0))
br label %200
125: ; preds = %119
%126 = load i8, i8* %7
%127 = zext i8 %126 to i32
%128 = icmp eq i32 143, %127
br i1 %128, label %129, label %131
129: ; preds = %125
%130 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0))
br label %199
131: ; preds = %125
%132 = load i8, i8* %7
%133 = zext i8 %132 to i32
%134 = icmp eq i32 144, %133
br i1 %134, label %135, label %137
135: ; preds = %131
%136 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0))
br label %198
137: ; preds = %131
%138 = load i8, i8* %7
%139 = zext i8 %138 to i32
%140 = icmp eq i32 145, %139
br i1 %140, label %141, label %143
141: ; preds = %137
%142 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0))
br label %197
143: ; preds = %137
%144 = load i8, i8* %7
%145 = zext i8 %144 to i32
%146 = icmp eq i32 146, %145
br i1 %146, label %147, label %149
147: ; preds = %143
%148 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.21, i64 0, i64 0))
br label %196
149: ; preds = %143
%150 = load i8, i8* %7
%151 = zext i8 %150 to i32
%152 = icmp eq i32 147, %151
br i1 %152, label %153, label %155
153: ; preds = %149
%154 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0))
br label %195
155: ; preds = %149
%156 = load i8, i8* %7
%157 = zext i8 %156 to i32
%158 = icmp eq i32 148, %157
br i1 %158, label %159, label %161
159: ; preds = %155
%160 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0))
br label %194
161: ; preds = %155
%162 = load i8, i8* %7
%163 = zext i8 %162 to i32
%164 = icmp eq i32 149, %163
br i1 %164, label %165, label %167
165: ; preds = %161
%166 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i64 0, i64 0))
br label %193
167: ; preds = %161
%168 = load i8, i8* %7
%169 = zext i8 %168 to i32
%170 = icmp eq i32 150, %169
br i1 %170, label %171, label %173
171: ; preds = %167
%172 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.25, i64 0, i64 0))
br label %192
173: ; preds = %167
%174 = load i8, i8* %7
%175 = zext i8 %174 to i32
%176 = icmp eq i32 151, %175
br i1 %176, label %177, label %179
177: ; preds = %173
%178 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0))
br label %191
179: ; preds = %173
%180 = load i8, i8* %7
%181 = zext i8 %180 to i32
%182 = icmp eq i32 152, %181
br i1 %182, label %183, label %185
183: ; preds = %179
%184 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0))
br label %190
185: ; preds = %179
%186 = load i16, i16* %4
%187 = zext i16 %186 to i32
%188 = and i32 %187, 255
%189 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.28, i64 0, i64 0), i32 %188)
br label %190
190: ; preds = %185, %183
br label %191
191: ; preds = %190, %177
br label %192
192: ; preds = %191, %171
br label %193
193: ; preds = %192, %165
br label %194
194: ; preds = %193, %159
br label %195
195: ; preds = %194, %153
br label %196
196: ; preds = %195, %147
br label %197
197: ; preds = %196, %141
br label %198
198: ; preds = %197, %135
br label %199
199: ; preds = %198, %129
br label %200
200: ; preds = %199, %123
br label %201
201: ; preds = %200, %117
br label %202
202: ; preds = %201, %111
br label %203
203: ; preds = %202, %105
br label %204
204: ; preds = %203, %99
br label %205
205: ; preds = %204, %93
br label %206
206: ; preds = %205, %87
br label %207
207: ; preds = %206, %81
br label %208
208: ; preds = %207, %75
br label %209
209: ; preds = %208, %69
br label %210
210: ; preds = %209, %63
br label %211
211: ; preds = %210, %57
br label %212
212: ; preds = %211, %49
br label %213
213: ; preds = %212, %43
br label %234
214: ; preds = %3
%215 = load i64, i64* %6
%216 = icmp eq i64 1, %215
br i1 %216, label %217, label %233
217: ; preds = %214
%218 = load i8*, i8** %5
%219 = getelementptr inbounds i8, i8* %218, i64 0
%220 = load i8, i8* %219
store i8 %220, i8* %8
%221 = load i8, i8* %8
%222 = zext i8 %221 to i32
%223 = icmp uge i32 %222, 32
br i1 %223, label %224, label %232
224: ; preds = %217
%225 = load i8, i8* %8
%226 = zext i8 %225 to i32
%227 = icmp ult i32 %226, 127
br i1 %227, label %228, label %232
228: ; preds = %224
%229 = load i8, i8* %8
%230 = sext i8 %229 to i32
%231 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %230)
br label %232
232: ; preds = %228, %224, %217
br label %233
233: ; preds = %232, %214
br label %234
234: ; preds = %233, %213
%235 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%236 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0))
store i64 0, i64* %9
br label %237
237: ; preds = %272, %234
%238 = load i64, i64* %9
%239 = load i64, i64* %6
%240 = icmp ult i64 %238, %239
br i1 %240, label %241, label %275
241: ; preds = %237
%242 = load i8*, i8** %5
%243 = load i64, i64* %9
%244 = getelementptr inbounds i8, i8* %242, i64 %243
%245 = load i8, i8* %244
store i8 %245, i8* %10
%246 = load i64, i64* %9
%247 = icmp ne i64 %246, 0
br i1 %247, label %248, label %250
248: ; preds = %241
%249 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.30, i64 0, i64 0))
br label %250
250: ; preds = %248, %241
%251 = load i8, i8* %10
%252 = zext i8 %251 to i32
%253 = icmp ult i32 %252, 32
br i1 %253, label %254, label %258
254: ; preds = %250
%255 = load i8, i8* %10
%256 = zext i8 %255 to i32
%257 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), i32 %256)
br label %271
258: ; preds = %250
%259 = load i8, i8* %10
%260 = zext i8 %259 to i32
%261 = icmp ult i32 %260, 127
br i1 %261, label %262, label %266
262: ; preds = %258
%263 = load i8, i8* %10
%264 = sext i8 %263 to i32
%265 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.32, i64 0, i64 0), i32 %264)
br label %270
266: ; preds = %258
%267 = load i8, i8* %10
%268 = zext i8 %267 to i32
%269 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.33, i64 0, i64 0), i32 %268)
br label %270
270: ; preds = %266, %262
br label %271
271: ; preds = %270, %254
br label %272
272: ; preds = %271
%273 = load i64, i64* %9
%274 = add i64 %273, 1
store i64 %274, i64* %9
br label %237
275: ; preds = %237
%276 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.34, i64 0, i64 0))
%277 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.1 = [8 x i8] c"<ctrl>-\00"
@.str.2 = [9 x i8] c"<shift>-\00"
@.str.3 = [7 x i8] c"<alt>-\00"
@.str.4 = [4 x i8] c"<.>\00"
@.str.5 = [5 x i8] c"<%c>\00"
@.str.6 = [5 x i8] c"<up>\00"
@.str.7 = [7 x i8] c"<down>\00"
@.str.8 = [7 x i8] c"<left>\00"
@.str.9 = [8 x i8] c"<right>\00"
@.str.10 = [9 x i8] c"<insert>\00"
@.str.11 = [9 x i8] c"<delete>\00"
@.str.12 = [7 x i8] c"<home>\00"
@.str.13 = [6 x i8] c"<end>\00"
@.str.14 = [9 x i8] c"<pageup>\00"
@.str.15 = [11 x i8] c"<pagedown>\00"
@.str.16 = [5 x i8] c"<f1>\00"
@.str.17 = [5 x i8] c"<f2>\00"
@.str.18 = [5 x i8] c"<f3>\00"
@.str.19 = [5 x i8] c"<f4>\00"
@.str.20 = [5 x i8] c"<f5>\00"
@.str.21 = [5 x i8] c"<f6>\00"
@.str.22 = [5 x i8] c"<f7>\00"
@.str.23 = [5 x i8] c"<f8>\00"
@.str.24 = [5 x i8] c"<f9>\00"
@.str.25 = [6 x i8] c"<f10>\00"
@.str.26 = [6 x i8] c"<f11>\00"
@.str.27 = [6 x i8] c"<f12>\00"
@.str.28 = [9 x i8] c"<0x%02x>\00"
@.str.29 = [3 x i8] c" {\00"
@.str.31 = [4 x i8] c" %u\00"
@.str.32 = [6 x i8] c" '%c'\00"
@.str.33 = [8 x i8] c" 0x%02x\00"
@.str.34 = [3 x i8] c" }\00"
define void @feed_main_dump_key(i16 zeroext %0, i8* nocapture %1, i64 %2) {
%4 = tail call i32 @putchar(i32 34)
%5 = icmp eq i16 %0, 0
br i1 %5, label %82, label %6
6: ; preds = %3
%7 = zext i16 %0 to i32
%8 = and i32 %7, 255
%9 = and i32 %7, 1024
%10 = icmp eq i32 %9, 0
br i1 %10, label %13, label %11
11: ; preds = %6
%12 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %13
13: ; preds = %11, %6
%14 = and i32 %7, 256
%15 = icmp eq i32 %14, 0
br i1 %15, label %18, label %16
16: ; preds = %13
%17 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %18
18: ; preds = %16, %13
%19 = and i32 %7, 512
%20 = icmp eq i32 %19, 0
br i1 %20, label %23, label %21
21: ; preds = %18
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0))
br label %23
23: ; preds = %21, %18
%24 = and i16 %0, 255
%25 = icmp ult i16 %24, 32
br i1 %25, label %26, label %28
26: ; preds = %23
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
br label %91
28: ; preds = %23
%29 = icmp ult i16 %24, 127
br i1 %29, label %30, label %34
30: ; preds = %28
%31 = shl i32 %7, 24
%32 = ashr exact i32 %31, 24
%33 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %32)
br label %91
34: ; preds = %28
%35 = trunc i16 %0 to i8
switch i8 %35, label %80 [
i8 -126, label %36
i8 -125, label %38
i8 -123, label %40
i8 -124, label %42
i8 -122, label %44
i8 -121, label %46
i8 -120, label %48
i8 -119, label %50
i8 -118, label %52
i8 -117, label %54
i8 -115, label %56
i8 -114, label %58
i8 -113, label %60
i8 -112, label %62
i8 -111, label %64
i8 -110, label %66
i8 -109, label %68
i8 -108, label %70
i8 -107, label %72
i8 -106, label %74
i8 -105, label %76
i8 -104, label %78
]
36: ; preds = %34
%37 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
br label %91
38: ; preds = %34
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
br label %91
40: ; preds = %34
%41 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0))
br label %91
42: ; preds = %34
%43 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
br label %91
44: ; preds = %34
%45 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0))
br label %91
46: ; preds = %34
%47 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0))
br label %91
48: ; preds = %34
%49 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
br label %91
50: ; preds = %34
%51 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0))
br label %91
52: ; preds = %34
%53 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0))
br label %91
54: ; preds = %34
%55 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.15, i64 0, i64 0))
br label %91
56: ; preds = %34
%57 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0))
br label %91
58: ; preds = %34
%59 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0))
br label %91
60: ; preds = %34
%61 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0))
br label %91
62: ; preds = %34
%63 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0))
br label %91
64: ; preds = %34
%65 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0))
br label %91
66: ; preds = %34
%67 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.21, i64 0, i64 0))
br label %91
68: ; preds = %34
%69 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0))
br label %91
70: ; preds = %34
%71 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0))
br label %91
72: ; preds = %34
%73 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i64 0, i64 0))
br label %91
74: ; preds = %34
%75 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.25, i64 0, i64 0))
br label %91
76: ; preds = %34
%77 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0))
br label %91
78: ; preds = %34
%79 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0))
br label %91
80: ; preds = %34
%81 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.28, i64 0, i64 0), i32 %8)
br label %91
82: ; preds = %3
%83 = icmp eq i64 %2, 1
br i1 %83, label %84, label %91
84: ; preds = %82
%85 = load i8, i8* %1
%86 = add i8 %85, -32
%87 = icmp ult i8 %86, 95
br i1 %87, label %88, label %91
88: ; preds = %84
%89 = zext i8 %85 to i32
%90 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %89)
br label %91
91: ; preds = %84, %88, %26, %36, %40, %44, %48, %52, %56, %60, %64, %68, %72, %76, %80, %78, %74, %70, %66, %62, %58, %54, %50, %46, %42, %38, %30, %82
%92 = tail call i32 @putchar(i32 34)
%93 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0))
%94 = icmp eq i64 %2, 0
br i1 %94, label %117, label %95
95: ; preds = %91
%96 = load i8, i8* %1
%97 = zext i8 %96 to i32
%98 = icmp ult i8 %96, 32
%99 = icmp ult i8 %96, 127
%100 = select i1 %99, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.32, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.33, i64 0, i64 0)
%101 = select i1 %98, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), i8* %100
%102 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %101, i32 %97)
%103 = icmp eq i64 %2, 1
br i1 %103, label %117, label %104
104: ; preds = %95, %104
%105 = phi i64 [ %115, %104 ], [ 1, %95 ]
%106 = getelementptr inbounds i8, i8* %1, i64 %105
%107 = load i8, i8* %106
%108 = tail call i32 @putchar(i32 44)
%109 = zext i8 %107 to i32
%110 = icmp ult i8 %107, 32
%111 = icmp ult i8 %107, 127
%112 = select i1 %111, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.32, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.33, i64 0, i64 0)
%113 = select i1 %110, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), i8* %112
%114 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %113, i32 %109)
%115 = add nuw i64 %105, 1
%116 = icmp eq i64 %115, %2
br i1 %116, label %117, label %104
117: ; preds = %104, %95, %91
%118 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.34, i64 0, i64 0))
%119 = tail call i32 @putchar(i32 10)
ret void
}