int main() {
  char map[3][3] = {};
  int i, j;
  int row, col;
  int state, n;
  int menu;
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
      map[i][j] = '.';
    }
  }
  state = 0;
  do {
    for (i = 0; i < 3; i++) {
      for (j = 0; j < 3; j++) {
        printf("%c ", map[i][j]);
      }
      printf("\n");
    }
    n = 0;
    for (i = 0; i < 3; ++i) {
      for (j = 0; j < 3; ++j) {
        if (map[i][j] != '.') {
          ++n;
        }
      }
    }
    if (n == 9) {
      printf("平局！\n");
      for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
          map[i][j] = '.';
        }
      }
      state = 0;
      printf("输入1继续玩，输入0结束游戏：");
      while (!(scanf("%d", &menu))) {
        scanf("%*[^\n]");
        scanf("%*c");
        if (menu == 1 || menu == 0) {
          break;
        }
      }
      continue;
    }
    ++state;
    printf("请输入行号：");
    scanf("%d", &row);
    if (row < 1 || row > 3) {
      printf("超出范围!\n");
      printf("这步棋不算，重来！\n");
      scanf("%*[^\n]");
      scanf("%*c");
      state -= 1;
      continue;
    }
    printf("请输入列号：");
    scanf("%d", &col);
    if (col < 1 || col > 3) {
      printf("超出范围!\n");
      printf("这步棋不算，重来！\n");
      scanf("%*[^\n]");
      scanf("%*c");
      state -= 1;
      continue;
    }
    if (map[row - 1][col - 1] == '0' || map[row - 1][col - 1] == '*') {
      printf("位置已经有棋子了！\n");
      printf("这步棋不算，重来！\n");
      state -= 1;
      continue;
    }
    if (state % 2) {
      map[row - 1][col - 1] = '0';
      if ((map[0][2] == map[1][1] && map[0][2] == map[2][0] == '0') ||
          (map[0][0] == map[1][1] && map[0][0] == map[2][2] &&
           map[0][0] == '0') ||
          (map[0][2] == map[1][2] && map[0][2] == map[2][2] &&
           map[0][2] == '0') ||
          (map[0][1] == map[1][1] && map[0][1] == map[2][1] &&
           map[0][1] == '0') ||
          (map[0][0] == map[1][0] && map[0][0] == map[2][0] &&
           map[0][0] == '0') ||
          (map[2][0] == map[2][1] && map[2][0] == map[2][2] &&
           map[2][0] == '0') ||
          (map[1][0] == map[1][1] && map[1][0] == map[1][2] &&
           map[1][0] == '0') ||
          (map[0][0] == map[0][1] && map[0][0] == map[0][2] &&
           map[0][0] == '0')) {
        for (i = 0; i < 3; i++) {
          for (j = 0; j < 3; j++) {
            printf("%c ", map[i][j]);
          }
          printf("\n");
        }
        printf("0 WIN!\n");
        for (i = 0; i < 3; i++) {
          for (j = 0; j < 3; j++) {
            map[i][j] = '.';
          }
        }
        state = 0;
        printf("输入1继续玩，输入0结束游戏：");
        while (!(scanf("%d", &menu))) {
          scanf("%*[^\n]");
          scanf("%*c");
          if (menu == 1 || menu == 0) {
            break;
          }
        }
      }
    } else {
      map[row - 1][col - 1] = '*';
      if ((map[0][2] == map[1][1] && map[0][2] == map[2][0] == '*') ||
          (map[0][0] == map[1][1] && map[0][0] == map[2][2] &&
           map[0][2] == '*') ||
          (map[0][2] == map[1][2] && map[0][2] == map[2][2] &&
           map[0][2] == '*') ||
          (map[0][1] == map[1][1] && map[0][1] == map[2][1] &&
           map[0][1] == '*') ||
          (map[0][0] == map[1][0] && map[0][0] == map[2][0] &&
           map[0][0] == '*') ||
          (map[2][0] == map[2][1] && map[2][0] == map[2][2] &&
           map[2][0] == '*') ||
          (map[1][0] == map[1][1] && map[1][0] == map[1][2] &&
           map[1][0] == '*') ||
          (map[0][0] == map[0][1] && map[0][0] == map[0][2] &&
           map[0][0] == '*')) {
        for (i = 0; i < 3; i++) {
          for (j = 0; j < 3; j++) {
            printf("%c ", map[i][j]);
          }
          printf("\n");
        }
        printf("* WIN!\n");
        for (i = 0; i < 3; i++) {
          for (j = 0; j < 3; j++) {
            map[i][j] = '.';
          }
        }
        state = 0;
        printf("输入1继续玩，输入0结束游戏：");
        while (!(scanf("%d", &menu))) {
          scanf("%*[^\n]");
          scanf("%*c");
          if (menu == 1 || menu == 0) {
            break;
          }
        }
      }
    }
  } while (menu);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0xd(%rbp),%rdi
xor    %esi,%esi
mov    $0x9,%edx
call   1040 <memset@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    11a9 <main+0x79>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    1196 <main+0x66>
movslq -0x14(%rbp),%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1167 <main+0x37>
jmp    119b <main+0x6b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1156 <main+0x26>
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    1221 <main+0xf1>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    1205 <main+0xd5>
movslq -0x14(%rbp),%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%esi
lea    0xe10(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11c8 <main+0x98>
lea    0xeb8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11b7 <main+0x87>
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    1299 <main+0x169>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    1286 <main+0x156>
movslq -0x14(%rbp),%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     1273 <main+0x143>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1278 <main+0x148>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1240 <main+0x110>
jmp    128b <main+0x15b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    122f <main+0xff>
cmpl   $0x9,-0x28(%rbp)
jne    1386 <main+0x256>
lea    0xd5a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    130b <main+0x1db>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    12f8 <main+0x1c8>
movslq -0x14(%rbp),%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    12c9 <main+0x199>
jmp    12fd <main+0x1cd>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    12b8 <main+0x188>
movl   $0x0,-0x24(%rbp)
lea    0xcf6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd12(%rip),%rdi
lea    -0x2c(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1347 <main+0x217>
jmp    1381 <main+0x251>
lea    0xcee(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xce7(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
cmpl   $0x1,-0x2c(%rbp)
je     1377 <main+0x247>
cmpl   $0x0,-0x2c(%rbp)
jne    137c <main+0x24c>
jmp    1381 <main+0x251>
jmp    1320 <main+0x1f0>
jmp    1ada <main+0x9aa>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
lea    0xcb1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc95(%rip),%rdi
lea    -0x1c(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
cmpl   $0x1,-0x1c(%rbp)
jl     13c3 <main+0x293>
cmpl   $0x3,-0x1c(%rbp)
jle    1409 <main+0x2d9>
lea    0xc90(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc91(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc56(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xc4f(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1ada <main+0x9aa>
lea    0xc76(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc1b(%rip),%rdi
lea    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
cmpl   $0x1,-0x20(%rbp)
jl     143d <main+0x30d>
cmpl   $0x3,-0x20(%rbp)
jle    1483 <main+0x353>
lea    0xc16(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc17(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbdc(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xbd5(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1ada <main+0x9aa>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
je     14d7 <main+0x3a7>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    1501 <main+0x3d1>
lea    0xbbb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xb7d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1ada <main+0x9aa>
mov    -0x24(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     17f5 <main+0x6c5>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
movsbl -0xb(%rbp),%eax
movsbl -0x9(%rbp),%ecx
cmp    %ecx,%eax
jne    1561 <main+0x431>
movsbl -0xb(%rbp),%eax
movsbl -0x7(%rbp),%ecx
cmp    %ecx,%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x30,%eax
je     169c <main+0x56c>
movsbl -0xd(%rbp),%eax
movsbl -0x9(%rbp),%ecx
cmp    %ecx,%eax
jne    158e <main+0x45e>
movsbl -0xd(%rbp),%eax
movsbl -0x5(%rbp),%ecx
cmp    %ecx,%eax
jne    158e <main+0x45e>
movsbl -0xd(%rbp),%eax
cmp    $0x30,%eax
je     169c <main+0x56c>
movsbl -0xb(%rbp),%eax
movsbl -0x8(%rbp),%ecx
cmp    %ecx,%eax
jne    15bb <main+0x48b>
movsbl -0xb(%rbp),%eax
movsbl -0x5(%rbp),%ecx
cmp    %ecx,%eax
jne    15bb <main+0x48b>
movsbl -0xb(%rbp),%eax
cmp    $0x30,%eax
je     169c <main+0x56c>
movsbl -0xc(%rbp),%eax
movsbl -0x9(%rbp),%ecx
cmp    %ecx,%eax
jne    15e8 <main+0x4b8>
movsbl -0xc(%rbp),%eax
movsbl -0x6(%rbp),%ecx
cmp    %ecx,%eax
jne    15e8 <main+0x4b8>
movsbl -0xc(%rbp),%eax
cmp    $0x30,%eax
je     169c <main+0x56c>
movsbl -0xd(%rbp),%eax
movsbl -0xa(%rbp),%ecx
cmp    %ecx,%eax
jne    1615 <main+0x4e5>
movsbl -0xd(%rbp),%eax
movsbl -0x7(%rbp),%ecx
cmp    %ecx,%eax
jne    1615 <main+0x4e5>
movsbl -0xd(%rbp),%eax
cmp    $0x30,%eax
je     169c <main+0x56c>
movsbl -0x7(%rbp),%eax
movsbl -0x6(%rbp),%ecx
cmp    %ecx,%eax
jne    1642 <main+0x512>
movsbl -0x7(%rbp),%eax
movsbl -0x5(%rbp),%ecx
cmp    %ecx,%eax
jne    1642 <main+0x512>
movsbl -0x7(%rbp),%eax
cmp    $0x30,%eax
je     169c <main+0x56c>
movsbl -0xa(%rbp),%eax
movsbl -0x9(%rbp),%ecx
cmp    %ecx,%eax
jne    166f <main+0x53f>
movsbl -0xa(%rbp),%eax
movsbl -0x8(%rbp),%ecx
cmp    %ecx,%eax
jne    166f <main+0x53f>
movsbl -0xa(%rbp),%eax
cmp    $0x30,%eax
je     169c <main+0x56c>
movsbl -0xd(%rbp),%eax
movsbl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    17f0 <main+0x6c0>
movsbl -0xd(%rbp),%eax
movsbl -0xb(%rbp),%ecx
cmp    %ecx,%eax
jne    17f0 <main+0x6c0>
movsbl -0xd(%rbp),%eax
cmp    $0x30,%eax
jne    17f0 <main+0x6c0>
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    170d <main+0x5dd>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    16f1 <main+0x5c1>
movslq -0x14(%rbp),%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%esi
lea    0x924(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    16b4 <main+0x584>
lea    0x9cc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    16a3 <main+0x573>
lea    0x9a2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    1775 <main+0x645>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    1762 <main+0x632>
movslq -0x14(%rbp),%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1733 <main+0x603>
jmp    1767 <main+0x637>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1722 <main+0x5f2>
movl   $0x0,-0x24(%rbp)
lea    0x88c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x8a8(%rip),%rdi
lea    -0x2c(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    17b1 <main+0x681>
jmp    17eb <main+0x6bb>
lea    0x884(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0x87d(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
cmpl   $0x1,-0x2c(%rbp)
je     17e1 <main+0x6b1>
cmpl   $0x0,-0x2c(%rbp)
jne    17e6 <main+0x6b6>
jmp    17eb <main+0x6bb>
jmp    178a <main+0x65a>
jmp    17f0 <main+0x6c0>
jmp    1ad5 <main+0x9a5>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x2a,(%rax,%rcx,1)
movsbl -0xb(%rbp),%eax
movsbl -0x9(%rbp),%ecx
cmp    %ecx,%eax
jne    1841 <main+0x711>
movsbl -0xb(%rbp),%eax
movsbl -0x7(%rbp),%ecx
cmp    %ecx,%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x2a,%eax
je     197c <main+0x84c>
movsbl -0xd(%rbp),%eax
movsbl -0x9(%rbp),%ecx
cmp    %ecx,%eax
jne    186e <main+0x73e>
movsbl -0xd(%rbp),%eax
movsbl -0x5(%rbp),%ecx
cmp    %ecx,%eax
jne    186e <main+0x73e>
movsbl -0xb(%rbp),%eax
cmp    $0x2a,%eax
je     197c <main+0x84c>
movsbl -0xb(%rbp),%eax
movsbl -0x8(%rbp),%ecx
cmp    %ecx,%eax
jne    189b <main+0x76b>
movsbl -0xb(%rbp),%eax
movsbl -0x5(%rbp),%ecx
cmp    %ecx,%eax
jne    189b <main+0x76b>
movsbl -0xb(%rbp),%eax
cmp    $0x2a,%eax
je     197c <main+0x84c>
movsbl -0xc(%rbp),%eax
movsbl -0x9(%rbp),%ecx
cmp    %ecx,%eax
jne    18c8 <main+0x798>
movsbl -0xc(%rbp),%eax
movsbl -0x6(%rbp),%ecx
cmp    %ecx,%eax
jne    18c8 <main+0x798>
movsbl -0xc(%rbp),%eax
cmp    $0x2a,%eax
je     197c <main+0x84c>
movsbl -0xd(%rbp),%eax
movsbl -0xa(%rbp),%ecx
cmp    %ecx,%eax
jne    18f5 <main+0x7c5>
movsbl -0xd(%rbp),%eax
movsbl -0x7(%rbp),%ecx
cmp    %ecx,%eax
jne    18f5 <main+0x7c5>
movsbl -0xd(%rbp),%eax
cmp    $0x2a,%eax
je     197c <main+0x84c>
movsbl -0x7(%rbp),%eax
movsbl -0x6(%rbp),%ecx
cmp    %ecx,%eax
jne    1922 <main+0x7f2>
movsbl -0x7(%rbp),%eax
movsbl -0x5(%rbp),%ecx
cmp    %ecx,%eax
jne    1922 <main+0x7f2>
movsbl -0x7(%rbp),%eax
cmp    $0x2a,%eax
je     197c <main+0x84c>
movsbl -0xa(%rbp),%eax
movsbl -0x9(%rbp),%ecx
cmp    %ecx,%eax
jne    194f <main+0x81f>
movsbl -0xa(%rbp),%eax
movsbl -0x8(%rbp),%ecx
cmp    %ecx,%eax
jne    194f <main+0x81f>
movsbl -0xa(%rbp),%eax
cmp    $0x2a,%eax
je     197c <main+0x84c>
movsbl -0xd(%rbp),%eax
movsbl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    1ad0 <main+0x9a0>
movsbl -0xd(%rbp),%eax
movsbl -0xb(%rbp),%ecx
cmp    %ecx,%eax
jne    1ad0 <main+0x9a0>
movsbl -0xd(%rbp),%eax
cmp    $0x2a,%eax
jne    1ad0 <main+0x9a0>
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    19ed <main+0x8bd>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    19d1 <main+0x8a1>
movslq -0x14(%rbp),%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%esi
lea    0x644(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1994 <main+0x864>
lea    0x6ec(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1983 <main+0x853>
lea    0x6ca(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    1a55 <main+0x925>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    1a42 <main+0x912>
movslq -0x14(%rbp),%rcx
lea    -0xd(%rbp),%rax
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1a13 <main+0x8e3>
jmp    1a47 <main+0x917>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1a02 <main+0x8d2>
movl   $0x0,-0x24(%rbp)
lea    0x5ac(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x5c8(%rip),%rdi
lea    -0x2c(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1a91 <main+0x961>
jmp    1acb <main+0x99b>
lea    0x5a4(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0x59d(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
cmpl   $0x1,-0x2c(%rbp)
je     1ac1 <main+0x991>
cmpl   $0x0,-0x2c(%rbp)
jne    1ac6 <main+0x996>
jmp    1acb <main+0x99b>
jmp    1a6a <main+0x93a>
jmp    1ad0 <main+0x9a0>
jmp    1ad5 <main+0x9a5>
jmp    1ada <main+0x9aa>
cmpl   $0x0,-0x2c(%rbp)
jne    11b0 <main+0x80>
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
sub    $0x38,%rsp
movabs $0x2e2e2e2e2e2e2e2e,%rax
2e 2e 2e
mov    %rax,(%rsp)
movb   $0x2e,0x8(%rsp)
mov    $0x2e,%al
lea    0xea6(%rip),%r12
lea    0xecd(%rip),%rbx
lea    0x10(%rsp),%r13
lea    0xec4(%rip),%rbp
lea    0xec4(%rip),%r14
xor    %r15d,%r15d
jmp    119e <main+0x5e>
nopl   0x0(%rax)
mov    $0x2e,%al
mov    0x10(%rsp),%ecx
test   %ecx,%ecx
je     1787 <main+0x647>
movsbl %al,%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x1(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x2(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsbl 0x3(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x4(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x5(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsbl 0x6(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x7(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x8(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movq   (%rsp),%xmm1
xor    %eax,%eax
cmpb   $0x2e,0x8(%rsp)
setne  %al
movdqa %xmm1,%xmm0
pcmpeqb 0xda4(%rip),%xmm0
pmovmskb %xmm0,%ecx
not    %ecx
mov    %ecx,%edx
shr    %dl
and    $0x55,%dl
sub    %dl,%cl
mov    %ecx,%edx
and    $0x33,%dl
shr    $0x2,%cl
and    $0x33,%cl
add    %dl,%cl
mov    %ecx,%edx
shr    $0x4,%dl
add    %cl,%dl
and    $0xf,%dl
movzbl %dl,%ecx
add    %eax,%ecx
cmp    $0x9,%ecx
jne    1300 <main+0x1c0>
lea    0xe33(%rip),%rdi
call   1040 <puts@plt>
movabs $0x2e2e2e2e2e2e2e2e,%rax
2e 2e 2e
mov    %rax,(%rsp)
movb   $0x2e,0x8(%rsp)
lea    0xd62(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
nopl   0x0(%rax)
xor    %r15d,%r15d
mov    %rbx,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
test   %eax,%eax
jne    1190 <main+0x50>
xor    %r15d,%r15d
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    0x10(%rsp),%ecx
cmp    $0x2,%ecx
jae    12c0 <main+0x180>
mov    $0x2e,%al
jmp    1196 <main+0x56>
nop
movdqa %xmm1,0x20(%rsp)
lea    0xd3f(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
lea    0x14(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    0x14(%rsp),%eax
add    $0xfffffffc,%eax
cmp    $0xfffffffc,%eax
jbe    1358 <main+0x218>
lea    0xd29(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
lea    0x1c(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    0x1c(%rsp),%eax
lea    -0x4(%rax),%ecx
cmp    $0xfffffffc,%ecx
ja     1393 <main+0x253>
lea    0xd3d(%rip),%rdi
call   1040 <puts@plt>
lea    0xd3f(%rip),%rdi
call   1040 <puts@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
movdqa 0x20(%rsp),%xmm0
movd   %xmm0,%eax
jmp    1192 <main+0x52>
movslq 0x14(%rsp),%rcx
lea    (%rcx,%rcx,2),%rcx
add    $0xffffffff,%eax
add    %rsp,%rcx
mov    -0x3(%rax,%rcx,1),%dl
cmp    $0x30,%dl
je     13b0 <main+0x270>
cmp    $0x2a,%dl
jne    13ca <main+0x28a>
lea    0xcc9(%rip),%rdi
call   1040 <puts@plt>
lea    0xce7(%rip),%rdi
call   1040 <puts@plt>
jmp    1384 <main+0x244>
add    $0x1,%r15d
add    %rcx,%rax
add    $0xfffffffffffffffd,%rax
test   $0x1,%r15b
jne    1411 <main+0x2d1>
movb   $0x2a,(%rax)
movsbl 0x2(%rsp),%r9d
movsbl 0x4(%rsp),%edx
mov    (%rsp),%al
cmp    %dl,%al
jne    15cf <main+0x48f>
cmp    0x8(%rsp),%dl
jne    15cf <main+0x48f>
cmp    $0x2a,%r9b
jne    15cf <main+0x48f>
mov    0x5(%rsp),%cl
jmp    1635 <main+0x4f5>
movb   $0x30,(%rax)
mov    (%rsp),%al
mov    0x2(%rsp),%r8b
mov    0x4(%rsp),%dl
cmp    %dl,%al
jne    1434 <main+0x2f4>
cmp    $0x30,%dl
jne    1434 <main+0x2f4>
cmpb   $0x30,0x8(%rsp)
je     14b5 <main+0x375>
mov    0x5(%rsp),%sil
cmp    %sil,%r8b
jne    144b <main+0x30b>
cmp    $0x30,%r8b
jne    144b <main+0x30b>
cmpb   $0x30,0x8(%rsp)
je     14b5 <main+0x375>
mov    0x1(%rsp),%dil
cmp    %dl,%dil
jne    1461 <main+0x321>
cmp    $0x30,%dl
jne    1461 <main+0x321>
cmpb   $0x30,0x7(%rsp)
je     14b5 <main+0x375>
mov    0x3(%rsp),%r9b
mov    0x6(%rsp),%cl
cmp    %r9b,%al
jne    1478 <main+0x338>
cmp    $0x30,%al
jne    1478 <main+0x338>
cmp    $0x30,%cl
je     14b5 <main+0x375>
cmp    0x7(%rsp),%cl
jne    148a <main+0x34a>
cmp    $0x30,%cl
jne    148a <main+0x34a>
cmpb   $0x30,0x8(%rsp)
je     14b5 <main+0x375>
cmp    %dl,%r9b
jne    149a <main+0x35a>
cmp    $0x30,%sil
jne    149a <main+0x35a>
cmp    $0x30,%dl
je     14b5 <main+0x375>
cmp    %dil,%al
jne    1192 <main+0x52>
cmp    $0x30,%r8b
jne    1192 <main+0x52>
cmp    $0x30,%al
jne    1192 <main+0x52>
movsbl %al,%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x1(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x2(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsbl 0x3(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x4(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x5(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsbl 0x6(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x7(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x8(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xb1a(%rip),%rdi
call   1040 <puts@plt>
movabs $0x2e2e2e2e2e2e2e2e,%rax
2e 2e 2e
mov    %rax,(%rsp)
movb   $0x2e,0x8(%rsp)
lea    0xa96(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %r15d,%r15d
mov    %rbx,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
test   %eax,%eax
jne    1190 <main+0x50>
xor    %r15d,%r15d
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    0x10(%rsp),%ecx
mov    $0x2e,%al
cmp    $0x2,%ecx
jae    1590 <main+0x450>
jmp    1196 <main+0x56>
mov    0x5(%rsp),%dil
cmp    %dil,%r9b
jne    15e8 <main+0x4a8>
cmp    $0x2a,%r9b
jne    15e8 <main+0x4a8>
mov    $0x2a,%cl
cmpb   $0x2a,0x8(%rsp)
je     1635 <main+0x4f5>
mov    0x1(%rsp),%sil
cmp    %dl,%sil
jne    15fe <main+0x4be>
cmp    $0x2a,%dl
jne    15fe <main+0x4be>
cmpb   $0x2a,0x7(%rsp)
je     1633 <main+0x4f3>
mov    0x3(%rsp),%r8b
mov    0x6(%rsp),%cl
cmp    %r8b,%al
jne    1615 <main+0x4d5>
cmp    $0x2a,%al
jne    1615 <main+0x4d5>
cmp    $0x2a,%cl
je     1633 <main+0x4f3>
cmp    0x7(%rsp),%cl
jne    174f <main+0x60f>
cmp    $0x2a,%cl
jne    174f <main+0x60f>
cmpb   $0x2a,0x8(%rsp)
jne    174f <main+0x60f>
mov    %edi,%ecx
mov    %cl,0x20(%rsp)
movsbl %al,%esi
mov    %r12,%rdi
xor    %eax,%eax
mov    %edx,0x18(%rsp)
mov    %r9d,%r15d
call   1050 <printf@plt>
movsbl 0x1(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r12,%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsbl 0x3(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r12,%rdi
mov    0x18(%rsp),%esi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x20(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsbl 0x6(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x7(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
movsbl 0x8(%rsp),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x98b(%rip),%rdi
call   1040 <puts@plt>
movabs $0x2e2e2e2e2e2e2e2e,%rax
2e 2e 2e
mov    %rax,(%rsp)
movb   $0x2e,0x8(%rsp)
lea    0x90e(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
nopl   (%rax)
xor    %r15d,%r15d
mov    %rbx,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
test   %eax,%eax
jne    1190 <main+0x50>
xor    %r15d,%r15d
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    0x10(%rsp),%ecx
mov    $0x2e,%al
cmp    $0x2,%ecx
jae    1710 <main+0x5d0>
jmp    1196 <main+0x56>
cmp    %dl,%r8b
jne    1765 <main+0x625>
cmp    $0x2a,%dil
jne    1765 <main+0x625>
mov    $0x2a,%cl
cmp    $0x2a,%dl
je     1635 <main+0x4f5>
cmp    %sil,%al
jne    1192 <main+0x52>
cmp    $0x2a,%r9b
jne    1192 <main+0x52>
mov    %edi,%ecx
cmp    $0x2a,%al
je     1635 <main+0x4f5>
jmp    1192 <main+0x52>
xor    %eax,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [4 x i8] c"%c \00"
@.str.3 = [42 x i8] c"\E8\BE\93\E5\85\A51\E7\BB\A7\E7\BB\AD\E7\8E\A9\EF\BC\8C\E8\BE\93\E5\85\A50\E7\BB\93\E6\9D\9F\E6\B8\B8\E6\88\8F\EF\BC\9A\00"
@.str.4 = [3 x i8] c"%d\00"
@.str.5 = [7 x i8] c"%*[^\0A]\00"
@.str.6 = [4 x i8] c"%*c\00"
@.str.7 = [19 x i8] c"\E8\AF\B7\E8\BE\93\E5\85\A5\E8\A1\8C\E5\8F\B7\EF\BC\9A\00"
@.str.10 = [19 x i8] c"\E8\AF\B7\E8\BE\93\E5\85\A5\E5\88\97\E5\8F\B7\EF\BC\9A\00"
@str = [7 x i8] c"* WIN!\00"
@str.14 = [7 x i8] c"0 WIN!\00"
@str.15 = [28 x i8] c"\E4\BD\8D\E7\BD\AE\E5\B7\B2\E7\BB\8F\E6\9C\89\E6\A3\8B\E5\AD\90\E4\BA\86\EF\BC\81\00"
@str.19 = [14 x i8] c"\E8\B6\85\E5\87\BA\E8\8C\83\E5\9B\B4!\00"
@str.20 = [28 x i8] c"\E8\BF\99\E6\AD\A5\E6\A3\8B\E4\B8\8D\E7\AE\97\EF\BC\8C\E9\87\8D\E6\9D\A5\EF\BC\81\00"
@str.21 = [10 x i8] c"\E5\B9\B3\E5\B1\80\EF\BC\81\00"
define i32 @main() {
%1 = alloca [3 x [3 x i8]]
%2 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 0, i64 0
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 0, i64 0
%7 = bitcast i32* %3 to i8*
%8 = bitcast i32* %4 to i8*
%9 = bitcast i32* %5 to i8*
%10 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 0, i64 2
%11 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 1, i64 1
%12 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 2, i64 2
%13 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 1, i64 2
%14 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 0, i64 1
%15 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 2, i64 1
%16 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 1, i64 0
%17 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 2, i64 0
%18 = bitcast [3 x [3 x i8]]* %1 to <8 x i8>*
br label %19
19: ; preds = %304, %0
%20 = phi i8 [ 46, %0 ], [ %305, %304 ]
%21 = phi i32 [ 0, %0 ], [ %307, %304 ]
%22 = sext i8 %20 to i32
%23 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %22)
%24 = load i8, i8* %14
%25 = sext i8 %24 to i32
%26 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %25)
%27 = load i8, i8* %10
%28 = sext i8 %27 to i32
%29 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %28)
%30 = call i32 @putchar(i32 10)
%31 = load i8, i8* %16
%32 = sext i8 %31 to i32
%33 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %32)
%34 = load i8, i8* %11
%35 = sext i8 %34 to i32
%36 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %35)
%37 = load i8, i8* %13
%38 = sext i8 %37 to i32
%39 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %38)
%40 = call i32 @putchar(i32 10)
%41 = load i8, i8* %17
%42 = sext i8 %41 to i32
%43 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %42)
%44 = load i8, i8* %15
%45 = sext i8 %44 to i32
%46 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %45)
%47 = load i8, i8* %12
%48 = sext i8 %47 to i32
%49 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %48)
%50 = call i32 @putchar(i32 10)
%51 = load <8 x i8>, <8 x i8>* %18
%52 = icmp ne <8 x i8> %51, <i8 46, i8 46, i8 46, i8 46, i8 46, i8 46, i8 46, i8 46>
%53 = load i8, i8* %12
%54 = icmp ne i8 %53, 46
%55 = zext i1 %54 to i32
%56 = bitcast <8 x i1> %52 to i8
%57 = call i8 @llvm.ctpop.i8(i8 %56)
%58 = zext i8 %57 to i32
%59 = add nuw nsw i32 %58, %55
%60 = icmp eq i32 %59, 9
br i1 %60, label %61, label %72
61: ; preds = %19
%62 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @str.21, i64 0, i64 0))
%63 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.3, i64 0, i64 0))
br label %64
64: ; preds = %67, %61
%65 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %5)
%66 = icmp eq i32 %65, 0
br i1 %66, label %67, label %300
67: ; preds = %64
%68 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0))
%69 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%70 = load i32, i32* %5
%71 = icmp ult i32 %70, 2
br i1 %71, label %304, label %64
72: ; preds = %19
%73 = add nsw i32 %21, 1
%74 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.7, i64 0, i64 0))
%75 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %3)
%76 = load i32, i32* %3
%77 = add i32 %76, -4
%78 = icmp ult i32 %77, -3
br i1 %78, label %79, label %85
79: ; preds = %72
%80 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.19, i64 0, i64 0))
%81 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.20, i64 0, i64 0))
%82 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0))
%83 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%84 = extractelement <8 x i8> %51, i64 0
br label %300
85: ; preds = %72
%86 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0))
%87 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %4)
%88 = load i32, i32* %4
%89 = add i32 %88, -4
%90 = icmp ult i32 %89, -3
br i1 %90, label %91, label %97
91: ; preds = %85
%92 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.19, i64 0, i64 0))
%93 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.20, i64 0, i64 0))
%94 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0))
%95 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%96 = extractelement <8 x i8> %51, i64 0
br label %300
97: ; preds = %85
%98 = load i32, i32* %3
%99 = add nsw i32 %98, -1
%100 = sext i32 %99 to i64
%101 = add nsw i32 %88, -1
%102 = zext i32 %101 to i64
%103 = getelementptr inbounds [3 x [3 x i8]], [3 x [3 x i8]]* %1, i64 0, i64 %100, i64 %102
%104 = load i8, i8* %103
switch i8 %104, label %109 [
i8 48, label %105
i8 42, label %105
]
105: ; preds = %97, %97
%106 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.15, i64 0, i64 0))
%107 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.20, i64 0, i64 0))
%108 = extractelement <8 x i8> %51, i64 0
br label %300
109: ; preds = %97
%110 = and i32 %73, 1
%111 = icmp eq i32 %110, 0
br i1 %111, label %206, label %112
112: ; preds = %109
store i8 48, i8* %103
%113 = load i8, i8* %10
%114 = load i8, i8* %11
%115 = load i8, i8* %6
%116 = icmp eq i8 %115, %114
br i1 %116, label %117, label %122
117: ; preds = %112
%118 = load i8, i8* %12
%119 = icmp eq i8 %114, 48
%120 = icmp eq i8 %118, 48
%121 = and i1 %119, %120
br i1 %121, label %166, label %122
122: ; preds = %117, %112
%123 = load i8, i8* %13
%124 = icmp eq i8 %113, %123
br i1 %124, label %125, label %130
125: ; preds = %122
%126 = load i8, i8* %12
%127 = icmp eq i8 %113, 48
%128 = icmp eq i8 %126, 48
%129 = and i1 %127, %128
br i1 %129, label %166, label %130
130: ; preds = %125, %122
%131 = load i8, i8* %14
%132 = icmp eq i8 %131, %114
br i1 %132, label %133, label %138
133: ; preds = %130
%134 = load i8, i8* %15
%135 = icmp eq i8 %114, 48
%136 = icmp eq i8 %134, 48
%137 = and i1 %135, %136
br i1 %137, label %166, label %138
138: ; preds = %133, %130
%139 = load i8, i8* %16
%140 = icmp eq i8 %115, %139
%141 = load i8, i8* %17
br i1 %140, label %142, label %146
142: ; preds = %138
%143 = icmp eq i8 %115, 48
%144 = icmp eq i8 %141, 48
%145 = and i1 %143, %144
br i1 %145, label %166, label %146
146: ; preds = %138, %142
%147 = load i8, i8* %15
%148 = icmp eq i8 %141, %147
br i1 %148, label %149, label %154
149: ; preds = %146
%150 = load i8, i8* %12
%151 = icmp eq i8 %141, 48
%152 = icmp eq i8 %150, 48
%153 = and i1 %151, %152
br i1 %153, label %166, label %154
154: ; preds = %149, %146
%155 = icmp eq i8 %139, %114
br i1 %155, label %156, label %160
156: ; preds = %154
%157 = icmp eq i8 %114, 48
%158 = icmp eq i8 %123, 48
%159 = and i1 %158, %157
br i1 %159, label %166, label %160
160: ; preds = %156, %154
%161 = icmp eq i8 %115, %131
br i1 %161, label %162, label %300
162: ; preds = %160
%163 = icmp eq i8 %115, 48
%164 = icmp eq i8 %113, 48
%165 = and i1 %164, %163
br i1 %165, label %166, label %300
166: ; preds = %162, %156, %149, %142, %133, %125, %117
%167 = sext i8 %115 to i32
%168 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %167)
%169 = load i8, i8* %14
%170 = sext i8 %169 to i32
%171 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %170)
%172 = load i8, i8* %10
%173 = sext i8 %172 to i32
%174 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %173)
%175 = call i32 @putchar(i32 10)
%176 = load i8, i8* %16
%177 = sext i8 %176 to i32
%178 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %177)
%179 = load i8, i8* %11
%180 = sext i8 %179 to i32
%181 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %180)
%182 = load i8, i8* %13
%183 = sext i8 %182 to i32
%184 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %183)
%185 = call i32 @putchar(i32 10)
%186 = load i8, i8* %17
%187 = sext i8 %186 to i32
%188 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %187)
%189 = load i8, i8* %15
%190 = sext i8 %189 to i32
%191 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %190)
%192 = load i8, i8* %12
%193 = sext i8 %192 to i32
%194 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %193)
%195 = call i32 @putchar(i32 10)
%196 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.14, i64 0, i64 0))
%197 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.3, i64 0, i64 0))
br label %198
198: ; preds = %201, %166
%199 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %5)
%200 = icmp eq i32 %199, 0
br i1 %200, label %201, label %300
201: ; preds = %198
%202 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0))
%203 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%204 = load i32, i32* %5
%205 = icmp ult i32 %204, 2
br i1 %205, label %304, label %198
206: ; preds = %109
store i8 42, i8* %103
%207 = load i8, i8* %10
%208 = load i8, i8* %11
%209 = load i8, i8* %6
%210 = icmp eq i8 %209, %208
br i1 %210, label %211, label %218
211: ; preds = %206
%212 = load i8, i8* %12
%213 = icmp eq i8 %208, %212
%214 = icmp eq i8 %207, 42
%215 = select i1 %213, i1 %214, i1 false
br i1 %215, label %216, label %218
216: ; preds = %211
%217 = load i8, i8* %13
br label %262
218: ; preds = %211, %206
%219 = load i8, i8* %13
%220 = icmp eq i8 %207, %219
br i1 %220, label %221, label %226
221: ; preds = %218
%222 = load i8, i8* %12
%223 = icmp eq i8 %207, 42
%224 = icmp eq i8 %222, 42
%225 = and i1 %223, %224
br i1 %225, label %262, label %226
226: ; preds = %221, %218
%227 = load i8, i8* %14
%228 = icmp eq i8 %227, %208
br i1 %228, label %229, label %234
229: ; preds = %226
%230 = load i8, i8* %15
%231 = icmp eq i8 %208, 42
%232 = icmp eq i8 %230, 42
%233 = and i1 %231, %232
br i1 %233, label %262, label %234
234: ; preds = %229, %226
%235 = load i8, i8* %16
%236 = icmp eq i8 %209, %235
%237 = load i8, i8* %17
br i1 %236, label %238, label %242
238: ; preds = %234
%239 = icmp eq i8 %209, 42
%240 = icmp eq i8 %237, 42
%241 = and i1 %239, %240
br i1 %241, label %262, label %242
242: ; preds = %234, %238
%243 = load i8, i8* %15
%244 = icmp eq i8 %237, %243
br i1 %244, label %245, label %250
245: ; preds = %242
%246 = load i8, i8* %12
%247 = icmp eq i8 %237, 42
%248 = icmp eq i8 %246, 42
%249 = and i1 %247, %248
br i1 %249, label %262, label %250
250: ; preds = %245, %242
%251 = icmp eq i8 %235, %208
br i1 %251, label %252, label %256
252: ; preds = %250
%253 = icmp eq i8 %208, 42
%254 = icmp eq i8 %219, 42
%255 = and i1 %254, %253
br i1 %255, label %262, label %256
256: ; preds = %252, %250
%257 = icmp eq i8 %209, %227
br i1 %257, label %258, label %300
258: ; preds = %256
%259 = icmp eq i8 %209, 42
%260 = icmp eq i8 %207, 42
%261 = and i1 %260, %259
br i1 %261, label %262, label %300
262: ; preds = %216, %258, %252, %245, %238, %229, %221
%263 = phi i8 [ %217, %216 ], [ %219, %258 ], [ 42, %252 ], [ %219, %245 ], [ %219, %238 ], [ %219, %229 ], [ 42, %221 ]
%264 = sext i8 %209 to i32
%265 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %264)
%266 = load i8, i8* %14
%267 = sext i8 %266 to i32
%268 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %267)
%269 = sext i8 %207 to i32
%270 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %269)
%271 = call i32 @putchar(i32 10)
%272 = load i8, i8* %16
%273 = sext i8 %272 to i32
%274 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %273)
%275 = sext i8 %208 to i32
%276 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %275)
%277 = sext i8 %263 to i32
%278 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %277)
%279 = call i32 @putchar(i32 10)
%280 = load i8, i8* %17
%281 = sext i8 %280 to i32
%282 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %281)
%283 = load i8, i8* %15
%284 = sext i8 %283 to i32
%285 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %284)
%286 = load i8, i8* %12
%287 = sext i8 %286 to i32
%288 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %287)
%289 = call i32 @putchar(i32 10)
%290 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str, i64 0, i64 0))
%291 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.3, i64 0, i64 0))
br label %292
292: ; preds = %295, %262
%293 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %5)
%294 = icmp eq i32 %293, 0
br i1 %294, label %295, label %300
295: ; preds = %292
%296 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0))
%297 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%298 = load i32, i32* %5
%299 = icmp ult i32 %298, 2
br i1 %299, label %304, label %292
300: ; preds = %198, %292, %64, %79, %91, %105, %256, %258, %160, %162
%301 = phi i8 [ %209, %256 ], [ %209, %258 ], [ %115, %160 ], [ %115, %162 ], [ %108, %105 ], [ %96, %91 ], [ %84, %79 ], [ 46, %64 ], [ 46, %292 ], [ 46, %198 ]
%302 = phi i32 [ %73, %256 ], [ %73, %258 ], [ %73, %160 ], [ %73, %162 ], [ %21, %105 ], [ %21, %91 ], [ %21, %79 ], [ 0, %64 ], [ 0, %292 ], [ 0, %198 ]
%303 = load i32, i32* %5
br label %304
304: ; preds = %201, %295, %67, %300
%305 = phi i8 [ %301, %300 ], [ 46, %67 ], [ 46, %295 ], [ 46, %201 ]
%306 = phi i32 [ %303, %300 ], [ %70, %67 ], [ %298, %295 ], [ %204, %201 ]
%307 = phi i32 [ %302, %300 ], [ 0, %67 ], [ 0, %295 ], [ 0, %201 ]
%308 = icmp eq i32 %306, 0
br i1 %308, label %309, label %19
309: ; preds = %304
ret i32 0
}