printbootp(unsigned char op, unsigned char htype, unsigned char hlen,
           unsigned char hops, const unsigned char *xid,
           const unsigned char *secs, const unsigned char *flags,
           const unsigned char *ciaddr, const unsigned char *yiaddr,
           const unsigned char *siaddr, const unsigned char *giaddr,
           const unsigned char *chaddr, const unsigned char *sname,
           const unsigned char *file, const unsigned char *options,
           int len_opt) {
  int i, i_opt, len, y, value, n_addr;
  if (op == 1)
    printf("Message op code / message type, value: %d -> BOOTREQUEST\n", op);
  else
    printf("Message op code / message type, value: %d -> BOOTREPLY\n", op);
  printf("Hardware address type, value: ");
  switch (htype) {
  case 1:
    printf(" %d -> Ethernet (10 Mb)\n", htype);
    break;
  case 6:
    printf(" %d -> IEEE 802 Networks\n", htype);
    break;
  case 7:
    printf(" %d -> ARCNET\n", htype);
    break;
  case 11:
    printf(" %d -> LocalTalk\n", htype);
    break;
  case 12:
    printf(" %d -> LocalNet (IBM PCNet or SYTEK LocalNET\n", htype);
    break;
  case 14:
    printf(" %d -> SMDS\n", htype);
    break;
  case 15:
    printf(" %d -> Frame Relay\n", htype);
    break;
  case 16:
    printf(" %d -> Asynchronous Transfer Mode (ATM)\n", htype);
    break;
  case 17:
    printf(" %d -> HDLC\n", htype);
    break;
  case 18:
    printf(" %d -> Fibre Channel\n", htype);
    break;
  case 19:
    printf(" %d -> Asynchronous Transfer Mode (ATM)\n", htype);
    break;
  case 20:
    printf(" %d -> Serial Line\n", htype);
    break;
  default:
    printf("ERRORE: switch htype");
    break;
  }
  printf("Hardware address length, value: %d\n", hlen);
  printf("Hops, value: %d", hops);
  if (hops == 0)
    printf("; is set to 0 by a client before transmitting a request and used "
           "by relay agents to control the forwarding of BOOTP and/or DHCP "
           "messages\n");
  else
    printf("\n");
  printf("Transaction Identifier, value: ");
  for (i = 0; i < 4; i++) {
    printf("%d", xid[i]);
  }
  printf("\n");
  printf("Seconds elapsed since client began address acquisition or renewal "
         "process, values: %d - %d\n",
         secs[0], secs[1]);
  printf("flags[0]: %d, flags[1]: %d\n", flags[0], flags[1]);
  printf("Flags, value broadcast flag (1 bit): ");
  for (i = 0; i < 8; i++) {
    printf("%d-", flags[0] & (1 << (8 - i)));
  }
  printf("\n");
  printf("Client IP address: ");
  printip(ciaddr);
  printf("'Your' IP Address: ");
  printip(yiaddr);
  printf("Server IP Address: ");
  printip(siaddr);
  printf("Gateway IP Address: ");
  printip(giaddr);
  printf("Client hardware address: ");
  for (i = 0; i < 16; i++) {
    printf("%d", chaddr[i]);
    if (i < 15)
      printf(":");
    else
      printf("\n");
  }
  printf("Server Name: ");
  for (i = 0; i < 64; i++)
    printf("%d", sname[i]);
  printf("\n");
  printf("Boot Filename: ");
  for (i = 0; i < 128; i++)
    printf("%d", file[i]);
  printf("\n");
  printf("Print options fields:\n");
  i_opt = 0;
  while (i_opt < len_opt) {
    switch (options[i_opt]) {
    case 1:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      printf("\tSubnet Mask: ");
      for (; i < i_opt; i++) {
        printf("%d", options[i]);
        if (i < (i_opt - 1))
          printf(".");
        else
          printf("\n");
      }
      break;
    case 2:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      printf("\tTime Offset: ");
      for (; i < i_opt; i++) {
        printf("%d", options[i]);
        if (i < (i_opt - 1))
          printf(":");
        else
          printf("\n");
      }
      break;
    case 3:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      n_addr = len / 4;
      printf("\tRouter Option (%d address): ", n_addr);
      for (; i < i_opt; i++) {
        printf("%d", options[i]);
        if (i < (i_opt - 1))
          printf(".");
        else
          printf("\n");
      }
      break;
    case 6:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      n_addr = len / 4;
      printf("\tDomain Name Server (%d address): ", n_addr);
      y = 0;
      for (; i < i_opt; i++) {
        y++;
        printf("%d", options[i]);
        if (y < 4) {
          if (i < (i_opt - 1))
            printf(".");
        } else {
          y = 0;
          printf(" ");
        }
      }
      printf("\n");
      break;
    case 12:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      printf("\tHost Name Option: ");
      for (; i < i_opt; i++) {
        printf("%c", options[i]);
        if (i == (i_opt - 1))
          printf("\n");
      }
      break;
    case 15:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      n_addr = len / 4;
      printf("\tDomain Name (%d address): ", n_addr);
      y = 0;
      for (; i < i_opt; i++) {
        y++;
        printf("%d", options[i]);
        if (y < 4) {
          if (i < (i_opt - 1))
            printf(".");
        } else {
          y = 0;
          printf(" ");
        }
      }
      printf("\n");
      break;
    case 26:
      i_opt++;
      len = options[i_opt];
      i = i_opt;
      i_opt += len;
      printf("\tInterface MTU Option: ");
      for (; i < i_opt; i++) {
        printf("%d ", options[i]);
      }
      printf("\n");
      i_opt++;
      break;
    case 42:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      n_addr = len / 4;
      printf("\tNetwork Time Protocol Servers Option (%d address): ", n_addr);
      y = 0;
      for (; i < i_opt; i++) {
        y++;
        printf("%d", options[i]);
        if (y < 4) {
          if (i < (i_opt - 1))
            printf(".");
        } else {
          y = 0;
          printf(" ");
        }
      }
      printf("\n");
      break;
    case 44:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      n_addr = len / 4;
      printf("\tNetBIOS over TCP/IP Name Server Option (%d address): ", n_addr);
      y = 0;
      for (; i < i_opt; i++) {
        y++;
        printf("%d", options[i]);
        if (y < 4) {
          if (i < (i_opt - 1))
            printf(".");
        } else {
          y = 0;
          printf(" ");
        }
      }
      printf("\n");
      break;
    case 46:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      printf("\tNetBIOS over TCP/IP Node Type Option: ");
      switch (options[i_opt]) {
      case 1:
        printf("B-node\n");
        break;
      case 2:
        printf("P-node\n");
        break;
      case 4:
        printf("M-node\n");
        break;
      case 8:
        printf("H-node\n");
        break;
      default:
        printf("ERRORE: case 46\n");
        return (-1);
      }
      i_opt++;
      break;
    case 50:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      printf("\tRequested IP Address: ");
      for (; i < i_opt; i++) {
        printf("%d", options[i]);
        if (i < (i_opt - 1))
          printf(".");
        else
          printf("\n");
      }
      break;
    case 51:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      printf("\tIP Address Lease Time: ");
      for (; i < i_opt; i++) {
        printf("%d", options[i]);
        if (i < (i_opt - 1))
          printf("-");
        else
          printf(" seconds\n");
      }
      break;
    case 53:
      i_opt++;
      i_opt++;
      printf("\tDHCP Message Type: ");
      switch (options[i_opt]) {
      case 1:
        printf("DHCPDISCOVER\n");
        break;
      case 2:
        printf("DHCPOFFER\n");
        break;
      case 3:
        printf("DHCPREQUEST\n");
        break;
      case 4:
        printf("DHCPDECLINE\n");
        break;
      case 5:
        printf("DHCPACK\n");
        break;
      case 6:
        printf("DHCPNAK\n");
        break;
      case 7:
        printf("DHCPRELEASE\n");
        break;
      case 8:
        printf("DHCPINFORM\n");
        break;
      default:
        printf("ERRORE: case 53\n");
        return (-1);
      }
      i_opt++;
      break;
    case 54:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      printf("\tServer identifier: ");
      for (; i < i_opt; i++) {
        printf("%d", options[i]);
        if (i < (i_opt - 1))
          printf(".");
        else
          printf("\n");
      }
      break;
    case 55:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      printf("\tParameter request list (%d parameters): ", len);
      for (; i < i_opt; i++) {
        printf("%d ", options[i]);
        if (i == (i_opt - 1))
          printf("\n");
      }
      break;
    case 57:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      i = i_opt;
      i_opt += len;
      printf("\tMaximum DHCP message size: ");
      for (; i < i_opt; i++) {
        printf("%d ", options[i]);
        if (i == (i_opt - 1))
          printf("\n");
      }
      break;
    case 61:
      i_opt++;
      len = options[i_opt];
      i_opt++;
      printf("\tClient-identifier (type: %d): ", options[i_opt]);
      i_opt++;
      i = i_opt;
      i_opt += (len - 1);
      for (; i < i_opt; i++) {
        printf("%d ", options[i]);
        if (i == (i_opt - 1))
          printf("\n");
      }
      break;
    case 255:
      printf("\tEnd Option, value: %d\n", options[i_opt]);
      i_opt = len_opt;
      break;
    default:
      printf("ERRORE: options fields\n");
      return (-1);
    }
  }
}


x86 assembly (clang, -O0):
<printbootp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %cl,%al
mov    %dl,%cl
mov    %sil,%dl
mov    %dil,%sil
mov    0x58(%rbp),%edi
mov    0x50(%rbp),%rdi
mov    0x48(%rbp),%rdi
mov    0x40(%rbp),%rdi
mov    0x38(%rbp),%rdi
mov    0x30(%rbp),%rdi
mov    0x28(%rbp),%rdi
mov    0x20(%rbp),%rdi
mov    0x18(%rbp),%rdi
mov    0x10(%rbp),%rdi
mov    %sil,-0x5(%rbp)
mov    %dl,-0x6(%rbp)
mov    %cl,-0x7(%rbp)
mov    %al,-0x8(%rbp)
mov    %r8,-0x10(%rbp)
mov    %r9,-0x18(%rbp)
movzbl -0x5(%rbp),%eax
cmp    $0x1,%eax
jne    1192 <printbootp+0x72>
movzbl -0x5(%rbp),%esi
lea    0x1f0a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11a4 <printbootp+0x84>
movzbl -0x5(%rbp),%esi
lea    0x1f2d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1f57(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
movzbl -0x6(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x13,%eax
ja     12f0 <printbootp+0x1d0>
mov    -0x38(%rbp),%rax
lea    0x1e2d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movzbl -0x6(%rbp),%esi
lea    0x1f3a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f3c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f3f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f37(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f32(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f49(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f3f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f3c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f4e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f44(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1ef7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
movzbl -0x6(%rbp),%esi
lea    0x1f2c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12fe <printbootp+0x1de>
lea    0x1f2d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movzbl -0x7(%rbp),%esi
lea    0x1f30(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movzbl -0x8(%rbp),%esi
lea    0x1f42(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movzbl -0x8(%rbp),%eax
cmp    $0x0,%eax
jne    1342 <printbootp+0x222>
lea    0x1f37(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1350 <printbootp+0x230>
lea    0x1ea2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1fa0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x4,-0x1c(%rbp)
jge    1397 <printbootp+0x277>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1ee8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1365 <printbootp+0x245>
lea    0x1e4d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%rax
movzbl (%rax),%esi
mov    -0x18(%rbp),%rax
movzbl 0x1(%rax),%edx
lea    0x1f5c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x10(%rbp),%rax
movzbl (%rax),%esi
mov    0x10(%rbp),%rax
movzbl 0x1(%rax),%edx
lea    0x1f9b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1fa9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x8,-0x1c(%rbp)
jge    1432 <printbootp+0x312>
mov    0x10(%rbp),%rax
movzbl (%rax),%esi
mov    $0x8,%ecx
sub    -0x1c(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
and    %eax,%esi
lea    0x1f98(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    13f4 <printbootp+0x2d4>
lea    0x1db2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1f72(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x18(%rbp),%rdi
mov    $0x0,%al
call   1040 <printip@plt>
lea    0x1f6d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x20(%rbp),%rdi
mov    $0x0,%al
call   1040 <printip@plt>
lea    0x1f68(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x28(%rbp),%rdi
mov    $0x0,%al
call   1040 <printip@plt>
lea    0x1f63(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x30(%rbp),%rdi
mov    $0x0,%al
call   1040 <printip@plt>
lea    0x1f5f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x10,-0x1c(%rbp)
jge    151b <printbootp+0x3fb>
mov    0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1d94(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0xf,-0x1c(%rbp)
jge    14fa <printbootp+0x3da>
lea    0x1f36(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1508 <printbootp+0x3e8>
lea    0x1cea(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    150d <printbootp+0x3ed>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    14b9 <printbootp+0x399>
lea    0x1f04(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x40,-0x1c(%rbp)
jge    1562 <printbootp+0x442>
mov    0x40(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1d1d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1530 <printbootp+0x410>
lea    0x1c82(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1ebd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x80,-0x1c(%rbp)
jge    15ba <printbootp+0x49a>
mov    0x48(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1cc5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1585 <printbootp+0x465>
lea    0x1c2a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1e75(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    0x58(%rbp),%eax
jge    243d <printbootp+0x131d>
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x3c(%rbp)
sub    $0x1,%eax
je     1729 <printbootp+0x609>
jmp    1606 <printbootp+0x4e6>
mov    -0x3c(%rbp),%eax
sub    $0x2,%eax
je     17d7 <printbootp+0x6b7>
jmp    1617 <printbootp+0x4f7>
mov    -0x3c(%rbp),%eax
sub    $0x3,%eax
je     1885 <printbootp+0x765>
jmp    1628 <printbootp+0x508>
mov    -0x3c(%rbp),%eax
sub    $0x6,%eax
je     1944 <printbootp+0x824>
jmp    1639 <printbootp+0x519>
mov    -0x3c(%rbp),%eax
sub    $0xc,%eax
je     1a32 <printbootp+0x912>
jmp    164a <printbootp+0x52a>
mov    -0x3c(%rbp),%eax
sub    $0xf,%eax
je     1acd <printbootp+0x9ad>
jmp    165b <printbootp+0x53b>
mov    -0x3c(%rbp),%eax
sub    $0x1a,%eax
je     1bbb <printbootp+0xa9b>
jmp    166c <printbootp+0x54c>
mov    -0x3c(%rbp),%eax
sub    $0x2a,%eax
je     1c40 <printbootp+0xb20>
jmp    167d <printbootp+0x55d>
mov    -0x3c(%rbp),%eax
sub    $0x2c,%eax
je     1d2e <printbootp+0xc0e>
jmp    168e <printbootp+0x56e>
mov    -0x3c(%rbp),%eax
sub    $0x2e,%eax
je     1e1c <printbootp+0xcfc>
jmp    169f <printbootp+0x57f>
mov    -0x3c(%rbp),%eax
sub    $0x32,%eax
je     1ef1 <printbootp+0xdd1>
jmp    16b0 <printbootp+0x590>
mov    -0x3c(%rbp),%eax
sub    $0x33,%eax
je     1f9f <printbootp+0xe7f>
jmp    16c1 <printbootp+0x5a1>
mov    -0x3c(%rbp),%eax
sub    $0x35,%eax
je     204d <printbootp+0xf2d>
jmp    16d2 <printbootp+0x5b2>
mov    -0x3c(%rbp),%eax
sub    $0x36,%eax
je     215f <printbootp+0x103f>
jmp    16e3 <printbootp+0x5c3>
mov    -0x3c(%rbp),%eax
sub    $0x37,%eax
je     220d <printbootp+0x10ed>
jmp    16f4 <printbootp+0x5d4>
mov    -0x3c(%rbp),%eax
sub    $0x39,%eax
je     22ab <printbootp+0x118b>
jmp    1705 <printbootp+0x5e5>
mov    -0x3c(%rbp),%eax
sub    $0x3d,%eax
je     2346 <printbootp+0x1226>
jmp    1716 <printbootp+0x5f6>
mov    -0x3c(%rbp),%eax
sub    $0xff,%eax
je     23f9 <printbootp+0x12d9>
jmp    241e <printbootp+0x12fe>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x1cfb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    17d2 <printbootp+0x6b2>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1ae4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    17b1 <printbootp+0x691>
lea    0x1cc5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17bf <printbootp+0x69f>
lea    0x1a33(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17c4 <printbootp+0x6a4>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1767 <printbootp+0x647>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x1c5e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1880 <printbootp+0x760>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1a36(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    185f <printbootp+0x73f>
lea    0x1bd1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    186d <printbootp+0x74d>
lea    0x1985(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1872 <printbootp+0x752>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1815 <printbootp+0x6f5>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%esi
lea    0x1bae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    193f <printbootp+0x81f>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1977(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    191e <printbootp+0x7fe>
lea    0x1b58(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    192c <printbootp+0x80c>
lea    0x18c6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1931 <printbootp+0x811>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    18d4 <printbootp+0x7b4>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%esi
lea    0x1b0d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x28(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1a1f <printbootp+0x8ff>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x18a8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x4,-0x28(%rbp)
jge    19f7 <printbootp+0x8d7>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    19f2 <printbootp+0x8d2>
lea    0x1a7f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1a0c <printbootp+0x8ec>
movl   $0x0,-0x28(%rbp)
lea    0x1d04(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1a11 <printbootp+0x8f1>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    199a <printbootp+0x87a>
lea    0x17c5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x1a53(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1ac8 <printbootp+0x9a8>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1a41(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1ab5 <printbootp+0x995>
lea    0x173d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1aba <printbootp+0x99a>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1a70 <printbootp+0x950>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%esi
lea    0x19be(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x28(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1ba8 <printbootp+0xa88>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x171f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x4,-0x28(%rbp)
jge    1b80 <printbootp+0xa60>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1b7b <printbootp+0xa5b>
lea    0x18f6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1b95 <printbootp+0xa75>
movl   $0x0,-0x28(%rbp)
lea    0x1b7b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1b9a <printbootp+0xa7a>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1b23 <printbootp+0xa03>
lea    0x163c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x1906(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1c24 <printbootp+0xb04>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x18f8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1bf0 <printbootp+0xad0>
lea    0x15c0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%esi
lea    0x1883(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x28(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1d1b <printbootp+0xbfb>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x15ac(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x4,-0x28(%rbp)
jge    1cf3 <printbootp+0xbd3>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1cee <printbootp+0xbce>
lea    0x1783(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1d08 <printbootp+0xbe8>
movl   $0x0,-0x28(%rbp)
lea    0x1a08(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1d0d <printbootp+0xbed>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1c96 <printbootp+0xb76>
lea    0x14c9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%esi
lea    0x17ca(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x28(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1e09 <printbootp+0xce9>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x14be(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x4,-0x28(%rbp)
jge    1de1 <printbootp+0xcc1>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1ddc <printbootp+0xcbc>
lea    0x1695(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1df6 <printbootp+0xcd6>
movl   $0x0,-0x28(%rbp)
lea    0x191a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1dfb <printbootp+0xcdb>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1d84 <printbootp+0xc64>
lea    0x13db(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
lea    0x1733(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x7,%eax
ja     1ec9 <printbootp+0xda9>
mov    -0x48(%rbp),%rax
lea    0x11fc(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x171b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1ee3 <printbootp+0xdc3>
lea    0x1710(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1ee3 <printbootp+0xdc3>
lea    0x1705(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1ee3 <printbootp+0xdc3>
lea    0x16fa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1ee3 <printbootp+0xdc3>
lea    0x16ef(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    243d <printbootp+0x131d>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x16a8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1f9a <printbootp+0xe7a>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x131c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1f79 <printbootp+0xe59>
lea    0x14fd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1f87 <printbootp+0xe67>
lea    0x126b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1f8c <printbootp+0xe6c>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1f2f <printbootp+0xe0f>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x1612(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    2048 <printbootp+0xf28>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x126e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    2027 <printbootp+0xf07>
lea    0x139c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2035 <printbootp+0xf15>
lea    0x15d3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    203a <printbootp+0xf1a>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1fdd <printbootp+0xebd>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
lea    0x15a5(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x50(%rbp)
sub    $0x7,%eax
ja     2137 <printbootp+0x1017>
mov    -0x50(%rbp),%rax
lea    0xfba(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x157a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2151 <printbootp+0x1031>
lea    0x1575(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2151 <printbootp+0x1031>
lea    0x156d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2151 <printbootp+0x1031>
lea    0x1567(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2151 <printbootp+0x1031>
lea    0x1561(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2151 <printbootp+0x1031>
lea    0x1557(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2151 <printbootp+0x1031>
lea    0x154d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2151 <printbootp+0x1031>
lea    0x1547(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2151 <printbootp+0x1031>
lea    0x1540(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    243d <printbootp+0x131d>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x14f9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    2208 <printbootp+0x10e8>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x10ae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    21e7 <printbootp+0x10c7>
lea    0x128f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    21f5 <printbootp+0x10d5>
lea    0xffd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    21fa <printbootp+0x10da>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    219d <printbootp+0x107d>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%esi
lea    0x145d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    22a6 <printbootp+0x1186>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x129a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    2293 <printbootp+0x1173>
lea    0xf5f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2298 <printbootp+0x1178>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    224e <printbootp+0x112e>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x13ec(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    2341 <printbootp+0x1221>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x11ff(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    232e <printbootp+0x120e>
lea    0xec4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    2333 <printbootp+0x1213>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    22e9 <printbootp+0x11c9>
jmp    2438 <printbootp+0x1318>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x1371(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    23f4 <printbootp+0x12d4>
mov    0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x114c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    23e1 <printbootp+0x12c1>
lea    0xe11(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    23e6 <printbootp+0x12c6>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    239c <printbootp+0x127c>
jmp    2438 <printbootp+0x1318>
mov    0x50(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%esi
lea    0x12ff(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x58(%rbp),%eax
mov    %eax,-0x20(%rbp)
jmp    2438 <printbootp+0x1318>
lea    0x12fe(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    243d <printbootp+0x131d>
jmp    15dd <printbootp+0x4bd>
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<printbootp>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %r9,%r14
mov    %r8,%rbp
mov    %ecx,%r13d
mov    %edx,%r15d
mov    %esi,%ebx
cmp    $0x1,%dil
jne    116d <printbootp+0x2d>
lea    0x1026(%rip),%rdi
mov    $0x1,%esi
jmp    1178 <printbootp+0x38>
movzbl %dil,%esi
lea    0x104e(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x1078(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0xff,%bl
cmp    $0x13,%bl
mov    %r14,(%rsp)
ja     11bd <printbootp+0x7d>
movzbl %bl,%eax
lea    0xe5d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x106a(%rip),%rdi
mov    $0x1,%esi
jmp    126b <printbootp+0x12b>
lea    0x115c(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
jmp    1272 <printbootp+0x132>
lea    0x105f(%rip),%rdi
mov    $0x6,%esi
jmp    126b <printbootp+0x12b>
lea    0x1068(%rip),%rdi
mov    $0x7,%esi
jmp    126b <printbootp+0x12b>
lea    0x1069(%rip),%rdi
mov    $0xb,%esi
jmp    126b <printbootp+0x12b>
lea    0x106d(%rip),%rdi
mov    $0xc,%esi
jmp    126b <printbootp+0x12b>
lea    0x108d(%rip),%rdi
mov    $0xe,%esi
jmp    126b <printbootp+0x12b>
lea    0x108c(%rip),%rdi
mov    $0xf,%esi
jmp    126b <printbootp+0x12b>
lea    0x1092(%rip),%rdi
mov    $0x10,%esi
jmp    126b <printbootp+0x12b>
lea    0x10ad(%rip),%rdi
mov    $0x11,%esi
jmp    126b <printbootp+0x12b>
lea    0x10ac(%rip),%rdi
mov    $0x12,%esi
jmp    126b <printbootp+0x12b>
lea    0x1068(%rip),%rdi
mov    $0x13,%esi
jmp    126b <printbootp+0x12b>
lea    0x10a6(%rip),%rdi
mov    $0x14,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x40(%rsp),%r12
movzbl %r15b,%esi
lea    0x10b3(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl %r13b,%ebx
lea    0x10c5(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
test   %bl,%bl
je     12ad <printbootp+0x16d>
mov    $0xa,%edi
call   1030 <putchar@plt>
jmp    12b9 <printbootp+0x179>
lea    0x14e1(%rip),%rdi
call   1040 <puts@plt>
mov    0x80(%rsp),%r15
mov    0x78(%rsp),%r13
mov    0x70(%rsp),%r14
lea    0x1097(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl 0x0(%rbp),%esi
lea    0x1082(%rip),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl 0x1(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl 0x2(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl 0x3(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    (%rsp),%rbp
movzbl 0x0(%rbp),%esi
movzbl 0x1(%rbp),%edx
lea    0x1054(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl (%r12),%esi
movzbl 0x1(%r12),%edx
lea    0x1097(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x10a5(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x10bd(%rip),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl (%r12),%esi
and    $0xffffff80,%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl (%r12),%esi
and    $0x40,%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl (%r12),%esi
and    $0x20,%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl (%r12),%esi
and    $0x10,%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl (%r12),%esi
and    $0x8,%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl (%r12),%esi
and    $0x4,%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movzbl (%r12),%esi
and    $0x2,%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1026(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x48(%rsp),%rdi
xor    %eax,%eax
call   1060 <printip@plt>
lea    0x1020(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x50(%rsp),%rdi
xor    %eax,%eax
call   1060 <printip@plt>
lea    0x101a(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x58(%rsp),%rdi
xor    %eax,%eax
call   1060 <printip@plt>
lea    0x1014(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x60(%rsp),%rdi
xor    %eax,%eax
call   1060 <printip@plt>
lea    0x100f(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x68(%rsp),%rbp
movzbl 0x0(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x1(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x2(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x3(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x4(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x5(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x6(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x7(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x8(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0x9(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0xa(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0xb(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0xc(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0xd(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0xe(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x3a,%edi
call   1030 <putchar@plt>
movzbl 0xf(%rbp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe96(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
xor    %ebp,%ebp
nopl   0x0(%rax)
movzbl (%r14,%rbp,1),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0x1,%rbp
cmp    $0x40,%rbp
jne    1610 <printbootp+0x4d0>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe6a(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xd1e(%rip),%rbx
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
movzbl 0x0(%r13,%rbp,1),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0x1,%rbp
cmp    $0x80,%rbp
jne    1650 <printbootp+0x510>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x104f(%rip),%rdi
call   1040 <puts@plt>
mov    0x88(%rsp),%r14d
test   %r14d,%r14d
jle    1f22 <printbootp+0xde2>
lea    0xccb(%rip),%r13
mov    $0x3a,%r12d
xor    %ebp,%ebp
jmp    16de <printbootp+0x59e>
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    0x88(%rsp),%r14d
lea    0xc9d(%rip),%r13
mov    $0x3a,%r12d
mov    (%rsp),%rcx
mov    %ecx,%ebp
cmp    %r14d,%ecx
jge    1f22 <printbootp+0xde2>
movslq %ebp,%rbx
mov    (%r15,%rbx,1),%al
add    $0x1,%al
cmp    $0x3e,%al
ja     1f0d <printbootp+0xdcd>
movzbl %al,%eax
lea    0x957(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movzbl 0x1(%rbx,%r15,1),%ebx
lea    0xda5(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%ecx
add    $0x2,%ecx
test   %ebx,%ebx
je     16d3 <printbootp+0x593>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
mov    $0x2e,%r12d
movslq %eax,%r14
mov    %rcx,(%rsp)
movslq %ecx,%rbp
nopl   0x0(%rax)
movzbl (%r15,%rbx,1),%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %r14,%rbx
mov    $0xa,%edi
cmovl  %r12d,%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    %rbp,%rbx
jl     1740 <printbootp+0x600>
jmp    1ed8 <printbootp+0xd98>
lea    0xe56(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x2(%rbx,%r15,1),%al
add    $0xff,%al
cmp    $0x8,%al
jae    1eef <printbootp+0xdaf>
movzbl %al,%ecx
mov    $0x8b,%edx
bt     %ecx,%edx
jae    1eef <printbootp+0xdaf>
movsbq %al,%rax
lea    0x9a5(%rip),%rcx
jmp    1d41 <printbootp+0xc01>
movzbl 0x1(%rbx,%r15,1),%ebx
lea    0xe3a(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%ecx
add    $0x2,%ecx
test   %ebx,%ebx
je     16d3 <printbootp+0x593>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
mov    $0x2e,%r12d
movslq %eax,%r14
mov    %rcx,(%rsp)
movslq %ecx,%rbp
nopw   0x0(%rax,%rax,1)
movzbl (%r15,%rbx,1),%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %r14,%rbx
mov    $0xa,%edi
cmovl  %r12d,%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    %rbp,%rbx
jl     17f0 <printbootp+0x6b0>
jmp    1ed8 <printbootp+0xd98>
movzbl 0x1(%rbx,%r15,1),%ebx
lea    0xe0e(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%ecx
add    $0x2,%ecx
test   %ebx,%ebx
je     16d3 <printbootp+0x593>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
mov    $0x2e,%r12d
movslq %eax,%r14
mov    %rcx,(%rsp)
movslq %ecx,%rbp
nopl   0x0(%rax)
movzbl (%r15,%rbx,1),%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %r14,%rbx
mov    $0xa,%edi
cmovl  %r12d,%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    %rbp,%rbx
jl     1860 <printbootp+0x720>
jmp    1ed8 <printbootp+0xd98>
movzbl 0x1(%rbx,%r15,1),%ebx
lea    0xc28(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%ecx
add    $0x2,%ecx
test   %ebx,%ebx
je     16d3 <printbootp+0x593>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
movslq %eax,%r14
mov    %rcx,(%rsp)
movslq %ecx,%rbp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%r15,%rbx,1),%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %r14,%rbx
mov    $0xa,%edi
cmovl  %r12d,%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    %rbp,%rbx
jl     18d0 <printbootp+0x790>
jmp    1ede <printbootp+0xd9e>
movzbl 0x1(%rbx,%r15,1),%ebx
mov    %ebx,%esi
shr    $0x2,%esi
lea    0xbc2(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%ecx
add    $0x2,%ecx
test   %ebx,%ebx
je     16d3 <printbootp+0x593>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
mov    $0x2e,%r12d
movslq %eax,%r14
mov    %rcx,(%rsp)
movslq %ecx,%rbp
xchg   %ax,%ax
movzbl (%r15,%rbx,1),%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %r14,%rbx
mov    $0xa,%edi
cmovl  %r12d,%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    %rbp,%rbx
jl     1940 <printbootp+0x800>
jmp    1ed8 <printbootp+0xd98>
movzbl 0x1(%rbx,%r15,1),%ebx
mov    %ebx,%esi
shr    $0x2,%esi
lea    0xb70(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%eax
add    $0x2,%eax
mov    %rax,(%rsp)
test   %ebx,%ebx
je     16b0 <printbootp+0x570>
add    $0x2,%ebp
mov    (%rsp),%rcx
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
movslq %eax,%r14
movslq %ecx,%rbp
xor    %r13d,%r13d
jmp    19d5 <printbootp+0x895>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
call   1030 <putchar@plt>
mov    %r12d,%r13d
add    $0x1,%rbx
cmp    %rbp,%rbx
jge    16b0 <printbootp+0x570>
movzbl (%r15,%rbx,1),%esi
lea    0x985(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x20,%edi
mov    $0x0,%r12d
cmp    $0x2,%r13d
jg     19c0 <printbootp+0x880>
add    $0x1,%r13d
mov    $0x2e,%edi
mov    %r13d,%r12d
cmp    %r14,%rbx
jl     19c0 <printbootp+0x880>
jmp    19c8 <printbootp+0x888>
movzbl 0x1(%rbx,%r15,1),%ebx
lea    0xafa(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%ecx
add    $0x2,%ecx
test   %ebx,%ebx
je     16d3 <printbootp+0x593>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
mov    %rcx,(%rsp)
movslq %ecx,%r14
movslq %eax,%rbp
jmp    1a5d <printbootp+0x91d>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rbx
cmp    %r14,%rbx
jge    1e39 <printbootp+0xcf9>
movzbl (%r15,%rbx,1),%edi
call   1030 <putchar@plt>
cmp    %rbx,%rbp
jne    1a50 <printbootp+0x910>
mov    $0xa,%edi
call   1030 <putchar@plt>
jmp    1a50 <printbootp+0x910>
movzbl 0x1(%rbx,%r15,1),%ebx
mov    %ebx,%esi
shr    $0x2,%esi
lea    0xa9d(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%eax
add    $0x2,%eax
mov    %rax,(%rsp)
test   %ebx,%ebx
je     16b0 <printbootp+0x570>
add    $0x2,%ebp
mov    (%rsp),%rcx
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
movslq %eax,%r14
movslq %ecx,%r12
xor    %r13d,%r13d
jmp    1ad5 <printbootp+0x995>
nopl   0x0(%rax,%rax,1)
call   1030 <putchar@plt>
mov    %ebp,%r13d
add    $0x1,%rbx
cmp    %r12,%rbx
jge    16b0 <printbootp+0x570>
movzbl (%r15,%rbx,1),%esi
lea    0x885(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x20,%edi
mov    $0x0,%ebp
cmp    $0x2,%r13d
jg     1ac0 <printbootp+0x980>
add    $0x1,%r13d
mov    $0x2e,%edi
mov    %r13d,%ebp
cmp    %r14,%rbx
jl     1ac0 <printbootp+0x980>
jmp    1ac8 <printbootp+0x988>
movzbl 0x1(%r15,%rbx,1),%ebp
add    $0x1,%rbx
lea    (%rbx,%rbp,1),%eax
mov    %rax,(%rsp)
lea    0xa20(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
test   %ebp,%ebp
lea    0xa28(%rip),%r14
je     1b58 <printbootp+0xa18>
movslq (%rsp),%rbp
nopl   0x0(%rax)
movzbl (%r15,%rbx,1),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0x1,%rbx
cmp    %rbp,%rbx
jl     1b40 <printbootp+0xa00>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    (%rsp),%rcx
add    $0x1,%ecx
jmp    1ee2 <printbootp+0xda2>
movzbl 0x1(%rbx,%r15,1),%ebx
mov    %ebx,%esi
shr    $0x2,%esi
lea    0x9df(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%eax
add    $0x2,%eax
mov    %rax,(%rsp)
test   %ebx,%ebx
je     16b0 <printbootp+0x570>
add    $0x2,%ebp
mov    (%rsp),%rcx
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
movslq %eax,%r14
movslq %ecx,%r12
xor    %r13d,%r13d
jmp    1bd5 <printbootp+0xa95>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
call   1030 <putchar@plt>
mov    %ebp,%r13d
add    $0x1,%rbx
cmp    %r12,%rbx
jge    16b0 <printbootp+0x570>
movzbl (%r15,%rbx,1),%esi
lea    0x785(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x20,%edi
mov    $0x0,%ebp
cmp    $0x2,%r13d
jg     1bc0 <printbootp+0xa80>
add    $0x1,%r13d
mov    $0x2e,%edi
mov    %r13d,%ebp
cmp    %r14,%rbx
jl     1bc0 <printbootp+0xa80>
jmp    1bc8 <printbootp+0xa88>
movzbl 0x1(%rbx,%r15,1),%ebx
mov    %ebx,%esi
shr    $0x2,%esi
lea    0x977(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%eax
add    $0x2,%eax
mov    %rax,(%rsp)
test   %ebx,%ebx
je     16b0 <printbootp+0x570>
add    $0x2,%ebp
mov    (%rsp),%rcx
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
movslq %eax,%r14
movslq %ecx,%r12
xor    %r13d,%r13d
jmp    1c65 <printbootp+0xb25>
xchg   %ax,%ax
call   1030 <putchar@plt>
mov    %ebp,%r13d
add    $0x1,%rbx
cmp    %r12,%rbx
jge    16b0 <printbootp+0x570>
movzbl (%r15,%rbx,1),%esi
lea    0x6f5(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x20,%edi
mov    $0x0,%ebp
cmp    $0x2,%r13d
jg     1c50 <printbootp+0xb10>
add    $0x1,%r13d
mov    $0x2e,%edi
mov    %r13d,%ebp
cmp    %r14,%rbx
jl     1c50 <printbootp+0xb10>
jmp    1c58 <printbootp+0xb18>
movzbl 0x1(%rbx,%r15,1),%ebx
lea    0x963(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%ecx
add    $0x2,%ecx
test   %ebx,%ebx
je     16d3 <printbootp+0x593>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
movslq %eax,%r14
mov    %rcx,(%rsp)
movslq %ecx,%rbp
lea    0xa72(%rip),%r13
jmp    1cf5 <printbootp+0xbb5>
nopl   0x0(%rax)
mov    %r13,%rdi
call   1040 <puts@plt>
add    $0x1,%rbx
cmp    %rbp,%rbx
jge    1e39 <printbootp+0xcf9>
movzbl (%r15,%rbx,1),%esi
lea    0x665(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %r14,%rbx
jge    1ce0 <printbootp+0xba0>
mov    $0x2d,%edi
call   1030 <putchar@plt>
jmp    1ce8 <printbootp+0xba8>
lea    0x904(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x2(%rbx,%r15,1),%al
add    $0xff,%al
cmp    $0x8,%al
jae    1f16 <printbootp+0xdd6>
movsbq %al,%rax
lea    0x42b(%rip),%rcx
movslq (%rcx,%rax,4),%rdi
add    %rcx,%rdi
call   1040 <puts@plt>
add    $0x3,%ebp
mov    %ebp,%ecx
jmp    16d3 <printbootp+0x593>
movzbl 0x1(%rbx,%r15,1),%r14d
lea    0x8ea(%rip),%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%r14,%rbp,1),%ecx
add    $0x2,%ecx
test   %r14d,%r14d
lea    0x7dc(%rip),%r13
je     1ec8 <printbootp+0xd88>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
mov    %rcx,(%rsp)
movslq %ecx,%r14
movslq %eax,%rbp
jmp    1dad <printbootp+0xc6d>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rbx
cmp    %r14,%rbx
jge    1e39 <printbootp+0xcf9>
movzbl (%r15,%rbx,1),%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %rbx,%rbp
jne    1da0 <printbootp+0xc60>
mov    $0xa,%edi
call   1030 <putchar@plt>
jmp    1da0 <printbootp+0xc60>
movzbl 0x1(%rbx,%r15,1),%ebx
lea    0x89e(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    (%rbx,%rbp,1),%ecx
add    $0x2,%ecx
test   %ebx,%ebx
je     16d3 <printbootp+0x593>
add    $0x2,%ebp
lea    -0x1(%rcx),%eax
movslq %ebp,%rbx
mov    %rcx,(%rsp)
movslq %ecx,%r14
movslq %eax,%rbp
lea    0x752(%rip),%r13
jmp    1e19 <printbootp+0xcd9>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rbx
cmp    %r14,%rbx
jge    1e39 <printbootp+0xcf9>
movzbl (%r15,%rbx,1),%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %rbx,%rbp
jne    1e10 <printbootp+0xcd0>
mov    $0xa,%edi
call   1030 <putchar@plt>
jmp    1e10 <printbootp+0xcd0>
lea    0x526(%rip),%r13
jmp    1ede <printbootp+0xd9e>
movzbl 0x1(%rbx,%r15,1),%r14d
lea    0x2(%rbx),%eax
cltq
movzbl (%r15,%rax,1),%esi
lea    0x839(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %ebx,%eax
add    $0x3,%eax
lea    (%rbx,%r14,1),%ecx
add    $0x2,%ecx
cmp    %ecx,%eax
jge    1ec8 <printbootp+0xd88>
mov    %rcx,(%rsp)
add    $0xffffffff,%ecx
movslq %eax,%rbx
movslq %ecx,%r12
sub    %rbx,%r12
add    %r15,%rbx
add    $0xffffffffffffffff,%r14
xor    %ebp,%ebp
lea    0x6c8(%rip),%r13
jmp    1ea9 <printbootp+0xd69>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rbp
cmp    %ebp,%r14d
je     1ed1 <printbootp+0xd91>
movzbl (%rbx,%rbp,1),%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cmp    %rbp,%r12
jne    1ea0 <printbootp+0xd60>
mov    $0xa,%edi
call   1030 <putchar@plt>
jmp    1ea0 <printbootp+0xd60>
lea    0x497(%rip),%r13
jmp    1ee2 <printbootp+0xda2>
lea    0x48e(%rip),%r13
mov    $0x3a,%r12d
mov    (%rsp),%rcx
mov    0x88(%rsp),%r14d
jmp    16d3 <printbootp+0x593>
lea    0x878(%rip),%rdi
jmp    1f1d <printbootp+0xddd>
lea    0x7b6(%rip),%rdi
mov    $0xff,%esi
xor    %eax,%eax
call   1050 <printf@plt>
jmp    1f22 <printbootp+0xde2>
lea    0x86a(%rip),%rdi
jmp    1f1d <printbootp+0xddd>
lea    0x81c(%rip),%rdi
call   1040 <puts@plt>
mov    $0xffffffff,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [58 x i8] c"Message op code / message type, value: %d -> BOOTREQUEST\0A\00"
@.str.1 = [56 x i8] c"Message op code / message type, value: %d -> BOOTREPLY\0A\00"
@.str.2 = [31 x i8] c"Hardware address type, value: \00"
@.str.3 = [25 x i8] c" %d -> Ethernet (10 Mb)\0A\00"
@.str.4 = [26 x i8] c" %d -> IEEE 802 Networks\0A\00"
@.str.5 = [15 x i8] c" %d -> ARCNET\0A\00"
@.str.6 = [18 x i8] c" %d -> LocalTalk\0A\00"
@.str.7 = [46 x i8] c" %d -> LocalNet (IBM PCNet or SYTEK LocalNET\0A\00"
@.str.8 = [13 x i8] c" %d -> SMDS\0A\00"
@.str.9 = [20 x i8] c" %d -> Frame Relay\0A\00"
@.str.10 = [41 x i8] c" %d -> Asynchronous Transfer Mode (ATM)\0A\00"
@.str.11 = [13 x i8] c" %d -> HDLC\0A\00"
@.str.12 = [22 x i8] c" %d -> Fibre Channel\0A\00"
@.str.13 = [20 x i8] c" %d -> Serial Line\0A\00"
@.str.14 = [21 x i8] c"ERRORE: switch htype\00"
@.str.15 = [36 x i8] c"Hardware address length, value: %d\0A\00"
@.str.16 = [16 x i8] c"Hops, value: %d\00"
@.str.17 = [138 x i8] c"; is set to 0 by a client before transmitting a request and used by relay agents to control the forwarding of BOOTP and/or DHCP messages\0A\00"
@.str.18 = [2 x i8] c"\0A\00"
@.str.19 = [32 x i8] c"Transaction Identifier, value: \00"
@.str.20 = [3 x i8] c"%d\00"
@.str.21 = [92 x i8] c"Seconds elapsed since client began address acquisition or renewal process, values: %d - %d\0A\00"
@.str.22 = [28 x i8] c"flags[0]: %d, flags[1]: %d\0A\00"
@.str.23 = [38 x i8] c"Flags, value broadcast flag (1 bit): \00"
@.str.24 = [4 x i8] c"%d-\00"
@.str.25 = [20 x i8] c"Client IP address: \00"
@.str.26 = [20 x i8] c"'Your' IP Address: \00"
@.str.27 = [20 x i8] c"Server IP Address: \00"
@.str.28 = [21 x i8] c"Gateway IP Address: \00"
@.str.29 = [26 x i8] c"Client hardware address: \00"
@.str.30 = [2 x i8] c":\00"
@.str.31 = [14 x i8] c"Server Name: \00"
@.str.32 = [16 x i8] c"Boot Filename: \00"
@.str.33 = [23 x i8] c"Print options fields:\0A\00"
@.str.34 = [15 x i8] c"\09Subnet Mask: \00"
@.str.35 = [2 x i8] c".\00"
@.str.36 = [15 x i8] c"\09Time Offset: \00"
@.str.37 = [30 x i8] c"\09Router Option (%d address): \00"
@.str.38 = [35 x i8] c"\09Domain Name Server (%d address): \00"
@.str.39 = [2 x i8] c" \00"
@.str.40 = [20 x i8] c"\09Host Name Option: \00"
@.str.41 = [3 x i8] c"%c\00"
@.str.42 = [28 x i8] c"\09Domain Name (%d address): \00"
@.str.43 = [24 x i8] c"\09Interface MTU Option: \00"
@.str.44 = [4 x i8] c"%d \00"
@.str.45 = [53 x i8] c"\09Network Time Protocol Servers Option (%d address): \00"
@.str.46 = [55 x i8] c"\09NetBIOS over TCP/IP Name Server Option (%d address): \00"
@.str.47 = [40 x i8] c"\09NetBIOS over TCP/IP Node Type Option: \00"
@.str.48 = [8 x i8] c"B-node\0A\00"
@.str.49 = [8 x i8] c"P-node\0A\00"
@.str.50 = [8 x i8] c"M-node\0A\00"
@.str.51 = [8 x i8] c"H-node\0A\00"
@.str.52 = [17 x i8] c"ERRORE: case 46\0A\00"
@.str.53 = [24 x i8] c"\09Requested IP Address: \00"
@.str.54 = [25 x i8] c"\09IP Address Lease Time: \00"
@.str.55 = [2 x i8] c"-\00"
@.str.56 = [10 x i8] c" seconds\0A\00"
@.str.57 = [21 x i8] c"\09DHCP Message Type: \00"
@.str.58 = [14 x i8] c"DHCPDISCOVER\0A\00"
@.str.59 = [11 x i8] c"DHCPOFFER\0A\00"
@.str.60 = [13 x i8] c"DHCPREQUEST\0A\00"
@.str.61 = [13 x i8] c"DHCPDECLINE\0A\00"
@.str.62 = [9 x i8] c"DHCPACK\0A\00"
@.str.63 = [9 x i8] c"DHCPNAK\0A\00"
@.str.64 = [13 x i8] c"DHCPRELEASE\0A\00"
@.str.65 = [12 x i8] c"DHCPINFORM\0A\00"
@.str.66 = [17 x i8] c"ERRORE: case 53\0A\00"
@.str.67 = [21 x i8] c"\09Server identifier: \00"
@.str.68 = [42 x i8] c"\09Parameter request list (%d parameters): \00"
@.str.69 = [29 x i8] c"\09Maximum DHCP message size: \00"
@.str.70 = [32 x i8] c"\09Client-identifier (type: %d): \00"
@.str.71 = [24 x i8] c"\09End Option, value: %d\0A\00"
@.str.72 = [24 x i8] c"ERRORE: options fields\0A\00"
define i32 @printbootp(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2, i8 zeroext %3, i8* %4, i8* %5, i8* %6, i8* %7, i8* %8, i8* %9, i8* %10, i8* %11, i8* %12, i8* %13, i8* %14, i32 %15) {
%17 = alloca i32
%18 = alloca i8
%19 = alloca i8
%20 = alloca i8
%21 = alloca i8
%22 = alloca i8*
%23 = alloca i8*
%24 = alloca i8*
%25 = alloca i8*
%26 = alloca i8*
%27 = alloca i8*
%28 = alloca i8*
%29 = alloca i8*
%30 = alloca i8*
%31 = alloca i8*
%32 = alloca i8*
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
store i8 %0, i8* %18
store i8 %1, i8* %19
store i8 %2, i8* %20
store i8 %3, i8* %21
store i8* %4, i8** %22
store i8* %5, i8** %23
store i8* %6, i8** %24
store i8* %7, i8** %25
store i8* %8, i8** %26
store i8* %9, i8** %27
store i8* %10, i8** %28
store i8* %11, i8** %29
store i8* %12, i8** %30
store i8* %13, i8** %31
store i8* %14, i8** %32
store i32 %15, i32* %33
%40 = load i8, i8* %18
%41 = zext i8 %40 to i32
%42 = icmp eq i32 %41, 1
br i1 %42, label %43, label %47
43: ; preds = %16
%44 = load i8, i8* %18
%45 = zext i8 %44 to i32
%46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str, i64 0, i64 0), i32 %45)
br label %51
47: ; preds = %16
%48 = load i8, i8* %18
%49 = zext i8 %48 to i32
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.1, i64 0, i64 0), i32 %49)
br label %51
51: ; preds = %47, %43
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.2, i64 0, i64 0))
%53 = load i8, i8* %19
%54 = zext i8 %53 to i32
switch i32 %54, label %103 [
i32 1, label %55
i32 6, label %59
i32 7, label %63
i32 11, label %67
i32 12, label %71
i32 14, label %75
i32 15, label %79
i32 16, label %83
i32 17, label %87
i32 18, label %91
i32 19, label %95
i32 20, label %99
]
55: ; preds = %51
%56 = load i8, i8* %19
%57 = zext i8 %56 to i32
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.3, i64 0, i64 0), i32 %57)
br label %105
59: ; preds = %51
%60 = load i8, i8* %19
%61 = zext i8 %60 to i32
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.4, i64 0, i64 0), i32 %61)
br label %105
63: ; preds = %51
%64 = load i8, i8* %19
%65 = zext i8 %64 to i32
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.5, i64 0, i64 0), i32 %65)
br label %105
67: ; preds = %51
%68 = load i8, i8* %19
%69 = zext i8 %68 to i32
%70 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 %69)
br label %105
71: ; preds = %51
%72 = load i8, i8* %19
%73 = zext i8 %72 to i32
%74 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0), i32 %73)
br label %105
75: ; preds = %51
%76 = load i8, i8* %19
%77 = zext i8 %76 to i32
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.8, i64 0, i64 0), i32 %77)
br label %105
79: ; preds = %51
%80 = load i8, i8* %19
%81 = zext i8 %80 to i32
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.9, i64 0, i64 0), i32 %81)
br label %105
83: ; preds = %51
%84 = load i8, i8* %19
%85 = zext i8 %84 to i32
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.10, i64 0, i64 0), i32 %85)
br label %105
87: ; preds = %51
%88 = load i8, i8* %19
%89 = zext i8 %88 to i32
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i32 %89)
br label %105
91: ; preds = %51
%92 = load i8, i8* %19
%93 = zext i8 %92 to i32
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.12, i64 0, i64 0), i32 %93)
br label %105
95: ; preds = %51
%96 = load i8, i8* %19
%97 = zext i8 %96 to i32
%98 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.10, i64 0, i64 0), i32 %97)
br label %105
99: ; preds = %51
%100 = load i8, i8* %19
%101 = zext i8 %100 to i32
%102 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.13, i64 0, i64 0), i32 %101)
br label %105
103: ; preds = %51
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.14, i64 0, i64 0))
br label %105
105: ; preds = %103, %99, %95, %91, %87, %83, %79, %75, %71, %67, %63, %59, %55
%106 = load i8, i8* %20
%107 = zext i8 %106 to i32
%108 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.15, i64 0, i64 0), i32 %107)
%109 = load i8, i8* %21
%110 = zext i8 %109 to i32
%111 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0), i32 %110)
%112 = load i8, i8* %21
%113 = zext i8 %112 to i32
%114 = icmp eq i32 %113, 0
br i1 %114, label %115, label %117
115: ; preds = %105
%116 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.17, i64 0, i64 0))
br label %119
117: ; preds = %105
%118 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %119
119: ; preds = %117, %115
%120 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.19, i64 0, i64 0))
store i32 0, i32* %34
br label %121
121: ; preds = %132, %119
%122 = load i32, i32* %34
%123 = icmp slt i32 %122, 4
br i1 %123, label %124, label %135
124: ; preds = %121
%125 = load i8*, i8** %22
%126 = load i32, i32* %34
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds i8, i8* %125, i64 %127
%129 = load i8, i8* %128
%130 = zext i8 %129 to i32
%131 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %130)
br label %132
132: ; preds = %124
%133 = load i32, i32* %34
%134 = add nsw i32 %133, 1
store i32 %134, i32* %34
br label %121
135: ; preds = %121
%136 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
%137 = load i8*, i8** %23
%138 = getelementptr inbounds i8, i8* %137, i64 0
%139 = load i8, i8* %138
%140 = zext i8 %139 to i32
%141 = load i8*, i8** %23
%142 = getelementptr inbounds i8, i8* %141, i64 1
%143 = load i8, i8* %142
%144 = zext i8 %143 to i32
%145 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.21, i64 0, i64 0), i32 %140, i32 %144)
%146 = load i8*, i8** %24
%147 = getelementptr inbounds i8, i8* %146, i64 0
%148 = load i8, i8* %147
%149 = zext i8 %148 to i32
%150 = load i8*, i8** %24
%151 = getelementptr inbounds i8, i8* %150, i64 1
%152 = load i8, i8* %151
%153 = zext i8 %152 to i32
%154 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.22, i64 0, i64 0), i32 %149, i32 %153)
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.23, i64 0, i64 0))
store i32 0, i32* %34
br label %156
156: ; preds = %169, %135
%157 = load i32, i32* %34
%158 = icmp slt i32 %157, 8
br i1 %158, label %159, label %172
159: ; preds = %156
%160 = load i8*, i8** %24
%161 = getelementptr inbounds i8, i8* %160, i64 0
%162 = load i8, i8* %161
%163 = zext i8 %162 to i32
%164 = load i32, i32* %34
%165 = sub nsw i32 8, %164
%166 = shl i32 1, %165
%167 = and i32 %163, %166
%168 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 %167)
br label %169
169: ; preds = %159
%170 = load i32, i32* %34
%171 = add nsw i32 %170, 1
store i32 %171, i32* %34
br label %156
172: ; preds = %156
%173 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
%174 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.25, i64 0, i64 0))
%175 = load i8*, i8** %25
%176 = call i32 (i8*, ...) bitcast (i32 (...)* @printip to i32 (i8*, ...)*)(i8* %175)
%177 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.26, i64 0, i64 0))
%178 = load i8*, i8** %26
%179 = call i32 (i8*, ...) bitcast (i32 (...)* @printip to i32 (i8*, ...)*)(i8* %178)
%180 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.27, i64 0, i64 0))
%181 = load i8*, i8** %27
%182 = call i32 (i8*, ...) bitcast (i32 (...)* @printip to i32 (i8*, ...)*)(i8* %181)
%183 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.28, i64 0, i64 0))
%184 = load i8*, i8** %28
%185 = call i32 (i8*, ...) bitcast (i32 (...)* @printip to i32 (i8*, ...)*)(i8* %184)
%186 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.29, i64 0, i64 0))
store i32 0, i32* %34
br label %187
187: ; preds = %205, %172
%188 = load i32, i32* %34
%189 = icmp slt i32 %188, 16
br i1 %189, label %190, label %208
190: ; preds = %187
%191 = load i8*, i8** %29
%192 = load i32, i32* %34
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds i8, i8* %191, i64 %193
%195 = load i8, i8* %194
%196 = zext i8 %195 to i32
%197 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %196)
%198 = load i32, i32* %34
%199 = icmp slt i32 %198, 15
br i1 %199, label %200, label %202
200: ; preds = %190
%201 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.30, i64 0, i64 0))
br label %204
202: ; preds = %190
%203 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %204
204: ; preds = %202, %200
br label %205
205: ; preds = %204
%206 = load i32, i32* %34
%207 = add nsw i32 %206, 1
store i32 %207, i32* %34
br label %187
208: ; preds = %187
%209 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.31, i64 0, i64 0))
store i32 0, i32* %34
br label %210
210: ; preds = %221, %208
%211 = load i32, i32* %34
%212 = icmp slt i32 %211, 64
br i1 %212, label %213, label %224
213: ; preds = %210
%214 = load i8*, i8** %30
%215 = load i32, i32* %34
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds i8, i8* %214, i64 %216
%218 = load i8, i8* %217
%219 = zext i8 %218 to i32
%220 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %219)
br label %221
221: ; preds = %213
%222 = load i32, i32* %34
%223 = add nsw i32 %222, 1
store i32 %223, i32* %34
br label %210
224: ; preds = %210
%225 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
%226 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.32, i64 0, i64 0))
store i32 0, i32* %34
br label %227
227: ; preds = %238, %224
%228 = load i32, i32* %34
%229 = icmp slt i32 %228, 128
br i1 %229, label %230, label %241
230: ; preds = %227
%231 = load i8*, i8** %31
%232 = load i32, i32* %34
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds i8, i8* %231, i64 %233
%235 = load i8, i8* %234
%236 = zext i8 %235 to i32
%237 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %236)
br label %238
238: ; preds = %230
%239 = load i32, i32* %34
%240 = add nsw i32 %239, 1
store i32 %240, i32* %34
br label %227
241: ; preds = %227
%242 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
%243 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.33, i64 0, i64 0))
store i32 0, i32* %35
br label %244
244: ; preds = %982, %241
%245 = load i32, i32* %35
%246 = load i32, i32* %33
%247 = icmp slt i32 %245, %246
br i1 %247, label %248, label %983
248: ; preds = %244
%249 = load i8*, i8** %32
%250 = load i32, i32* %35
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds i8, i8* %249, i64 %251
%253 = load i8, i8* %252
%254 = zext i8 %253 to i32
switch i32 %254, label %980 [
i32 1, label %255
i32 2, label %296
i32 3, label %337
i32 6, label %381
i32 12, label %432
i32 15, label %471
i32 26, label %522
i32 42, label %555
i32 44, label %606
i32 46, label %657
i32 50, label %688
i32 51, label %729
i32 53, label %770
i32 54, label %803
i32 55, label %844
i32 57, label %884
i32 61, label %923
i32 255, label %971
]
255: ; preds = %248
%256 = load i32, i32* %35
%257 = add nsw i32 %256, 1
store i32 %257, i32* %35
%258 = load i8*, i8** %32
%259 = load i32, i32* %35
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds i8, i8* %258, i64 %260
%262 = load i8, i8* %261
%263 = zext i8 %262 to i32
store i32 %263, i32* %36
%264 = load i32, i32* %35
%265 = add nsw i32 %264, 1
store i32 %265, i32* %35
%266 = load i32, i32* %35
store i32 %266, i32* %34
%267 = load i32, i32* %36
%268 = load i32, i32* %35
%269 = add nsw i32 %268, %267
store i32 %269, i32* %35
%270 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0))
br label %271
271: ; preds = %292, %255
%272 = load i32, i32* %34
%273 = load i32, i32* %35
%274 = icmp slt i32 %272, %273
br i1 %274, label %275, label %295
275: ; preds = %271
%276 = load i8*, i8** %32
%277 = load i32, i32* %34
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds i8, i8* %276, i64 %278
%280 = load i8, i8* %279
%281 = zext i8 %280 to i32
%282 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %281)
%283 = load i32, i32* %34
%284 = load i32, i32* %35
%285 = sub nsw i32 %284, 1
%286 = icmp slt i32 %283, %285
br i1 %286, label %287, label %289
287: ; preds = %275
%288 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %291
289: ; preds = %275
%290 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %291
291: ; preds = %289, %287
br label %292
292: ; preds = %291
%293 = load i32, i32* %34
%294 = add nsw i32 %293, 1
store i32 %294, i32* %34
br label %271
295: ; preds = %271
br label %982
296: ; preds = %248
%297 = load i32, i32* %35
%298 = add nsw i32 %297, 1
store i32 %298, i32* %35
%299 = load i8*, i8** %32
%300 = load i32, i32* %35
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds i8, i8* %299, i64 %301
%303 = load i8, i8* %302
%304 = zext i8 %303 to i32
store i32 %304, i32* %36
%305 = load i32, i32* %35
%306 = add nsw i32 %305, 1
store i32 %306, i32* %35
%307 = load i32, i32* %35
store i32 %307, i32* %34
%308 = load i32, i32* %36
%309 = load i32, i32* %35
%310 = add nsw i32 %309, %308
store i32 %310, i32* %35
%311 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0))
br label %312
312: ; preds = %333, %296
%313 = load i32, i32* %34
%314 = load i32, i32* %35
%315 = icmp slt i32 %313, %314
br i1 %315, label %316, label %336
316: ; preds = %312
%317 = load i8*, i8** %32
%318 = load i32, i32* %34
%319 = sext i32 %318 to i64
%320 = getelementptr inbounds i8, i8* %317, i64 %319
%321 = load i8, i8* %320
%322 = zext i8 %321 to i32
%323 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %322)
%324 = load i32, i32* %34
%325 = load i32, i32* %35
%326 = sub nsw i32 %325, 1
%327 = icmp slt i32 %324, %326
br i1 %327, label %328, label %330
328: ; preds = %316
%329 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.30, i64 0, i64 0))
br label %332
330: ; preds = %316
%331 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %332
332: ; preds = %330, %328
br label %333
333: ; preds = %332
%334 = load i32, i32* %34
%335 = add nsw i32 %334, 1
store i32 %335, i32* %34
br label %312
336: ; preds = %312
br label %982
337: ; preds = %248
%338 = load i32, i32* %35
%339 = add nsw i32 %338, 1
store i32 %339, i32* %35
%340 = load i8*, i8** %32
%341 = load i32, i32* %35
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds i8, i8* %340, i64 %342
%344 = load i8, i8* %343
%345 = zext i8 %344 to i32
store i32 %345, i32* %36
%346 = load i32, i32* %35
%347 = add nsw i32 %346, 1
store i32 %347, i32* %35
%348 = load i32, i32* %35
store i32 %348, i32* %34
%349 = load i32, i32* %36
%350 = load i32, i32* %35
%351 = add nsw i32 %350, %349
store i32 %351, i32* %35
%352 = load i32, i32* %36
%353 = sdiv i32 %352, 4
store i32 %353, i32* %39
%354 = load i32, i32* %39
%355 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.37, i64 0, i64 0), i32 %354)
br label %356
356: ; preds = %377, %337
%357 = load i32, i32* %34
%358 = load i32, i32* %35
%359 = icmp slt i32 %357, %358
br i1 %359, label %360, label %380
360: ; preds = %356
%361 = load i8*, i8** %32
%362 = load i32, i32* %34
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds i8, i8* %361, i64 %363
%365 = load i8, i8* %364
%366 = zext i8 %365 to i32
%367 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %366)
%368 = load i32, i32* %34
%369 = load i32, i32* %35
%370 = sub nsw i32 %369, 1
%371 = icmp slt i32 %368, %370
br i1 %371, label %372, label %374
372: ; preds = %360
%373 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %376
374: ; preds = %360
%375 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %376
376: ; preds = %374, %372
br label %377
377: ; preds = %376
%378 = load i32, i32* %34
%379 = add nsw i32 %378, 1
store i32 %379, i32* %34
br label %356
380: ; preds = %356
br label %982
381: ; preds = %248
%382 = load i32, i32* %35
%383 = add nsw i32 %382, 1
store i32 %383, i32* %35
%384 = load i8*, i8** %32
%385 = load i32, i32* %35
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds i8, i8* %384, i64 %386
%388 = load i8, i8* %387
%389 = zext i8 %388 to i32
store i32 %389, i32* %36
%390 = load i32, i32* %35
%391 = add nsw i32 %390, 1
store i32 %391, i32* %35
%392 = load i32, i32* %35
store i32 %392, i32* %34
%393 = load i32, i32* %36
%394 = load i32, i32* %35
%395 = add nsw i32 %394, %393
store i32 %395, i32* %35
%396 = load i32, i32* %36
%397 = sdiv i32 %396, 4
store i32 %397, i32* %39
%398 = load i32, i32* %39
%399 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.38, i64 0, i64 0), i32 %398)
store i32 0, i32* %37
br label %400
400: ; preds = %427, %381
%401 = load i32, i32* %34
%402 = load i32, i32* %35
%403 = icmp slt i32 %401, %402
br i1 %403, label %404, label %430
404: ; preds = %400
%405 = load i32, i32* %37
%406 = add nsw i32 %405, 1
store i32 %406, i32* %37
%407 = load i8*, i8** %32
%408 = load i32, i32* %34
%409 = sext i32 %408 to i64
%410 = getelementptr inbounds i8, i8* %407, i64 %409
%411 = load i8, i8* %410
%412 = zext i8 %411 to i32
%413 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %412)
%414 = load i32, i32* %37
%415 = icmp slt i32 %414, 4
br i1 %415, label %416, label %424
416: ; preds = %404
%417 = load i32, i32* %34
%418 = load i32, i32* %35
%419 = sub nsw i32 %418, 1
%420 = icmp slt i32 %417, %419
br i1 %420, label %421, label %423
421: ; preds = %416
%422 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %423
423: ; preds = %421, %416
br label %426
424: ; preds = %404
store i32 0, i32* %37
%425 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.39, i64 0, i64 0))
br label %426
426: ; preds = %424, %423
br label %427
427: ; preds = %426
%428 = load i32, i32* %34
%429 = add nsw i32 %428, 1
store i32 %429, i32* %34
br label %400
430: ; preds = %400
%431 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %982
432: ; preds = %248
%433 = load i32, i32* %35
%434 = add nsw i32 %433, 1
store i32 %434, i32* %35
%435 = load i8*, i8** %32
%436 = load i32, i32* %35
%437 = sext i32 %436 to i64
%438 = getelementptr inbounds i8, i8* %435, i64 %437
%439 = load i8, i8* %438
%440 = zext i8 %439 to i32
store i32 %440, i32* %36
%441 = load i32, i32* %35
%442 = add nsw i32 %441, 1
store i32 %442, i32* %35
%443 = load i32, i32* %35
store i32 %443, i32* %34
%444 = load i32, i32* %36
%445 = load i32, i32* %35
%446 = add nsw i32 %445, %444
store i32 %446, i32* %35
%447 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.40, i64 0, i64 0))
br label %448
448: ; preds = %467, %432
%449 = load i32, i32* %34
%450 = load i32, i32* %35
%451 = icmp slt i32 %449, %450
br i1 %451, label %452, label %470
452: ; preds = %448
%453 = load i8*, i8** %32
%454 = load i32, i32* %34
%455 = sext i32 %454 to i64
%456 = getelementptr inbounds i8, i8* %453, i64 %455
%457 = load i8, i8* %456
%458 = zext i8 %457 to i32
%459 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.41, i64 0, i64 0), i32 %458)
%460 = load i32, i32* %34
%461 = load i32, i32* %35
%462 = sub nsw i32 %461, 1
%463 = icmp eq i32 %460, %462
br i1 %463, label %464, label %466
464: ; preds = %452
%465 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %466
466: ; preds = %464, %452
br label %467
467: ; preds = %466
%468 = load i32, i32* %34
%469 = add nsw i32 %468, 1
store i32 %469, i32* %34
br label %448
470: ; preds = %448
br label %982
471: ; preds = %248
%472 = load i32, i32* %35
%473 = add nsw i32 %472, 1
store i32 %473, i32* %35
%474 = load i8*, i8** %32
%475 = load i32, i32* %35
%476 = sext i32 %475 to i64
%477 = getelementptr inbounds i8, i8* %474, i64 %476
%478 = load i8, i8* %477
%479 = zext i8 %478 to i32
store i32 %479, i32* %36
%480 = load i32, i32* %35
%481 = add nsw i32 %480, 1
store i32 %481, i32* %35
%482 = load i32, i32* %35
store i32 %482, i32* %34
%483 = load i32, i32* %36
%484 = load i32, i32* %35
%485 = add nsw i32 %484, %483
store i32 %485, i32* %35
%486 = load i32, i32* %36
%487 = sdiv i32 %486, 4
store i32 %487, i32* %39
%488 = load i32, i32* %39
%489 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.42, i64 0, i64 0), i32 %488)
store i32 0, i32* %37
br label %490
490: ; preds = %517, %471
%491 = load i32, i32* %34
%492 = load i32, i32* %35
%493 = icmp slt i32 %491, %492
br i1 %493, label %494, label %520
494: ; preds = %490
%495 = load i32, i32* %37
%496 = add nsw i32 %495, 1
store i32 %496, i32* %37
%497 = load i8*, i8** %32
%498 = load i32, i32* %34
%499 = sext i32 %498 to i64
%500 = getelementptr inbounds i8, i8* %497, i64 %499
%501 = load i8, i8* %500
%502 = zext i8 %501 to i32
%503 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %502)
%504 = load i32, i32* %37
%505 = icmp slt i32 %504, 4
br i1 %505, label %506, label %514
506: ; preds = %494
%507 = load i32, i32* %34
%508 = load i32, i32* %35
%509 = sub nsw i32 %508, 1
%510 = icmp slt i32 %507, %509
br i1 %510, label %511, label %513
511: ; preds = %506
%512 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %513
513: ; preds = %511, %506
br label %516
514: ; preds = %494
store i32 0, i32* %37
%515 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.39, i64 0, i64 0))
br label %516
516: ; preds = %514, %513
br label %517
517: ; preds = %516
%518 = load i32, i32* %34
%519 = add nsw i32 %518, 1
store i32 %519, i32* %34
br label %490
520: ; preds = %490
%521 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %982
522: ; preds = %248
%523 = load i32, i32* %35
%524 = add nsw i32 %523, 1
store i32 %524, i32* %35
%525 = load i8*, i8** %32
%526 = load i32, i32* %35
%527 = sext i32 %526 to i64
%528 = getelementptr inbounds i8, i8* %525, i64 %527
%529 = load i8, i8* %528
%530 = zext i8 %529 to i32
store i32 %530, i32* %36
%531 = load i32, i32* %35
store i32 %531, i32* %34
%532 = load i32, i32* %36
%533 = load i32, i32* %35
%534 = add nsw i32 %533, %532
store i32 %534, i32* %35
%535 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.43, i64 0, i64 0))
br label %536
536: ; preds = %548, %522
%537 = load i32, i32* %34
%538 = load i32, i32* %35
%539 = icmp slt i32 %537, %538
br i1 %539, label %540, label %551
540: ; preds = %536
%541 = load i8*, i8** %32
%542 = load i32, i32* %34
%543 = sext i32 %542 to i64
%544 = getelementptr inbounds i8, i8* %541, i64 %543
%545 = load i8, i8* %544
%546 = zext i8 %545 to i32
%547 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 %546)
br label %548
548: ; preds = %540
%549 = load i32, i32* %34
%550 = add nsw i32 %549, 1
store i32 %550, i32* %34
br label %536
551: ; preds = %536
%552 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
%553 = load i32, i32* %35
%554 = add nsw i32 %553, 1
store i32 %554, i32* %35
br label %982
555: ; preds = %248
%556 = load i32, i32* %35
%557 = add nsw i32 %556, 1
store i32 %557, i32* %35
%558 = load i8*, i8** %32
%559 = load i32, i32* %35
%560 = sext i32 %559 to i64
%561 = getelementptr inbounds i8, i8* %558, i64 %560
%562 = load i8, i8* %561
%563 = zext i8 %562 to i32
store i32 %563, i32* %36
%564 = load i32, i32* %35
%565 = add nsw i32 %564, 1
store i32 %565, i32* %35
%566 = load i32, i32* %35
store i32 %566, i32* %34
%567 = load i32, i32* %36
%568 = load i32, i32* %35
%569 = add nsw i32 %568, %567
store i32 %569, i32* %35
%570 = load i32, i32* %36
%571 = sdiv i32 %570, 4
store i32 %571, i32* %39
%572 = load i32, i32* %39
%573 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.45, i64 0, i64 0), i32 %572)
store i32 0, i32* %37
br label %574
574: ; preds = %601, %555
%575 = load i32, i32* %34
%576 = load i32, i32* %35
%577 = icmp slt i32 %575, %576
br i1 %577, label %578, label %604
578: ; preds = %574
%579 = load i32, i32* %37
%580 = add nsw i32 %579, 1
store i32 %580, i32* %37
%581 = load i8*, i8** %32
%582 = load i32, i32* %34
%583 = sext i32 %582 to i64
%584 = getelementptr inbounds i8, i8* %581, i64 %583
%585 = load i8, i8* %584
%586 = zext i8 %585 to i32
%587 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %586)
%588 = load i32, i32* %37
%589 = icmp slt i32 %588, 4
br i1 %589, label %590, label %598
590: ; preds = %578
%591 = load i32, i32* %34
%592 = load i32, i32* %35
%593 = sub nsw i32 %592, 1
%594 = icmp slt i32 %591, %593
br i1 %594, label %595, label %597
595: ; preds = %590
%596 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %597
597: ; preds = %595, %590
br label %600
598: ; preds = %578
store i32 0, i32* %37
%599 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.39, i64 0, i64 0))
br label %600
600: ; preds = %598, %597
br label %601
601: ; preds = %600
%602 = load i32, i32* %34
%603 = add nsw i32 %602, 1
store i32 %603, i32* %34
br label %574
604: ; preds = %574
%605 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %982
606: ; preds = %248
%607 = load i32, i32* %35
%608 = add nsw i32 %607, 1
store i32 %608, i32* %35
%609 = load i8*, i8** %32
%610 = load i32, i32* %35
%611 = sext i32 %610 to i64
%612 = getelementptr inbounds i8, i8* %609, i64 %611
%613 = load i8, i8* %612
%614 = zext i8 %613 to i32
store i32 %614, i32* %36
%615 = load i32, i32* %35
%616 = add nsw i32 %615, 1
store i32 %616, i32* %35
%617 = load i32, i32* %35
store i32 %617, i32* %34
%618 = load i32, i32* %36
%619 = load i32, i32* %35
%620 = add nsw i32 %619, %618
store i32 %620, i32* %35
%621 = load i32, i32* %36
%622 = sdiv i32 %621, 4
store i32 %622, i32* %39
%623 = load i32, i32* %39
%624 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.46, i64 0, i64 0), i32 %623)
store i32 0, i32* %37
br label %625
625: ; preds = %652, %606
%626 = load i32, i32* %34
%627 = load i32, i32* %35
%628 = icmp slt i32 %626, %627
br i1 %628, label %629, label %655
629: ; preds = %625
%630 = load i32, i32* %37
%631 = add nsw i32 %630, 1
store i32 %631, i32* %37
%632 = load i8*, i8** %32
%633 = load i32, i32* %34
%634 = sext i32 %633 to i64
%635 = getelementptr inbounds i8, i8* %632, i64 %634
%636 = load i8, i8* %635
%637 = zext i8 %636 to i32
%638 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %637)
%639 = load i32, i32* %37
%640 = icmp slt i32 %639, 4
br i1 %640, label %641, label %649
641: ; preds = %629
%642 = load i32, i32* %34
%643 = load i32, i32* %35
%644 = sub nsw i32 %643, 1
%645 = icmp slt i32 %642, %644
br i1 %645, label %646, label %648
646: ; preds = %641
%647 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %648
648: ; preds = %646, %641
br label %651
649: ; preds = %629
store i32 0, i32* %37
%650 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.39, i64 0, i64 0))
br label %651
651: ; preds = %649, %648
br label %652
652: ; preds = %651
%653 = load i32, i32* %34
%654 = add nsw i32 %653, 1
store i32 %654, i32* %34
br label %625
655: ; preds = %625
%656 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %982
657: ; preds = %248
%658 = load i32, i32* %35
%659 = add nsw i32 %658, 1
store i32 %659, i32* %35
%660 = load i8*, i8** %32
%661 = load i32, i32* %35
%662 = sext i32 %661 to i64
%663 = getelementptr inbounds i8, i8* %660, i64 %662
%664 = load i8, i8* %663
%665 = zext i8 %664 to i32
store i32 %665, i32* %36
%666 = load i32, i32* %35
%667 = add nsw i32 %666, 1
store i32 %667, i32* %35
%668 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.47, i64 0, i64 0))
%669 = load i8*, i8** %32
%670 = load i32, i32* %35
%671 = sext i32 %670 to i64
%672 = getelementptr inbounds i8, i8* %669, i64 %671
%673 = load i8, i8* %672
%674 = zext i8 %673 to i32
switch i32 %674, label %683 [
i32 1, label %675
i32 2, label %677
i32 4, label %679
i32 8, label %681
]
675: ; preds = %657
%676 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.48, i64 0, i64 0))
br label %685
677: ; preds = %657
%678 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.49, i64 0, i64 0))
br label %685
679: ; preds = %657
%680 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.50, i64 0, i64 0))
br label %685
681: ; preds = %657
%682 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.51, i64 0, i64 0))
br label %685
683: ; preds = %657
%684 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.52, i64 0, i64 0))
store i32 -1, i32* %17
br label %983
685: ; preds = %681, %679, %677, %675
%686 = load i32, i32* %35
%687 = add nsw i32 %686, 1
store i32 %687, i32* %35
br label %982
688: ; preds = %248
%689 = load i32, i32* %35
%690 = add nsw i32 %689, 1
store i32 %690, i32* %35
%691 = load i8*, i8** %32
%692 = load i32, i32* %35
%693 = sext i32 %692 to i64
%694 = getelementptr inbounds i8, i8* %691, i64 %693
%695 = load i8, i8* %694
%696 = zext i8 %695 to i32
store i32 %696, i32* %36
%697 = load i32, i32* %35
%698 = add nsw i32 %697, 1
store i32 %698, i32* %35
%699 = load i32, i32* %35
store i32 %699, i32* %34
%700 = load i32, i32* %36
%701 = load i32, i32* %35
%702 = add nsw i32 %701, %700
store i32 %702, i32* %35
%703 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.53, i64 0, i64 0))
br label %704
704: ; preds = %725, %688
%705 = load i32, i32* %34
%706 = load i32, i32* %35
%707 = icmp slt i32 %705, %706
br i1 %707, label %708, label %728
708: ; preds = %704
%709 = load i8*, i8** %32
%710 = load i32, i32* %34
%711 = sext i32 %710 to i64
%712 = getelementptr inbounds i8, i8* %709, i64 %711
%713 = load i8, i8* %712
%714 = zext i8 %713 to i32
%715 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %714)
%716 = load i32, i32* %34
%717 = load i32, i32* %35
%718 = sub nsw i32 %717, 1
%719 = icmp slt i32 %716, %718
br i1 %719, label %720, label %722
720: ; preds = %708
%721 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %724
722: ; preds = %708
%723 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %724
724: ; preds = %722, %720
br label %725
725: ; preds = %724
%726 = load i32, i32* %34
%727 = add nsw i32 %726, 1
store i32 %727, i32* %34
br label %704
728: ; preds = %704
br label %982
729: ; preds = %248
%730 = load i32, i32* %35
%731 = add nsw i32 %730, 1
store i32 %731, i32* %35
%732 = load i8*, i8** %32
%733 = load i32, i32* %35
%734 = sext i32 %733 to i64
%735 = getelementptr inbounds i8, i8* %732, i64 %734
%736 = load i8, i8* %735
%737 = zext i8 %736 to i32
store i32 %737, i32* %36
%738 = load i32, i32* %35
%739 = add nsw i32 %738, 1
store i32 %739, i32* %35
%740 = load i32, i32* %35
store i32 %740, i32* %34
%741 = load i32, i32* %36
%742 = load i32, i32* %35
%743 = add nsw i32 %742, %741
store i32 %743, i32* %35
%744 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.54, i64 0, i64 0))
br label %745
745: ; preds = %766, %729
%746 = load i32, i32* %34
%747 = load i32, i32* %35
%748 = icmp slt i32 %746, %747
br i1 %748, label %749, label %769
749: ; preds = %745
%750 = load i8*, i8** %32
%751 = load i32, i32* %34
%752 = sext i32 %751 to i64
%753 = getelementptr inbounds i8, i8* %750, i64 %752
%754 = load i8, i8* %753
%755 = zext i8 %754 to i32
%756 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %755)
%757 = load i32, i32* %34
%758 = load i32, i32* %35
%759 = sub nsw i32 %758, 1
%760 = icmp slt i32 %757, %759
br i1 %760, label %761, label %763
761: ; preds = %749
%762 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.55, i64 0, i64 0))
br label %765
763: ; preds = %749
%764 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.56, i64 0, i64 0))
br label %765
765: ; preds = %763, %761
br label %766
766: ; preds = %765
%767 = load i32, i32* %34
%768 = add nsw i32 %767, 1
store i32 %768, i32* %34
br label %745
769: ; preds = %745
br label %982
770: ; preds = %248
%771 = load i32, i32* %35
%772 = add nsw i32 %771, 1
store i32 %772, i32* %35
%773 = load i32, i32* %35
%774 = add nsw i32 %773, 1
store i32 %774, i32* %35
%775 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.57, i64 0, i64 0))
%776 = load i8*, i8** %32
%777 = load i32, i32* %35
%778 = sext i32 %777 to i64
%779 = getelementptr inbounds i8, i8* %776, i64 %778
%780 = load i8, i8* %779
%781 = zext i8 %780 to i32
switch i32 %781, label %798 [
i32 1, label %782
i32 2, label %784
i32 3, label %786
i32 4, label %788
i32 5, label %790
i32 6, label %792
i32 7, label %794
i32 8, label %796
]
782: ; preds = %770
%783 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.58, i64 0, i64 0))
br label %800
784: ; preds = %770
%785 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.59, i64 0, i64 0))
br label %800
786: ; preds = %770
%787 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.60, i64 0, i64 0))
br label %800
788: ; preds = %770
%789 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.61, i64 0, i64 0))
br label %800
790: ; preds = %770
%791 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.62, i64 0, i64 0))
br label %800
792: ; preds = %770
%793 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.63, i64 0, i64 0))
br label %800
794: ; preds = %770
%795 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.64, i64 0, i64 0))
br label %800
796: ; preds = %770
%797 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.65, i64 0, i64 0))
br label %800
798: ; preds = %770
%799 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.66, i64 0, i64 0))
store i32 -1, i32* %17
br label %983
800: ; preds = %796, %794, %792, %790, %788, %786, %784, %782
%801 = load i32, i32* %35
%802 = add nsw i32 %801, 1
store i32 %802, i32* %35
br label %982
803: ; preds = %248
%804 = load i32, i32* %35
%805 = add nsw i32 %804, 1
store i32 %805, i32* %35
%806 = load i8*, i8** %32
%807 = load i32, i32* %35
%808 = sext i32 %807 to i64
%809 = getelementptr inbounds i8, i8* %806, i64 %808
%810 = load i8, i8* %809
%811 = zext i8 %810 to i32
store i32 %811, i32* %36
%812 = load i32, i32* %35
%813 = add nsw i32 %812, 1
store i32 %813, i32* %35
%814 = load i32, i32* %35
store i32 %814, i32* %34
%815 = load i32, i32* %36
%816 = load i32, i32* %35
%817 = add nsw i32 %816, %815
store i32 %817, i32* %35
%818 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.67, i64 0, i64 0))
br label %819
819: ; preds = %840, %803
%820 = load i32, i32* %34
%821 = load i32, i32* %35
%822 = icmp slt i32 %820, %821
br i1 %822, label %823, label %843
823: ; preds = %819
%824 = load i8*, i8** %32
%825 = load i32, i32* %34
%826 = sext i32 %825 to i64
%827 = getelementptr inbounds i8, i8* %824, i64 %826
%828 = load i8, i8* %827
%829 = zext i8 %828 to i32
%830 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %829)
%831 = load i32, i32* %34
%832 = load i32, i32* %35
%833 = sub nsw i32 %832, 1
%834 = icmp slt i32 %831, %833
br i1 %834, label %835, label %837
835: ; preds = %823
%836 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %839
837: ; preds = %823
%838 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %839
839: ; preds = %837, %835
br label %840
840: ; preds = %839
%841 = load i32, i32* %34
%842 = add nsw i32 %841, 1
store i32 %842, i32* %34
br label %819
843: ; preds = %819
br label %982
844: ; preds = %248
%845 = load i32, i32* %35
%846 = add nsw i32 %845, 1
store i32 %846, i32* %35
%847 = load i8*, i8** %32
%848 = load i32, i32* %35
%849 = sext i32 %848 to i64
%850 = getelementptr inbounds i8, i8* %847, i64 %849
%851 = load i8, i8* %850
%852 = zext i8 %851 to i32
store i32 %852, i32* %36
%853 = load i32, i32* %35
%854 = add nsw i32 %853, 1
store i32 %854, i32* %35
%855 = load i32, i32* %35
store i32 %855, i32* %34
%856 = load i32, i32* %36
%857 = load i32, i32* %35
%858 = add nsw i32 %857, %856
store i32 %858, i32* %35
%859 = load i32, i32* %36
%860 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.68, i64 0, i64 0), i32 %859)
br label %861
861: ; preds = %880, %844
%862 = load i32, i32* %34
%863 = load i32, i32* %35
%864 = icmp slt i32 %862, %863
br i1 %864, label %865, label %883
865: ; preds = %861
%866 = load i8*, i8** %32
%867 = load i32, i32* %34
%868 = sext i32 %867 to i64
%869 = getelementptr inbounds i8, i8* %866, i64 %868
%870 = load i8, i8* %869
%871 = zext i8 %870 to i32
%872 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 %871)
%873 = load i32, i32* %34
%874 = load i32, i32* %35
%875 = sub nsw i32 %874, 1
%876 = icmp eq i32 %873, %875
br i1 %876, label %877, label %879
877: ; preds = %865
%878 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %879
879: ; preds = %877, %865
br label %880
880: ; preds = %879
%881 = load i32, i32* %34
%882 = add nsw i32 %881, 1
store i32 %882, i32* %34
br label %861
883: ; preds = %861
br label %982
884: ; preds = %248
%885 = load i32, i32* %35
%886 = add nsw i32 %885, 1
store i32 %886, i32* %35
%887 = load i8*, i8** %32
%888 = load i32, i32* %35
%889 = sext i32 %888 to i64
%890 = getelementptr inbounds i8, i8* %887, i64 %889
%891 = load i8, i8* %890
%892 = zext i8 %891 to i32
store i32 %892, i32* %36
%893 = load i32, i32* %35
%894 = add nsw i32 %893, 1
store i32 %894, i32* %35
%895 = load i32, i32* %35
store i32 %895, i32* %34
%896 = load i32, i32* %36
%897 = load i32, i32* %35
%898 = add nsw i32 %897, %896
store i32 %898, i32* %35
%899 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.69, i64 0, i64 0))
br label %900
900: ; preds = %919, %884
%901 = load i32, i32* %34
%902 = load i32, i32* %35
%903 = icmp slt i32 %901, %902
br i1 %903, label %904, label %922
904: ; preds = %900
%905 = load i8*, i8** %32
%906 = load i32, i32* %34
%907 = sext i32 %906 to i64
%908 = getelementptr inbounds i8, i8* %905, i64 %907
%909 = load i8, i8* %908
%910 = zext i8 %909 to i32
%911 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 %910)
%912 = load i32, i32* %34
%913 = load i32, i32* %35
%914 = sub nsw i32 %913, 1
%915 = icmp eq i32 %912, %914
br i1 %915, label %916, label %918
916: ; preds = %904
%917 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %918
918: ; preds = %916, %904
br label %919
919: ; preds = %918
%920 = load i32, i32* %34
%921 = add nsw i32 %920, 1
store i32 %921, i32* %34
br label %900
922: ; preds = %900
br label %982
923: ; preds = %248
%924 = load i32, i32* %35
%925 = add nsw i32 %924, 1
store i32 %925, i32* %35
%926 = load i8*, i8** %32
%927 = load i32, i32* %35
%928 = sext i32 %927 to i64
%929 = getelementptr inbounds i8, i8* %926, i64 %928
%930 = load i8, i8* %929
%931 = zext i8 %930 to i32
store i32 %931, i32* %36
%932 = load i32, i32* %35
%933 = add nsw i32 %932, 1
store i32 %933, i32* %35
%934 = load i8*, i8** %32
%935 = load i32, i32* %35
%936 = sext i32 %935 to i64
%937 = getelementptr inbounds i8, i8* %934, i64 %936
%938 = load i8, i8* %937
%939 = zext i8 %938 to i32
%940 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.70, i64 0, i64 0), i32 %939)
%941 = load i32, i32* %35
%942 = add nsw i32 %941, 1
store i32 %942, i32* %35
%943 = load i32, i32* %35
store i32 %943, i32* %34
%944 = load i32, i32* %36
%945 = sub nsw i32 %944, 1
%946 = load i32, i32* %35
%947 = add nsw i32 %946, %945
store i32 %947, i32* %35
br label %948
948: ; preds = %967, %923
%949 = load i32, i32* %34
%950 = load i32, i32* %35
%951 = icmp slt i32 %949, %950
br i1 %951, label %952, label %970
952: ; preds = %948
%953 = load i8*, i8** %32
%954 = load i32, i32* %34
%955 = sext i32 %954 to i64
%956 = getelementptr inbounds i8, i8* %953, i64 %955
%957 = load i8, i8* %956
%958 = zext i8 %957 to i32
%959 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 %958)
%960 = load i32, i32* %34
%961 = load i32, i32* %35
%962 = sub nsw i32 %961, 1
%963 = icmp eq i32 %960, %962
br i1 %963, label %964, label %966
964: ; preds = %952
%965 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %966
966: ; preds = %964, %952
br label %967
967: ; preds = %966
%968 = load i32, i32* %34
%969 = add nsw i32 %968, 1
store i32 %969, i32* %34
br label %948
970: ; preds = %948
br label %982
971: ; preds = %248
%972 = load i8*, i8** %32
%973 = load i32, i32* %35
%974 = sext i32 %973 to i64
%975 = getelementptr inbounds i8, i8* %972, i64 %974
%976 = load i8, i8* %975
%977 = zext i8 %976 to i32
%978 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.71, i64 0, i64 0), i32 %977)
%979 = load i32, i32* %33
store i32 %979, i32* %35
br label %982
980: ; preds = %248
%981 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.72, i64 0, i64 0))
store i32 -1, i32* %17
br label %983
982: ; preds = %971, %970, %922, %883, %843, %800, %769, %728, %685, %655, %604, %551, %520, %470, %430, %380, %336, %295
br label %244
983: ; preds = %683, %798, %980, %244
%984 = load i32, i32* %17
ret i32 %984
}

LLVM IR (-O2):
@.str = [58 x i8] c"Message op code / message type, value: %d -> BOOTREQUEST\0A\00"
@.str.1 = [56 x i8] c"Message op code / message type, value: %d -> BOOTREPLY\0A\00"
@.str.2 = [31 x i8] c"Hardware address type, value: \00"
@.str.3 = [25 x i8] c" %d -> Ethernet (10 Mb)\0A\00"
@.str.4 = [26 x i8] c" %d -> IEEE 802 Networks\0A\00"
@.str.5 = [15 x i8] c" %d -> ARCNET\0A\00"
@.str.6 = [18 x i8] c" %d -> LocalTalk\0A\00"
@.str.7 = [46 x i8] c" %d -> LocalNet (IBM PCNet or SYTEK LocalNET\0A\00"
@.str.8 = [13 x i8] c" %d -> SMDS\0A\00"
@.str.9 = [20 x i8] c" %d -> Frame Relay\0A\00"
@.str.10 = [41 x i8] c" %d -> Asynchronous Transfer Mode (ATM)\0A\00"
@.str.11 = [13 x i8] c" %d -> HDLC\0A\00"
@.str.12 = [22 x i8] c" %d -> Fibre Channel\0A\00"
@.str.13 = [20 x i8] c" %d -> Serial Line\0A\00"
@.str.14 = [21 x i8] c"ERRORE: switch htype\00"
@.str.15 = [36 x i8] c"Hardware address length, value: %d\0A\00"
@.str.16 = [16 x i8] c"Hops, value: %d\00"
@.str.19 = [32 x i8] c"Transaction Identifier, value: \00"
@.str.20 = [3 x i8] c"%d\00"
@.str.21 = [92 x i8] c"Seconds elapsed since client began address acquisition or renewal process, values: %d - %d\0A\00"
@.str.22 = [28 x i8] c"flags[0]: %d, flags[1]: %d\0A\00"
@.str.23 = [38 x i8] c"Flags, value broadcast flag (1 bit): \00"
@.str.24 = [4 x i8] c"%d-\00"
@.str.25 = [20 x i8] c"Client IP address: \00"
@.str.26 = [20 x i8] c"'Your' IP Address: \00"
@.str.27 = [20 x i8] c"Server IP Address: \00"
@.str.28 = [21 x i8] c"Gateway IP Address: \00"
@.str.29 = [26 x i8] c"Client hardware address: \00"
@.str.31 = [14 x i8] c"Server Name: \00"
@.str.32 = [16 x i8] c"Boot Filename: \00"
@.str.34 = [15 x i8] c"\09Subnet Mask: \00"
@.str.36 = [15 x i8] c"\09Time Offset: \00"
@.str.37 = [30 x i8] c"\09Router Option (%d address): \00"
@.str.38 = [35 x i8] c"\09Domain Name Server (%d address): \00"
@.str.40 = [20 x i8] c"\09Host Name Option: \00"
@.str.42 = [28 x i8] c"\09Domain Name (%d address): \00"
@.str.43 = [24 x i8] c"\09Interface MTU Option: \00"
@.str.44 = [4 x i8] c"%d \00"
@.str.45 = [53 x i8] c"\09Network Time Protocol Servers Option (%d address): \00"
@.str.46 = [55 x i8] c"\09NetBIOS over TCP/IP Name Server Option (%d address): \00"
@.str.47 = [40 x i8] c"\09NetBIOS over TCP/IP Node Type Option: \00"
@.str.53 = [24 x i8] c"\09Requested IP Address: \00"
@.str.54 = [25 x i8] c"\09IP Address Lease Time: \00"
@.str.57 = [21 x i8] c"\09DHCP Message Type: \00"
@.str.67 = [21 x i8] c"\09Server identifier: \00"
@.str.68 = [42 x i8] c"\09Parameter request list (%d parameters): \00"
@.str.69 = [29 x i8] c"\09Maximum DHCP message size: \00"
@.str.70 = [32 x i8] c"\09Client-identifier (type: %d): \00"
@.str.71 = [24 x i8] c"\09End Option, value: %d\0A\00"
@str = [22 x i8] c"Print options fields:\00"
@str.73 = [11 x i8] c"DHCPINFORM\00"
@str.74 = [12 x i8] c"DHCPRELEASE\00"
@str.75 = [8 x i8] c"DHCPNAK\00"
@str.76 = [8 x i8] c"DHCPACK\00"
@str.77 = [12 x i8] c"DHCPDECLINE\00"
@str.78 = [12 x i8] c"DHCPREQUEST\00"
@str.79 = [10 x i8] c"DHCPOFFER\00"
@str.80 = [13 x i8] c"DHCPDISCOVER\00"
@str.81 = [16 x i8] c"ERRORE: case 53\00"
@str.82 = [9 x i8] c" seconds\00"
@str.83 = [7 x i8] c"H-node\00"
@str.84 = [7 x i8] c"M-node\00"
@str.85 = [7 x i8] c"P-node\00"
@str.86 = [7 x i8] c"B-node\00"
@str.87 = [16 x i8] c"ERRORE: case 46\00"
@str.88 = [23 x i8] c"ERRORE: options fields\00"
@str.89 = [137 x i8] c"; is set to 0 by a client before transmitting a request and used by relay agents to control the forwarding of BOOTP and/or DHCP messages\00"
@reltable.printbootp = [8 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.86 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.85 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.86 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.84 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.86 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.86 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.86 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.83 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp to i64)) to i32)]
@reltable.printbootp.91 = [8 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @str.80 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp.91 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @str.79 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp.91 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @str.78 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp.91 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @str.77 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp.91 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @str.76 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp.91 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @str.75 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp.91 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @str.74 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp.91 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @str.73 to i64), i64 ptrtoint ([8 x i32]* @reltable.printbootp.91 to i64)) to i32)]
define i32 @printbootp(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2, i8 zeroext %3, i8* nocapture %4, i8* nocapture %5, i8* nocapture %6, i8* %7, i8* %8, i8* %9, i8* %10, i8* nocapture %11, i8* nocapture %12, i8* nocapture %13, i8* %14, i32 %15) {
%17 = icmp eq i8 %0, 1
br i1 %17, label %18, label %20
18: ; preds = %16
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str, i64 0, i64 0), i32 1)
br label %23
20: ; preds = %16
%21 = zext i8 %0 to i32
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.1, i64 0, i64 0), i32 %21)
br label %23
23: ; preds = %20, %18
%24 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.2, i64 0, i64 0))
switch i8 %1, label %49 [
i8 1, label %25
i8 6, label %27
i8 7, label %29
i8 11, label %31
i8 12, label %33
i8 14, label %35
i8 15, label %37
i8 16, label %39
i8 17, label %41
i8 18, label %43
i8 19, label %45
i8 20, label %47
]
25: ; preds = %23
%26 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.3, i64 0, i64 0), i32 1)
br label %51
27: ; preds = %23
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.4, i64 0, i64 0), i32 6)
br label %51
29: ; preds = %23
%30 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.5, i64 0, i64 0), i32 7)
br label %51
31: ; preds = %23
%32 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 11)
br label %51
33: ; preds = %23
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0), i32 12)
br label %51
35: ; preds = %23
%36 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.8, i64 0, i64 0), i32 14)
br label %51
37: ; preds = %23
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.9, i64 0, i64 0), i32 15)
br label %51
39: ; preds = %23
%40 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.10, i64 0, i64 0), i32 16)
br label %51
41: ; preds = %23
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i32 17)
br label %51
43: ; preds = %23
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.12, i64 0, i64 0), i32 18)
br label %51
45: ; preds = %23
%46 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.10, i64 0, i64 0), i32 19)
br label %51
47: ; preds = %23
%48 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.13, i64 0, i64 0), i32 20)
br label %51
49: ; preds = %23
%50 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.14, i64 0, i64 0))
br label %51
51: ; preds = %49, %47, %45, %43, %41, %39, %37, %35, %33, %31, %29, %27, %25
%52 = zext i8 %2 to i32
%53 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @.str.15, i64 0, i64 0), i32 %52)
%54 = zext i8 %3 to i32
%55 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0), i32 %54)
%56 = icmp eq i8 %3, 0
br i1 %56, label %57, label %59
57: ; preds = %51
%58 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([137 x i8], [137 x i8]* @str.89, i64 0, i64 0))
br label %61
59: ; preds = %51
%60 = tail call i32 @putchar(i32 10)
br label %61
61: ; preds = %59, %57
%62 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.19, i64 0, i64 0))
%63 = load i8, i8* %4
%64 = zext i8 %63 to i32
%65 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %64)
%66 = getelementptr inbounds i8, i8* %4, i64 1
%67 = load i8, i8* %66
%68 = zext i8 %67 to i32
%69 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %68)
%70 = getelementptr inbounds i8, i8* %4, i64 2
%71 = load i8, i8* %70
%72 = zext i8 %71 to i32
%73 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %72)
%74 = getelementptr inbounds i8, i8* %4, i64 3
%75 = load i8, i8* %74
%76 = zext i8 %75 to i32
%77 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %76)
%78 = tail call i32 @putchar(i32 10)
%79 = load i8, i8* %5
%80 = zext i8 %79 to i32
%81 = getelementptr inbounds i8, i8* %5, i64 1
%82 = load i8, i8* %81
%83 = zext i8 %82 to i32
%84 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([92 x i8], [92 x i8]* @.str.21, i64 0, i64 0), i32 %80, i32 %83)
%85 = load i8, i8* %6
%86 = zext i8 %85 to i32
%87 = getelementptr inbounds i8, i8* %6, i64 1
%88 = load i8, i8* %87
%89 = zext i8 %88 to i32
%90 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.22, i64 0, i64 0), i32 %86, i32 %89)
%91 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @.str.23, i64 0, i64 0))
%92 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 0)
%93 = load i8, i8* %6
%94 = and i8 %93, -128
%95 = zext i8 %94 to i32
%96 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 %95)
%97 = load i8, i8* %6
%98 = and i8 %97, 64
%99 = zext i8 %98 to i32
%100 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 %99)
%101 = load i8, i8* %6
%102 = and i8 %101, 32
%103 = zext i8 %102 to i32
%104 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 %103)
%105 = load i8, i8* %6
%106 = and i8 %105, 16
%107 = zext i8 %106 to i32
%108 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 %107)
%109 = load i8, i8* %6
%110 = and i8 %109, 8
%111 = zext i8 %110 to i32
%112 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 %111)
%113 = load i8, i8* %6
%114 = and i8 %113, 4
%115 = zext i8 %114 to i32
%116 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 %115)
%117 = load i8, i8* %6
%118 = and i8 %117, 2
%119 = zext i8 %118 to i32
%120 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i32 %119)
%121 = tail call i32 @putchar(i32 10)
%122 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.25, i64 0, i64 0))
%123 = tail call i32 (i8*, ...) bitcast (i32 (...)* @printip to i32 (i8*, ...)*)(i8* %7)
%124 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.26, i64 0, i64 0))
%125 = tail call i32 (i8*, ...) bitcast (i32 (...)* @printip to i32 (i8*, ...)*)(i8* %8)
%126 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.27, i64 0, i64 0))
%127 = tail call i32 (i8*, ...) bitcast (i32 (...)* @printip to i32 (i8*, ...)*)(i8* %9)
%128 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.28, i64 0, i64 0))
%129 = tail call i32 (i8*, ...) bitcast (i32 (...)* @printip to i32 (i8*, ...)*)(i8* %10)
%130 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.29, i64 0, i64 0))
%131 = load i8, i8* %11
%132 = zext i8 %131 to i32
%133 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %132)
%134 = tail call i32 @putchar(i32 58)
%135 = getelementptr inbounds i8, i8* %11, i64 1
%136 = load i8, i8* %135
%137 = zext i8 %136 to i32
%138 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %137)
%139 = tail call i32 @putchar(i32 58)
%140 = getelementptr inbounds i8, i8* %11, i64 2
%141 = load i8, i8* %140
%142 = zext i8 %141 to i32
%143 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %142)
%144 = tail call i32 @putchar(i32 58)
%145 = getelementptr inbounds i8, i8* %11, i64 3
%146 = load i8, i8* %145
%147 = zext i8 %146 to i32
%148 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %147)
%149 = tail call i32 @putchar(i32 58)
%150 = getelementptr inbounds i8, i8* %11, i64 4
%151 = load i8, i8* %150
%152 = zext i8 %151 to i32
%153 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %152)
%154 = tail call i32 @putchar(i32 58)
%155 = getelementptr inbounds i8, i8* %11, i64 5
%156 = load i8, i8* %155
%157 = zext i8 %156 to i32
%158 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %157)
%159 = tail call i32 @putchar(i32 58)
%160 = getelementptr inbounds i8, i8* %11, i64 6
%161 = load i8, i8* %160
%162 = zext i8 %161 to i32
%163 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %162)
%164 = tail call i32 @putchar(i32 58)
%165 = getelementptr inbounds i8, i8* %11, i64 7
%166 = load i8, i8* %165
%167 = zext i8 %166 to i32
%168 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %167)
%169 = tail call i32 @putchar(i32 58)
%170 = getelementptr inbounds i8, i8* %11, i64 8
%171 = load i8, i8* %170
%172 = zext i8 %171 to i32
%173 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %172)
%174 = tail call i32 @putchar(i32 58)
%175 = getelementptr inbounds i8, i8* %11, i64 9
%176 = load i8, i8* %175
%177 = zext i8 %176 to i32
%178 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %177)
%179 = tail call i32 @putchar(i32 58)
%180 = getelementptr inbounds i8, i8* %11, i64 10
%181 = load i8, i8* %180
%182 = zext i8 %181 to i32
%183 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %182)
%184 = tail call i32 @putchar(i32 58)
%185 = getelementptr inbounds i8, i8* %11, i64 11
%186 = load i8, i8* %185
%187 = zext i8 %186 to i32
%188 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %187)
%189 = tail call i32 @putchar(i32 58)
%190 = getelementptr inbounds i8, i8* %11, i64 12
%191 = load i8, i8* %190
%192 = zext i8 %191 to i32
%193 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %192)
%194 = tail call i32 @putchar(i32 58)
%195 = getelementptr inbounds i8, i8* %11, i64 13
%196 = load i8, i8* %195
%197 = zext i8 %196 to i32
%198 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %197)
%199 = tail call i32 @putchar(i32 58)
%200 = getelementptr inbounds i8, i8* %11, i64 14
%201 = load i8, i8* %200
%202 = zext i8 %201 to i32
%203 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %202)
%204 = tail call i32 @putchar(i32 58)
%205 = getelementptr inbounds i8, i8* %11, i64 15
%206 = load i8, i8* %205
%207 = zext i8 %206 to i32
%208 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %207)
%209 = tail call i32 @putchar(i32 10)
%210 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.31, i64 0, i64 0))
br label %211
211: ; preds = %61, %211
%212 = phi i64 [ 0, %61 ], [ %217, %211 ]
%213 = getelementptr inbounds i8, i8* %12, i64 %212
%214 = load i8, i8* %213
%215 = zext i8 %214 to i32
%216 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %215)
%217 = add nuw nsw i64 %212, 1
%218 = icmp eq i64 %217, 64
br i1 %218, label %219, label %211
219: ; preds = %211
%220 = tail call i32 @putchar(i32 10)
%221 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.32, i64 0, i64 0))
br label %222
222: ; preds = %219, %222
%223 = phi i64 [ 0, %219 ], [ %228, %222 ]
%224 = getelementptr inbounds i8, i8* %13, i64 %223
%225 = load i8, i8* %224
%226 = zext i8 %225 to i32
%227 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %226)
%228 = add nuw nsw i64 %223, 1
%229 = icmp eq i64 %228, 128
br i1 %229, label %230, label %222
230: ; preds = %222
%231 = tail call i32 @putchar(i32 10)
%232 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @str, i64 0, i64 0))
%233 = icmp sgt i32 %15, 0
br i1 %233, label %234, label %725
234: ; preds = %230, %722
%235 = phi i32 [ %723, %722 ], [ 0, %230 ]
%236 = sext i32 %235 to i64
%237 = getelementptr inbounds i8, i8* %14, i64 %236
%238 = load i8, i8* %237
switch i8 %238, label %720 [
i8 1, label %239
i8 2, label %265
i8 3, label %291
i8 6, label %318
i8 12, label %355
i8 15, label %382
i8 26, label %419
i8 42, label %441
i8 44, label %478
i8 46, label %515
i8 50, label %535
i8 51, label %561
i8 53, label %590
i8 54, label %606
i8 55, label %632
i8 57, label %659
i8 61, label %686
i8 -1, label %718
]
239: ; preds = %234
%240 = add nsw i32 %235, 1
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds i8, i8* %14, i64 %241
%243 = load i8, i8* %242
%244 = zext i8 %243 to i32
%245 = add i32 %235, 2
%246 = add nsw i32 %245, %244
%247 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0))
%248 = icmp eq i8 %243, 0
br i1 %248, label %722, label %249
249: ; preds = %239
%250 = add nsw i32 %246, -1
%251 = sext i32 %245 to i64
%252 = sext i32 %250 to i64
%253 = sext i32 %246 to i64
br label %254
254: ; preds = %249, %254
%255 = phi i64 [ %251, %249 ], [ %263, %254 ]
%256 = getelementptr inbounds i8, i8* %14, i64 %255
%257 = load i8, i8* %256
%258 = zext i8 %257 to i32
%259 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %258)
%260 = icmp slt i64 %255, %252
%261 = select i1 %260, i32 46, i32 10
%262 = tail call i32 @putchar(i32 %261)
%263 = add nsw i64 %255, 1
%264 = icmp slt i64 %263, %253
br i1 %264, label %254, label %722
265: ; preds = %234
%266 = add nsw i32 %235, 1
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds i8, i8* %14, i64 %267
%269 = load i8, i8* %268
%270 = zext i8 %269 to i32
%271 = add i32 %235, 2
%272 = add nsw i32 %271, %270
%273 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0))
%274 = icmp eq i8 %269, 0
br i1 %274, label %722, label %275
275: ; preds = %265
%276 = add nsw i32 %272, -1
%277 = sext i32 %271 to i64
%278 = sext i32 %276 to i64
%279 = sext i32 %272 to i64
br label %280
280: ; preds = %275, %280
%281 = phi i64 [ %277, %275 ], [ %289, %280 ]
%282 = getelementptr inbounds i8, i8* %14, i64 %281
%283 = load i8, i8* %282
%284 = zext i8 %283 to i32
%285 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %284)
%286 = icmp slt i64 %281, %278
%287 = select i1 %286, i32 58, i32 10
%288 = tail call i32 @putchar(i32 %287)
%289 = add nsw i64 %281, 1
%290 = icmp slt i64 %289, %279
br i1 %290, label %280, label %722
291: ; preds = %234
%292 = add nsw i32 %235, 1
%293 = sext i32 %292 to i64
%294 = getelementptr inbounds i8, i8* %14, i64 %293
%295 = load i8, i8* %294
%296 = zext i8 %295 to i32
%297 = add i32 %235, 2
%298 = add nsw i32 %297, %296
%299 = lshr i32 %296, 2
%300 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.37, i64 0, i64 0), i32 %299)
%301 = icmp eq i8 %295, 0
br i1 %301, label %722, label %302
302: ; preds = %291
%303 = add nsw i32 %298, -1
%304 = sext i32 %297 to i64
%305 = sext i32 %303 to i64
%306 = sext i32 %298 to i64
br label %307
307: ; preds = %302, %307
%308 = phi i64 [ %304, %302 ], [ %316, %307 ]
%309 = getelementptr inbounds i8, i8* %14, i64 %308
%310 = load i8, i8* %309
%311 = zext i8 %310 to i32
%312 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %311)
%313 = icmp slt i64 %308, %305
%314 = select i1 %313, i32 46, i32 10
%315 = tail call i32 @putchar(i32 %314)
%316 = add nsw i64 %308, 1
%317 = icmp slt i64 %316, %306
br i1 %317, label %307, label %722
318: ; preds = %234
%319 = add nsw i32 %235, 1
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds i8, i8* %14, i64 %320
%322 = load i8, i8* %321
%323 = zext i8 %322 to i32
%324 = add i32 %235, 2
%325 = add nsw i32 %324, %323
%326 = lshr i32 %323, 2
%327 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.38, i64 0, i64 0), i32 %326)
%328 = icmp eq i8 %322, 0
br i1 %328, label %353, label %329
329: ; preds = %318
%330 = add nsw i32 %325, -1
%331 = sext i32 %324 to i64
%332 = sext i32 %330 to i64
%333 = sext i32 %325 to i64
br label %334
334: ; preds = %329, %349
%335 = phi i64 [ %331, %329 ], [ %351, %349 ]
%336 = phi i32 [ 0, %329 ], [ %350, %349 ]
%337 = add nsw i32 %336, 1
%338 = getelementptr inbounds i8, i8* %14, i64 %335
%339 = load i8, i8* %338
%340 = zext i8 %339 to i32
%341 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %340)
%342 = icmp slt i32 %336, 3
br i1 %342, label %343, label %345
343: ; preds = %334
%344 = icmp slt i64 %335, %332
br i1 %344, label %345, label %349
345: ; preds = %334, %343
%346 = phi i32 [ 46, %343 ], [ 32, %334 ]
%347 = phi i32 [ %337, %343 ], [ 0, %334 ]
%348 = tail call i32 @putchar(i32 %346)
br label %349
349: ; preds = %345, %343
%350 = phi i32 [ %337, %343 ], [ %347, %345 ]
%351 = add nsw i64 %335, 1
%352 = icmp slt i64 %351, %333
br i1 %352, label %334, label %353
353: ; preds = %349, %318
%354 = tail call i32 @putchar(i32 10)
br label %722
355: ; preds = %234
%356 = add nsw i32 %235, 1
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds i8, i8* %14, i64 %357
%359 = load i8, i8* %358
%360 = zext i8 %359 to i32
%361 = add i32 %235, 2
%362 = add nsw i32 %361, %360
%363 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.40, i64 0, i64 0))
%364 = icmp eq i8 %359, 0
br i1 %364, label %722, label %365
365: ; preds = %355
%366 = add nsw i32 %362, -1
%367 = sext i32 %361 to i64
%368 = sext i32 %362 to i64
%369 = sext i32 %366 to i64
br label %370
370: ; preds = %365, %379
%371 = phi i64 [ %367, %365 ], [ %380, %379 ]
%372 = getelementptr inbounds i8, i8* %14, i64 %371
%373 = load i8, i8* %372
%374 = zext i8 %373 to i32
%375 = tail call i32 @putchar(i32 %374)
%376 = icmp eq i64 %371, %369
br i1 %376, label %377, label %379
377: ; preds = %370
%378 = tail call i32 @putchar(i32 10)
br label %379
379: ; preds = %370, %377
%380 = add nsw i64 %371, 1
%381 = icmp slt i64 %380, %368
br i1 %381, label %370, label %722
382: ; preds = %234
%383 = add nsw i32 %235, 1
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds i8, i8* %14, i64 %384
%386 = load i8, i8* %385
%387 = zext i8 %386 to i32
%388 = add i32 %235, 2
%389 = add nsw i32 %388, %387
%390 = lshr i32 %387, 2
%391 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.42, i64 0, i64 0), i32 %390)
%392 = icmp eq i8 %386, 0
br i1 %392, label %417, label %393
393: ; preds = %382
%394 = add nsw i32 %389, -1
%395 = sext i32 %388 to i64
%396 = sext i32 %394 to i64
%397 = sext i32 %389 to i64
br label %398
398: ; preds = %393, %413
%399 = phi i64 [ %395, %393 ], [ %415, %413 ]
%400 = phi i32 [ 0, %393 ], [ %414, %413 ]
%401 = add nsw i32 %400, 1
%402 = getelementptr inbounds i8, i8* %14, i64 %399
%403 = load i8, i8* %402
%404 = zext i8 %403 to i32
%405 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %404)
%406 = icmp slt i32 %400, 3
br i1 %406, label %407, label %409
407: ; preds = %398
%408 = icmp slt i64 %399, %396
br i1 %408, label %409, label %413
409: ; preds = %398, %407
%410 = phi i32 [ 46, %407 ], [ 32, %398 ]
%411 = phi i32 [ %401, %407 ], [ 0, %398 ]
%412 = tail call i32 @putchar(i32 %410)
br label %413
413: ; preds = %409, %407
%414 = phi i32 [ %401, %407 ], [ %411, %409 ]
%415 = add nsw i64 %399, 1
%416 = icmp slt i64 %415, %397
br i1 %416, label %398, label %417
417: ; preds = %413, %382
%418 = tail call i32 @putchar(i32 10)
br label %722
419: ; preds = %234
%420 = add nsw i32 %235, 1
%421 = sext i32 %420 to i64
%422 = getelementptr inbounds i8, i8* %14, i64 %421
%423 = load i8, i8* %422
%424 = zext i8 %423 to i32
%425 = add nsw i32 %420, %424
%426 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.43, i64 0, i64 0))
%427 = icmp eq i8 %423, 0
br i1 %427, label %438, label %428
428: ; preds = %419
%429 = sext i32 %425 to i64
br label %430
430: ; preds = %428, %430
%431 = phi i64 [ %421, %428 ], [ %436, %430 ]
%432 = getelementptr inbounds i8, i8* %14, i64 %431
%433 = load i8, i8* %432
%434 = zext i8 %433 to i32
%435 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 %434)
%436 = add nsw i64 %431, 1
%437 = icmp slt i64 %436, %429
br i1 %437, label %430, label %438
438: ; preds = %430, %419
%439 = tail call i32 @putchar(i32 10)
%440 = add nsw i32 %425, 1
br label %722
441: ; preds = %234
%442 = add nsw i32 %235, 1
%443 = sext i32 %442 to i64
%444 = getelementptr inbounds i8, i8* %14, i64 %443
%445 = load i8, i8* %444
%446 = zext i8 %445 to i32
%447 = add i32 %235, 2
%448 = add nsw i32 %447, %446
%449 = lshr i32 %446, 2
%450 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.45, i64 0, i64 0), i32 %449)
%451 = icmp eq i8 %445, 0
br i1 %451, label %476, label %452
452: ; preds = %441
%453 = add nsw i32 %448, -1
%454 = sext i32 %447 to i64
%455 = sext i32 %453 to i64
%456 = sext i32 %448 to i64
br label %457
457: ; preds = %452, %472
%458 = phi i64 [ %454, %452 ], [ %474, %472 ]
%459 = phi i32 [ 0, %452 ], [ %473, %472 ]
%460 = add nsw i32 %459, 1
%461 = getelementptr inbounds i8, i8* %14, i64 %458
%462 = load i8, i8* %461
%463 = zext i8 %462 to i32
%464 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %463)
%465 = icmp slt i32 %459, 3
br i1 %465, label %466, label %468
466: ; preds = %457
%467 = icmp slt i64 %458, %455
br i1 %467, label %468, label %472
468: ; preds = %457, %466
%469 = phi i32 [ 46, %466 ], [ 32, %457 ]
%470 = phi i32 [ %460, %466 ], [ 0, %457 ]
%471 = tail call i32 @putchar(i32 %469)
br label %472
472: ; preds = %468, %466
%473 = phi i32 [ %460, %466 ], [ %470, %468 ]
%474 = add nsw i64 %458, 1
%475 = icmp slt i64 %474, %456
br i1 %475, label %457, label %476
476: ; preds = %472, %441
%477 = tail call i32 @putchar(i32 10)
br label %722
478: ; preds = %234
%479 = add nsw i32 %235, 1
%480 = sext i32 %479 to i64
%481 = getelementptr inbounds i8, i8* %14, i64 %480
%482 = load i8, i8* %481
%483 = zext i8 %482 to i32
%484 = add i32 %235, 2
%485 = add nsw i32 %484, %483
%486 = lshr i32 %483, 2
%487 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.46, i64 0, i64 0), i32 %486)
%488 = icmp eq i8 %482, 0
br i1 %488, label %513, label %489
489: ; preds = %478
%490 = add nsw i32 %485, -1
%491 = sext i32 %484 to i64
%492 = sext i32 %490 to i64
%493 = sext i32 %485 to i64
br label %494
494: ; preds = %489, %509
%495 = phi i64 [ %491, %489 ], [ %511, %509 ]
%496 = phi i32 [ 0, %489 ], [ %510, %509 ]
%497 = add nsw i32 %496, 1
%498 = getelementptr inbounds i8, i8* %14, i64 %495
%499 = load i8, i8* %498
%500 = zext i8 %499 to i32
%501 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %500)
%502 = icmp slt i32 %496, 3
br i1 %502, label %503, label %505
503: ; preds = %494
%504 = icmp slt i64 %495, %492
br i1 %504, label %505, label %509
505: ; preds = %494, %503
%506 = phi i32 [ 46, %503 ], [ 32, %494 ]
%507 = phi i32 [ %497, %503 ], [ 0, %494 ]
%508 = tail call i32 @putchar(i32 %506)
br label %509
509: ; preds = %505, %503
%510 = phi i32 [ %497, %503 ], [ %507, %505 ]
%511 = add nsw i64 %495, 1
%512 = icmp slt i64 %511, %493
br i1 %512, label %494, label %513
513: ; preds = %509, %478
%514 = tail call i32 @putchar(i32 10)
br label %722
515: ; preds = %234
%516 = add nsw i32 %235, 2
%517 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.47, i64 0, i64 0))
%518 = sext i32 %516 to i64
%519 = getelementptr inbounds i8, i8* %14, i64 %518
%520 = load i8, i8* %519
%521 = add i8 %520, -1
%522 = icmp ult i8 %521, 8
br i1 %522, label %525, label %523
523: ; preds = %525, %515
%524 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.87, i64 0, i64 0))
br label %725
525: ; preds = %515
%526 = lshr i8 -117, %521
%527 = and i8 %526, 1
%528 = icmp eq i8 %527, 0
br i1 %528, label %523, label %529
529: ; preds = %525
%530 = sext i8 %521 to i64
%531 = shl i64 %530, 2
%532 = call i8* @llvm.load.relative.i64(i8* bitcast ([8 x i32]* @reltable.printbootp to i8*), i64 %531)
%533 = tail call i32 @puts(i8* dereferenceable(1) %532)
%534 = add nsw i32 %235, 3
br label %722
535: ; preds = %234
%536 = add nsw i32 %235, 1
%537 = sext i32 %536 to i64
%538 = getelementptr inbounds i8, i8* %14, i64 %537
%539 = load i8, i8* %538
%540 = zext i8 %539 to i32
%541 = add i32 %235, 2
%542 = add nsw i32 %541, %540
%543 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.53, i64 0, i64 0))
%544 = icmp eq i8 %539, 0
br i1 %544, label %722, label %545
545: ; preds = %535
%546 = add nsw i32 %542, -1
%547 = sext i32 %541 to i64
%548 = sext i32 %546 to i64
%549 = sext i32 %542 to i64
br label %550
550: ; preds = %545, %550
%551 = phi i64 [ %547, %545 ], [ %559, %550 ]
%552 = getelementptr inbounds i8, i8* %14, i64 %551
%553 = load i8, i8* %552
%554 = zext i8 %553 to i32
%555 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %554)
%556 = icmp slt i64 %551, %548
%557 = select i1 %556, i32 46, i32 10
%558 = tail call i32 @putchar(i32 %557)
%559 = add nsw i64 %551, 1
%560 = icmp slt i64 %559, %549
br i1 %560, label %550, label %722
561: ; preds = %234
%562 = add nsw i32 %235, 1
%563 = sext i32 %562 to i64
%564 = getelementptr inbounds i8, i8* %14, i64 %563
%565 = load i8, i8* %564
%566 = zext i8 %565 to i32
%567 = add i32 %235, 2
%568 = add nsw i32 %567, %566
%569 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.54, i64 0, i64 0))
%570 = icmp eq i8 %565, 0
br i1 %570, label %722, label %571
571: ; preds = %561
%572 = add nsw i32 %568, -1
%573 = sext i32 %567 to i64
%574 = sext i32 %572 to i64
%575 = sext i32 %568 to i64
br label %576
576: ; preds = %571, %587
%577 = phi i64 [ %573, %571 ], [ %588, %587 ]
%578 = getelementptr inbounds i8, i8* %14, i64 %577
%579 = load i8, i8* %578
%580 = zext i8 %579 to i32
%581 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %580)
%582 = icmp slt i64 %577, %574
br i1 %582, label %583, label %585
583: ; preds = %576
%584 = tail call i32 @putchar(i32 45)
br label %587
585: ; preds = %576
%586 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @str.82, i64 0, i64 0))
br label %587
587: ; preds = %583, %585
%588 = add nsw i64 %577, 1
%589 = icmp slt i64 %588, %575
br i1 %589, label %576, label %722
590: ; preds = %234
%591 = add nsw i32 %235, 2
%592 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.57, i64 0, i64 0))
%593 = sext i32 %591 to i64
%594 = getelementptr inbounds i8, i8* %14, i64 %593
%595 = load i8, i8* %594
%596 = add i8 %595, -1
%597 = icmp ult i8 %596, 8
br i1 %597, label %600, label %598
598: ; preds = %590
%599 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.81, i64 0, i64 0))
br label %725
600: ; preds = %590
%601 = sext i8 %596 to i64
%602 = shl i64 %601, 2
%603 = call i8* @llvm.load.relative.i64(i8* bitcast ([8 x i32]* @reltable.printbootp.91 to i8*), i64 %602)
%604 = tail call i32 @puts(i8* dereferenceable(1) %603)
%605 = add nsw i32 %235, 3
br label %722
606: ; preds = %234
%607 = add nsw i32 %235, 1
%608 = sext i32 %607 to i64
%609 = getelementptr inbounds i8, i8* %14, i64 %608
%610 = load i8, i8* %609
%611 = zext i8 %610 to i32
%612 = add i32 %235, 2
%613 = add nsw i32 %612, %611
%614 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.67, i64 0, i64 0))
%615 = icmp eq i8 %610, 0
br i1 %615, label %722, label %616
616: ; preds = %606
%617 = add nsw i32 %613, -1
%618 = sext i32 %612 to i64
%619 = sext i32 %617 to i64
%620 = sext i32 %613 to i64
br label %621
621: ; preds = %616, %621
%622 = phi i64 [ %618, %616 ], [ %630, %621 ]
%623 = getelementptr inbounds i8, i8* %14, i64 %622
%624 = load i8, i8* %623
%625 = zext i8 %624 to i32
%626 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i32 %625)
%627 = icmp slt i64 %622, %619
%628 = select i1 %627, i32 46, i32 10
%629 = tail call i32 @putchar(i32 %628)
%630 = add nsw i64 %622, 1
%631 = icmp slt i64 %630, %620
br i1 %631, label %621, label %722
632: ; preds = %234
%633 = add nsw i32 %235, 1
%634 = sext i32 %633 to i64
%635 = getelementptr inbounds i8, i8* %14, i64 %634
%636 = load i8, i8* %635
%637 = zext i8 %636 to i32
%638 = add i32 %235, 2
%639 = add nsw i32 %638, %637
%640 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.68, i64 0, i64 0), i32 %637)
%641 = icmp eq i8 %636, 0
br i1 %641, label %722, label %642
642: ; preds = %632
%643 = add nsw i32 %639, -1
%644 = sext i32 %638 to i64
%645 = sext i32 %639 to i64
%646 = sext i32 %643 to i64
br label %647
647: ; preds = %642, %656
%648 = phi i64 [ %644, %642 ], [ %657, %656 ]
%649 = getelementptr inbounds i8, i8* %14, i64 %648
%650 = load i8, i8* %649
%651 = zext i8 %650 to i32
%652 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 %651)
%653 = icmp eq i64 %648, %646
br i1 %653, label %654, label %656
654: ; preds = %647
%655 = tail call i32 @putchar(i32 10)
br label %656
656: ; preds = %647, %654
%657 = add nsw i64 %648, 1
%658 = icmp slt i64 %657, %645
br i1 %658, label %647, label %722
659: ; preds = %234
%660 = add nsw i32 %235, 1
%661 = sext i32 %660 to i64
%662 = getelementptr inbounds i8, i8* %14, i64 %661
%663 = load i8, i8* %662
%664 = zext i8 %663 to i32
%665 = add i32 %235, 2
%666 = add nsw i32 %665, %664
%667 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.69, i64 0, i64 0))
%668 = icmp eq i8 %663, 0
br i1 %668, label %722, label %669
669: ; preds = %659
%670 = add nsw i32 %666, -1
%671 = sext i32 %665 to i64
%672 = sext i32 %666 to i64
%673 = sext i32 %670 to i64
br label %674
674: ; preds = %669, %683
%675 = phi i64 [ %671, %669 ], [ %684, %683 ]
%676 = getelementptr inbounds i8, i8* %14, i64 %675
%677 = load i8, i8* %676
%678 = zext i8 %677 to i32
%679 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 %678)
%680 = icmp eq i64 %675, %673
br i1 %680, label %681, label %683
681: ; preds = %674
%682 = tail call i32 @putchar(i32 10)
br label %683
683: ; preds = %674, %681
%684 = add nsw i64 %675, 1
%685 = icmp slt i64 %684, %672
br i1 %685, label %674, label %722
686: ; preds = %234
%687 = add nsw i32 %235, 1
%688 = sext i32 %687 to i64
%689 = getelementptr inbounds i8, i8* %14, i64 %688
%690 = load i8, i8* %689
%691 = zext i8 %690 to i32
%692 = add i32 %235, 2
%693 = sext i32 %692 to i64
%694 = getelementptr inbounds i8, i8* %14, i64 %693
%695 = load i8, i8* %694
%696 = zext i8 %695 to i32
%697 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.70, i64 0, i64 0), i32 %696)
%698 = add i32 %235, 3
%699 = add i32 %692, %691
%700 = icmp slt i32 %698, %699
br i1 %700, label %701, label %722
701: ; preds = %686
%702 = add nsw i32 %699, -1
%703 = sext i32 %698 to i64
%704 = sext i32 %702 to i64
br label %705
705: ; preds = %701, %714
%706 = phi i64 [ %703, %701 ], [ %715, %714 ]
%707 = getelementptr inbounds i8, i8* %14, i64 %706
%708 = load i8, i8* %707
%709 = zext i8 %708 to i32
%710 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 %709)
%711 = icmp eq i64 %706, %704
br i1 %711, label %712, label %714
712: ; preds = %705
%713 = tail call i32 @putchar(i32 10)
br label %714
714: ; preds = %705, %712
%715 = add nsw i64 %706, 1
%716 = trunc i64 %715 to i32
%717 = icmp eq i32 %699, %716
br i1 %717, label %722, label %705
718: ; preds = %234
%719 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.71, i64 0, i64 0), i32 255)
br label %725
720: ; preds = %234
%721 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.88, i64 0, i64 0))
br label %725
722: ; preds = %714, %683, %656, %621, %587, %550, %379, %307, %280, %254, %686, %659, %632, %606, %561, %535, %355, %291, %265, %239, %600, %529, %513, %476, %438, %417, %353
%723 = phi i32 [ %605, %600 ], [ %534, %529 ], [ %485, %513 ], [ %448, %476 ], [ %440, %438 ], [ %389, %417 ], [ %325, %353 ], [ %246, %239 ], [ %272, %265 ], [ %298, %291 ], [ %362, %355 ], [ %542, %535 ], [ %568, %561 ], [ %613, %606 ], [ %639, %632 ], [ %666, %659 ], [ %699, %686 ], [ %246, %254 ], [ %272, %280 ], [ %298, %307 ], [ %362, %379 ], [ %542, %550 ], [ %568, %587 ], [ %613, %621 ], [ %639, %656 ], [ %666, %683 ], [ %699, %714 ]
%724 = icmp slt i32 %723, %15
br i1 %724, label %234, label %725
725: ; preds = %722, %718, %230, %720, %598, %523
ret i32 -1
}