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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ make_iv(int);
int /*<<< orphan*/ printf(char *, ...);
int main(void) {
  int i, j;
  printf("\n");
  printf("#if SHABAL_PARAM_P != %d || SHABAL_PARAM_R != %d\n", 3, 12);
  printf("#error Parameters changed; code below is not valid\n");
  printf("#endif\n");
  printf("\n");
  printf("#define DECL_STATE   \\\n");
  for (i = 0; i < 12; i++) {
    if (i == 0) {
      printf("\tu32 ");
    } else if (i % 8 == 0) {
      printf(", \\\n\t    ");
    } else {
      printf(", ");
    }
    printf("A%02X", (unsigned)i);
  }
  printf("; \\\n");
  printf("\tu32 B0, B1, B2, B3, B4, B5, B6, B7, \\\n");
  printf("\t    B8, B9, BA, BB, BC, BD, BE, BF; \\\n");
  printf("\tu32 C0, C1, C2, C3, C4, C5, C6, C7, \\\n");
  printf("\t    C8, C9, CA, CB, CC, CD, CE, CF; \\\n");
  printf("\tu32 M0, M1, M2, M3, M4, M5, M6, M7, \\\n");
  printf("\t    M8, M9, MA, MB, MC, MD, ME, MF; \\\n");
  printf("\tu32 Wlow, Whigh;\n");
  printf("\n");
  printf("#define READ_STATE(state)   do { \\\n");
  for (i = 0; i < 12; i++)
    printf("\t\tA%02X = (state)->A[%d]; \\\n", i, i);
  for (i = 0; i < 16; i++)
    printf("\t\tB%X = (state)->B[%d]; \\\n", i, i);
  for (i = 0; i < 16; i++)
    printf("\t\tC%X = (state)->C[%d]; \\\n", i, i);
  printf("\t\tWlow = (state)->Wlow; \\\n");
  printf("\t\tWhigh = (state)->Whigh; \\\n");
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define WRITE_STATE(state)   do { \\\n");
  for (i = 0; i < 12; i++)
    printf("\t\t(state)->A[%d] = A%02X; \\\n", i, i);
  for (i = 0; i < 16; i++)
    printf("\t\t(state)->B[%d] = B%X; \\\n", i, i);
  for (i = 0; i < 16; i++)
    printf("\t\t(state)->C[%d] = C%X; \\\n", i, i);
  printf("\t\t(state)->Wlow = Wlow; \\\n");
  printf("\t\t(state)->Whigh = Whigh; \\\n");
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define DECODE_BLOCK   do { \\\n");
  for (i = 0; i < 16; i++)
    printf("\t\tM%X = dec32le_aligned(buffer + %d); \\\n", i, 4 * i);
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define INPUT_BLOCK_ADD   do { \\\n");
  for (i = 0; i < 16; i++)
    printf("\t\tB%X = T32(B%X + M%X); \\\n", i, i, i);
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define INPUT_BLOCK_SUB   do { \\\n");
  for (i = 0; i < 16; i++)
    printf("\t\tC%X = T32(C%X - M%X); \\\n", i, i, i);
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define XOR_W   do { \\\n");
  printf("\t\tA00 ^= Wlow; \\\n");
  printf("\t\tA01 ^= Whigh; \\\n");
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define SWAP(v1, v2)   do { \\\n");
  printf("\t\tu32 tmp = (v1); \\\n");
  printf("\t\t(v1) = (v2); \\\n");
  printf("\t\t(v2) = tmp; \\\n");
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define SWAP_BC   do { \\\n");
  for (i = 0; i < 16; i++)
    printf("\t\tSWAP(B%X, C%X); \\\n", i, i);
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define PERM_ELT(xa0, xa1, xb0, xb1, xb2, xb3, xc, xm)"
         "   do { \\\n");
  printf("\t\txa0 = T32((xa0 \\\n");
  printf("\t\t\t^ (((xa1 << 15) | (xa1 >> 17)) * 5U) \\\n");
  printf("\t\t\t^ xc) * 3U) \\\n");
  printf("\t\t\t^ xb1 ^ (xb2 & ~xb3) ^ xm; \\\n");
  printf("\t\txb0 = T32(~(((xb0 << 1) | (xb0 >> 31)) ^ xa0)); \\\n");
  printf("\t} while (0)\n");
  for (j = 0; j < 3; j++) {
    printf("\n");
    printf("#define PERM_STEP_%d   do { \\\n", j);
    for (i = 0; i < 16; i++)
      printf("\t\tPERM_ELT(A%02X, A%02X, B%X,"
             " B%X, B%X, B%X, C%X, M%X); \\\n",
             (i + 16 * j) % 12, (i + 16 * j + (12 - 1)) % 12, i, (i + 13) % 16,
             (i + 9) % 16, (i + 6) % 16, (8 + 16 - i) % 16, i);
    printf("\t} while (0)\n");
  }
  printf("\n");
  printf("#define APPLY_P   do { \\\n");
  for (i = 0; i < 16; i++)
    printf("\t\tB%X = T32(B%X << 17) | (B%X >> 15); \\\n", i, i, i);
  for (j = 0; j < 3; j++)
    printf("\t\tPERM_STEP_%d; \\\n", j);
  for (j = 0; j < (3 * 12); j++)
    printf("\t\tA%02X = T32(A%02X + C%X); \\\n", (4 * 12 - 1 - j) % 12,
           (4 * 12 - 1 - j) % 12, (3 * 12 * 16 + 6 - j) % 16);
  printf("\t} while (0)\n");
  printf("\n");
  printf("#define INCR_W   do { \\\n");
  printf("\t\tif ((Wlow = T32(Wlow + 1)) == 0) \\\n");
  printf("\t\t\tWhigh = T32(Whigh + 1); \\\n");
  printf("\t} while (0)\n");
  make_iv(192);
  make_iv(224);
  make_iv(256);
  make_iv(384);
  make_iv(512);
  printf("\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
lea    0x1127(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xebc(%rip),%rdi
mov    $0x3,%esi
mov    $0xc,%edx
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xed6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xefc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x10e5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xee8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0xc,-0x8(%rbp)
jge    1214 <main+0xf4>
cmpl   $0x0,-0x8(%rbp)
jne    11bb <main+0x9b>
lea    0xed7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11f5 <main+0xd5>
mov    -0x8(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    11e2 <main+0xc2>
lea    0xeb6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11f0 <main+0xd0>
lea    0xead(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11f5 <main+0xd5>
mov    -0x8(%rbp),%esi
lea    0xe9a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1194 <main+0x74>
lea    0x135c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe76(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe90(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xeaa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xec4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xede(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xef8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf12(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xfd2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf09(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0xc,-0x8(%rbp)
jge    12d3 <main+0x1b3>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
lea    0xf08(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12a7 <main+0x187>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1306 <main+0x1e6>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
lea    0xef2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12da <main+0x1ba>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1339 <main+0x219>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
lea    0xeda(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    130d <main+0x1ed>
lea    0xed9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xee6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xef5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xef3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xee7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0xc,-0x8(%rbp)
jge    13b2 <main+0x292>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
lea    0xee7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1386 <main+0x266>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    13e5 <main+0x2c5>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
lea    0xed1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    13b9 <main+0x299>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1418 <main+0x2f8>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
lea    0xeb9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    13ec <main+0x2cc>
lea    0xeb8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xec5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe16(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe14(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xeb8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1494 <main+0x374>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
shl    $0x2,%edx
lea    0xeaf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1465 <main+0x345>
lea    0xdb6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdb4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xea0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    14f4 <main+0x3d4>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x8(%rbp),%ecx
lea    0xe9a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    14c5 <main+0x3a5>
lea    0xd56(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd54(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe7d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1554 <main+0x434>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x8(%rbp),%ecx
lea    0xe77(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1525 <main+0x405>
lea    0xcf6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xcf4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe5a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe64(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe68(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xcb0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xcae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe51(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe62(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe69(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe6d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc5c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc5a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe54(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    164b <main+0x52b>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
lea    0xe49(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    161f <main+0x4ff>
lea    0xbff(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbfd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe26(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe59(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe5f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe7c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe80(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe93(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xb8f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0xc(%rbp)
cmpl   $0x3,-0xc(%rbp)
jge    17cc <main+0x6ac>
lea    0xb7c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%esi
lea    0xe8a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    17b0 <main+0x690>
mov    -0x8(%rbp),%eax
mov    -0xc(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    %edx,%esi
mov    -0x8(%rbp),%eax
mov    -0xc(%rbp),%ecx
shl    $0x4,%ecx
add    %ecx,%eax
add    $0xb,%eax
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    %edx,-0x10(%rbp)
mov    -0x8(%rbp),%ecx
mov    -0x8(%rbp),%eax
add    $0xd,%eax
mov    $0x10,%edi
cltd
idiv   %edi
mov    %edx,%r8d
mov    -0x8(%rbp),%eax
add    $0x9,%eax
mov    $0x10,%edi
cltd
idiv   %edi
mov    %edx,%r9d
mov    -0x8(%rbp),%eax
add    $0x6,%eax
mov    $0x10,%edi
cltd
idiv   %edi
mov    %edx,%r11d
mov    $0x18,%eax
sub    -0x8(%rbp),%eax
mov    $0x10,%edi
cltd
idiv   %edi
mov    %edx,%r10d
mov    -0x10(%rbp),%edx
mov    -0x8(%rbp),%eax
lea    0xe0d(%rip),%rdi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1700 <main+0x5e0>
lea    0xa9a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    16d0 <main+0x5b0>
lea    0xa8a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdf5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    181e <main+0x6fe>
mov    -0x8(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    -0x8(%rbp),%ecx
lea    0xde7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    17ef <main+0x6cf>
movl   $0x0,-0xc(%rbp)
cmpl   $0x3,-0xc(%rbp)
jge    184e <main+0x72e>
mov    -0xc(%rbp),%esi
lea    0xde0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1825 <main+0x705>
movl   $0x0,-0xc(%rbp)
cmpl   $0x24,-0xc(%rbp)
jge    18b5 <main+0x795>
mov    $0x2f,%eax
sub    -0xc(%rbp),%eax
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    %edx,%esi
mov    $0x2f,%eax
sub    -0xc(%rbp),%eax
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    %edx,-0x14(%rbp)
mov    $0x246,%eax
sub    -0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %edx,%ecx
mov    -0x14(%rbp),%edx
lea    0xd8c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1855 <main+0x735>
lea    0x995(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x993(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd73(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd7e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd96(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x94f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    $0xc0,%edi
call   1040 <make_iv@plt>
mov    $0xe0,%edi
call   1040 <make_iv@plt>
mov    $0x100,%edi
call   1040 <make_iv@plt>
mov    $0x180,%edi
call   1040 <make_iv@plt>
mov    $0x200,%edi
call   1040 <make_iv@plt>
lea    0x91b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1ea4(%rip),%rdi
mov    $0x3,%esi
mov    $0xc,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x20a6(%rip),%rdi
call   1040 <puts@plt>
lea    0x20cd(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x20be(%rip),%rdi
call   1040 <puts@plt>
lea    0x1e90(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x1e95(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x1e7f(%rip),%r14
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x1dbf(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x8,%r15d
mov    %rbx,%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xb,%r12d
mov    %rbx,%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x2311(%rip),%rdi
call   1040 <puts@plt>
lea    0x1f72(%rip),%rdi
call   1040 <puts@plt>
lea    0x1f8d(%rip),%rdi
call   1040 <puts@plt>
lea    0x1fa8(%rip),%rdi
call   1040 <puts@plt>
lea    0x1fc3(%rip),%rdi
call   1040 <puts@plt>
lea    0x1fde(%rip),%rdi
call   1040 <puts@plt>
lea    0x1ff9(%rip),%rdi
call   1040 <puts@plt>
lea    0x2014(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x2010(%rip),%rdi
call   1040 <puts@plt>
lea    0x1ce8(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x1c14(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0xc,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0xd,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0xe,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0xf,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x1aee(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0xc,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0xd,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0xe,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0xf,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x1cb4(%rip),%rdi
call   1040 <puts@plt>
lea    0x1cc2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1f87(%rip),%r14
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1cb9(%rip),%rdi
call   1040 <puts@plt>
lea    0x198b(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x18b7(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0xc,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0xd,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0xe,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0xf,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x1791(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0xc,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0xd,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0xe,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0xf,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x195e(%rip),%rdi
call   1040 <puts@plt>
lea    0x196c(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x196a(%rip),%rdi
call   1040 <puts@plt>
lea    0x1635(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0xc,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x10,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x14,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x18,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x1c,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x20,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x24,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0x28,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0x2c,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0x30,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0x34,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0x38,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0x3c,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1829(%rip),%rdi
call   1040 <puts@plt>
lea    0x14ff(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %ecx,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    $0x1,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
mov    $0x2,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
mov    $0x3,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
mov    $0x4,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
mov    $0x5,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
mov    $0x6,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
mov    $0x7,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
mov    $0x8,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
mov    $0x9,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
mov    $0xa,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
mov    $0xb,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0xc,%edx
mov    $0xc,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0xd,%edx
mov    $0xd,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0xe,%edx
mov    $0xe,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0xf,%edx
mov    $0xf,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x169e(%rip),%rdi
call   1040 <puts@plt>
lea    0x136e(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %ecx,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    $0x1,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
mov    $0x2,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
mov    $0x3,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
mov    $0x4,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
mov    $0x5,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
mov    $0x6,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
mov    $0x7,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
mov    $0x8,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
mov    $0x9,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
mov    $0xa,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
mov    $0xb,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0xc,%edx
mov    $0xc,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0xd,%edx
mov    $0xd,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0xe,%edx
mov    $0xe,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0xf,%edx
mov    $0xf,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1513(%rip),%rdi
call   1040 <puts@plt>
lea    0x151e(%rip),%rdi
call   1040 <puts@plt>
lea    0x1523(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1517(%rip),%rdi
call   1040 <puts@plt>
lea    0x1529(%rip),%rdi
call   1040 <puts@plt>
lea    0x1531(%rip),%rdi
call   1040 <puts@plt>
lea    0x1536(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1528(%rip),%rdi
call   1040 <puts@plt>
lea    0x1165(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0xc,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0xd,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0xe,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0xf,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x13e2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1416(%rip),%rdi
call   1040 <puts@plt>
lea    0x141d(%rip),%rdi
call   1040 <puts@plt>
lea    0x143b(%rip),%rdi
call   1040 <puts@plt>
lea    0x1440(%rip),%rdi
call   1040 <puts@plt>
lea    0x1454(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xfcd(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xaaaaaaab,%r13d
lea    0xfd6(%rip),%r14
xor    %ebx,%ebx
mov    %r12d,%eax
imul   %r13,%rax
shr    $0x23,%rax
shl    $0x2,%eax
lea    (%rax,%rax,2),%eax
mov    %r12d,%edx
sub    %eax,%edx
mov    %ebx,%eax
imul   %r13,%rax
shr    $0x23,%rax
shl    $0x2,%eax
lea    (%rax,%rax,2),%eax
mov    %ebx,%esi
sub    %eax,%esi
lea    0xd(%rbx),%r8d
and    $0xf,%r8d
lea    0x9(%rbx),%r9d
and    $0xf,%r9d
lea    0x6(%rbx),%r10d
and    $0xf,%r10d
mov    %r15d,%ebp
and    $0xf,%ebp
sub    $0x8,%rsp
mov    %r14,%rdi
mov    %ebx,%ecx
xor    %eax,%eax
push   %rbx
push   %rbp
push   %r10
call   1050 <printf@plt>
add    $0x20,%rsp
add    $0x1,%ebx
add    $0x1,%r12d
add    $0xffffffff,%r15d
cmp    $0x10,%ebx
jne    21b0 <main+0x1070>
lea    0x144e(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xf28(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1b,%r15d
mov    $0x8,%r12d
mov    $0x10,%r14d
mov    $0xaaaaaaab,%r13d
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r15d,%eax
imul   %r13,%rax
shr    $0x23,%rax
shl    $0x2,%eax
lea    (%rax,%rax,2),%eax
mov    %r14d,%ecx
imul   %r13,%rcx
shr    $0x23,%rcx
shl    $0x2,%ecx
lea    (%rcx,%rcx,2),%ecx
neg    %ecx
lea    (%rbx,%rcx,1),%esi
add    $0x10,%esi
neg    %eax
lea    (%rbx,%rax,1),%edx
add    $0x1b,%edx
lea    0xd(%rbx),%r8d
and    $0xf,%r8d
lea    0x9(%rbx),%r9d
and    $0xf,%r9d
lea    0x6(%rbx),%r10d
and    $0xf,%r10d
mov    %r12d,%ebp
and    $0xf,%ebp
sub    $0x8,%rsp
lea    0xeb9(%rip),%rdi
mov    %ebx,%ecx
xor    %eax,%eax
push   %rbx
push   %rbp
push   %r10
call   1050 <printf@plt>
add    $0x20,%rsp
add    $0x1,%ebx
add    $0x1,%r15d
add    $0xffffffff,%r12d
add    $0x1,%r14d
cmp    $0x10,%ebx
jne    2270 <main+0x1130>
lea    0x137e(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe58(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x2b,%r15d
mov    $0x8,%r12d
mov    $0x20,%r14d
mov    $0xaaaaaaab,%r13d
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r15d,%eax
imul   %r13,%rax
shr    $0x23,%rax
shl    $0x2,%eax
lea    (%rax,%rax,2),%eax
mov    %r14d,%ecx
imul   %r13,%rcx
shr    $0x23,%rcx
shl    $0x2,%ecx
lea    (%rcx,%rcx,2),%ecx
neg    %ecx
lea    (%rbx,%rcx,1),%esi
add    $0x20,%esi
neg    %eax
lea    (%rbx,%rax,1),%edx
add    $0x2b,%edx
lea    0xd(%rbx),%r8d
and    $0xf,%r8d
lea    0x9(%rbx),%r9d
and    $0xf,%r9d
lea    0x6(%rbx),%r10d
and    $0xf,%r10d
mov    %r12d,%ebp
and    $0xf,%ebp
sub    $0x8,%rsp
lea    0xde9(%rip),%rdi
mov    %ebx,%ecx
xor    %eax,%eax
push   %rbx
push   %rbp
push   %r10
call   1050 <printf@plt>
add    $0x20,%rsp
add    $0x1,%ebx
add    $0x1,%r15d
add    $0xffffffff,%r12d
add    $0x1,%r14d
cmp    $0x10,%ebx
jne    2340 <main+0x1200>
lea    0x12ae(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1225(%rip),%rdi
call   1040 <puts@plt>
lea    0xdd6(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %edx,%edx
xor    %ecx,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    $0x1,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
mov    $0x2,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
mov    $0x3,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x4,%edx
mov    $0x4,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x5,%edx
mov    $0x5,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x6,%r15d
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x6,%edx
mov    $0x6,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x7,%edx
mov    $0x7,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x8,%edx
mov    $0x8,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x9,%edx
mov    $0x9,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0xa,%edx
mov    $0xa,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0xb,%edx
mov    $0xb,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0xc,%edx
mov    $0xc,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0xd,%edx
mov    $0xd,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0xe,%edx
mov    $0xe,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0xf,%edx
mov    $0xf,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xc6b(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xffffffdc,%ebx
mov    $0x2f,%ebp
mov    $0xaaaaaaab,%r12d
lea    0xc3d(%rip),%r14
xchg   %ax,%ax
mov    %ebp,%eax
imul   %r12,%rax
shr    $0x23,%rax
shl    $0x2,%eax
lea    (%rax,%rax,2),%eax
mov    %ebp,%edx
sub    %eax,%edx
mov    %r15d,%ecx
and    $0xf,%ecx
mov    %r14,%rdi
mov    %edx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0xffffffff,%ebp
add    $0xffffffff,%r15d
inc    %ebx
jne    25c0 <main+0x1480>
lea    0x107d(%rip),%rbx
mov    %rbx,%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x100a(%rip),%rdi
call   1040 <puts@plt>
lea    0x1016(%rip),%rdi
call   1040 <puts@plt>
lea    0x102f(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
call   1040 <puts@plt>
mov    $0xc0,%edi
call   1060 <make_iv@plt>
mov    $0xe0,%edi
call   1060 <make_iv@plt>
mov    $0x100,%edi
call   1060 <make_iv@plt>
mov    $0x180,%edi
call   1060 <make_iv@plt>
mov    $0x200,%edi
call   1060 <make_iv@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [2 x i8] c"\0A\00"
@.str.1 = [50 x i8] c"#if SHABAL_PARAM_P != %d || SHABAL_PARAM_R != %d\0A\00"
@.str.2 = [52 x i8] c"#error Parameters changed; code below is not valid\0A\00"
@.str.3 = [8 x i8] c"#endif\0A\00"
@.str.4 = [24 x i8] c"#define DECL_STATE \\\0A\00"
@.str.5 = [6 x i8] c"\09u32 \00"
@.str.6 = [10 x i8] c", \\\0A\09 \00"
@.str.7 = [3 x i8] c", \00"
@.str.8 = [6 x i8] c"A%02X\00"
@.str.9 = [5 x i8] c"; \\\0A\00"
@.str.10 = [40 x i8] c"\09u32 B0, B1, B2, B3, B4, B5, B6, B7, \\\0A\00"
@.str.11 = [40 x i8] c"\09 B8, B9, BA, BB, BC, BD, BE, BF; \\\0A\00"
@.str.12 = [40 x i8] c"\09u32 C0, C1, C2, C3, C4, C5, C6, C7, \\\0A\00"
@.str.13 = [40 x i8] c"\09 C8, C9, CA, CB, CC, CD, CE, CF; \\\0A\00"
@.str.14 = [40 x i8] c"\09u32 M0, M1, M2, M3, M4, M5, M6, M7, \\\0A\00"
@.str.15 = [40 x i8] c"\09 M8, M9, MA, MB, MC, MD, ME, MF; \\\0A\00"
@.str.16 = [19 x i8] c"\09u32 Wlow, Whigh;\0A\00"
@.str.17 = [36 x i8] c"#define READ_STATE(state) do { \\\0A\00"
@.str.18 = [29 x i8] c"\09\09A%02X = (state)->A[%d]; \\\0A\00"
@.str.19 = [27 x i8] c"\09\09B%X = (state)->B[%d]; \\\0A\00"
@.str.20 = [27 x i8] c"\09\09C%X = (state)->C[%d]; \\\0A\00"
@.str.21 = [27 x i8] c"\09\09Wlow = (state)->Wlow; \\\0A\00"
@.str.22 = [29 x i8] c"\09\09Whigh = (state)->Whigh; \\\0A\00"
@.str.23 = [14 x i8] c"\09} while (0)\0A\00"
@.str.24 = [37 x i8] c"#define WRITE_STATE(state) do { \\\0A\00"
@.str.25 = [29 x i8] c"\09\09(state)->A[%d] = A%02X; \\\0A\00"
@.str.26 = [27 x i8] c"\09\09(state)->B[%d] = B%X; \\\0A\00"
@.str.27 = [27 x i8] c"\09\09(state)->C[%d] = C%X; \\\0A\00"
@.str.28 = [27 x i8] c"\09\09(state)->Wlow = Wlow; \\\0A\00"
@.str.29 = [29 x i8] c"\09\09(state)->Whigh = Whigh; \\\0A\00"
@.str.30 = [31 x i8] c"#define DECODE_BLOCK do { \\\0A\00"
@.str.31 = [41 x i8] c"\09\09M%X = dec32le_aligned(buffer + %d); \\\0A\00"
@.str.32 = [34 x i8] c"#define INPUT_BLOCK_ADD do { \\\0A\00"
@.str.33 = [27 x i8] c"\09\09B%X = T32(B%X + M%X); \\\0A\00"
@.str.34 = [34 x i8] c"#define INPUT_BLOCK_SUB do { \\\0A\00"
@.str.35 = [27 x i8] c"\09\09C%X = T32(C%X - M%X); \\\0A\00"
@.str.36 = [24 x i8] c"#define XOR_W do { \\\0A\00"
@.str.37 = [18 x i8] c"\09\09A00 ^= Wlow; \\\0A\00"
@.str.38 = [19 x i8] c"\09\09A01 ^= Whigh; \\\0A\00"
@.str.39 = [31 x i8] c"#define SWAP(v1, v2) do { \\\0A\00"
@.str.40 = [21 x i8] c"\09\09u32 tmp = (v1); \\\0A\00"
@.str.41 = [18 x i8] c"\09\09(v1) = (v2); \\\0A\00"
@.str.42 = [17 x i8] c"\09\09(v2) = tmp; \\\0A\00"
@.str.43 = [26 x i8] c"#define SWAP_BC do { \\\0A\00"
@.str.44 = [21 x i8] c"\09\09SWAP(B%X, C%X); \\\0A\00"
@.str.45 = [65 x i8] c"#define PERM_ELT(xa0, xa1, xb0, xb1, xb2, xb3, xc, xm) do { \\\0A\00"
@.str.46 = [20 x i8] c"\09\09xa0 = T32((xa0 \\\0A\00"
@.str.47 = [43 x i8] c"\09\09\09^ (((xa1 << 15) | (xa1 >> 17)) * 5U) \\\0A\00"
@.str.48 = [18 x i8] c"\09\09\09^ xc) * 3U) \\\0A\00"
@.str.49 = [33 x i8] c"\09\09\09^ xb1 ^ (xb2 & ~xb3) ^ xm; \\\0A\00"
@.str.50 = [53 x i8] c"\09\09xb0 = T32(~(((xb0 << 1) | (xb0 >> 31)) ^ xa0)); \\\0A\00"
@.str.51 = [31 x i8] c"#define PERM_STEP_%d do { \\\0A\00"
@.str.52 = [59 x i8] c"\09\09PERM_ELT(A%02X, A%02X, B%X, B%X, B%X, B%X, C%X, M%X); \\\0A\00"
@.str.53 = [26 x i8] c"#define APPLY_P do { \\\0A\00"
@.str.54 = [41 x i8] c"\09\09B%X = T32(B%X << 17) | (B%X >> 15); \\\0A\00"
@.str.55 = [19 x i8] c"\09\09PERM_STEP_%d; \\\0A\00"
@.str.56 = [31 x i8] c"\09\09A%02X = T32(A%02X + C%X); \\\0A\00"
@.str.57 = [25 x i8] c"#define INCR_W do { \\\0A\00"
@.str.58 = [38 x i8] c"\09\09if ((Wlow = T32(Wlow + 1)) == 0) \\\0A\00"
@.str.59 = [30 x i8] c"\09\09\09Whigh = T32(Whigh + 1); \\\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
store i32 0, i32* %1
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.1, i64 0, i64 0), i32 3, i32 12)
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.2, i64 0, i64 0))
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.4, i64 0, i64 0))
store i32 0, i32* %2
br label %10
10: ; preds = %30, %0
%11 = load i32, i32* %2
%12 = icmp slt i32 %11, 12
br i1 %12, label %13, label %33
13: ; preds = %10
%14 = load i32, i32* %2
%15 = icmp eq i32 %14, 0
br i1 %15, label %16, label %18
16: ; preds = %13
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
br label %27
18: ; preds = %13
%19 = load i32, i32* %2
%20 = srem i32 %19, 8
%21 = icmp eq i32 %20, 0
br i1 %21, label %22, label %24
22: ; preds = %18
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
br label %26
24: ; preds = %18
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
br label %26
26: ; preds = %24, %22
br label %27
27: ; preds = %26, %16
%28 = load i32, i32* %2
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 %28)
br label %30
30: ; preds = %27
%31 = load i32, i32* %2
%32 = add nsw i32 %31, 1
store i32 %32, i32* %2
br label %10
33: ; preds = %10
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0))
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.10, i64 0, i64 0))
%36 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.11, i64 0, i64 0))
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.12, i64 0, i64 0))
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.13, i64 0, i64 0))
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.14, i64 0, i64 0))
%40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.15, i64 0, i64 0))
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0))
%42 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.17, i64 0, i64 0))
store i32 0, i32* %2
br label %44
44: ; preds = %51, %33
%45 = load i32, i32* %2
%46 = icmp slt i32 %45, 12
br i1 %46, label %47, label %54
47: ; preds = %44
%48 = load i32, i32* %2
%49 = load i32, i32* %2
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 %48, i32 %49)
br label %51
51: ; preds = %47
%52 = load i32, i32* %2
%53 = add nsw i32 %52, 1
store i32 %53, i32* %2
br label %44
54: ; preds = %44
store i32 0, i32* %2
br label %55
55: ; preds = %62, %54
%56 = load i32, i32* %2
%57 = icmp slt i32 %56, 16
br i1 %57, label %58, label %65
58: ; preds = %55
%59 = load i32, i32* %2
%60 = load i32, i32* %2
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 %59, i32 %60)
br label %62
62: ; preds = %58
%63 = load i32, i32* %2
%64 = add nsw i32 %63, 1
store i32 %64, i32* %2
br label %55
65: ; preds = %55
store i32 0, i32* %2
br label %66
66: ; preds = %73, %65
%67 = load i32, i32* %2
%68 = icmp slt i32 %67, 16
br i1 %68, label %69, label %76
69: ; preds = %66
%70 = load i32, i32* %2
%71 = load i32, i32* %2
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 %70, i32 %71)
br label %73
73: ; preds = %69
%74 = load i32, i32* %2
%75 = add nsw i32 %74, 1
store i32 %75, i32* %2
br label %66
76: ; preds = %66
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.21, i64 0, i64 0))
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.22, i64 0, i64 0))
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.24, i64 0, i64 0))
store i32 0, i32* %2
br label %82
82: ; preds = %89, %76
%83 = load i32, i32* %2
%84 = icmp slt i32 %83, 12
br i1 %84, label %85, label %92
85: ; preds = %82
%86 = load i32, i32* %2
%87 = load i32, i32* %2
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 %86, i32 %87)
br label %89
89: ; preds = %85
%90 = load i32, i32* %2
%91 = add nsw i32 %90, 1
store i32 %91, i32* %2
br label %82
92: ; preds = %82
store i32 0, i32* %2
br label %93
93: ; preds = %100, %92
%94 = load i32, i32* %2
%95 = icmp slt i32 %94, 16
br i1 %95, label %96, label %103
96: ; preds = %93
%97 = load i32, i32* %2
%98 = load i32, i32* %2
%99 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 %97, i32 %98)
br label %100
100: ; preds = %96
%101 = load i32, i32* %2
%102 = add nsw i32 %101, 1
store i32 %102, i32* %2
br label %93
103: ; preds = %93
store i32 0, i32* %2
br label %104
104: ; preds = %111, %103
%105 = load i32, i32* %2
%106 = icmp slt i32 %105, 16
br i1 %106, label %107, label %114
107: ; preds = %104
%108 = load i32, i32* %2
%109 = load i32, i32* %2
%110 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 %108, i32 %109)
br label %111
111: ; preds = %107
%112 = load i32, i32* %2
%113 = add nsw i32 %112, 1
store i32 %113, i32* %2
br label %104
114: ; preds = %104
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.28, i64 0, i64 0))
%116 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0))
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%118 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.30, i64 0, i64 0))
store i32 0, i32* %2
br label %120
120: ; preds = %128, %114
%121 = load i32, i32* %2
%122 = icmp slt i32 %121, 16
br i1 %122, label %123, label %131
123: ; preds = %120
%124 = load i32, i32* %2
%125 = load i32, i32* %2
%126 = mul nsw i32 4, %125
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 %124, i32 %126)
br label %128
128: ; preds = %123
%129 = load i32, i32* %2
%130 = add nsw i32 %129, 1
store i32 %130, i32* %2
br label %120
131: ; preds = %120
%132 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%133 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%134 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.32, i64 0, i64 0))
store i32 0, i32* %2
br label %135
135: ; preds = %143, %131
%136 = load i32, i32* %2
%137 = icmp slt i32 %136, 16
br i1 %137, label %138, label %146
138: ; preds = %135
%139 = load i32, i32* %2
%140 = load i32, i32* %2
%141 = load i32, i32* %2
%142 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 %139, i32 %140, i32 %141)
br label %143
143: ; preds = %138
%144 = load i32, i32* %2
%145 = add nsw i32 %144, 1
store i32 %145, i32* %2
br label %135
146: ; preds = %135
%147 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%148 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%149 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.34, i64 0, i64 0))
store i32 0, i32* %2
br label %150
150: ; preds = %158, %146
%151 = load i32, i32* %2
%152 = icmp slt i32 %151, 16
br i1 %152, label %153, label %161
153: ; preds = %150
%154 = load i32, i32* %2
%155 = load i32, i32* %2
%156 = load i32, i32* %2
%157 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 %154, i32 %155, i32 %156)
br label %158
158: ; preds = %153
%159 = load i32, i32* %2
%160 = add nsw i32 %159, 1
store i32 %160, i32* %2
br label %150
161: ; preds = %150
%162 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%163 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%164 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.36, i64 0, i64 0))
%165 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.37, i64 0, i64 0))
%166 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%167 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%168 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%169 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.39, i64 0, i64 0))
%170 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.40, i64 0, i64 0))
%171 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.41, i64 0, i64 0))
%172 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.42, i64 0, i64 0))
%173 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%174 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%175 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.43, i64 0, i64 0))
store i32 0, i32* %2
br label %176
176: ; preds = %183, %161
%177 = load i32, i32* %2
%178 = icmp slt i32 %177, 16
br i1 %178, label %179, label %186
179: ; preds = %176
%180 = load i32, i32* %2
%181 = load i32, i32* %2
%182 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 %180, i32 %181)
br label %183
183: ; preds = %179
%184 = load i32, i32* %2
%185 = add nsw i32 %184, 1
store i32 %185, i32* %2
br label %176
186: ; preds = %176
%187 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%188 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%189 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.45, i64 0, i64 0))
%190 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.46, i64 0, i64 0))
%191 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.47, i64 0, i64 0))
%192 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.48, i64 0, i64 0))
%193 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.49, i64 0, i64 0))
%194 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.50, i64 0, i64 0))
%195 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
store i32 0, i32* %3
br label %196
196: ; preds = %238, %186
%197 = load i32, i32* %3
%198 = icmp slt i32 %197, 3
br i1 %198, label %199, label %241
199: ; preds = %196
%200 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%201 = load i32, i32* %3
%202 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.51, i64 0, i64 0), i32 %201)
store i32 0, i32* %2
br label %203
203: ; preds = %233, %199
%204 = load i32, i32* %2
%205 = icmp slt i32 %204, 16
br i1 %205, label %206, label %236
206: ; preds = %203
%207 = load i32, i32* %2
%208 = load i32, i32* %3
%209 = mul nsw i32 16, %208
%210 = add nsw i32 %207, %209
%211 = srem i32 %210, 12
%212 = load i32, i32* %2
%213 = load i32, i32* %3
%214 = mul nsw i32 16, %213
%215 = add nsw i32 %212, %214
%216 = add nsw i32 %215, 11
%217 = srem i32 %216, 12
%218 = load i32, i32* %2
%219 = load i32, i32* %2
%220 = add nsw i32 %219, 13
%221 = srem i32 %220, 16
%222 = load i32, i32* %2
%223 = add nsw i32 %222, 9
%224 = srem i32 %223, 16
%225 = load i32, i32* %2
%226 = add nsw i32 %225, 6
%227 = srem i32 %226, 16
%228 = load i32, i32* %2
%229 = sub nsw i32 24, %228
%230 = srem i32 %229, 16
%231 = load i32, i32* %2
%232 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.52, i64 0, i64 0), i32 %211, i32 %217, i32 %218, i32 %221, i32 %224, i32 %227, i32 %230, i32 %231)
br label %233
233: ; preds = %206
%234 = load i32, i32* %2
%235 = add nsw i32 %234, 1
store i32 %235, i32* %2
br label %203
236: ; preds = %203
%237 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
br label %238
238: ; preds = %236
%239 = load i32, i32* %3
%240 = add nsw i32 %239, 1
store i32 %240, i32* %3
br label %196
241: ; preds = %196
%242 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%243 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.53, i64 0, i64 0))
store i32 0, i32* %2
br label %244
244: ; preds = %252, %241
%245 = load i32, i32* %2
%246 = icmp slt i32 %245, 16
br i1 %246, label %247, label %255
247: ; preds = %244
%248 = load i32, i32* %2
%249 = load i32, i32* %2
%250 = load i32, i32* %2
%251 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 %248, i32 %249, i32 %250)
br label %252
252: ; preds = %247
%253 = load i32, i32* %2
%254 = add nsw i32 %253, 1
store i32 %254, i32* %2
br label %244
255: ; preds = %244
store i32 0, i32* %3
br label %256
256: ; preds = %262, %255
%257 = load i32, i32* %3
%258 = icmp slt i32 %257, 3
br i1 %258, label %259, label %265
259: ; preds = %256
%260 = load i32, i32* %3
%261 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.55, i64 0, i64 0), i32 %260)
br label %262
262: ; preds = %259
%263 = load i32, i32* %3
%264 = add nsw i32 %263, 1
store i32 %264, i32* %3
br label %256
265: ; preds = %256
store i32 0, i32* %3
br label %266
266: ; preds = %280, %265
%267 = load i32, i32* %3
%268 = icmp slt i32 %267, 36
br i1 %268, label %269, label %283
269: ; preds = %266
%270 = load i32, i32* %3
%271 = sub nsw i32 47, %270
%272 = srem i32 %271, 12
%273 = load i32, i32* %3
%274 = sub nsw i32 47, %273
%275 = srem i32 %274, 12
%276 = load i32, i32* %3
%277 = sub nsw i32 582, %276
%278 = srem i32 %277, 16
%279 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.56, i64 0, i64 0), i32 %272, i32 %275, i32 %278)
br label %280
280: ; preds = %269
%281 = load i32, i32* %3
%282 = add nsw i32 %281, 1
store i32 %282, i32* %3
br label %266
283: ; preds = %266
%284 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%285 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%286 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.57, i64 0, i64 0))
%287 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.58, i64 0, i64 0))
%288 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.59, i64 0, i64 0))
%289 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.23, i64 0, i64 0))
%290 = call i32 @make_iv(i32 192)
%291 = call i32 @make_iv(i32 224)
%292 = call i32 @make_iv(i32 256)
%293 = call i32 @make_iv(i32 384)
%294 = call i32 @make_iv(i32 512)
%295 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str.1 = [50 x i8] c"#if SHABAL_PARAM_P != %d || SHABAL_PARAM_R != %d\0A\00"
@.str.5 = [6 x i8] c"\09u32 \00"
@.str.6 = [10 x i8] c", \\\0A\09 \00"
@.str.7 = [3 x i8] c", \00"
@.str.8 = [6 x i8] c"A%02X\00"
@.str.18 = [29 x i8] c"\09\09A%02X = (state)->A[%d]; \\\0A\00"
@.str.19 = [27 x i8] c"\09\09B%X = (state)->B[%d]; \\\0A\00"
@.str.20 = [27 x i8] c"\09\09C%X = (state)->C[%d]; \\\0A\00"
@.str.25 = [29 x i8] c"\09\09(state)->A[%d] = A%02X; \\\0A\00"
@.str.26 = [27 x i8] c"\09\09(state)->B[%d] = B%X; \\\0A\00"
@.str.27 = [27 x i8] c"\09\09(state)->C[%d] = C%X; \\\0A\00"
@.str.31 = [41 x i8] c"\09\09M%X = dec32le_aligned(buffer + %d); \\\0A\00"
@.str.33 = [27 x i8] c"\09\09B%X = T32(B%X + M%X); \\\0A\00"
@.str.35 = [27 x i8] c"\09\09C%X = T32(C%X - M%X); \\\0A\00"
@.str.44 = [21 x i8] c"\09\09SWAP(B%X, C%X); \\\0A\00"
@.str.51 = [31 x i8] c"#define PERM_STEP_%d do { \\\0A\00"
@.str.52 = [59 x i8] c"\09\09PERM_ELT(A%02X, A%02X, B%X, B%X, B%X, B%X, C%X, M%X); \\\0A\00"
@.str.54 = [41 x i8] c"\09\09B%X = T32(B%X << 17) | (B%X >> 15); \\\0A\00"
@.str.55 = [19 x i8] c"\09\09PERM_STEP_%d; \\\0A\00"
@.str.56 = [31 x i8] c"\09\09A%02X = T32(A%02X + C%X); \\\0A\00"
@str = [51 x i8] c"#error Parameters changed; code below is not valid\00"
@str.60 = [7 x i8] c"#endif\00"
@str.61 = [23 x i8] c"#define DECL_STATE \\\00"
@str.62 = [4 x i8] c"; \\\00"
@str.63 = [39 x i8] c"\09u32 B0, B1, B2, B3, B4, B5, B6, B7, \\\00"
@str.64 = [39 x i8] c"\09 B8, B9, BA, BB, BC, BD, BE, BF; \\\00"
@str.65 = [39 x i8] c"\09u32 C0, C1, C2, C3, C4, C5, C6, C7, \\\00"
@str.66 = [39 x i8] c"\09 C8, C9, CA, CB, CC, CD, CE, CF; \\\00"
@str.67 = [39 x i8] c"\09u32 M0, M1, M2, M3, M4, M5, M6, M7, \\\00"
@str.68 = [39 x i8] c"\09 M8, M9, MA, MB, MC, MD, ME, MF; \\\00"
@str.69 = [18 x i8] c"\09u32 Wlow, Whigh;\00"
@str.70 = [35 x i8] c"#define READ_STATE(state) do { \\\00"
@str.71 = [26 x i8] c"\09\09Wlow = (state)->Wlow; \\\00"
@str.72 = [28 x i8] c"\09\09Whigh = (state)->Whigh; \\\00"
@str.74 = [36 x i8] c"#define WRITE_STATE(state) do { \\\00"
@str.75 = [26 x i8] c"\09\09(state)->Wlow = Wlow; \\\00"
@str.76 = [28 x i8] c"\09\09(state)->Whigh = Whigh; \\\00"
@str.78 = [30 x i8] c"#define DECODE_BLOCK do { \\\00"
@str.80 = [33 x i8] c"#define INPUT_BLOCK_ADD do { \\\00"
@str.82 = [33 x i8] c"#define INPUT_BLOCK_SUB do { \\\00"
@str.84 = [23 x i8] c"#define XOR_W do { \\\00"
@str.85 = [17 x i8] c"\09\09A00 ^= Wlow; \\\00"
@str.86 = [18 x i8] c"\09\09A01 ^= Whigh; \\\00"
@str.88 = [30 x i8] c"#define SWAP(v1, v2) do { \\\00"
@str.89 = [20 x i8] c"\09\09u32 tmp = (v1); \\\00"
@str.90 = [17 x i8] c"\09\09(v1) = (v2); \\\00"
@str.91 = [16 x i8] c"\09\09(v2) = tmp; \\\00"
@str.93 = [25 x i8] c"#define SWAP_BC do { \\\00"
@str.95 = [64 x i8] c"#define PERM_ELT(xa0, xa1, xb0, xb1, xb2, xb3, xc, xm) do { \\\00"
@str.96 = [19 x i8] c"\09\09xa0 = T32((xa0 \\\00"
@str.97 = [42 x i8] c"\09\09\09^ (((xa1 << 15) | (xa1 >> 17)) * 5U) \\\00"
@str.98 = [17 x i8] c"\09\09\09^ xc) * 3U) \\\00"
@str.99 = [32 x i8] c"\09\09\09^ xb1 ^ (xb2 & ~xb3) ^ xm; \\\00"
@str.100 = [52 x i8] c"\09\09xb0 = T32(~(((xb0 << 1) | (xb0 >> 31)) ^ xa0)); \\\00"
@str.102 = [25 x i8] c"#define APPLY_P do { \\\00"
@str.104 = [24 x i8] c"#define INCR_W do { \\\00"
@str.105 = [37 x i8] c"\09\09if ((Wlow = T32(Wlow + 1)) == 0) \\\00"
@str.106 = [29 x i8] c"\09\09\09Whigh = T32(Whigh + 1); \\\00"
@str.108 = [13 x i8] c"\09} while (0)\00"
define i32 @main() {
%1 = tail call i32 @putchar(i32 10)
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.1, i64 0, i64 0), i32 3, i32 12)
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.60, i64 0, i64 0))
%5 = tail call i32 @putchar(i32 10)
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.61, i64 0, i64 0))
%7 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 0)
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%10 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 1)
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%12 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 2)
%13 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 3)
%15 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 4)
%17 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 5)
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%20 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 6)
%21 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 7)
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%24 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 8)
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%26 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 9)
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 10)
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%30 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 11)
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @str.62, i64 0, i64 0))
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.63, i64 0, i64 0))
%33 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.64, i64 0, i64 0))
%34 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.65, i64 0, i64 0))
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.66, i64 0, i64 0))
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.67, i64 0, i64 0))
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.68, i64 0, i64 0))
%38 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.69, i64 0, i64 0))
%39 = tail call i32 @putchar(i32 10)
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.70, i64 0, i64 0))
%41 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 0, i32 0)
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 1, i32 1)
%43 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 2, i32 2)
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 3, i32 3)
%45 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 4, i32 4)
%46 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 5, i32 5)
%47 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 6, i32 6)
%48 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 7, i32 7)
%49 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 8, i32 8)
%50 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 9, i32 9)
%51 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 10, i32 10)
%52 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.18, i64 0, i64 0), i32 11, i32 11)
%53 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 0, i32 0)
%54 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 1, i32 1)
%55 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 2, i32 2)
%56 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 3, i32 3)
%57 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 4, i32 4)
%58 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 5, i32 5)
%59 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 6, i32 6)
%60 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 7, i32 7)
%61 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 8, i32 8)
%62 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 9, i32 9)
%63 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 10, i32 10)
%64 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 11, i32 11)
%65 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 12, i32 12)
%66 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 13, i32 13)
%67 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 14, i32 14)
%68 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i32 15, i32 15)
%69 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 0, i32 0)
%70 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 1, i32 1)
%71 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 2, i32 2)
%72 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 3, i32 3)
%73 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 4, i32 4)
%74 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 5, i32 5)
%75 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 6, i32 6)
%76 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 7, i32 7)
%77 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 8, i32 8)
%78 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 9, i32 9)
%79 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 10, i32 10)
%80 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 11, i32 11)
%81 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 12, i32 12)
%82 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 13, i32 13)
%83 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 14, i32 14)
%84 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.20, i64 0, i64 0), i32 15, i32 15)
%85 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.71, i64 0, i64 0))
%86 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.72, i64 0, i64 0))
%87 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%88 = tail call i32 @putchar(i32 10)
%89 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @str.74, i64 0, i64 0))
%90 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 0, i32 0)
%91 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 1, i32 1)
%92 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 2, i32 2)
%93 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 3, i32 3)
%94 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 4, i32 4)
%95 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 5, i32 5)
%96 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 6, i32 6)
%97 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 7, i32 7)
%98 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 8, i32 8)
%99 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 9, i32 9)
%100 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 10, i32 10)
%101 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.25, i64 0, i64 0), i32 11, i32 11)
%102 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 0, i32 0)
%103 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 1, i32 1)
%104 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 2, i32 2)
%105 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 3, i32 3)
%106 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 4, i32 4)
%107 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 5, i32 5)
%108 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 6, i32 6)
%109 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 7, i32 7)
%110 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 8, i32 8)
%111 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 9, i32 9)
%112 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 10, i32 10)
%113 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 11, i32 11)
%114 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 12, i32 12)
%115 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 13, i32 13)
%116 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 14, i32 14)
%117 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i64 0, i64 0), i32 15, i32 15)
%118 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 0, i32 0)
%119 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 1, i32 1)
%120 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 2, i32 2)
%121 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 3, i32 3)
%122 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 4, i32 4)
%123 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 5, i32 5)
%124 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 6, i32 6)
%125 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 7, i32 7)
%126 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 8, i32 8)
%127 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 9, i32 9)
%128 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 10, i32 10)
%129 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 11, i32 11)
%130 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 12, i32 12)
%131 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 13, i32 13)
%132 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 14, i32 14)
%133 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0), i32 15, i32 15)
%134 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.75, i64 0, i64 0))
%135 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.76, i64 0, i64 0))
%136 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%137 = tail call i32 @putchar(i32 10)
%138 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.78, i64 0, i64 0))
%139 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 0, i32 0)
%140 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 1, i32 4)
%141 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 2, i32 8)
%142 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 3, i32 12)
%143 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 4, i32 16)
%144 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 5, i32 20)
%145 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 6, i32 24)
%146 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 7, i32 28)
%147 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 8, i32 32)
%148 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 9, i32 36)
%149 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 10, i32 40)
%150 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 11, i32 44)
%151 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 12, i32 48)
%152 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 13, i32 52)
%153 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 14, i32 56)
%154 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.31, i64 0, i64 0), i32 15, i32 60)
%155 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%156 = tail call i32 @putchar(i32 10)
%157 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.80, i64 0, i64 0))
%158 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 0, i32 0, i32 0)
%159 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 1, i32 1, i32 1)
%160 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 2, i32 2, i32 2)
%161 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 3, i32 3, i32 3)
%162 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 4, i32 4, i32 4)
%163 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 5, i32 5, i32 5)
%164 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 6, i32 6, i32 6)
%165 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 7, i32 7, i32 7)
%166 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 8, i32 8, i32 8)
%167 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 9, i32 9, i32 9)
%168 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 10, i32 10, i32 10)
%169 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 11, i32 11, i32 11)
%170 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 12, i32 12, i32 12)
%171 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 13, i32 13, i32 13)
%172 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 14, i32 14, i32 14)
%173 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0), i32 15, i32 15, i32 15)
%174 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%175 = tail call i32 @putchar(i32 10)
%176 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.82, i64 0, i64 0))
%177 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 0, i32 0, i32 0)
%178 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 1, i32 1, i32 1)
%179 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 2, i32 2, i32 2)
%180 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 3, i32 3, i32 3)
%181 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 4, i32 4, i32 4)
%182 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 5, i32 5, i32 5)
%183 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 6, i32 6, i32 6)
%184 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 7, i32 7, i32 7)
%185 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 8, i32 8, i32 8)
%186 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 9, i32 9, i32 9)
%187 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 10, i32 10, i32 10)
%188 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 11, i32 11, i32 11)
%189 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 12, i32 12, i32 12)
%190 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 13, i32 13, i32 13)
%191 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 14, i32 14, i32 14)
%192 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.35, i64 0, i64 0), i32 15, i32 15, i32 15)
%193 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%194 = tail call i32 @putchar(i32 10)
%195 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.84, i64 0, i64 0))
%196 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.85, i64 0, i64 0))
%197 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.86, i64 0, i64 0))
%198 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%199 = tail call i32 @putchar(i32 10)
%200 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.88, i64 0, i64 0))
%201 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.89, i64 0, i64 0))
%202 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.90, i64 0, i64 0))
%203 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.91, i64 0, i64 0))
%204 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%205 = tail call i32 @putchar(i32 10)
%206 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.93, i64 0, i64 0))
%207 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 0, i32 0)
%208 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 1, i32 1)
%209 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 2, i32 2)
%210 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 3, i32 3)
%211 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 4, i32 4)
%212 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 5, i32 5)
%213 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 6, i32 6)
%214 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 7, i32 7)
%215 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 8, i32 8)
%216 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 9, i32 9)
%217 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 10, i32 10)
%218 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 11, i32 11)
%219 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 12, i32 12)
%220 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 13, i32 13)
%221 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 14, i32 14)
%222 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.44, i64 0, i64 0), i32 15, i32 15)
%223 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%224 = tail call i32 @putchar(i32 10)
%225 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str.95, i64 0, i64 0))
%226 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.96, i64 0, i64 0))
%227 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.97, i64 0, i64 0))
%228 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.98, i64 0, i64 0))
%229 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str.99, i64 0, i64 0))
%230 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @str.100, i64 0, i64 0))
%231 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%232 = tail call i32 @putchar(i32 10)
%233 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.51, i64 0, i64 0), i32 0)
br label %234
234: ; preds = %0, %234
%235 = phi i32 [ 0, %0 ], [ %248, %234 ]
%236 = urem i32 %235, 12
%237 = add nuw nsw i32 %235, 11
%238 = urem i32 %237, 12
%239 = add nuw nsw i32 %235, 13
%240 = and i32 %239, 15
%241 = add nuw nsw i32 %235, 9
%242 = and i32 %241, 15
%243 = add nuw nsw i32 %235, 6
%244 = and i32 %243, 15
%245 = sub nsw i32 8, %235
%246 = and i32 %245, 15
%247 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.52, i64 0, i64 0), i32 %236, i32 %238, i32 %235, i32 %240, i32 %242, i32 %244, i32 %246, i32 %235)
%248 = add nuw nsw i32 %235, 1
%249 = icmp eq i32 %248, 16
br i1 %249, label %250, label %234
250: ; preds = %234
%251 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%252 = tail call i32 @putchar(i32 10)
%253 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.51, i64 0, i64 0), i32 1)
br label %254
254: ; preds = %254, %250
%255 = phi i32 [ 0, %250 ], [ %269, %254 ]
%256 = add nuw nsw i32 %255, 16
%257 = urem i32 %256, 12
%258 = add nuw nsw i32 %255, 27
%259 = urem i32 %258, 12
%260 = add nuw nsw i32 %255, 13
%261 = and i32 %260, 15
%262 = add nuw nsw i32 %255, 9
%263 = and i32 %262, 15
%264 = add nuw nsw i32 %255, 6
%265 = and i32 %264, 15
%266 = sub nsw i32 8, %255
%267 = and i32 %266, 15
%268 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.52, i64 0, i64 0), i32 %257, i32 %259, i32 %255, i32 %261, i32 %263, i32 %265, i32 %267, i32 %255)
%269 = add nuw nsw i32 %255, 1
%270 = icmp eq i32 %269, 16
br i1 %270, label %271, label %254
271: ; preds = %254
%272 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%273 = tail call i32 @putchar(i32 10)
%274 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.51, i64 0, i64 0), i32 2)
br label %275
275: ; preds = %275, %271
%276 = phi i32 [ 0, %271 ], [ %290, %275 ]
%277 = add nuw nsw i32 %276, 32
%278 = urem i32 %277, 12
%279 = add nuw nsw i32 %276, 43
%280 = urem i32 %279, 12
%281 = add nuw nsw i32 %276, 13
%282 = and i32 %281, 15
%283 = add nuw nsw i32 %276, 9
%284 = and i32 %283, 15
%285 = add nuw nsw i32 %276, 6
%286 = and i32 %285, 15
%287 = sub nsw i32 8, %276
%288 = and i32 %287, 15
%289 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.52, i64 0, i64 0), i32 %278, i32 %280, i32 %276, i32 %282, i32 %284, i32 %286, i32 %288, i32 %276)
%290 = add nuw nsw i32 %276, 1
%291 = icmp eq i32 %290, 16
br i1 %291, label %292, label %275
292: ; preds = %275
%293 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%294 = tail call i32 @putchar(i32 10)
%295 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.102, i64 0, i64 0))
%296 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 0, i32 0, i32 0)
%297 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 1, i32 1, i32 1)
%298 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 2, i32 2, i32 2)
%299 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 3, i32 3, i32 3)
%300 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 4, i32 4, i32 4)
%301 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 5, i32 5, i32 5)
%302 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 6, i32 6, i32 6)
%303 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 7, i32 7, i32 7)
%304 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 8, i32 8, i32 8)
%305 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 9, i32 9, i32 9)
%306 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 10, i32 10, i32 10)
%307 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 11, i32 11, i32 11)
%308 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 12, i32 12, i32 12)
%309 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 13, i32 13, i32 13)
%310 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 14, i32 14, i32 14)
%311 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.54, i64 0, i64 0), i32 15, i32 15, i32 15)
%312 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.55, i64 0, i64 0), i32 0)
%313 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.55, i64 0, i64 0), i32 1)
%314 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.55, i64 0, i64 0), i32 2)
br label %315
315: ; preds = %292, %315
%316 = phi i32 [ %324, %315 ], [ 0, %292 ]
%317 = trunc i32 %316 to i8
%318 = sub i8 47, %317
%319 = urem i8 %318, 12
%320 = zext i8 %319 to i32
%321 = sub nsw i32 6, %316
%322 = and i32 %321, 15
%323 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.56, i64 0, i64 0), i32 %320, i32 %320, i32 %322)
%324 = add nuw nsw i32 %316, 1
%325 = icmp eq i32 %324, 36
br i1 %325, label %326, label %315
326: ; preds = %315
%327 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%328 = tail call i32 @putchar(i32 10)
%329 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.104, i64 0, i64 0))
%330 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.105, i64 0, i64 0))
%331 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @str.106, i64 0, i64 0))
%332 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.108, i64 0, i64 0))
%333 = tail call i32 @make_iv(i32 192)
%334 = tail call i32 @make_iv(i32 224)
%335 = tail call i32 @make_iv(i32 256)
%336 = tail call i32 @make_iv(i32 384)
%337 = tail call i32 @make_iv(i32 512)
%338 = tail call i32 @putchar(i32 10)
ret i32 0
}