int main(int argc, char **argv) {
  unsigned short memory[400];
  unsigned short AC;
  unsigned short PC;
  unsigned short DR;
  unsigned short AR;
  unsigned short IR;
  unsigned short E;
  srand(time(0));
  int temp;
  int idx;
  int idx2;
  for (idx = 0; idx < 400; ++idx) {
    temp = rand() % 0xE;
    if (temp == 7) {
      memory[idx] = (temp << 12);
      temp = rand() % 12;
      memory[idx] += (1 << temp);
    } else {
      memory[idx] = temp << 12;
      memory[idx] += rand() % 395;
    }
  }
  PC = rand() % 400;
  AC = rand() % 0x0FFF;
  DR = rand() % 0x0FFF;
  AR = rand() % 400;
  IR = rand() % 0x0FFF;
  E = rand() % 2;
  for (int idx = 0; idx < 3; ++idx) {
    PC = rand() % 395;
    for (int idx2 = 0; idx2 < 5; ++idx2) {
      print(-1, AC, PC, DR, AR, IR, E, memory);
      AR = PC;
      print(0, AC, PC, DR, AR, IR, E, memory);
      IR = memory[AR];
      ++PC;
      print(1, AC, PC, DR, AR, IR, E, memory);
      AR = (0x0FFF & IR);
      print(2, AC, PC, DR, AR, IR, E, memory);
      if ((0x7000 & IR) == 0x7000) {
        switch (0x0FFF & IR) {
        case 0x0800:
          AC ^= AC;
          break;
        case 0x0400:
          E ^= E;
          break;
        case 0x0200:
          AC = ~AC;
          break;
        case 0x0100:
          E = !E;
          break;
        case 0x0080:
          E = (0x0001 & AC) << 15;
          AC >>= 1;
          AC &= 0x7FFF;
          AC |= E;
          break;
        case 0x0040:
          E = (0x8000 & AC) >> 15;
          AC <<= 1;
          AC |= E;
          break;
        case 0x0020:
          AC++;
          break;
        case 0x0010:
          if (AC >> 15 == 0) {
            PC += 1;
          }
          break;
        case 0x0008:
          if (AC >> 15 == 1) {
            PC += 1;
          }
          break;
        case 0x0004:
          if (AC == 0) {
            PC += 1;
          }
          break;
        case 0x0002:
          if (E == 0) {
            PC += 1;
          }
          break;
        case 0x0001:
          exit(2);
          break;
        }
        print(3, AC, PC, DR, AR, IR, E, memory);
      } else {
        AR = (memory[AR] & 0x0FFF);
        switch (IR & 0x7000) {
        case 0x0000:
          if ((IR & 0x8000) == 0) {
          } else {
            AR = (memory[AR] & 0xFFF);
            if (AR > 399)
              AR %= 400;
          }
          print(3, AC, PC, DR, AR, IR, E, memory);
          DR = memory[AR];
          print(4, AC, PC, DR, AR, IR, E, memory);
          AC &= DR;
          print(5, AC, PC, DR, AR, IR, E, memory);
          break;
        case 0x1000:
          if ((IR & 0x8000) == 0) {
          } else {
            AR = (memory[AR] & 0xFFF);
            if (AR > 399)
              AR %= 400;
          }
          print(3, AC, PC, DR, AR, IR, E, memory);
          DR = memory[AR];
          print(4, AC, PC, DR, AR, IR, E, memory);
          AC += DR;
          print(5, AC, PC, DR, AR, IR, E, memory);
          break;
        case 0x2000:
          if ((IR & 0x8000) == 0) {
          } else {
            AR = (memory[AR] & 0xFFF);
            if (AR > 399) {
              AR %= 400;
            }
          }
          print(3, AC, PC, DR, AR, IR, E, memory);
          DR = memory[AR];
          print(4, AC, PC, DR, AR, IR, E, memory);
          AC = DR;
          print(5, AC, PC, DR, AR, IR, E, memory);
          break;
        case 0x3000:
          if ((IR & 0x8000) == 0) {
          } else {
            AR = (memory[AR] & 0xFFF);
            if (AR > 399) {
              AR %= 400;
            }
          }
          print(3, AC, PC, DR, AR, IR, E, memory);
          memory[AR] = AC;
          print(4, AC, PC, DR, AR, IR, E, memory);
          break;
        case 0x4000:
          if ((IR & 0x8000) == 0) {
          } else {
            AR = (memory[AR] & 0xFFF);
            if (AR > 399) {
              AR %= 400;
            }
          }
          print(3, AC, PC, DR, AR, IR, E, memory);
          PC = (memory[AR] & 0x0FFF);
          print(4, AC, PC, DR, AR, IR, E, memory);
          break;
        case 0x5000:
          if ((IR & 0x8000) == 0) {
          } else {
            AR = (memory[AR] & 0xFFF);
            if (AR > 399) {
              AR %= 400;
            }
          }
          print(3, AC, PC, DR, AR, IR, E, memory);
          memory[AR] = PC;
          AR++;
          print(4, AC, PC, DR, AR, IR, E, memory);
          PC = AR;
          print(5, AC, PC, DR, AR, IR, E, memory);
          break;
        case 0x6000:
          if ((IR & 0x8000) == 0) {
          } else {
            AR = (memory[AR] & 0xFFF);
            if (AR > 399) {
              AR %= 400;
            }
          }
          print(3, AC, PC, DR, AR, IR, E, memory);
          DR = memory[AR];
          print(4, AC, PC, DR, AR, IR, E, memory);
          DR++;
          print(5, AC, PC, DR, AR, IR, E, memory);
          memory[AR] = DR;
          if (DR == 0) {
            PC++;
          }
          print(6, AC, PC, DR, AR, IR, E, memory);
          break;
        }
      }
      printf("\n");
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x370,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
xor    %edi,%edi
mov    $0x0,%al
call   1060 <time@plt>
mov    %eax,%edi
mov    $0x0,%al
call   1050 <srand@plt>
movl   $0x0,-0x344(%rbp)
cmpl   $0x190,-0x344(%rbp)
jge    127e <main+0x11e>
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0xe,%ecx
cltd
idiv   %ecx
mov    %edx,-0x340(%rbp)
cmpl   $0x7,-0x340(%rbp)
jne    1222 <main+0xc2>
mov    -0x340(%rbp),%eax
shl    $0xc,%eax
mov    %ax,%cx
movslq -0x344(%rbp),%rax
mov    %cx,-0x330(%rbp,%rax,2)
ff
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0xc,%ecx
cltd
idiv   %ecx
mov    %edx,-0x340(%rbp)
mov    -0x340(%rbp),%ecx
mov    $0x1,%edx
shl    %cl,%edx
movslq -0x344(%rbp),%rax
movzwl -0x330(%rbp,%rax,2),%ecx
ff
add    %edx,%ecx
mov    %cx,-0x330(%rbp,%rax,2)
ff
jmp    1265 <main+0x105>
mov    -0x340(%rbp),%eax
shl    $0xc,%eax
mov    %ax,%cx
movslq -0x344(%rbp),%rax
mov    %cx,-0x330(%rbp,%rax,2)
ff
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0x18b,%ecx
cltd
idiv   %ecx
movslq -0x344(%rbp),%rax
movzwl -0x330(%rbp,%rax,2),%ecx
ff
add    %edx,%ecx
mov    %cx,-0x330(%rbp,%rax,2)
ff
jmp    126a <main+0x10a>
mov    -0x344(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x344(%rbp)
jmp    1195 <main+0x35>
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x334(%rbp)
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0xfff,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x332(%rbp)
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0xfff,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x336(%rbp)
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x338(%rbp)
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0xfff,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x33a(%rbp)
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x33c(%rbp)
movl   $0x0,-0x34c(%rbp)
cmpl   $0x3,-0x34c(%rbp)
jge    22c8 <main+0x1168>
mov    $0x0,%al
call   1080 <rand@plt>
mov    $0x18b,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x334(%rbp)
movl   $0x0,-0x350(%rbp)
cmpl   $0x5,-0x350(%rbp)
jge    22af <main+0x114f>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0xffffffff,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
mov    -0x334(%rbp),%ax
mov    %ax,-0x338(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
xor    %edi,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x338(%rbp),%eax
mov    -0x330(%rbp,%rax,2),%ax
ff
mov    %ax,-0x33a(%rbp)
mov    -0x334(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x334(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x1,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x33a(%rbp),%eax
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x2,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x33a(%rbp),%eax
and    $0x7000,%eax
cmp    $0x7000,%eax
jne    17f2 <main+0x692>
movzwl -0x33a(%rbp),%eax
and    $0xfff,%eax
mov    %eax,-0x354(%rbp)
sub    $0x1,%eax
je     179a <main+0x63a>
jmp    14fc <main+0x39c>
mov    -0x354(%rbp),%eax
sub    $0x2,%eax
je     1774 <main+0x614>
jmp    1510 <main+0x3b0>
mov    -0x354(%rbp),%eax
sub    $0x4,%eax
je     174e <main+0x5ee>
jmp    1524 <main+0x3c4>
mov    -0x354(%rbp),%eax
sub    $0x8,%eax
je     1725 <main+0x5c5>
jmp    1538 <main+0x3d8>
mov    -0x354(%rbp),%eax
sub    $0x10,%eax
je     16fc <main+0x59c>
jmp    154c <main+0x3ec>
mov    -0x354(%rbp),%eax
sub    $0x20,%eax
je     16e5 <main+0x585>
jmp    1560 <main+0x400>
mov    -0x354(%rbp),%eax
sub    $0x40,%eax
je     16a2 <main+0x542>
jmp    1574 <main+0x414>
mov    -0x354(%rbp),%eax
sub    $0x80,%eax
je     164e <main+0x4ee>
jmp    158a <main+0x42a>
mov    -0x354(%rbp),%eax
sub    $0x100,%eax
je     1630 <main+0x4d0>
jmp    15a0 <main+0x440>
mov    -0x354(%rbp),%eax
sub    $0x200,%eax
je     161a <main+0x4ba>
jmp    15b6 <main+0x456>
mov    -0x354(%rbp),%eax
sub    $0x400,%eax
je     15fe <main+0x49e>
jmp    15cc <main+0x46c>
mov    -0x354(%rbp),%eax
sub    $0x800,%eax
jne    17a4 <main+0x644>
jmp    15e2 <main+0x482>
movzwl -0x332(%rbp),%ecx
movzwl -0x332(%rbp),%eax
xor    %ecx,%eax
mov    %ax,-0x332(%rbp)
jmp    17a4 <main+0x644>
movzwl -0x33c(%rbp),%ecx
movzwl -0x33c(%rbp),%eax
xor    %ecx,%eax
mov    %ax,-0x33c(%rbp)
jmp    17a4 <main+0x644>
movzwl -0x332(%rbp),%eax
xor    $0xffffffff,%eax
mov    %ax,-0x332(%rbp)
jmp    17a4 <main+0x644>
cmpw   $0x0,-0x33c(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %ax,-0x33c(%rbp)
jmp    17a4 <main+0x644>
movzwl -0x332(%rbp),%eax
and    $0x1,%eax
shl    $0xf,%eax
mov    %ax,-0x33c(%rbp)
movzwl -0x332(%rbp),%eax
sar    $0x1,%eax
mov    %ax,-0x332(%rbp)
movzwl -0x332(%rbp),%eax
and    $0x7fff,%eax
mov    %ax,-0x332(%rbp)
movzwl -0x33c(%rbp),%ecx
movzwl -0x332(%rbp),%eax
or     %ecx,%eax
mov    %ax,-0x332(%rbp)
jmp    17a4 <main+0x644>
movzwl -0x332(%rbp),%eax
and    $0x8000,%eax
sar    $0xf,%eax
mov    %ax,-0x33c(%rbp)
movzwl -0x332(%rbp),%eax
shl    $0x1,%eax
mov    %ax,-0x332(%rbp)
movzwl -0x33c(%rbp),%ecx
movzwl -0x332(%rbp),%eax
or     %ecx,%eax
mov    %ax,-0x332(%rbp)
jmp    17a4 <main+0x644>
mov    -0x332(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x332(%rbp)
jmp    17a4 <main+0x644>
movzwl -0x332(%rbp),%eax
sar    $0xf,%eax
cmp    $0x0,%eax
jne    1720 <main+0x5c0>
movzwl -0x334(%rbp),%eax
add    $0x1,%eax
mov    %ax,-0x334(%rbp)
jmp    17a4 <main+0x644>
movzwl -0x332(%rbp),%eax
sar    $0xf,%eax
cmp    $0x1,%eax
jne    1749 <main+0x5e9>
movzwl -0x334(%rbp),%eax
add    $0x1,%eax
mov    %ax,-0x334(%rbp)
jmp    17a4 <main+0x644>
movzwl -0x332(%rbp),%eax
cmp    $0x0,%eax
jne    176f <main+0x60f>
movzwl -0x334(%rbp),%eax
add    $0x1,%eax
mov    %ax,-0x334(%rbp)
jmp    17a4 <main+0x644>
movzwl -0x33c(%rbp),%eax
cmp    $0x0,%eax
jne    1795 <main+0x635>
movzwl -0x334(%rbp),%eax
add    $0x1,%eax
mov    %ax,-0x334(%rbp)
jmp    17a4 <main+0x644>
mov    $0x2,%edi
call   1070 <exit@plt>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x3,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
jmp    228d <main+0x112d>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x33a(%rbp),%eax
and    $0x7000,%eax
mov    %eax,-0x358(%rbp)
je     18ae <main+0x74e>
jmp    182a <main+0x6ca>
mov    -0x358(%rbp),%eax
sub    $0x1000,%eax
je     1a20 <main+0x8c0>
jmp    1840 <main+0x6e0>
mov    -0x358(%rbp),%eax
sub    $0x2000,%eax
je     1b92 <main+0xa32>
jmp    1856 <main+0x6f6>
mov    -0x358(%rbp),%eax
sub    $0x3000,%eax
je     1cfb <main+0xb9b>
jmp    186c <main+0x70c>
mov    -0x358(%rbp),%eax
sub    $0x4000,%eax
je     1e0d <main+0xcad>
jmp    1882 <main+0x722>
mov    -0x358(%rbp),%eax
sub    $0x5000,%eax
je     1f24 <main+0xdc4>
jmp    1898 <main+0x738>
mov    -0x358(%rbp),%eax
sub    $0x6000,%eax
je     209f <main+0xf3f>
jmp    2288 <main+0x1128>
movzwl -0x33a(%rbp),%eax
and    $0x8000,%eax
cmp    $0x0,%eax
jne    18c8 <main+0x768>
jmp    1913 <main+0x7b3>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
ff
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x338(%rbp),%eax
cmp    $0x18f,%eax
jle    190e <main+0x7ae>
movzwl -0x338(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x338(%rbp)
jmp    1913 <main+0x7b3>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x3,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x338(%rbp),%eax
mov    -0x330(%rbp,%rax,2),%ax
ff
mov    %ax,-0x336(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x4,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x336(%rbp),%ecx
movzwl -0x332(%rbp),%eax
and    %ecx,%eax
mov    %ax,-0x332(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x5,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
jmp    2288 <main+0x1128>
movzwl -0x33a(%rbp),%eax
and    $0x8000,%eax
cmp    $0x0,%eax
jne    1a3a <main+0x8da>
jmp    1a85 <main+0x925>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
ff
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x338(%rbp),%eax
cmp    $0x18f,%eax
jle    1a80 <main+0x920>
movzwl -0x338(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x338(%rbp)
jmp    1a85 <main+0x925>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x3,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x338(%rbp),%eax
mov    -0x330(%rbp,%rax,2),%ax
ff
mov    %ax,-0x336(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x4,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x336(%rbp),%ecx
movzwl -0x332(%rbp),%eax
add    %ecx,%eax
mov    %ax,-0x332(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x5,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
jmp    2288 <main+0x1128>
movzwl -0x33a(%rbp),%eax
and    $0x8000,%eax
cmp    $0x0,%eax
jne    1bac <main+0xa4c>
jmp    1bf7 <main+0xa97>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
ff
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x338(%rbp),%eax
cmp    $0x18f,%eax
jle    1bf2 <main+0xa92>
movzwl -0x338(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x338(%rbp)
jmp    1bf7 <main+0xa97>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x3,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x338(%rbp),%eax
mov    -0x330(%rbp,%rax,2),%ax
ff
mov    %ax,-0x336(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x4,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
mov    -0x336(%rbp),%ax
mov    %ax,-0x332(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x5,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
jmp    2288 <main+0x1128>
movzwl -0x33a(%rbp),%eax
and    $0x8000,%eax
cmp    $0x0,%eax
jne    1d15 <main+0xbb5>
jmp    1d60 <main+0xc00>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
ff
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x338(%rbp),%eax
cmp    $0x18f,%eax
jle    1d5b <main+0xbfb>
movzwl -0x338(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x338(%rbp)
jmp    1d60 <main+0xc00>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x3,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
mov    -0x332(%rbp),%cx
movzwl -0x338(%rbp),%eax
mov    %cx,-0x330(%rbp,%rax,2)
ff
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x4,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
jmp    2288 <main+0x1128>
movzwl -0x33a(%rbp),%eax
and    $0x8000,%eax
cmp    $0x0,%eax
jne    1e27 <main+0xcc7>
jmp    1e72 <main+0xd12>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
ff
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x338(%rbp),%eax
cmp    $0x18f,%eax
jle    1e6d <main+0xd0d>
movzwl -0x338(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x338(%rbp)
jmp    1e72 <main+0xd12>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x3,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
ff
and    $0xfff,%eax
mov    %ax,-0x334(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x4,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
jmp    2288 <main+0x1128>
movzwl -0x33a(%rbp),%eax
and    $0x8000,%eax
cmp    $0x0,%eax
jne    1f3e <main+0xdde>
jmp    1f89 <main+0xe29>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
ff
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x338(%rbp),%eax
cmp    $0x18f,%eax
jle    1f84 <main+0xe24>
movzwl -0x338(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x338(%rbp)
jmp    1f89 <main+0xe29>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x3,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
mov    -0x334(%rbp),%cx
movzwl -0x338(%rbp),%eax
mov    %cx,-0x330(%rbp,%rax,2)
ff
mov    -0x338(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x338(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x4,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
mov    -0x338(%rbp),%ax
mov    %ax,-0x334(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x5,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
jmp    2288 <main+0x1128>
movzwl -0x33a(%rbp),%eax
and    $0x8000,%eax
cmp    $0x0,%eax
jne    20b9 <main+0xf59>
jmp    2104 <main+0xfa4>
movzwl -0x338(%rbp),%eax
movzwl -0x330(%rbp,%rax,2),%eax
ff
and    $0xfff,%eax
mov    %ax,-0x338(%rbp)
movzwl -0x338(%rbp),%eax
cmp    $0x18f,%eax
jle    20ff <main+0xf9f>
movzwl -0x338(%rbp),%eax
mov    $0x190,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x338(%rbp)
jmp    2104 <main+0xfa4>
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x3,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
movzwl -0x338(%rbp),%eax
mov    -0x330(%rbp,%rax,2),%ax
ff
mov    %ax,-0x336(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x4,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
mov    -0x336(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x336(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x5,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
mov    -0x336(%rbp),%cx
movzwl -0x338(%rbp),%eax
mov    %cx,-0x330(%rbp,%rax,2)
ff
movzwl -0x336(%rbp),%eax
cmp    $0x0,%eax
jne    223f <main+0x10df>
mov    -0x334(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x334(%rbp)
movzwl -0x332(%rbp),%esi
movzwl -0x334(%rbp),%edx
movzwl -0x336(%rbp),%ecx
movzwl -0x338(%rbp),%r8d
ff
movzwl -0x33a(%rbp),%r9d
ff
movzwl -0x33c(%rbp),%r10d
ff
lea    -0x330(%rbp),%rax
mov    $0x6,%edi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <print@plt>
jmp    228d <main+0x112d>
lea    0xd6c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x350(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x350(%rbp)
jmp    134e <main+0x1ee>
jmp    22b4 <main+0x1154>
mov    -0x34c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34c(%rbp)
jmp    131e <main+0x1be>
xor    %eax,%eax
add    $0x370,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x378,%rsp
xor    %edi,%edi
xor    %eax,%eax
call   1060 <time@plt>
mov    %eax,%edi
xor    %eax,%eax
call   1050 <srand@plt>
xor    %ebx,%ebx
jmp    11cc <main+0x6c>
nopw   0x0(%rax,%rax,1)
shl    $0xc,%ebp
xor    %eax,%eax
call   1080 <rand@plt>
cltq
imul   $0x52f4fb77,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
shr    $0x27,%rcx
add    %edx,%ecx
imul   $0x18b,%ecx,%ecx
sub    %ecx,%eax
add    %eax,%ebp
mov    %bp,0x50(%rsp,%rbx,2)
add    $0x1,%rbx
cmp    $0x190,%rbx
je     1231 <main+0xd1>
xor    %eax,%eax
call   1080 <rand@plt>
cltq
imul   $0xffffffff92492493,%rax,%rcx
shr    $0x20,%rcx
add    %eax,%ecx
mov    %ecx,%edx
shr    $0x1f,%edx
sar    $0x3,%ecx
add    %edx,%ecx
mov    %ecx,%edx
shl    $0x4,%edx
mov    %ecx,%ebp
sub    %edx,%ebp
add    %ecx,%ebp
add    %eax,%ebp
cmp    $0x7,%ebp
jne    1190 <main+0x30>
xor    %eax,%eax
call   1080 <rand@plt>
movslq %eax,%rcx
imul   $0x2aaaaaab,%rcx,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
shr    $0x21,%rax
add    %edx,%eax
shl    $0x2,%eax
lea    (%rax,%rax,2),%eax
sub    %eax,%ecx
mov    $0x1,%ebp
shl    %cl,%ebp
mov    $0x7000,%ax
jmp    11b8 <main+0x58>
xor    %eax,%eax
call   1080 <rand@plt>
xor    %eax,%eax
call   1080 <rand@plt>
cltq
imul   $0xffffffff80080081,%rax,%r12
shr    $0x20,%r12
add    %eax,%r12d
mov    %r12d,%ecx
shr    $0x1f,%ecx
shr    $0xb,%r12d
add    %ecx,%r12d
mov    %r12d,%ecx
shl    $0xc,%ecx
sub    %ecx,%r12d
add    %eax,%r12d
xor    %eax,%eax
call   1080 <rand@plt>
cltq
imul   $0xffffffff80080081,%rax,%rdx
shr    $0x20,%rdx
add    %eax,%edx
mov    %edx,%ecx
shr    $0x1f,%ecx
shr    $0xb,%edx
add    %ecx,%edx
mov    %edx,%ecx
shl    $0xc,%ecx
sub    %ecx,%edx
add    %eax,%edx
mov    %rdx,0x40(%rsp)
xor    %eax,%eax
call   1080 <rand@plt>
movslq %eax,%rdx
imul   $0x51eb851f,%rdx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
shr    $0x27,%rax
add    %ecx,%eax
imul   $0x190,%eax,%eax
sub    %eax,%edx
mov    %rdx,0x28(%rsp)
xor    %eax,%eax
call   1080 <rand@plt>
cltq
imul   $0xffffffff80080081,%rax,%r13
shr    $0x20,%r13
add    %eax,%r13d
mov    %r13d,%ecx
shr    $0x1f,%ecx
shr    $0xb,%r13d
add    %ecx,%r13d
mov    %r13d,%ecx
shl    $0xc,%ecx
sub    %ecx,%r13d
add    %eax,%r13d
xor    %eax,%eax
call   1080 <rand@plt>
mov    %eax,%ecx
shr    $0x1f,%ecx
add    %eax,%ecx
and    $0xfffe,%ecx
sub    %ecx,%eax
mov    %eax,0x1c(%rsp)
xor    %eax,%eax
jmp    1320 <main+0x1c0>
nop
mov    0x4c(%rsp),%eax
add    $0x1,%eax
cmp    $0x3,%eax
je     1c38 <main+0xad8>
mov    %eax,0x4c(%rsp)
xor    %eax,%eax
call   1080 <rand@plt>
movslq %eax,%rdx
imul   $0x52f4fb77,%rdx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
shr    $0x27,%rax
add    %ecx,%eax
imul   $0x18b,%eax,%eax
sub    %eax,%edx
mov    $0x5,%ebx
jmp    13ba <main+0x25a>
mov    0x38(%rsp),%rcx
add    $0x2,%ecx
test   %r12w,%r12w
mov    0x8(%rsp),%eax
cmove  %ecx,%eax
mov    %eax,0x8(%rsp)
movzwl %r12w,%esi
mov    0x8(%rsp),%r15d
movzwl %r15w,%edx
movzwl 0x1c(%rsp),%ebp
mov    $0x3,%edi
mov    0x10(%rsp),%ecx
mov    %r14,0x28(%rsp)
mov    %r14d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbx
push   %rbx
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
mov    0x18(%rsp),%ebx
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15d,%edx
add    $0xffffffff,%ebx
je     1310 <main+0x1b0>
mov    %rdx,0x38(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r12,0x30(%rsp)
movzwl %r12w,%r14d
movzwl %dx,%r12d
movzwl 0x40(%rsp),%r15d
movzwl 0x28(%rsp),%r8d
movzwl %r13w,%ebx
movzwl 0x1c(%rsp),%ebp
mov    $0xffffffff,%edi
mov    %r14d,%esi
mov    %r12d,%edx
mov    %r15d,%ecx
mov    %ebx,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%r13
push   %r13
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
xor    %edi,%edi
mov    %r14d,%esi
mov    %r12d,%edx
mov    %r15d,%ecx
mov    %r12d,%r8d
mov    %ebx,%r9d
xor    %eax,%eax
push   %r13
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
movzwl 0x50(%rsp,%r12,2),%ebx
mov    0x38(%rsp),%rax
add    $0x1,%eax
mov    %eax,0x8(%rsp)
movzwl %ax,%r13d
mov    $0x1,%edi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %r15d,%ecx
mov    %r12d,%r8d
mov    %ebx,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%r12
push   %r12
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
mov    %ebx,%eax
and    $0xfff,%eax
mov    $0x2,%edi
mov    %r14d,0xc(%rsp)
mov    %r14d,%esi
mov    %rax,%r14
mov    %r13d,0x14(%rsp)
mov    %r13d,%edx
mov    %r15d,0x10(%rsp)
mov    %r15d,%ecx
mov    %r14d,%r8d
mov    %ebx,%r9d
xor    %eax,%eax
push   %r12
mov    %rbx,%r13
mov    %rbp,0x28(%rsp)
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
mov    %r13d,%eax
and    $0x7000,%eax
cmp    $0x7000,%eax
jne    1500 <main+0x3a0>
cmp    $0x7f,%r14d
jg     15f0 <main+0x490>
lea    -0x1(%r14),%eax
cmp    $0x3f,%eax
mov    0x30(%rsp),%r12
ja     1368 <main+0x208>
lea    0xb42(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x38(%rsp),%rcx
add    $0x2,%ecx
cmpw   $0x0,0x1c(%rsp)
jmp    135d <main+0x1fd>
cs nopw 0x0(%rax,%rax,1)
movzwl 0x50(%rsp,%r14,2),%r14d
and    $0xfff,%r14d
shr    $0xc,%eax
cmp    $0x6,%eax
ja     165b <main+0x4fb>
lea    0xae0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
test   $0x8000,%r13d
je     1564 <main+0x404>
movzwl 0x50(%rsp,%r14,2),%r14d
and    $0xfff,%r14d
cmp    $0x190,%r14d
jb     1564 <main+0x404>
movzwl %r14w,%r14d
mov    %r14d,%eax
shr    $0x4,%eax
imul   $0xa3e,%eax,%eax
shr    $0x10,%eax
imul   $0x190,%eax,%eax
sub    %eax,%r14d
mov    %r14,0x28(%rsp)
movzwl %r14w,%r12d
mov    $0x3,%edi
mov    0xc(%rsp),%r14d
mov    %r14d,%esi
mov    0x14(%rsp),%r15d
mov    %r15d,%edx
mov    0x10(%rsp),%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbx
push   %rbx
push   0x28(%rsp)
call   1040 <print@plt>
add    $0x10,%rsp
movzwl 0x50(%rsp,%r12,2),%ebx
mov    $0x4,%edi
mov    %r14d,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbp
push   %rbp
mov    0x28(%rsp),%rbp
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
and    %ebx,%r14d
mov    $0x5,%edi
mov    %r14d,%esi
jmp    172b <main+0x5cb>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmp    $0x1ff,%r14d
mov    0x30(%rsp),%r12
jle    162d <main+0x4cd>
cmp    $0x200,%r14d
je     1b5e <main+0x9fe>
cmp    $0x400,%r14d
je     1b66 <main+0xa06>
cmp    $0x800,%r14d
jne    1368 <main+0x208>
xor    %r12d,%r12d
jmp    1368 <main+0x208>
cmp    $0x80,%r14d
je     1b73 <main+0xa13>
cmp    $0x100,%r14d
jne    1368 <main+0x208>
xor    %eax,%eax
cmpw   $0x0,0x1c(%rsp)
sete   %al
mov    %eax,0x1c(%rsp)
jmp    1368 <main+0x208>
mov    %r14,0x28(%rsp)
mov    0x18(%rsp),%ebx
mov    0x30(%rsp),%r12
mov    0x8(%rsp),%r15d
jmp    13a4 <main+0x244>
test   $0x8000,%r13d
je     16b2 <main+0x552>
movzwl %r14w,%eax
movzwl 0x50(%rsp,%rax,2),%r14d
and    $0xfff,%r14d
cmp    $0x190,%r14d
jb     16b2 <main+0x552>
movzwl %r14w,%r14d
mov    %r14d,%eax
shr    $0x4,%eax
imul   $0xa3e,%eax,%eax
shr    $0x10,%eax
imul   $0x190,%eax,%eax
sub    %eax,%r14d
mov    %r14,0x28(%rsp)
movzwl %r14w,%r12d
mov    $0x3,%edi
mov    0xc(%rsp),%r14d
mov    %r14d,%esi
mov    0x14(%rsp),%r15d
mov    %r15d,%edx
mov    0x10(%rsp),%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbx
push   %rbx
push   0x28(%rsp)
call   1040 <print@plt>
add    $0x10,%rsp
movzwl 0x50(%rsp,%r12,2),%ebx
mov    $0x4,%edi
mov    %r14d,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbp
push   %rbp
mov    0x28(%rsp),%rbp
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
add    %ebx,%r14d
movzwl %r14w,%esi
mov    $0x5,%edi
mov    %r15d,%edx
mov    %rbx,0x40(%rsp)
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbx
push   %rbx
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
mov    %r14d,%r12d
jmp    1839 <main+0x6d9>
test   $0x8000,%r13d
je     1794 <main+0x634>
movzwl %r14w,%eax
movzwl 0x50(%rsp,%rax,2),%r14d
and    $0xfff,%r14d
cmp    $0x190,%r14d
jb     1794 <main+0x634>
movzwl %r14w,%r14d
mov    %r14d,%eax
shr    $0x4,%eax
imul   $0xa3e,%eax,%eax
shr    $0x10,%eax
imul   $0x190,%eax,%eax
sub    %eax,%r14d
mov    %r14,0x28(%rsp)
movzwl %r14w,%r12d
mov    $0x3,%edi
mov    0xc(%rsp),%ebp
mov    %ebp,%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%r15
push   %r15
mov    0x28(%rsp),%r14
push   %r14
call   1040 <print@plt>
add    $0x10,%rsp
movzwl 0x50(%rsp,%r12,2),%eax
mov    %rax,0x30(%rsp)
movzwl %ax,%ebx
mov    $0x4,%edi
mov    %ebp,%esi
mov    0x14(%rsp),%r15d
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbp
push   %rbp
push   %r14
call   1040 <print@plt>
add    $0x10,%rsp
mov    $0x5,%edi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    0x30(%rsp),%r12
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbp
push   %rbp
push   %r14
call   1040 <print@plt>
add    $0x10,%rsp
mov    %r12d,%eax
mov    %rax,0x40(%rsp)
mov    0x18(%rsp),%ebx
mov    0x8(%rsp),%r15d
jmp    13a4 <main+0x244>
test   $0x8000,%r13d
jne    1b86 <main+0xa26>
mov    0x8(%rsp),%r15d
jmp    1bc1 <main+0xa61>
test   $0x8000,%r13d
je     189d <main+0x73d>
movzwl %r14w,%eax
movzwl 0x50(%rsp,%rax,2),%r14d
and    $0xfff,%r14d
cmp    $0x190,%r14d
jb     189d <main+0x73d>
movzwl %r14w,%r14d
mov    %r14d,%eax
shr    $0x4,%eax
imul   $0xa3e,%eax,%eax
shr    $0x10,%eax
imul   $0x190,%eax,%eax
sub    %eax,%r14d
mov    %r14,0x28(%rsp)
movzwl %r14w,%r12d
mov    $0x3,%edi
mov    0xc(%rsp),%r14d
mov    %r14d,%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbx
push   %rbx
mov    0x28(%rsp),%rbp
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
movzwl 0x50(%rsp,%r12,2),%r15d
and    $0xfff,%r15d
mov    $0x4,%edi
mov    %r14d,%esi
mov    %r15d,%edx
mov    0x10(%rsp),%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
push   %rbx
push   %rbp
jmp    1c21 <main+0xac1>
test   $0x8000,%r13d
je     1942 <main+0x7e2>
movzwl %r14w,%eax
movzwl 0x50(%rsp,%rax,2),%r14d
and    $0xfff,%r14d
cmp    $0x190,%r14d
jb     1942 <main+0x7e2>
movzwl %r14w,%r14d
mov    %r14d,%eax
shr    $0x4,%eax
imul   $0xa3e,%eax,%eax
shr    $0x10,%eax
imul   $0x190,%eax,%eax
sub    %eax,%r14d
movzwl %r14w,%r12d
mov    $0x3,%edi
mov    %r14,%rbx
mov    0xc(%rsp),%r14d
mov    %r14d,%esi
mov    0x14(%rsp),%ebp
mov    %ebp,%edx
mov    0x10(%rsp),%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%r15
push   %r15
push   0x28(%rsp)
call   1040 <print@plt>
add    $0x10,%rsp
mov    %bp,0x50(%rsp,%r12,2)
lea    0x1(%rbx),%r12d
movzwl %r12w,%ebx
mov    $0x4,%edi
mov    %r14d,%esi
mov    %ebp,%edx
mov    0x10(%rsp),%r15d
mov    %r15d,%ecx
mov    %ebx,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbp
push   %rbp
mov    0x28(%rsp),%rbp
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
mov    $0x5,%edi
mov    %r14d,%esi
mov    %ebx,%edx
mov    %r15d,%ecx
mov    %ebx,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbx
push   %rbx
mov    %r12d,%r15d
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
mov    %r15d,%eax
mov    %rax,0x28(%rsp)
jmp    1c2a <main+0xaca>
test   $0x8000,%r13d
je     1a2d <main+0x8cd>
movzwl %r14w,%eax
movzwl 0x50(%rsp,%rax,2),%r14d
and    $0xfff,%r14d
cmp    $0x190,%r14d
jb     1a2d <main+0x8cd>
movzwl %r14w,%r14d
mov    %r14d,%eax
shr    $0x4,%eax
imul   $0xa3e,%eax,%eax
shr    $0x10,%eax
imul   $0x190,%eax,%eax
sub    %eax,%r14d
mov    %r14,0x28(%rsp)
movzwl %r14w,%r12d
mov    $0x3,%edi
mov    0xc(%rsp),%ebp
mov    %ebp,%esi
mov    0x14(%rsp),%r15d
mov    %r15d,%edx
mov    0x10(%rsp),%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbx
push   %rbx
mov    0x28(%rsp),%rbx
push   %rbx
mov    %rbx,%r14
call   1040 <print@plt>
add    $0x10,%rsp
movzwl 0x50(%rsp,%r12,2),%ebx
mov    $0x4,%edi
mov    %ebp,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbp
push   %rbp
push   %r14
call   1040 <print@plt>
add    $0x10,%rsp
mov    0x38(%rsp),%r14
add    $0x2,%r14d
inc    %bx
mov    %rbx,0x40(%rsp)
movzwl %bx,%ebx
cmovne %r15d,%r14d
mov    $0x5,%edi
mov    0xc(%rsp),%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%r15
push   %r15
mov    0x28(%rsp),%rbp
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
mov    %bx,0x50(%rsp,%r12,2)
movzwl %r14w,%edx
mov    $0x6,%edi
mov    0xc(%rsp),%esi
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
push   %r15
push   %rbp
call   1040 <print@plt>
add    $0x10,%rsp
mov    %r14d,%r15d
jmp    1c2a <main+0xaca>
mov    0x38(%rsp),%rcx
add    $0x2,%ecx
testl  $0x8000,0xc(%rsp)
mov    0x8(%rsp),%eax
cmovne %ecx,%eax
jmp    1364 <main+0x204>
mov    0x38(%rsp),%rcx
add    $0x2,%ecx
test   %r12w,%r12w
mov    0x8(%rsp),%eax
cmovns %ecx,%eax
jmp    1364 <main+0x204>
add    $0x1,%r12d
jmp    1368 <main+0x208>
mov    0xc(%rsp),%ebp
shr    $0xf,%ebp
rol    %r12w
mov    %ebp,0x1c(%rsp)
jmp    1368 <main+0x208>
not    %r12d
jmp    1368 <main+0x208>
movl   $0x0,0x1c(%rsp)
jmp    1368 <main+0x208>
mov    %r12d,%eax
shl    $0xf,%eax
mov    %eax,0x1c(%rsp)
ror    %r12w
jmp    1368 <main+0x208>
movzwl %r14w,%eax
movzwl 0x50(%rsp,%rax,2),%r14d
and    $0xfff,%r14d
cmp    $0x190,%r14d
mov    0x8(%rsp),%r15d
jb     1bc1 <main+0xa61>
movzwl %r14w,%r14d
mov    %r14d,%eax
shr    $0x4,%eax
imul   $0xa3e,%eax,%eax
shr    $0x10,%eax
imul   $0x190,%eax,%eax
sub    %eax,%r14d
mov    %r14,0x28(%rsp)
movzwl %r14w,%r12d
mov    $0x3,%edi
mov    0xc(%rsp),%ebp
mov    %ebp,%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%r14d
mov    %r14d,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbx
push   %rbx
mov    0x28(%rsp),%rbx
push   %rbx
call   1040 <print@plt>
add    $0x10,%rsp
mov    %bp,0x50(%rsp,%r12,2)
mov    $0x4,%edi
mov    %ebp,%esi
mov    0x14(%rsp),%edx
mov    %r14d,%ecx
mov    %r12d,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
lea    0x50(%rsp),%rbp
push   %rbp
push   %rbx
call   1040 <print@plt>
add    $0x10,%rsp
mov    0x18(%rsp),%ebx
mov    0x30(%rsp),%r12
jmp    13a4 <main+0x244>
xor    %eax,%eax
add    $0x378,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x2,%edi
call   1070 <exit@plt>

LLVM IR (-O0):
@.str = [2 x i8] c"\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [400 x i16]
%7 = alloca i16
%8 = alloca i16
%9 = alloca i16
%10 = alloca i16
%11 = alloca i16
%12 = alloca i16
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%18 = call i32 (i32, ...) bitcast (i32 (...)* @time to i32 (i32, ...)*)(i32 0)
%19 = call i32 (i32, ...) bitcast (i32 (...)* @srand to i32 (i32, ...)*)(i32 %18)
store i32 0, i32* %14
br label %20
20: ; preds = %63, %2
%21 = load i32, i32* %14
%22 = icmp slt i32 %21, 400
br i1 %22, label %23, label %66
23: ; preds = %20
%24 = call i32 (...) @rand()
%25 = srem i32 %24, 14
store i32 %25, i32* %13
%26 = load i32, i32* %13
%27 = icmp eq i32 %26, 7
br i1 %27, label %28, label %46
28: ; preds = %23
%29 = load i32, i32* %13
%30 = shl i32 %29, 12
%31 = trunc i32 %30 to i16
%32 = load i32, i32* %14
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %33
store i16 %31, i16* %34
%35 = call i32 (...) @rand()
%36 = srem i32 %35, 12
store i32 %36, i32* %13
%37 = load i32, i32* %13
%38 = shl i32 1, %37
%39 = load i32, i32* %14
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %40
%42 = load i16, i16* %41
%43 = zext i16 %42 to i32
%44 = add nsw i32 %43, %38
%45 = trunc i32 %44 to i16
store i16 %45, i16* %41
br label %62
46: ; preds = %23
%47 = load i32, i32* %13
%48 = shl i32 %47, 12
%49 = trunc i32 %48 to i16
%50 = load i32, i32* %14
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %51
store i16 %49, i16* %52
%53 = call i32 (...) @rand()
%54 = srem i32 %53, 395
%55 = load i32, i32* %14
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %56
%58 = load i16, i16* %57
%59 = zext i16 %58 to i32
%60 = add nsw i32 %59, %54
%61 = trunc i32 %60 to i16
store i16 %61, i16* %57
br label %62
62: ; preds = %46, %28
br label %63
63: ; preds = %62
%64 = load i32, i32* %14
%65 = add nsw i32 %64, 1
store i32 %65, i32* %14
br label %20
66: ; preds = %20
%67 = call i32 (...) @rand()
%68 = srem i32 %67, 400
%69 = trunc i32 %68 to i16
store i16 %69, i16* %8
%70 = call i32 (...) @rand()
%71 = srem i32 %70, 4095
%72 = trunc i32 %71 to i16
store i16 %72, i16* %7
%73 = call i32 (...) @rand()
%74 = srem i32 %73, 4095
%75 = trunc i32 %74 to i16
store i16 %75, i16* %9
%76 = call i32 (...) @rand()
%77 = srem i32 %76, 400
%78 = trunc i32 %77 to i16
store i16 %78, i16* %10
%79 = call i32 (...) @rand()
%80 = srem i32 %79, 4095
%81 = trunc i32 %80 to i16
store i16 %81, i16* %11
%82 = call i32 (...) @rand()
%83 = srem i32 %82, 2
%84 = trunc i32 %83 to i16
store i16 %84, i16* %12
store i32 0, i32* %16
br label %85
85: ; preds = %819, %66
%86 = load i32, i32* %16
%87 = icmp slt i32 %86, 3
br i1 %87, label %88, label %822
88: ; preds = %85
%89 = call i32 (...) @rand()
%90 = srem i32 %89, 395
%91 = trunc i32 %90 to i16
store i16 %91, i16* %8
store i32 0, i32* %17
br label %92
92: ; preds = %815, %88
%93 = load i32, i32* %17
%94 = icmp slt i32 %93, 5
br i1 %94, label %95, label %818
95: ; preds = %92
%96 = load i16, i16* %7
%97 = zext i16 %96 to i32
%98 = load i16, i16* %8
%99 = zext i16 %98 to i32
%100 = load i16, i16* %9
%101 = zext i16 %100 to i32
%102 = load i16, i16* %10
%103 = zext i16 %102 to i32
%104 = load i16, i16* %11
%105 = zext i16 %104 to i32
%106 = load i16, i16* %12
%107 = zext i16 %106 to i32
%108 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%109 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 -1, i32 %97, i32 %99, i32 %101, i32 %103, i32 %105, i32 %107, i16* %108)
%110 = load i16, i16* %8
store i16 %110, i16* %10
%111 = load i16, i16* %7
%112 = zext i16 %111 to i32
%113 = load i16, i16* %8
%114 = zext i16 %113 to i32
%115 = load i16, i16* %9
%116 = zext i16 %115 to i32
%117 = load i16, i16* %10
%118 = zext i16 %117 to i32
%119 = load i16, i16* %11
%120 = zext i16 %119 to i32
%121 = load i16, i16* %12
%122 = zext i16 %121 to i32
%123 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%124 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 0, i32 %112, i32 %114, i32 %116, i32 %118, i32 %120, i32 %122, i16* %123)
%125 = load i16, i16* %10
%126 = zext i16 %125 to i64
%127 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %126
%128 = load i16, i16* %127
store i16 %128, i16* %11
%129 = load i16, i16* %8
%130 = add i16 %129, 1
store i16 %130, i16* %8
%131 = load i16, i16* %7
%132 = zext i16 %131 to i32
%133 = load i16, i16* %8
%134 = zext i16 %133 to i32
%135 = load i16, i16* %9
%136 = zext i16 %135 to i32
%137 = load i16, i16* %10
%138 = zext i16 %137 to i32
%139 = load i16, i16* %11
%140 = zext i16 %139 to i32
%141 = load i16, i16* %12
%142 = zext i16 %141 to i32
%143 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%144 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 1, i32 %132, i32 %134, i32 %136, i32 %138, i32 %140, i32 %142, i16* %143)
%145 = load i16, i16* %11
%146 = zext i16 %145 to i32
%147 = and i32 4095, %146
%148 = trunc i32 %147 to i16
store i16 %148, i16* %10
%149 = load i16, i16* %7
%150 = zext i16 %149 to i32
%151 = load i16, i16* %8
%152 = zext i16 %151 to i32
%153 = load i16, i16* %9
%154 = zext i16 %153 to i32
%155 = load i16, i16* %10
%156 = zext i16 %155 to i32
%157 = load i16, i16* %11
%158 = zext i16 %157 to i32
%159 = load i16, i16* %12
%160 = zext i16 %159 to i32
%161 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%162 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 2, i32 %150, i32 %152, i32 %154, i32 %156, i32 %158, i32 %160, i16* %161)
%163 = load i16, i16* %11
%164 = zext i16 %163 to i32
%165 = and i32 28672, %164
%166 = icmp eq i32 %165, 28672
br i1 %166, label %167, label %293
167: ; preds = %95
%168 = load i16, i16* %11
%169 = zext i16 %168 to i32
%170 = and i32 4095, %169
switch i32 %170, label %278 [
i32 2048, label %171
i32 1024, label %178
i32 512, label %185
i32 256, label %190
i32 128, label %196
i32 64, label %216
i32 32, label %232
i32 16, label %235
i32 8, label %246
i32 4, label %257
i32 2, label %267
i32 1, label %277
]
171: ; preds = %167
%172 = load i16, i16* %7
%173 = zext i16 %172 to i32
%174 = load i16, i16* %7
%175 = zext i16 %174 to i32
%176 = xor i32 %175, %173
%177 = trunc i32 %176 to i16
store i16 %177, i16* %7
br label %278
178: ; preds = %167
%179 = load i16, i16* %12
%180 = zext i16 %179 to i32
%181 = load i16, i16* %12
%182 = zext i16 %181 to i32
%183 = xor i32 %182, %180
%184 = trunc i32 %183 to i16
store i16 %184, i16* %12
br label %278
185: ; preds = %167
%186 = load i16, i16* %7
%187 = zext i16 %186 to i32
%188 = xor i32 %187, -1
%189 = trunc i32 %188 to i16
store i16 %189, i16* %7
br label %278
190: ; preds = %167
%191 = load i16, i16* %12
%192 = icmp ne i16 %191, 0
%193 = xor i1 %192, true
%194 = zext i1 %193 to i32
%195 = trunc i32 %194 to i16
store i16 %195, i16* %12
br label %278
196: ; preds = %167
%197 = load i16, i16* %7
%198 = zext i16 %197 to i32
%199 = and i32 1, %198
%200 = shl i32 %199, 15
%201 = trunc i32 %200 to i16
store i16 %201, i16* %12
%202 = load i16, i16* %7
%203 = zext i16 %202 to i32
%204 = ashr i32 %203, 1
%205 = trunc i32 %204 to i16
store i16 %205, i16* %7
%206 = load i16, i16* %7
%207 = zext i16 %206 to i32
%208 = and i32 %207, 32767
%209 = trunc i32 %208 to i16
store i16 %209, i16* %7
%210 = load i16, i16* %12
%211 = zext i16 %210 to i32
%212 = load i16, i16* %7
%213 = zext i16 %212 to i32
%214 = or i32 %213, %211
%215 = trunc i32 %214 to i16
store i16 %215, i16* %7
br label %278
216: ; preds = %167
%217 = load i16, i16* %7
%218 = zext i16 %217 to i32
%219 = and i32 32768, %218
%220 = ashr i32 %219, 15
%221 = trunc i32 %220 to i16
store i16 %221, i16* %12
%222 = load i16, i16* %7
%223 = zext i16 %222 to i32
%224 = shl i32 %223, 1
%225 = trunc i32 %224 to i16
store i16 %225, i16* %7
%226 = load i16, i16* %12
%227 = zext i16 %226 to i32
%228 = load i16, i16* %7
%229 = zext i16 %228 to i32
%230 = or i32 %229, %227
%231 = trunc i32 %230 to i16
store i16 %231, i16* %7
br label %278
232: ; preds = %167
%233 = load i16, i16* %7
%234 = add i16 %233, 1
store i16 %234, i16* %7
br label %278
235: ; preds = %167
%236 = load i16, i16* %7
%237 = zext i16 %236 to i32
%238 = ashr i32 %237, 15
%239 = icmp eq i32 %238, 0
br i1 %239, label %240, label %245
240: ; preds = %235
%241 = load i16, i16* %8
%242 = zext i16 %241 to i32
%243 = add nsw i32 %242, 1
%244 = trunc i32 %243 to i16
store i16 %244, i16* %8
br label %245
245: ; preds = %240, %235
br label %278
246: ; preds = %167
%247 = load i16, i16* %7
%248 = zext i16 %247 to i32
%249 = ashr i32 %248, 15
%250 = icmp eq i32 %249, 1
br i1 %250, label %251, label %256
251: ; preds = %246
%252 = load i16, i16* %8
%253 = zext i16 %252 to i32
%254 = add nsw i32 %253, 1
%255 = trunc i32 %254 to i16
store i16 %255, i16* %8
br label %256
256: ; preds = %251, %246
br label %278
257: ; preds = %167
%258 = load i16, i16* %7
%259 = zext i16 %258 to i32
%260 = icmp eq i32 %259, 0
br i1 %260, label %261, label %266
261: ; preds = %257
%262 = load i16, i16* %8
%263 = zext i16 %262 to i32
%264 = add nsw i32 %263, 1
%265 = trunc i32 %264 to i16
store i16 %265, i16* %8
br label %266
266: ; preds = %261, %257
br label %278
267: ; preds = %167
%268 = load i16, i16* %12
%269 = zext i16 %268 to i32
%270 = icmp eq i32 %269, 0
br i1 %270, label %271, label %276
271: ; preds = %267
%272 = load i16, i16* %8
%273 = zext i16 %272 to i32
%274 = add nsw i32 %273, 1
%275 = trunc i32 %274 to i16
store i16 %275, i16* %8
br label %276
276: ; preds = %271, %267
br label %278
277: ; preds = %167
unreachable
278: ; preds = %167, %276, %266, %256, %245, %232, %216, %196, %190, %185, %178, %171
%279 = load i16, i16* %7
%280 = zext i16 %279 to i32
%281 = load i16, i16* %8
%282 = zext i16 %281 to i32
%283 = load i16, i16* %9
%284 = zext i16 %283 to i32
%285 = load i16, i16* %10
%286 = zext i16 %285 to i32
%287 = load i16, i16* %11
%288 = zext i16 %287 to i32
%289 = load i16, i16* %12
%290 = zext i16 %289 to i32
%291 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%292 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %280, i32 %282, i32 %284, i32 %286, i32 %288, i32 %290, i16* %291)
br label %813
293: ; preds = %95
%294 = load i16, i16* %10
%295 = zext i16 %294 to i64
%296 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %295
%297 = load i16, i16* %296
%298 = zext i16 %297 to i32
%299 = and i32 %298, 4095
%300 = trunc i32 %299 to i16
store i16 %300, i16* %10
%301 = load i16, i16* %11
%302 = zext i16 %301 to i32
%303 = and i32 %302, 28672
switch i32 %303, label %812 [
i32 0, label %304
i32 4096, label %380
i32 8192, label %456
i32 12288, label %527
i32 16384, label %583
i32 20480, label %642
i32 24576, label %715
]
304: ; preds = %293
%305 = load i16, i16* %11
%306 = zext i16 %305 to i32
%307 = and i32 %306, 32768
%308 = icmp eq i32 %307, 0
br i1 %308, label %309, label %310
309: ; preds = %304
br label %327
310: ; preds = %304
%311 = load i16, i16* %10
%312 = zext i16 %311 to i64
%313 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %312
%314 = load i16, i16* %313
%315 = zext i16 %314 to i32
%316 = and i32 %315, 4095
%317 = trunc i32 %316 to i16
store i16 %317, i16* %10
%318 = load i16, i16* %10
%319 = zext i16 %318 to i32
%320 = icmp sgt i32 %319, 399
br i1 %320, label %321, label %326
321: ; preds = %310
%322 = load i16, i16* %10
%323 = zext i16 %322 to i32
%324 = srem i32 %323, 400
%325 = trunc i32 %324 to i16
store i16 %325, i16* %10
br label %326
326: ; preds = %321, %310
br label %327
327: ; preds = %326, %309
%328 = load i16, i16* %7
%329 = zext i16 %328 to i32
%330 = load i16, i16* %8
%331 = zext i16 %330 to i32
%332 = load i16, i16* %9
%333 = zext i16 %332 to i32
%334 = load i16, i16* %10
%335 = zext i16 %334 to i32
%336 = load i16, i16* %11
%337 = zext i16 %336 to i32
%338 = load i16, i16* %12
%339 = zext i16 %338 to i32
%340 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%341 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %329, i32 %331, i32 %333, i32 %335, i32 %337, i32 %339, i16* %340)
%342 = load i16, i16* %10
%343 = zext i16 %342 to i64
%344 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %343
%345 = load i16, i16* %344
store i16 %345, i16* %9
%346 = load i16, i16* %7
%347 = zext i16 %346 to i32
%348 = load i16, i16* %8
%349 = zext i16 %348 to i32
%350 = load i16, i16* %9
%351 = zext i16 %350 to i32
%352 = load i16, i16* %10
%353 = zext i16 %352 to i32
%354 = load i16, i16* %11
%355 = zext i16 %354 to i32
%356 = load i16, i16* %12
%357 = zext i16 %356 to i32
%358 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%359 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %347, i32 %349, i32 %351, i32 %353, i32 %355, i32 %357, i16* %358)
%360 = load i16, i16* %9
%361 = zext i16 %360 to i32
%362 = load i16, i16* %7
%363 = zext i16 %362 to i32
%364 = and i32 %363, %361
%365 = trunc i32 %364 to i16
store i16 %365, i16* %7
%366 = load i16, i16* %7
%367 = zext i16 %366 to i32
%368 = load i16, i16* %8
%369 = zext i16 %368 to i32
%370 = load i16, i16* %9
%371 = zext i16 %370 to i32
%372 = load i16, i16* %10
%373 = zext i16 %372 to i32
%374 = load i16, i16* %11
%375 = zext i16 %374 to i32
%376 = load i16, i16* %12
%377 = zext i16 %376 to i32
%378 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%379 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %367, i32 %369, i32 %371, i32 %373, i32 %375, i32 %377, i16* %378)
br label %812
380: ; preds = %293
%381 = load i16, i16* %11
%382 = zext i16 %381 to i32
%383 = and i32 %382, 32768
%384 = icmp eq i32 %383, 0
br i1 %384, label %385, label %386
385: ; preds = %380
br label %403
386: ; preds = %380
%387 = load i16, i16* %10
%388 = zext i16 %387 to i64
%389 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %388
%390 = load i16, i16* %389
%391 = zext i16 %390 to i32
%392 = and i32 %391, 4095
%393 = trunc i32 %392 to i16
store i16 %393, i16* %10
%394 = load i16, i16* %10
%395 = zext i16 %394 to i32
%396 = icmp sgt i32 %395, 399
br i1 %396, label %397, label %402
397: ; preds = %386
%398 = load i16, i16* %10
%399 = zext i16 %398 to i32
%400 = srem i32 %399, 400
%401 = trunc i32 %400 to i16
store i16 %401, i16* %10
br label %402
402: ; preds = %397, %386
br label %403
403: ; preds = %402, %385
%404 = load i16, i16* %7
%405 = zext i16 %404 to i32
%406 = load i16, i16* %8
%407 = zext i16 %406 to i32
%408 = load i16, i16* %9
%409 = zext i16 %408 to i32
%410 = load i16, i16* %10
%411 = zext i16 %410 to i32
%412 = load i16, i16* %11
%413 = zext i16 %412 to i32
%414 = load i16, i16* %12
%415 = zext i16 %414 to i32
%416 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%417 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %405, i32 %407, i32 %409, i32 %411, i32 %413, i32 %415, i16* %416)
%418 = load i16, i16* %10
%419 = zext i16 %418 to i64
%420 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %419
%421 = load i16, i16* %420
store i16 %421, i16* %9
%422 = load i16, i16* %7
%423 = zext i16 %422 to i32
%424 = load i16, i16* %8
%425 = zext i16 %424 to i32
%426 = load i16, i16* %9
%427 = zext i16 %426 to i32
%428 = load i16, i16* %10
%429 = zext i16 %428 to i32
%430 = load i16, i16* %11
%431 = zext i16 %430 to i32
%432 = load i16, i16* %12
%433 = zext i16 %432 to i32
%434 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%435 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %423, i32 %425, i32 %427, i32 %429, i32 %431, i32 %433, i16* %434)
%436 = load i16, i16* %9
%437 = zext i16 %436 to i32
%438 = load i16, i16* %7
%439 = zext i16 %438 to i32
%440 = add nsw i32 %439, %437
%441 = trunc i32 %440 to i16
store i16 %441, i16* %7
%442 = load i16, i16* %7
%443 = zext i16 %442 to i32
%444 = load i16, i16* %8
%445 = zext i16 %444 to i32
%446 = load i16, i16* %9
%447 = zext i16 %446 to i32
%448 = load i16, i16* %10
%449 = zext i16 %448 to i32
%450 = load i16, i16* %11
%451 = zext i16 %450 to i32
%452 = load i16, i16* %12
%453 = zext i16 %452 to i32
%454 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%455 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %443, i32 %445, i32 %447, i32 %449, i32 %451, i32 %453, i16* %454)
br label %812
456: ; preds = %293
%457 = load i16, i16* %11
%458 = zext i16 %457 to i32
%459 = and i32 %458, 32768
%460 = icmp eq i32 %459, 0
br i1 %460, label %461, label %462
461: ; preds = %456
br label %479
462: ; preds = %456
%463 = load i16, i16* %10
%464 = zext i16 %463 to i64
%465 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %464
%466 = load i16, i16* %465
%467 = zext i16 %466 to i32
%468 = and i32 %467, 4095
%469 = trunc i32 %468 to i16
store i16 %469, i16* %10
%470 = load i16, i16* %10
%471 = zext i16 %470 to i32
%472 = icmp sgt i32 %471, 399
br i1 %472, label %473, label %478
473: ; preds = %462
%474 = load i16, i16* %10
%475 = zext i16 %474 to i32
%476 = srem i32 %475, 400
%477 = trunc i32 %476 to i16
store i16 %477, i16* %10
br label %478
478: ; preds = %473, %462
br label %479
479: ; preds = %478, %461
%480 = load i16, i16* %7
%481 = zext i16 %480 to i32
%482 = load i16, i16* %8
%483 = zext i16 %482 to i32
%484 = load i16, i16* %9
%485 = zext i16 %484 to i32
%486 = load i16, i16* %10
%487 = zext i16 %486 to i32
%488 = load i16, i16* %11
%489 = zext i16 %488 to i32
%490 = load i16, i16* %12
%491 = zext i16 %490 to i32
%492 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%493 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %481, i32 %483, i32 %485, i32 %487, i32 %489, i32 %491, i16* %492)
%494 = load i16, i16* %10
%495 = zext i16 %494 to i64
%496 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %495
%497 = load i16, i16* %496
store i16 %497, i16* %9
%498 = load i16, i16* %7
%499 = zext i16 %498 to i32
%500 = load i16, i16* %8
%501 = zext i16 %500 to i32
%502 = load i16, i16* %9
%503 = zext i16 %502 to i32
%504 = load i16, i16* %10
%505 = zext i16 %504 to i32
%506 = load i16, i16* %11
%507 = zext i16 %506 to i32
%508 = load i16, i16* %12
%509 = zext i16 %508 to i32
%510 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%511 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %499, i32 %501, i32 %503, i32 %505, i32 %507, i32 %509, i16* %510)
%512 = load i16, i16* %9
store i16 %512, i16* %7
%513 = load i16, i16* %7
%514 = zext i16 %513 to i32
%515 = load i16, i16* %8
%516 = zext i16 %515 to i32
%517 = load i16, i16* %9
%518 = zext i16 %517 to i32
%519 = load i16, i16* %10
%520 = zext i16 %519 to i32
%521 = load i16, i16* %11
%522 = zext i16 %521 to i32
%523 = load i16, i16* %12
%524 = zext i16 %523 to i32
%525 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%526 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %514, i32 %516, i32 %518, i32 %520, i32 %522, i32 %524, i16* %525)
br label %812
527: ; preds = %293
%528 = load i16, i16* %11
%529 = zext i16 %528 to i32
%530 = and i32 %529, 32768
%531 = icmp eq i32 %530, 0
br i1 %531, label %532, label %533
532: ; preds = %527
br label %550
533: ; preds = %527
%534 = load i16, i16* %10
%535 = zext i16 %534 to i64
%536 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %535
%537 = load i16, i16* %536
%538 = zext i16 %537 to i32
%539 = and i32 %538, 4095
%540 = trunc i32 %539 to i16
store i16 %540, i16* %10
%541 = load i16, i16* %10
%542 = zext i16 %541 to i32
%543 = icmp sgt i32 %542, 399
br i1 %543, label %544, label %549
544: ; preds = %533
%545 = load i16, i16* %10
%546 = zext i16 %545 to i32
%547 = srem i32 %546, 400
%548 = trunc i32 %547 to i16
store i16 %548, i16* %10
br label %549
549: ; preds = %544, %533
br label %550
550: ; preds = %549, %532
%551 = load i16, i16* %7
%552 = zext i16 %551 to i32
%553 = load i16, i16* %8
%554 = zext i16 %553 to i32
%555 = load i16, i16* %9
%556 = zext i16 %555 to i32
%557 = load i16, i16* %10
%558 = zext i16 %557 to i32
%559 = load i16, i16* %11
%560 = zext i16 %559 to i32
%561 = load i16, i16* %12
%562 = zext i16 %561 to i32
%563 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%564 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %552, i32 %554, i32 %556, i32 %558, i32 %560, i32 %562, i16* %563)
%565 = load i16, i16* %7
%566 = load i16, i16* %10
%567 = zext i16 %566 to i64
%568 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %567
store i16 %565, i16* %568
%569 = load i16, i16* %7
%570 = zext i16 %569 to i32
%571 = load i16, i16* %8
%572 = zext i16 %571 to i32
%573 = load i16, i16* %9
%574 = zext i16 %573 to i32
%575 = load i16, i16* %10
%576 = zext i16 %575 to i32
%577 = load i16, i16* %11
%578 = zext i16 %577 to i32
%579 = load i16, i16* %12
%580 = zext i16 %579 to i32
%581 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%582 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %570, i32 %572, i32 %574, i32 %576, i32 %578, i32 %580, i16* %581)
br label %812
583: ; preds = %293
%584 = load i16, i16* %11
%585 = zext i16 %584 to i32
%586 = and i32 %585, 32768
%587 = icmp eq i32 %586, 0
br i1 %587, label %588, label %589
588: ; preds = %583
br label %606
589: ; preds = %583
%590 = load i16, i16* %10
%591 = zext i16 %590 to i64
%592 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %591
%593 = load i16, i16* %592
%594 = zext i16 %593 to i32
%595 = and i32 %594, 4095
%596 = trunc i32 %595 to i16
store i16 %596, i16* %10
%597 = load i16, i16* %10
%598 = zext i16 %597 to i32
%599 = icmp sgt i32 %598, 399
br i1 %599, label %600, label %605
600: ; preds = %589
%601 = load i16, i16* %10
%602 = zext i16 %601 to i32
%603 = srem i32 %602, 400
%604 = trunc i32 %603 to i16
store i16 %604, i16* %10
br label %605
605: ; preds = %600, %589
br label %606
606: ; preds = %605, %588
%607 = load i16, i16* %7
%608 = zext i16 %607 to i32
%609 = load i16, i16* %8
%610 = zext i16 %609 to i32
%611 = load i16, i16* %9
%612 = zext i16 %611 to i32
%613 = load i16, i16* %10
%614 = zext i16 %613 to i32
%615 = load i16, i16* %11
%616 = zext i16 %615 to i32
%617 = load i16, i16* %12
%618 = zext i16 %617 to i32
%619 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%620 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %608, i32 %610, i32 %612, i32 %614, i32 %616, i32 %618, i16* %619)
%621 = load i16, i16* %10
%622 = zext i16 %621 to i64
%623 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %622
%624 = load i16, i16* %623
%625 = zext i16 %624 to i32
%626 = and i32 %625, 4095
%627 = trunc i32 %626 to i16
store i16 %627, i16* %8
%628 = load i16, i16* %7
%629 = zext i16 %628 to i32
%630 = load i16, i16* %8
%631 = zext i16 %630 to i32
%632 = load i16, i16* %9
%633 = zext i16 %632 to i32
%634 = load i16, i16* %10
%635 = zext i16 %634 to i32
%636 = load i16, i16* %11
%637 = zext i16 %636 to i32
%638 = load i16, i16* %12
%639 = zext i16 %638 to i32
%640 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%641 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %629, i32 %631, i32 %633, i32 %635, i32 %637, i32 %639, i16* %640)
br label %812
642: ; preds = %293
%643 = load i16, i16* %11
%644 = zext i16 %643 to i32
%645 = and i32 %644, 32768
%646 = icmp eq i32 %645, 0
br i1 %646, label %647, label %648
647: ; preds = %642
br label %665
648: ; preds = %642
%649 = load i16, i16* %10
%650 = zext i16 %649 to i64
%651 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %650
%652 = load i16, i16* %651
%653 = zext i16 %652 to i32
%654 = and i32 %653, 4095
%655 = trunc i32 %654 to i16
store i16 %655, i16* %10
%656 = load i16, i16* %10
%657 = zext i16 %656 to i32
%658 = icmp sgt i32 %657, 399
br i1 %658, label %659, label %664
659: ; preds = %648
%660 = load i16, i16* %10
%661 = zext i16 %660 to i32
%662 = srem i32 %661, 400
%663 = trunc i32 %662 to i16
store i16 %663, i16* %10
br label %664
664: ; preds = %659, %648
br label %665
665: ; preds = %664, %647
%666 = load i16, i16* %7
%667 = zext i16 %666 to i32
%668 = load i16, i16* %8
%669 = zext i16 %668 to i32
%670 = load i16, i16* %9
%671 = zext i16 %670 to i32
%672 = load i16, i16* %10
%673 = zext i16 %672 to i32
%674 = load i16, i16* %11
%675 = zext i16 %674 to i32
%676 = load i16, i16* %12
%677 = zext i16 %676 to i32
%678 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%679 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %667, i32 %669, i32 %671, i32 %673, i32 %675, i32 %677, i16* %678)
%680 = load i16, i16* %8
%681 = load i16, i16* %10
%682 = zext i16 %681 to i64
%683 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %682
store i16 %680, i16* %683
%684 = load i16, i16* %10
%685 = add i16 %684, 1
store i16 %685, i16* %10
%686 = load i16, i16* %7
%687 = zext i16 %686 to i32
%688 = load i16, i16* %8
%689 = zext i16 %688 to i32
%690 = load i16, i16* %9
%691 = zext i16 %690 to i32
%692 = load i16, i16* %10
%693 = zext i16 %692 to i32
%694 = load i16, i16* %11
%695 = zext i16 %694 to i32
%696 = load i16, i16* %12
%697 = zext i16 %696 to i32
%698 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%699 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %687, i32 %689, i32 %691, i32 %693, i32 %695, i32 %697, i16* %698)
%700 = load i16, i16* %10
store i16 %700, i16* %8
%701 = load i16, i16* %7
%702 = zext i16 %701 to i32
%703 = load i16, i16* %8
%704 = zext i16 %703 to i32
%705 = load i16, i16* %9
%706 = zext i16 %705 to i32
%707 = load i16, i16* %10
%708 = zext i16 %707 to i32
%709 = load i16, i16* %11
%710 = zext i16 %709 to i32
%711 = load i16, i16* %12
%712 = zext i16 %711 to i32
%713 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%714 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %702, i32 %704, i32 %706, i32 %708, i32 %710, i32 %712, i16* %713)
br label %812
715: ; preds = %293
%716 = load i16, i16* %11
%717 = zext i16 %716 to i32
%718 = and i32 %717, 32768
%719 = icmp eq i32 %718, 0
br i1 %719, label %720, label %721
720: ; preds = %715
br label %738
721: ; preds = %715
%722 = load i16, i16* %10
%723 = zext i16 %722 to i64
%724 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %723
%725 = load i16, i16* %724
%726 = zext i16 %725 to i32
%727 = and i32 %726, 4095
%728 = trunc i32 %727 to i16
store i16 %728, i16* %10
%729 = load i16, i16* %10
%730 = zext i16 %729 to i32
%731 = icmp sgt i32 %730, 399
br i1 %731, label %732, label %737
732: ; preds = %721
%733 = load i16, i16* %10
%734 = zext i16 %733 to i32
%735 = srem i32 %734, 400
%736 = trunc i32 %735 to i16
store i16 %736, i16* %10
br label %737
737: ; preds = %732, %721
br label %738
738: ; preds = %737, %720
%739 = load i16, i16* %7
%740 = zext i16 %739 to i32
%741 = load i16, i16* %8
%742 = zext i16 %741 to i32
%743 = load i16, i16* %9
%744 = zext i16 %743 to i32
%745 = load i16, i16* %10
%746 = zext i16 %745 to i32
%747 = load i16, i16* %11
%748 = zext i16 %747 to i32
%749 = load i16, i16* %12
%750 = zext i16 %749 to i32
%751 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%752 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %740, i32 %742, i32 %744, i32 %746, i32 %748, i32 %750, i16* %751)
%753 = load i16, i16* %10
%754 = zext i16 %753 to i64
%755 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %754
%756 = load i16, i16* %755
store i16 %756, i16* %9
%757 = load i16, i16* %7
%758 = zext i16 %757 to i32
%759 = load i16, i16* %8
%760 = zext i16 %759 to i32
%761 = load i16, i16* %9
%762 = zext i16 %761 to i32
%763 = load i16, i16* %10
%764 = zext i16 %763 to i32
%765 = load i16, i16* %11
%766 = zext i16 %765 to i32
%767 = load i16, i16* %12
%768 = zext i16 %767 to i32
%769 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%770 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %758, i32 %760, i32 %762, i32 %764, i32 %766, i32 %768, i16* %769)
%771 = load i16, i16* %9
%772 = add i16 %771, 1
store i16 %772, i16* %9
%773 = load i16, i16* %7
%774 = zext i16 %773 to i32
%775 = load i16, i16* %8
%776 = zext i16 %775 to i32
%777 = load i16, i16* %9
%778 = zext i16 %777 to i32
%779 = load i16, i16* %10
%780 = zext i16 %779 to i32
%781 = load i16, i16* %11
%782 = zext i16 %781 to i32
%783 = load i16, i16* %12
%784 = zext i16 %783 to i32
%785 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%786 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %774, i32 %776, i32 %778, i32 %780, i32 %782, i32 %784, i16* %785)
%787 = load i16, i16* %9
%788 = load i16, i16* %10
%789 = zext i16 %788 to i64
%790 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 %789
store i16 %787, i16* %790
%791 = load i16, i16* %9
%792 = zext i16 %791 to i32
%793 = icmp eq i32 %792, 0
br i1 %793, label %794, label %797
794: ; preds = %738
%795 = load i16, i16* %8
%796 = add i16 %795, 1
store i16 %796, i16* %8
br label %797
797: ; preds = %794, %738
%798 = load i16, i16* %7
%799 = zext i16 %798 to i32
%800 = load i16, i16* %8
%801 = zext i16 %800 to i32
%802 = load i16, i16* %9
%803 = zext i16 %802 to i32
%804 = load i16, i16* %10
%805 = zext i16 %804 to i32
%806 = load i16, i16* %11
%807 = zext i16 %806 to i32
%808 = load i16, i16* %12
%809 = zext i16 %808 to i32
%810 = getelementptr inbounds [400 x i16], [400 x i16]* %6, i64 0, i64 0
%811 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 6, i32 %799, i32 %801, i32 %803, i32 %805, i32 %807, i32 %809, i16* %810)
br label %812
812: ; preds = %293, %797, %665, %606, %550, %479, %403, %327
br label %813
813: ; preds = %812, %278
%814 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
br label %815
815: ; preds = %813
%816 = load i32, i32* %17
%817 = add nsw i32 %816, 1
store i32 %817, i32* %17
br label %92
818: ; preds = %92
br label %819
819: ; preds = %818
%820 = load i32, i32* %16
%821 = add nsw i32 %820, 1
store i32 %821, i32* %16
br label %85
822: ; preds = %85
ret i32 0
}

LLVM IR (-O2):
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = alloca [400 x i16]
%4 = bitcast [400 x i16]* %3 to i8*
%5 = tail call i32 (i32, ...) bitcast (i32 (...)* @time to i32 (i32, ...)*)(i32 0)
%6 = tail call i32 (i32, ...) bitcast (i32 (...)* @srand to i32 (i32, ...)*)(i32 %5)
br label %7
7: ; preds = %2, %23
%8 = phi i64 [ 0, %2 ], [ %28, %23 ]
%9 = tail call i32 (...) @rand()
%10 = srem i32 %9, 14
%11 = icmp eq i32 %10, 7
br i1 %11, label %12, label %17
12: ; preds = %7
%13 = tail call i32 (...) @rand()
%14 = srem i32 %13, 12
%15 = shl nuw nsw i32 1, %14
%16 = trunc i32 %15 to i16
br label %23
17: ; preds = %7
%18 = trunc i32 %10 to i16
%19 = shl i16 %18, 12
%20 = tail call i32 (...) @rand()
%21 = srem i32 %20, 395
%22 = trunc i32 %21 to i16
br label %23
23: ; preds = %12, %17
%24 = phi i16 [ 28672, %12 ], [ %22, %17 ]
%25 = phi i16 [ %16, %12 ], [ %19, %17 ]
%26 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %8
%27 = add i16 %25, %24
store i16 %27, i16* %26
%28 = add nuw nsw i64 %8, 1
%29 = icmp eq i64 %28, 400
br i1 %29, label %30, label %7
30: ; preds = %23
%31 = tail call i32 (...) @rand()
%32 = tail call i32 (...) @rand()
%33 = srem i32 %32, 4095
%34 = trunc i32 %33 to i16
%35 = tail call i32 (...) @rand()
%36 = srem i32 %35, 4095
%37 = trunc i32 %36 to i16
%38 = tail call i32 (...) @rand()
%39 = srem i32 %38, 400
%40 = trunc i32 %39 to i16
%41 = tail call i32 (...) @rand()
%42 = srem i32 %41, 4095
%43 = trunc i32 %42 to i16
%44 = tail call i32 (...) @rand()
%45 = srem i32 %44, 2
%46 = trunc i32 %45 to i16
%47 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 0
br label %49
48: ; preds = %59
ret i32 0
49: ; preds = %30, %59
%50 = phi i32 [ 0, %30 ], [ %60, %59 ]
%51 = phi i16 [ %46, %30 ], [ %300, %59 ]
%52 = phi i16 [ %43, %30 ], [ %80, %59 ]
%53 = phi i16 [ %40, %30 ], [ %299, %59 ]
%54 = phi i16 [ %37, %30 ], [ %298, %59 ]
%55 = phi i16 [ %34, %30 ], [ %296, %59 ]
%56 = call i32 (...) @rand()
%57 = srem i32 %56, 395
%58 = trunc i32 %57 to i16
br label %62
59: ; preds = %295
%60 = add nuw nsw i32 %50, 1
%61 = icmp eq i32 %60, 3
br i1 %61, label %48, label %49
62: ; preds = %49, %295
%63 = phi i32 [ 0, %49 ], [ %302, %295 ]
%64 = phi i16 [ %51, %49 ], [ %300, %295 ]
%65 = phi i16 [ %52, %49 ], [ %80, %295 ]
%66 = phi i16 [ %53, %49 ], [ %299, %295 ]
%67 = phi i16 [ %54, %49 ], [ %298, %295 ]
%68 = phi i16 [ %58, %49 ], [ %297, %295 ]
%69 = phi i16 [ %55, %49 ], [ %296, %295 ]
%70 = zext i16 %69 to i32
%71 = zext i16 %68 to i32
%72 = zext i16 %67 to i32
%73 = zext i16 %66 to i32
%74 = zext i16 %65 to i32
%75 = zext i16 %64 to i32
%76 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 -1, i32 %70, i32 %71, i32 %72, i32 %73, i32 %74, i32 %75, i16* %47)
%77 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 0, i32 %70, i32 %71, i32 %72, i32 %71, i32 %74, i32 %75, i16* %47)
%78 = zext i16 %68 to i64
%79 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %78
%80 = load i16, i16* %79
%81 = add i16 %68, 1
%82 = zext i16 %81 to i32
%83 = zext i16 %80 to i32
%84 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 1, i32 %70, i32 %82, i32 %72, i32 %71, i32 %83, i32 %75, i16* %47)
%85 = and i32 %83, 4095
%86 = trunc i32 %85 to i16
%87 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 2, i32 %70, i32 %82, i32 %72, i32 %85, i32 %83, i32 %75, i16* %47)
%88 = and i32 %83, 28672
%89 = icmp eq i32 %88, 28672
br i1 %89, label %90, label %134
90: ; preds = %62
switch i32 %85, label %126 [
i32 2048, label %91
i32 1024, label %92
i32 512, label %93
i32 256, label %95
i32 128, label %98
i32 64, label %102
i32 32, label %106
i32 16, label %108
i32 8, label %112
i32 4, label %117
i32 2, label %121
i32 1, label %125
]
91: ; preds = %90
br label %126
92: ; preds = %90
br label %126
93: ; preds = %90
%94 = xor i16 %69, -1
br label %126
95: ; preds = %90
%96 = icmp eq i16 %64, 0
%97 = zext i1 %96 to i16
br label %126
98: ; preds = %90
%99 = shl i16 %69, 15
%100 = lshr i16 %69, 1
%101 = or i16 %100, %99
br label %126
102: ; preds = %90
%103 = lshr i16 %69, 15
%104 = shl i16 %69, 1
%105 = or i16 %104, %103
br label %126
106: ; preds = %90
%107 = add i16 %69, 1
br label %126
108: ; preds = %90
%109 = icmp sgt i16 %69, -1
%110 = add i16 %68, 2
%111 = select i1 %109, i16 %110, i16 %81
br label %126
112: ; preds = %90
%113 = and i32 %70, 32768
%114 = icmp eq i32 %113, 0
%115 = add i16 %68, 2
%116 = select i1 %114, i16 %81, i16 %115
br label %126
117: ; preds = %90
%118 = icmp eq i16 %69, 0
%119 = add i16 %68, 2
%120 = select i1 %118, i16 %119, i16 %81
br label %126
121: ; preds = %90
%122 = icmp eq i16 %64, 0
%123 = add i16 %68, 2
%124 = select i1 %122, i16 %123, i16 %81
br label %126
125: ; preds = %90
unreachable
126: ; preds = %121, %117, %112, %108, %90, %106, %102, %98, %95, %93, %92, %91
%127 = phi i16 [ %69, %90 ], [ %107, %106 ], [ %105, %102 ], [ %101, %98 ], [ %69, %95 ], [ %94, %93 ], [ %69, %92 ], [ 0, %91 ], [ %69, %108 ], [ %69, %112 ], [ %69, %117 ], [ %69, %121 ]
%128 = phi i16 [ %81, %90 ], [ %81, %106 ], [ %81, %102 ], [ %81, %98 ], [ %81, %95 ], [ %81, %93 ], [ %81, %92 ], [ %81, %91 ], [ %111, %108 ], [ %116, %112 ], [ %120, %117 ], [ %124, %121 ]
%129 = phi i16 [ %64, %90 ], [ %64, %106 ], [ %103, %102 ], [ %99, %98 ], [ %97, %95 ], [ %64, %93 ], [ 0, %92 ], [ %64, %91 ], [ %64, %108 ], [ %64, %112 ], [ %64, %117 ], [ %64, %121 ]
%130 = zext i16 %127 to i32
%131 = zext i16 %128 to i32
%132 = zext i16 %129 to i32
%133 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %130, i32 %131, i32 %72, i32 %85, i32 %83, i32 %132, i16* %47)
br label %295
134: ; preds = %62
%135 = zext i32 %85 to i64
%136 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %135
%137 = load i16, i16* %136
%138 = and i16 %137, 4095
%139 = lshr exact i32 %88, 12
switch i32 %139, label %295 [
i32 0, label %140
i32 1, label %163
i32 2, label %186
i32 3, label %207
i32 4, label %225
i32 5, label %246
i32 6, label %267
]
140: ; preds = %134
%141 = and i32 %83, 32768
%142 = icmp eq i32 %141, 0
br i1 %142, label %151, label %143
143: ; preds = %140
%144 = zext i16 %138 to i64
%145 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %144
%146 = load i16, i16* %145
%147 = and i16 %146, 4095
%148 = icmp ugt i16 %147, 399
br i1 %148, label %149, label %151
149: ; preds = %143
%150 = urem i16 %147, 400
br label %151
151: ; preds = %143, %149, %140
%152 = phi i16 [ %138, %140 ], [ %150, %149 ], [ %147, %143 ]
%153 = zext i16 %152 to i32
%154 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %70, i32 %82, i32 %72, i32 %153, i32 %83, i32 %75, i16* %47)
%155 = zext i16 %152 to i64
%156 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %155
%157 = load i16, i16* %156
%158 = zext i16 %157 to i32
%159 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %70, i32 %82, i32 %158, i32 %153, i32 %83, i32 %75, i16* %47)
%160 = and i16 %157, %69
%161 = zext i16 %160 to i32
%162 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %161, i32 %82, i32 %158, i32 %153, i32 %83, i32 %75, i16* %47)
br label %295
163: ; preds = %134
%164 = and i32 %83, 32768
%165 = icmp eq i32 %164, 0
br i1 %165, label %174, label %166
166: ; preds = %163
%167 = zext i16 %138 to i64
%168 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %167
%169 = load i16, i16* %168
%170 = and i16 %169, 4095
%171 = icmp ugt i16 %170, 399
br i1 %171, label %172, label %174
172: ; preds = %166
%173 = urem i16 %170, 400
br label %174
174: ; preds = %166, %172, %163
%175 = phi i16 [ %138, %163 ], [ %173, %172 ], [ %170, %166 ]
%176 = zext i16 %175 to i32
%177 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %70, i32 %82, i32 %72, i32 %176, i32 %83, i32 %75, i16* %47)
%178 = zext i16 %175 to i64
%179 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %178
%180 = load i16, i16* %179
%181 = zext i16 %180 to i32
%182 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %70, i32 %82, i32 %181, i32 %176, i32 %83, i32 %75, i16* %47)
%183 = add i16 %180, %69
%184 = zext i16 %183 to i32
%185 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %184, i32 %82, i32 %181, i32 %176, i32 %83, i32 %75, i16* %47)
br label %295
186: ; preds = %134
%187 = and i32 %83, 32768
%188 = icmp eq i32 %187, 0
br i1 %188, label %197, label %189
189: ; preds = %186
%190 = zext i16 %138 to i64
%191 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %190
%192 = load i16, i16* %191
%193 = and i16 %192, 4095
%194 = icmp ugt i16 %193, 399
br i1 %194, label %195, label %197
195: ; preds = %189
%196 = urem i16 %193, 400
br label %197
197: ; preds = %189, %195, %186
%198 = phi i16 [ %138, %186 ], [ %196, %195 ], [ %193, %189 ]
%199 = zext i16 %198 to i32
%200 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %70, i32 %82, i32 %72, i32 %199, i32 %83, i32 %75, i16* %47)
%201 = zext i16 %198 to i64
%202 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %201
%203 = load i16, i16* %202
%204 = zext i16 %203 to i32
%205 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %70, i32 %82, i32 %204, i32 %199, i32 %83, i32 %75, i16* %47)
%206 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %204, i32 %82, i32 %204, i32 %199, i32 %83, i32 %75, i16* %47)
br label %295
207: ; preds = %134
%208 = and i32 %83, 32768
%209 = icmp eq i32 %208, 0
br i1 %209, label %218, label %210
210: ; preds = %207
%211 = zext i16 %138 to i64
%212 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %211
%213 = load i16, i16* %212
%214 = and i16 %213, 4095
%215 = icmp ugt i16 %214, 399
br i1 %215, label %216, label %218
216: ; preds = %210
%217 = urem i16 %214, 400
br label %218
218: ; preds = %210, %216, %207
%219 = phi i16 [ %138, %207 ], [ %217, %216 ], [ %214, %210 ]
%220 = zext i16 %219 to i32
%221 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %70, i32 %82, i32 %72, i32 %220, i32 %83, i32 %75, i16* %47)
%222 = zext i16 %219 to i64
%223 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %222
store i16 %69, i16* %223
%224 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %70, i32 %82, i32 %72, i32 %220, i32 %83, i32 %75, i16* %47)
br label %295
225: ; preds = %134
%226 = and i32 %83, 32768
%227 = icmp eq i32 %226, 0
br i1 %227, label %236, label %228
228: ; preds = %225
%229 = zext i16 %138 to i64
%230 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %229
%231 = load i16, i16* %230
%232 = and i16 %231, 4095
%233 = icmp ugt i16 %232, 399
br i1 %233, label %234, label %236
234: ; preds = %228
%235 = urem i16 %232, 400
br label %236
236: ; preds = %228, %234, %225
%237 = phi i16 [ %138, %225 ], [ %235, %234 ], [ %232, %228 ]
%238 = zext i16 %237 to i32
%239 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %70, i32 %82, i32 %72, i32 %238, i32 %83, i32 %75, i16* %47)
%240 = zext i16 %237 to i64
%241 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %240
%242 = load i16, i16* %241
%243 = and i16 %242, 4095
%244 = zext i16 %243 to i32
%245 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %70, i32 %244, i32 %72, i32 %238, i32 %83, i32 %75, i16* %47)
br label %295
246: ; preds = %134
%247 = and i32 %83, 32768
%248 = icmp eq i32 %247, 0
br i1 %248, label %257, label %249
249: ; preds = %246
%250 = zext i16 %138 to i64
%251 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %250
%252 = load i16, i16* %251
%253 = and i16 %252, 4095
%254 = icmp ugt i16 %253, 399
br i1 %254, label %255, label %257
255: ; preds = %249
%256 = urem i16 %253, 400
br label %257
257: ; preds = %249, %255, %246
%258 = phi i16 [ %138, %246 ], [ %256, %255 ], [ %253, %249 ]
%259 = zext i16 %258 to i32
%260 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %70, i32 %82, i32 %72, i32 %259, i32 %83, i32 %75, i16* %47)
%261 = zext i16 %258 to i64
%262 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %261
store i16 %81, i16* %262
%263 = add nuw nsw i16 %258, 1
%264 = zext i16 %263 to i32
%265 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %70, i32 %82, i32 %72, i32 %264, i32 %83, i32 %75, i16* %47)
%266 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %70, i32 %264, i32 %72, i32 %264, i32 %83, i32 %75, i16* %47)
br label %295
267: ; preds = %134
%268 = and i32 %83, 32768
%269 = icmp eq i32 %268, 0
br i1 %269, label %278, label %270
270: ; preds = %267
%271 = zext i16 %138 to i64
%272 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %271
%273 = load i16, i16* %272
%274 = and i16 %273, 4095
%275 = icmp ugt i16 %274, 399
br i1 %275, label %276, label %278
276: ; preds = %270
%277 = urem i16 %274, 400
br label %278
278: ; preds = %270, %276, %267
%279 = phi i16 [ %138, %267 ], [ %277, %276 ], [ %274, %270 ]
%280 = zext i16 %279 to i32
%281 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 3, i32 %70, i32 %82, i32 %72, i32 %280, i32 %83, i32 %75, i16* %47)
%282 = zext i16 %279 to i64
%283 = getelementptr inbounds [400 x i16], [400 x i16]* %3, i64 0, i64 %282
%284 = load i16, i16* %283
%285 = zext i16 %284 to i32
%286 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 4, i32 %70, i32 %82, i32 %285, i32 %280, i32 %83, i32 %75, i16* %47)
%287 = add i16 %284, 1
%288 = zext i16 %287 to i32
%289 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 5, i32 %70, i32 %82, i32 %288, i32 %280, i32 %83, i32 %75, i16* %47)
store i16 %287, i16* %283
%290 = icmp eq i16 %287, 0
%291 = add i16 %68, 2
%292 = select i1 %290, i16 %291, i16 %81
%293 = zext i16 %292 to i32
%294 = call i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...) bitcast (i32 (...)* @print to i32 (i32, i32, i32, i32, i32, i32, i32, i16*, ...)*)(i32 6, i32 %70, i32 %293, i32 %288, i32 %280, i32 %83, i32 %75, i16* %47)
br label %295
295: ; preds = %151, %174, %197, %218, %236, %257, %278, %134, %126
%296 = phi i16 [ %127, %126 ], [ %69, %134 ], [ %69, %278 ], [ %69, %257 ], [ %69, %236 ], [ %69, %218 ], [ %203, %197 ], [ %183, %174 ], [ %160, %151 ]
%297 = phi i16 [ %128, %126 ], [ %81, %134 ], [ %292, %278 ], [ %263, %257 ], [ %243, %236 ], [ %81, %218 ], [ %81, %197 ], [ %81, %174 ], [ %81, %151 ]
%298 = phi i16 [ %67, %126 ], [ %67, %134 ], [ %287, %278 ], [ %67, %257 ], [ %67, %236 ], [ %67, %218 ], [ %203, %197 ], [ %180, %174 ], [ %157, %151 ]
%299 = phi i16 [ %86, %126 ], [ %138, %134 ], [ %279, %278 ], [ %263, %257 ], [ %237, %236 ], [ %219, %218 ], [ %198, %197 ], [ %175, %174 ], [ %152, %151 ]
%300 = phi i16 [ %129, %126 ], [ %64, %134 ], [ %64, %278 ], [ %64, %257 ], [ %64, %236 ], [ %64, %218 ], [ %64, %197 ], [ %64, %174 ], [ %64, %151 ]
%301 = call i32 @putchar(i32 10)
%302 = add nuw nsw i32 %63, 1
%303 = icmp eq i32 %302, 5
br i1 %303, label %59, label %62
}