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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ scanf(char *, int *);
int main(void) {
  int grid[255][255], num, i, j, count, max, flag;
  int integer;
  while (1) {
    scanf("%d\n", &num);
    if (num == 0)
      break;
    max = 0;
    for (i = 0; i < num; i++) {
      for (j = 0; j < num; j++) {
        scanf("%c ", &integer);
        grid[i][j] = integer - '0';
      }
    }
    for (i = 0; i < num; i++) {
      flag = 0, count = 0;
      for (j = 0; j < num; j++) {
        if (flag == 0 && grid[i][j] == 1) {
          count = 1, flag = 1;
        } else if (flag == 1 && grid[i][j] == 1) {
          count++;
        } else if (flag == 1 && grid[i][j] == 0) {
          if (count > max)
            max = count;
          flag = 0, count = 0;
        }
      }
      if (count > max)
        max = count;
      if (max == num)
        break;
      flag = 0, count = 0;
      for (j = 0; j < num; j++) {
        if (flag == 0 && grid[j][i] == 1) {
          count = 1, flag = 1;
        } else if (flag == 1 && grid[j][i] == 1) {
          count++;
        } else if (flag == 1 && grid[j][i] == 0) {
          if (count > max)
            max = count;
          flag = 0, count = 0;
        }
      }
      if (count > max)
        max = count;
      if (max == num)
        break;
    }
    if (max == num) {
      printf("%d\n", max);
      continue;
    }
    for (i = 0; i <= num - 1; i++) {
      flag = 0, count = 0;
      for (j = 0; j <= num - 1 - i; j++) {
        if (flag == 0 && grid[num - 1 - i - j][j] == 1) {
          count = 1, flag = 1;
        } else if (flag == 1 && grid[num - 1 - i - j][j] == 1) {
          count++;
        } else if (flag == 1 && grid[num - 1 - i - j][j] == 0) {
          if (count > max)
            max = count;
          flag = 0, count = 0;
        }
      }
      if (count > max)
        max = count;
      if (max == num - i)
        break;
      flag = 0, count = 0;
      if (i) {
        for (j = num - 1; j >= i; j--) {
          if (flag == 0 && grid[j][num - 1 + i - j] == 1) {
            count = 1, flag = 1;
          } else if (flag == 1 && grid[j][num - 1 + i - j] == 1) {
            count++;
          } else if (flag == 1 && grid[j][num - 1 + i - j] == 0) {
            if (count > max)
              max = count;
            flag = 0, count = 0;
          }
        }
        if (count > max)
          max = count;
      }
      if (max == num - i)
        break;
      flag = 0, count = 0;
      for (j = 0; j <= num - 1 - i; j++) {
        if (flag == 0 && grid[j + i][j] == 1) {
          count = 1, flag = 1;
        } else if (flag == 1 && grid[j + i][j] == 1) {
          count++;
        } else if (flag == 1 && grid[j + i][j] == 0) {
          if (count > max)
            max = count;
          flag = 0, count = 0;
        }
      }
      if (count > max)
        max = count;
      if (max == num - i)
        break;
      flag = 0, count = 0;
      if (i) {
        for (j = 0; j <= num - 1 - i; j++) {
          if (flag == 0 && grid[j][j + i] == 1) {
            count = 1, flag = 1;
          } else if (flag == 1 && grid[j][j + i] == 1) {
            count++;
          } else if (flag == 1 && grid[j][j + i] == 0) {
            if (count > max)
              max = count;
            flag = 0, count = 0;
          }
        }
        if (count > max)
          max = count;
      }
      if (max == num - i)
        break;
    }
    printf("%d\n", max);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x3f830,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xec7(%rip),%rdi
lea    -0x3f814(%rbp),%rsi
call   1040 <scanf@plt>
cmpl   $0x0,-0x3f814(%rbp)
jne    1157 <main+0x37>
jmp    1ce9 <main+0xbc9>
movl   $0x0,-0x3f824(%rbp)
movl   $0x0,-0x3f818(%rbp)
mov    -0x3f818(%rbp),%eax
cmp    -0x3f814(%rbp),%eax
jge    1204 <main+0xe4>
movl   $0x0,-0x3f81c(%rbp)
mov    -0x3f81c(%rbp),%eax
cmp    -0x3f814(%rbp),%eax
jge    11eb <main+0xcb>
lea    0xe64(%rip),%rdi
lea    -0x3f82c(%rbp),%rsi
call   1040 <scanf@plt>
mov    -0x3f82c(%rbp),%edx
sub    $0x30,%edx
movslq -0x3f818(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x3f81c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f81c(%rbp)
jmp    1187 <main+0x67>
jmp    11f0 <main+0xd0>
mov    -0x3f818(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f818(%rbp)
jmp    116b <main+0x4b>
movl   $0x0,-0x3f818(%rbp)
mov    -0x3f818(%rbp),%eax
cmp    -0x3f814(%rbp),%eax
jge    154b <main+0x42b>
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
movl   $0x0,-0x3f81c(%rbp)
mov    -0x3f81c(%rbp),%eax
cmp    -0x3f814(%rbp),%eax
jge    1374 <main+0x254>
cmpl   $0x0,-0x3f828(%rbp)
jne    129f <main+0x17f>
movslq -0x3f818(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    129f <main+0x17f>
movl   $0x1,-0x3f820(%rbp)
movl   $0x1,-0x3f828(%rbp)
jmp    135b <main+0x23b>
cmpl   $0x1,-0x3f828(%rbp)
jne    12e9 <main+0x1c9>
movslq -0x3f818(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    12e9 <main+0x1c9>
mov    -0x3f820(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f820(%rbp)
jmp    1356 <main+0x236>
cmpl   $0x1,-0x3f828(%rbp)
jne    1351 <main+0x231>
movslq -0x3f818(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1351 <main+0x231>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    133d <main+0x21d>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
jmp    1356 <main+0x236>
jmp    135b <main+0x23b>
jmp    1360 <main+0x240>
mov    -0x3f81c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f81c(%rbp)
jmp    123e <main+0x11e>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    1392 <main+0x272>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
mov    -0x3f824(%rbp),%eax
cmp    -0x3f814(%rbp),%eax
jne    13a9 <main+0x289>
jmp    154b <main+0x42b>
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
movl   $0x0,-0x3f81c(%rbp)
mov    -0x3f81c(%rbp),%eax
cmp    -0x3f814(%rbp),%eax
jge    14fd <main+0x3dd>
cmpl   $0x0,-0x3f828(%rbp)
jne    1428 <main+0x308>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f818(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1428 <main+0x308>
movl   $0x1,-0x3f820(%rbp)
movl   $0x1,-0x3f828(%rbp)
jmp    14e4 <main+0x3c4>
cmpl   $0x1,-0x3f828(%rbp)
jne    1472 <main+0x352>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f818(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1472 <main+0x352>
mov    -0x3f820(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f820(%rbp)
jmp    14df <main+0x3bf>
cmpl   $0x1,-0x3f828(%rbp)
jne    14da <main+0x3ba>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f818(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    14da <main+0x3ba>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    14c6 <main+0x3a6>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
jmp    14df <main+0x3bf>
jmp    14e4 <main+0x3c4>
jmp    14e9 <main+0x3c9>
mov    -0x3f81c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f81c(%rbp)
jmp    13c7 <main+0x2a7>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    151b <main+0x3fb>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
mov    -0x3f824(%rbp),%eax
cmp    -0x3f814(%rbp),%eax
jne    1532 <main+0x412>
jmp    154b <main+0x42b>
jmp    1537 <main+0x417>
mov    -0x3f818(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f818(%rbp)
jmp    120e <main+0xee>
mov    -0x3f824(%rbp),%eax
cmp    -0x3f814(%rbp),%eax
jne    1574 <main+0x454>
mov    -0x3f824(%rbp),%esi
lea    0xa96(%rip),%rdi
call   1030 <printf@plt>
jmp    1132 <main+0x12>
movl   $0x0,-0x3f818(%rbp)
mov    -0x3f818(%rbp),%eax
mov    -0x3f814(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1cd2 <main+0xbb2>
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
movl   $0x0,-0x3f81c(%rbp)
mov    -0x3f81c(%rbp),%eax
mov    -0x3f814(%rbp),%ecx
sub    $0x1,%ecx
sub    -0x3f818(%rbp),%ecx
cmp    %ecx,%eax
jg     1727 <main+0x607>
cmpl   $0x0,-0x3f828(%rbp)
jne    1630 <main+0x510>
mov    -0x3f814(%rbp),%eax
sub    $0x1,%eax
sub    -0x3f818(%rbp),%eax
sub    -0x3f81c(%rbp),%eax
movslq %eax,%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1630 <main+0x510>
movl   $0x1,-0x3f820(%rbp)
movl   $0x1,-0x3f828(%rbp)
jmp    170e <main+0x5ee>
cmpl   $0x1,-0x3f828(%rbp)
jne    168b <main+0x56b>
mov    -0x3f814(%rbp),%eax
sub    $0x1,%eax
sub    -0x3f818(%rbp),%eax
sub    -0x3f81c(%rbp),%eax
movslq %eax,%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    168b <main+0x56b>
mov    -0x3f820(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f820(%rbp)
jmp    1709 <main+0x5e9>
cmpl   $0x1,-0x3f828(%rbp)
jne    1704 <main+0x5e4>
mov    -0x3f814(%rbp),%eax
sub    $0x1,%eax
sub    -0x3f818(%rbp),%eax
sub    -0x3f81c(%rbp),%eax
movslq %eax,%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1704 <main+0x5e4>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    16f0 <main+0x5d0>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
jmp    1709 <main+0x5e9>
jmp    170e <main+0x5ee>
jmp    1713 <main+0x5f3>
mov    -0x3f81c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f81c(%rbp)
jmp    15b3 <main+0x493>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    1745 <main+0x625>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
mov    -0x3f824(%rbp),%eax
mov    -0x3f814(%rbp),%ecx
sub    -0x3f818(%rbp),%ecx
cmp    %ecx,%eax
jne    1764 <main+0x644>
jmp    1cd2 <main+0xbb2>
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
cmpl   $0x0,-0x3f818(%rbp)
je     1920 <main+0x800>
mov    -0x3f814(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x3f81c(%rbp)
mov    -0x3f81c(%rbp),%eax
cmp    -0x3f818(%rbp),%eax
jl     18fd <main+0x7dd>
cmpl   $0x0,-0x3f828(%rbp)
jne    1806 <main+0x6e6>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
mov    -0x3f814(%rbp),%ecx
sub    $0x1,%ecx
add    -0x3f818(%rbp),%ecx
sub    -0x3f81c(%rbp),%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1806 <main+0x6e6>
movl   $0x1,-0x3f820(%rbp)
movl   $0x1,-0x3f828(%rbp)
jmp    18e4 <main+0x7c4>
cmpl   $0x1,-0x3f828(%rbp)
jne    1861 <main+0x741>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
mov    -0x3f814(%rbp),%ecx
sub    $0x1,%ecx
add    -0x3f818(%rbp),%ecx
sub    -0x3f81c(%rbp),%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1861 <main+0x741>
mov    -0x3f820(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f820(%rbp)
jmp    18df <main+0x7bf>
cmpl   $0x1,-0x3f828(%rbp)
jne    18da <main+0x7ba>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
mov    -0x3f814(%rbp),%ecx
sub    $0x1,%ecx
add    -0x3f818(%rbp),%ecx
sub    -0x3f81c(%rbp),%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    18da <main+0x7ba>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    18c6 <main+0x7a6>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
jmp    18df <main+0x7bf>
jmp    18e4 <main+0x7c4>
jmp    18e9 <main+0x7c9>
mov    -0x3f81c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x3f81c(%rbp)
jmp    1794 <main+0x674>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    191b <main+0x7fb>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
jmp    1920 <main+0x800>
mov    -0x3f824(%rbp),%eax
mov    -0x3f814(%rbp),%ecx
sub    -0x3f818(%rbp),%ecx
cmp    %ecx,%eax
jne    193f <main+0x81f>
jmp    1cd2 <main+0xbb2>
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
movl   $0x0,-0x3f81c(%rbp)
mov    -0x3f81c(%rbp),%eax
mov    -0x3f814(%rbp),%ecx
sub    $0x1,%ecx
sub    -0x3f818(%rbp),%ecx
cmp    %ecx,%eax
jg     1ab6 <main+0x996>
cmpl   $0x0,-0x3f828(%rbp)
jne    19d1 <main+0x8b1>
mov    -0x3f81c(%rbp),%eax
add    -0x3f818(%rbp),%eax
movslq %eax,%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    19d1 <main+0x8b1>
movl   $0x1,-0x3f820(%rbp)
movl   $0x1,-0x3f828(%rbp)
jmp    1a9d <main+0x97d>
cmpl   $0x1,-0x3f828(%rbp)
jne    1a23 <main+0x903>
mov    -0x3f81c(%rbp),%eax
add    -0x3f818(%rbp),%eax
movslq %eax,%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1a23 <main+0x903>
mov    -0x3f820(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f820(%rbp)
jmp    1a98 <main+0x978>
cmpl   $0x1,-0x3f828(%rbp)
jne    1a93 <main+0x973>
mov    -0x3f81c(%rbp),%eax
add    -0x3f818(%rbp),%eax
movslq %eax,%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
movslq -0x3f81c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1a93 <main+0x973>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    1a7f <main+0x95f>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
jmp    1a98 <main+0x978>
jmp    1a9d <main+0x97d>
jmp    1aa2 <main+0x982>
mov    -0x3f81c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f81c(%rbp)
jmp    195d <main+0x83d>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    1ad4 <main+0x9b4>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
mov    -0x3f824(%rbp),%eax
mov    -0x3f814(%rbp),%ecx
sub    -0x3f818(%rbp),%ecx
cmp    %ecx,%eax
jne    1af3 <main+0x9d3>
jmp    1cd2 <main+0xbb2>
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
cmpl   $0x0,-0x3f818(%rbp)
je     1c9a <main+0xb7a>
movl   $0x0,-0x3f81c(%rbp)
mov    -0x3f81c(%rbp),%eax
mov    -0x3f814(%rbp),%ecx
sub    $0x1,%ecx
sub    -0x3f818(%rbp),%ecx
cmp    %ecx,%eax
jg     1c77 <main+0xb57>
cmpl   $0x0,-0x3f828(%rbp)
jne    1b92 <main+0xa72>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
mov    -0x3f81c(%rbp),%ecx
add    -0x3f818(%rbp),%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1b92 <main+0xa72>
movl   $0x1,-0x3f820(%rbp)
movl   $0x1,-0x3f828(%rbp)
jmp    1c5e <main+0xb3e>
cmpl   $0x1,-0x3f828(%rbp)
jne    1be4 <main+0xac4>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
mov    -0x3f81c(%rbp),%ecx
add    -0x3f818(%rbp),%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1be4 <main+0xac4>
mov    -0x3f820(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f820(%rbp)
jmp    1c59 <main+0xb39>
cmpl   $0x1,-0x3f828(%rbp)
jne    1c54 <main+0xb34>
movslq -0x3f81c(%rbp),%rcx
lea    -0x3f810(%rbp),%rax
imul   $0x3fc,%rcx,%rcx
add    %rcx,%rax
mov    -0x3f81c(%rbp),%ecx
add    -0x3f818(%rbp),%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1c54 <main+0xb34>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    1c40 <main+0xb20>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
movl   $0x0,-0x3f828(%rbp)
movl   $0x0,-0x3f820(%rbp)
jmp    1c59 <main+0xb39>
jmp    1c5e <main+0xb3e>
jmp    1c63 <main+0xb43>
mov    -0x3f81c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f81c(%rbp)
jmp    1b1e <main+0x9fe>
mov    -0x3f820(%rbp),%eax
cmp    -0x3f824(%rbp),%eax
jle    1c95 <main+0xb75>
mov    -0x3f820(%rbp),%eax
mov    %eax,-0x3f824(%rbp)
jmp    1c9a <main+0xb7a>
mov    -0x3f824(%rbp),%eax
mov    -0x3f814(%rbp),%ecx
sub    -0x3f818(%rbp),%ecx
cmp    %ecx,%eax
jne    1cb9 <main+0xb99>
jmp    1cd2 <main+0xbb2>
jmp    1cbe <main+0xb9e>
mov    -0x3f818(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f818(%rbp)
jmp    157e <main+0x45e>
mov    -0x3f824(%rbp),%esi
lea    0x321(%rip),%rdi
call   1030 <printf@plt>
jmp    1132 <main+0x12>
xor    %eax,%eax
add    $0x3f830,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x3f838,%rsp
lea    0xec8(%rip),%rdi
lea    0x8(%rsp),%rsi
call   1040 <scanf@plt>
mov    0x8(%rsp),%eax
test   %eax,%eax
je     15d0 <main+0x4b0>
lea    0xeaf(%rip),%r14
lea    0xc(%rsp),%r13
jmp    1198 <main+0x78>
nopl   0x0(%rax)
mov    %r12d,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0xe89(%rip),%rbx
mov    %rbx,%rdi
call   1030 <printf@plt>
mov    %rbx,%rdi
lea    0x8(%rsp),%rsi
call   1040 <scanf@plt>
mov    0x8(%rsp),%eax
test   %eax,%eax
je     15d0 <main+0x4b0>
test   %eax,%eax
jle    1320 <main+0x200>
lea    0x30(%rsp),%rbx
xor    %r15d,%r15d
jmp    11c3 <main+0xa3>
nopw   0x0(%rax,%rax,1)
movslq %eax,%rcx
add    $0x1,%r15
add    $0x3fc,%rbx
cmp    %rcx,%r15
jge    1200 <main+0xe0>
test   %eax,%eax
jle    11b0 <main+0x90>
xor    %ebp,%ebp
nopl   0x0(%rax)
mov    %r14,%rdi
mov    %r13,%rsi
call   1040 <scanf@plt>
mov    0xc(%rsp),%eax
add    $0xffffffd0,%eax
mov    %eax,(%rbx,%rbp,4)
add    $0x1,%rbp
movslq 0x8(%rsp),%rax
cmp    %rax,%rbp
jl     11d0 <main+0xb0>
jmp    11b0 <main+0x90>
cs nopw 0x0(%rax,%rax,1)
nop
test   %eax,%eax
setg   %r8b
jle    1320 <main+0x200>
mov    %eax,%r11d
imul   $0x3fc,%r11,%r10
xor    %r9d,%r9d
lea    0x30(%rsp),%rbp
mov    %rbp,%r15
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %ebx,%ebx
xor    %edx,%edx
xor    %edi,%edi
jmp    1254 <main+0x134>
nopl   0x0(%rax,%rax,1)
xor    %edx,%edx
cmp    $0x1,%ecx
sete   %dl
cmove  %ecx,%edi
add    $0x1,%rbx
cmp    %rbx,%r11
je     1280 <main+0x160>
mov    0x0(%rbp,%rbx,4),%ecx
test   %edx,%edx
je     1240 <main+0x120>
test   %ecx,%ecx
je     1270 <main+0x150>
mov    $0x1,%edx
cmp    $0x1,%ecx
jne    124b <main+0x12b>
add    $0x1,%edi
jmp    124b <main+0x12b>
nop
cmp    %esi,%edi
cmovg  %edi,%esi
xor    %edi,%edi
xor    %edx,%edx
jmp    124b <main+0x12b>
nopl   0x0(%rax,%rax,1)
cmp    %esi,%edi
cmovg  %edi,%esi
cmp    %eax,%esi
je     15c9 <main+0x4a9>
xor    %ebx,%ebx
xor    %edx,%edx
xor    %edi,%edi
jmp    12b7 <main+0x197>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %edx,%edx
cmp    $0x1,%ecx
sete   %dl
cmove  %ecx,%edi
add    $0x3fc,%rbx
cmp    %rbx,%r10
je     12f0 <main+0x1d0>
mov    (%r15,%rbx,1),%ecx
test   %edx,%edx
je     12a0 <main+0x180>
test   %ecx,%ecx
je     12e0 <main+0x1c0>
mov    $0x1,%edx
cmp    $0x1,%ecx
jne    12ab <main+0x18b>
add    $0x1,%edi
jmp    12ab <main+0x18b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    %esi,%edi
cmovg  %edi,%esi
xor    %edi,%edi
xor    %edx,%edx
jmp    12ab <main+0x18b>
nopl   0x0(%rax,%rax,1)
cmp    %esi,%edi
cmovg  %edi,%esi
cmp    %eax,%esi
je     1325 <main+0x205>
add    $0x1,%r9
add    $0x3fc,%rbp
add    $0x4,%r15
cmp    %r11,%r9
jb     1230 <main+0x110>
jmp    1325 <main+0x205>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %r8d,%r8d
xor    %esi,%esi
cmp    %eax,%esi
je     1170 <main+0x50>
test   %r8b,%r8b
je     1170 <main+0x50>
movslq %eax,%rcx
lea    -0x1(%rax),%r8d
mov    %rcx,0x18(%rsp)
imul   $0x3fc,%rcx,%rdx
lea    -0x3cc(%rsp),%rcx
ff
add    %rcx,%rdx
mov    %rdx,0x20(%rsp)
lea    0x30(%rsp),%rcx
mov    %rcx,%r10
mov    %rcx,0x10(%rsp)
xor    %r9d,%r9d
mov    %eax,%r11d
nopl   0x0(%rax)
mov    %r11d,%r11d
mov    %r9d,%r15d
not    %r15d
add    %eax,%r15d
js     13f0 <main+0x2d0>
mov    %r8d,%ecx
imul   $0x3fc,%rcx,%rcx
lea    (%rsp,%rcx,1),%rdx
add    $0x30,%rdx
xor    %ecx,%ecx
xor    %ebx,%ebx
xor    %edi,%edi
jmp    13bb <main+0x29b>
nopl   0x0(%rax,%rax,1)
xor    %ebx,%ebx
cmp    $0x1,%ebp
sete   %bl
cmove  %ebp,%edi
add    $0x1,%rcx
add    $0xfffffffffffffc08,%rdx
cmp    %rcx,%r11
je     13f2 <main+0x2d2>
mov    (%rdx),%ebp
test   %ebx,%ebx
je     13a0 <main+0x280>
test   %ebp,%ebp
je     13e0 <main+0x2c0>
mov    $0x1,%ebx
cmp    $0x1,%ebp
jne    13ab <main+0x28b>
add    $0x1,%edi
jmp    13ab <main+0x28b>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    %esi,%edi
cmovg  %edi,%esi
xor    %edi,%edi
xor    %ebx,%ebx
jmp    13ab <main+0x28b>
nopl   0x0(%rax,%rax,1)
xor    %edi,%edi
cmp    %esi,%edi
cmovg  %edi,%esi
mov    %eax,%r12d
sub    %r9d,%r12d
cmp    %r12d,%esi
je     1170 <main+0x50>
test   %r9,%r9
je     149d <main+0x37d>
mov    %r10,0x28(%rsp)
mov    %r8d,%ebp
xor    %r10d,%r10d
mov    0x20(%rsp),%r8
mov    %r9d,%edx
mov    0x18(%rsp),%rcx
xor    %edi,%edi
jmp    1450 <main+0x330>
nopl   0x0(%rax,%rax,1)
mov    (%r8,%rbx,4),%ebx
xor    %r10d,%r10d
cmp    $0x1,%ebx
sete   %r10b
cmove  %ebx,%edi
add    $0x1,%edx
add    $0xfffffffffffffc04,%r8
cmp    %r9,%rcx
jle    1490 <main+0x370>
movslq %edx,%rbx
add    $0xffffffffffffffff,%rcx
test   %r10d,%r10d
je     1430 <main+0x310>
mov    (%r8,%rbx,4),%ebx
test   %ebx,%ebx
je     1480 <main+0x360>
mov    $0x1,%r10d
cmp    $0x1,%ebx
jne    1441 <main+0x321>
add    $0x1,%edi
jmp    1441 <main+0x321>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    %esi,%edi
cmovg  %edi,%esi
xor    %edi,%edi
xor    %r10d,%r10d
jmp    1441 <main+0x321>
nopl   0x0(%rax)
cmp    %esi,%edi
cmovg  %edi,%esi
mov    %ebp,%r8d
mov    0x28(%rsp),%r10
cmp    %r12d,%esi
je     1160 <main+0x40>
test   %r15d,%r15d
js     1510 <main+0x3f0>
xor    %ecx,%ecx
mov    0x10(%rsp),%rdx
xor    %ebx,%ebx
xor    %edi,%edi
jmp    14db <main+0x3bb>
nopl   0x0(%rax,%rax,1)
xor    %ebx,%ebx
cmp    $0x1,%ebp
sete   %bl
cmove  %ebp,%edi
add    $0x1,%rcx
add    $0x400,%rdx
cmp    %rcx,%r11
je     1512 <main+0x3f2>
mov    (%rdx),%ebp
test   %ebx,%ebx
je     14c0 <main+0x3a0>
test   %ebp,%ebp
je     1500 <main+0x3e0>
mov    $0x1,%ebx
cmp    $0x1,%ebp
jne    14cb <main+0x3ab>
add    $0x1,%edi
jmp    14cb <main+0x3ab>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    %esi,%edi
cmovg  %edi,%esi
xor    %edi,%edi
xor    %ebx,%ebx
jmp    14cb <main+0x3ab>
nopl   0x0(%rax,%rax,1)
xor    %edi,%edi
cmp    %esi,%edi
cmovg  %edi,%esi
cmp    %r12d,%esi
je     1160 <main+0x40>
test   %r9,%r9
je     1597 <main+0x477>
test   %r15d,%r15d
js     1590 <main+0x470>
xor    %ecx,%ecx
mov    %r10,%rdi
xor    %ebx,%ebx
xor    %edx,%edx
jmp    155b <main+0x43b>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %ebx,%ebx
cmp    $0x1,%ebp
sete   %bl
cmove  %ebp,%edx
add    $0x1,%rcx
add    $0x400,%rdi
cmp    %rcx,%r11
je     1592 <main+0x472>
mov    (%rdi),%ebp
test   %ebx,%ebx
je     1540 <main+0x420>
test   %ebp,%ebp
je     1580 <main+0x460>
mov    $0x1,%ebx
cmp    $0x1,%ebp
jne    154b <main+0x42b>
add    $0x1,%edx
jmp    154b <main+0x42b>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    %esi,%edx
cmovg  %edx,%esi
xor    %edx,%edx
xor    %ebx,%ebx
jmp    154b <main+0x42b>
nopl   0x0(%rax,%rax,1)
xor    %edx,%edx
cmp    %esi,%edx
cmovg  %edx,%esi
cmp    %r12d,%esi
je     1170 <main+0x50>
add    $0x1,%r9
add    $0xffffffff,%r11d
add    $0xffffffff,%r8d
addq   $0x3fc,0x10(%rsp)
add    $0x4,%r10
cmp    0x18(%rsp),%r9
jl     1370 <main+0x250>
jmp    1170 <main+0x50>
mov    %eax,%esi
jmp    1170 <main+0x50>
xor    %eax,%eax
add    $0x3f838,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [4 x i8] c"%d\0A\00"
@.str.1 = [4 x i8] c"%c \00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [255 x [255 x i32]]
%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
br label %10
10: ; preds = %0, %193, %551
%11 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32* %3)
%12 = load i32, i32* %3
%13 = icmp eq i32 %12, 0
br i1 %13, label %14, label %15
14: ; preds = %10
br label %554
15: ; preds = %10
store i32 0, i32* %7
store i32 0, i32* %4
br label %16
16: ; preds = %39, %15
%17 = load i32, i32* %4
%18 = load i32, i32* %3
%19 = icmp slt i32 %17, %18
br i1 %19, label %20, label %42
20: ; preds = %16
store i32 0, i32* %5
br label %21
21: ; preds = %35, %20
%22 = load i32, i32* %5
%23 = load i32, i32* %3
%24 = icmp slt i32 %22, %23
br i1 %24, label %25, label %38
25: ; preds = %21
%26 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i32* %9)
%27 = load i32, i32* %9
%28 = sub nsw i32 %27, 48
%29 = load i32, i32* %4
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %30
%32 = load i32, i32* %5
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [255 x i32], [255 x i32]* %31, i64 0, i64 %33
store i32 %28, i32* %34
br label %35
35: ; preds = %25
%36 = load i32, i32* %5
%37 = add nsw i32 %36, 1
store i32 %37, i32* %5
br label %21
38: ; preds = %21
br label %39
39: ; preds = %38
%40 = load i32, i32* %4
%41 = add nsw i32 %40, 1
store i32 %41, i32* %4
br label %16
42: ; preds = %16
store i32 0, i32* %4
br label %43
43: ; preds = %186, %42
%44 = load i32, i32* %4
%45 = load i32, i32* %3
%46 = icmp slt i32 %44, %45
br i1 %46, label %47, label %189
47: ; preds = %43
store i32 0, i32* %8
store i32 0, i32* %6
store i32 0, i32* %5
br label %48
48: ; preds = %102, %47
%49 = load i32, i32* %5
%50 = load i32, i32* %3
%51 = icmp slt i32 %49, %50
br i1 %51, label %52, label %105
52: ; preds = %48
%53 = load i32, i32* %8
%54 = icmp eq i32 %53, 0
br i1 %54, label %55, label %65
55: ; preds = %52
%56 = load i32, i32* %4
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %57
%59 = load i32, i32* %5
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds [255 x i32], [255 x i32]* %58, i64 0, i64 %60
%62 = load i32, i32* %61
%63 = icmp eq i32 %62, 1
br i1 %63, label %64, label %65
64: ; preds = %55
store i32 1, i32* %6
store i32 1, i32* %8
br label %101
65: ; preds = %55, %52
%66 = load i32, i32* %8
%67 = icmp eq i32 %66, 1
br i1 %67, label %68, label %80
68: ; preds = %65
%69 = load i32, i32* %4
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %70
%72 = load i32, i32* %5
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [255 x i32], [255 x i32]* %71, i64 0, i64 %73
%75 = load i32, i32* %74
%76 = icmp eq i32 %75, 1
br i1 %76, label %77, label %80
77: ; preds = %68
%78 = load i32, i32* %6
%79 = add nsw i32 %78, 1
store i32 %79, i32* %6
br label %100
80: ; preds = %68, %65
%81 = load i32, i32* %8
%82 = icmp eq i32 %81, 1
br i1 %82, label %83, label %99
83: ; preds = %80
%84 = load i32, i32* %4
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %85
%87 = load i32, i32* %5
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [255 x i32], [255 x i32]* %86, i64 0, i64 %88
%90 = load i32, i32* %89
%91 = icmp eq i32 %90, 0
br i1 %91, label %92, label %99
92: ; preds = %83
%93 = load i32, i32* %6
%94 = load i32, i32* %7
%95 = icmp sgt i32 %93, %94
br i1 %95, label %96, label %98
96: ; preds = %92
%97 = load i32, i32* %6
store i32 %97, i32* %7
br label %98
98: ; preds = %96, %92
store i32 0, i32* %8
store i32 0, i32* %6
br label %99
99: ; preds = %98, %83, %80
br label %100
100: ; preds = %99, %77
br label %101
101: ; preds = %100, %64
br label %102
102: ; preds = %101
%103 = load i32, i32* %5
%104 = add nsw i32 %103, 1
store i32 %104, i32* %5
br label %48
105: ; preds = %48
%106 = load i32, i32* %6
%107 = load i32, i32* %7
%108 = icmp sgt i32 %106, %107
br i1 %108, label %109, label %111
109: ; preds = %105
%110 = load i32, i32* %6
store i32 %110, i32* %7
br label %111
111: ; preds = %109, %105
%112 = load i32, i32* %7
%113 = load i32, i32* %3
%114 = icmp eq i32 %112, %113
br i1 %114, label %115, label %116
115: ; preds = %111
br label %189
116: ; preds = %111
store i32 0, i32* %8
store i32 0, i32* %6
store i32 0, i32* %5
br label %117
117: ; preds = %171, %116
%118 = load i32, i32* %5
%119 = load i32, i32* %3
%120 = icmp slt i32 %118, %119
br i1 %120, label %121, label %174
121: ; preds = %117
%122 = load i32, i32* %8
%123 = icmp eq i32 %122, 0
br i1 %123, label %124, label %134
124: ; preds = %121
%125 = load i32, i32* %5
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %126
%128 = load i32, i32* %4
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds [255 x i32], [255 x i32]* %127, i64 0, i64 %129
%131 = load i32, i32* %130
%132 = icmp eq i32 %131, 1
br i1 %132, label %133, label %134
133: ; preds = %124
store i32 1, i32* %6
store i32 1, i32* %8
br label %170
134: ; preds = %124, %121
%135 = load i32, i32* %8
%136 = icmp eq i32 %135, 1
br i1 %136, label %137, label %149
137: ; preds = %134
%138 = load i32, i32* %5
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %139
%141 = load i32, i32* %4
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds [255 x i32], [255 x i32]* %140, i64 0, i64 %142
%144 = load i32, i32* %143
%145 = icmp eq i32 %144, 1
br i1 %145, label %146, label %149
146: ; preds = %137
%147 = load i32, i32* %6
%148 = add nsw i32 %147, 1
store i32 %148, i32* %6
br label %169
149: ; preds = %137, %134
%150 = load i32, i32* %8
%151 = icmp eq i32 %150, 1
br i1 %151, label %152, label %168
152: ; preds = %149
%153 = load i32, i32* %5
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %154
%156 = load i32, i32* %4
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds [255 x i32], [255 x i32]* %155, i64 0, i64 %157
%159 = load i32, i32* %158
%160 = icmp eq i32 %159, 0
br i1 %160, label %161, label %168
161: ; preds = %152
%162 = load i32, i32* %6
%163 = load i32, i32* %7
%164 = icmp sgt i32 %162, %163
br i1 %164, label %165, label %167
165: ; preds = %161
%166 = load i32, i32* %6
store i32 %166, i32* %7
br label %167
167: ; preds = %165, %161
store i32 0, i32* %8
store i32 0, i32* %6
br label %168
168: ; preds = %167, %152, %149
br label %169
169: ; preds = %168, %146
br label %170
170: ; preds = %169, %133
br label %171
171: ; preds = %170
%172 = load i32, i32* %5
%173 = add nsw i32 %172, 1
store i32 %173, i32* %5
br label %117
174: ; preds = %117
%175 = load i32, i32* %6
%176 = load i32, i32* %7
%177 = icmp sgt i32 %175, %176
br i1 %177, label %178, label %180
178: ; preds = %174
%179 = load i32, i32* %6
store i32 %179, i32* %7
br label %180
180: ; preds = %178, %174
%181 = load i32, i32* %7
%182 = load i32, i32* %3
%183 = icmp eq i32 %181, %182
br i1 %183, label %184, label %185
184: ; preds = %180
br label %189
185: ; preds = %180
br label %186
186: ; preds = %185
%187 = load i32, i32* %4
%188 = add nsw i32 %187, 1
store i32 %188, i32* %4
br label %43
189: ; preds = %184, %115, %43
%190 = load i32, i32* %7
%191 = load i32, i32* %3
%192 = icmp eq i32 %190, %191
br i1 %192, label %193, label %196
193: ; preds = %189
%194 = load i32, i32* %7
%195 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %194)
br label %10
196: ; preds = %189
store i32 0, i32* %4
br label %197
197: ; preds = %548, %196
%198 = load i32, i32* %4
%199 = load i32, i32* %3
%200 = sub nsw i32 %199, 1
%201 = icmp sle i32 %198, %200
br i1 %201, label %202, label %551
202: ; preds = %197
store i32 0, i32* %8
store i32 0, i32* %6
store i32 0, i32* %5
br label %203
203: ; preds = %275, %202
%204 = load i32, i32* %5
%205 = load i32, i32* %3
%206 = sub nsw i32 %205, 1
%207 = load i32, i32* %4
%208 = sub nsw i32 %206, %207
%209 = icmp sle i32 %204, %208
br i1 %209, label %210, label %278
210: ; preds = %203
%211 = load i32, i32* %8
%212 = icmp eq i32 %211, 0
br i1 %212, label %213, label %228
213: ; preds = %210
%214 = load i32, i32* %3
%215 = sub nsw i32 %214, 1
%216 = load i32, i32* %4
%217 = sub nsw i32 %215, %216
%218 = load i32, i32* %5
%219 = sub nsw i32 %217, %218
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %220
%222 = load i32, i32* %5
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds [255 x i32], [255 x i32]* %221, i64 0, i64 %223
%225 = load i32, i32* %224
%226 = icmp eq i32 %225, 1
br i1 %226, label %227, label %228
227: ; preds = %213
store i32 1, i32* %6
store i32 1, i32* %8
br label %274
228: ; preds = %213, %210
%229 = load i32, i32* %8
%230 = icmp eq i32 %229, 1
br i1 %230, label %231, label %248
231: ; preds = %228
%232 = load i32, i32* %3
%233 = sub nsw i32 %232, 1
%234 = load i32, i32* %4
%235 = sub nsw i32 %233, %234
%236 = load i32, i32* %5
%237 = sub nsw i32 %235, %236
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %238
%240 = load i32, i32* %5
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [255 x i32], [255 x i32]* %239, i64 0, i64 %241
%243 = load i32, i32* %242
%244 = icmp eq i32 %243, 1
br i1 %244, label %245, label %248
245: ; preds = %231
%246 = load i32, i32* %6
%247 = add nsw i32 %246, 1
store i32 %247, i32* %6
br label %273
248: ; preds = %231, %228
%249 = load i32, i32* %8
%250 = icmp eq i32 %249, 1
br i1 %250, label %251, label %272
251: ; preds = %248
%252 = load i32, i32* %3
%253 = sub nsw i32 %252, 1
%254 = load i32, i32* %4
%255 = sub nsw i32 %253, %254
%256 = load i32, i32* %5
%257 = sub nsw i32 %255, %256
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %258
%260 = load i32, i32* %5
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds [255 x i32], [255 x i32]* %259, i64 0, i64 %261
%263 = load i32, i32* %262
%264 = icmp eq i32 %263, 0
br i1 %264, label %265, label %272
265: ; preds = %251
%266 = load i32, i32* %6
%267 = load i32, i32* %7
%268 = icmp sgt i32 %266, %267
br i1 %268, label %269, label %271
269: ; preds = %265
%270 = load i32, i32* %6
store i32 %270, i32* %7
br label %271
271: ; preds = %269, %265
store i32 0, i32* %8
store i32 0, i32* %6
br label %272
272: ; preds = %271, %251, %248
br label %273
273: ; preds = %272, %245
br label %274
274: ; preds = %273, %227
br label %275
275: ; preds = %274
%276 = load i32, i32* %5
%277 = add nsw i32 %276, 1
store i32 %277, i32* %5
br label %203
278: ; preds = %203
%279 = load i32, i32* %6
%280 = load i32, i32* %7
%281 = icmp sgt i32 %279, %280
br i1 %281, label %282, label %284
282: ; preds = %278
%283 = load i32, i32* %6
store i32 %283, i32* %7
br label %284
284: ; preds = %282, %278
%285 = load i32, i32* %7
%286 = load i32, i32* %3
%287 = load i32, i32* %4
%288 = sub nsw i32 %286, %287
%289 = icmp eq i32 %285, %288
br i1 %289, label %290, label %291
290: ; preds = %284
br label %551
291: ; preds = %284
store i32 0, i32* %8
store i32 0, i32* %6
%292 = load i32, i32* %4
%293 = icmp ne i32 %292, 0
br i1 %293, label %294, label %376
294: ; preds = %291
%295 = load i32, i32* %3
%296 = sub nsw i32 %295, 1
store i32 %296, i32* %5
br label %297
297: ; preds = %366, %294
%298 = load i32, i32* %5
%299 = load i32, i32* %4
%300 = icmp sge i32 %298, %299
br i1 %300, label %301, label %369
301: ; preds = %297
%302 = load i32, i32* %8
%303 = icmp eq i32 %302, 0
br i1 %303, label %304, label %319
304: ; preds = %301
%305 = load i32, i32* %5
%306 = sext i32 %305 to i64
%307 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %306
%308 = load i32, i32* %3
%309 = sub nsw i32 %308, 1
%310 = load i32, i32* %4
%311 = add nsw i32 %309, %310
%312 = load i32, i32* %5
%313 = sub nsw i32 %311, %312
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds [255 x i32], [255 x i32]* %307, i64 0, i64 %314
%316 = load i32, i32* %315
%317 = icmp eq i32 %316, 1
br i1 %317, label %318, label %319
318: ; preds = %304
store i32 1, i32* %6
store i32 1, i32* %8
br label %365
319: ; preds = %304, %301
%320 = load i32, i32* %8
%321 = icmp eq i32 %320, 1
br i1 %321, label %322, label %339
322: ; preds = %319
%323 = load i32, i32* %5
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %324
%326 = load i32, i32* %3
%327 = sub nsw i32 %326, 1
%328 = load i32, i32* %4
%329 = add nsw i32 %327, %328
%330 = load i32, i32* %5
%331 = sub nsw i32 %329, %330
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds [255 x i32], [255 x i32]* %325, i64 0, i64 %332
%334 = load i32, i32* %333
%335 = icmp eq i32 %334, 1
br i1 %335, label %336, label %339
336: ; preds = %322
%337 = load i32, i32* %6
%338 = add nsw i32 %337, 1
store i32 %338, i32* %6
br label %364
339: ; preds = %322, %319
%340 = load i32, i32* %8
%341 = icmp eq i32 %340, 1
br i1 %341, label %342, label %363
342: ; preds = %339
%343 = load i32, i32* %5
%344 = sext i32 %343 to i64
%345 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %344
%346 = load i32, i32* %3
%347 = sub nsw i32 %346, 1
%348 = load i32, i32* %4
%349 = add nsw i32 %347, %348
%350 = load i32, i32* %5
%351 = sub nsw i32 %349, %350
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds [255 x i32], [255 x i32]* %345, i64 0, i64 %352
%354 = load i32, i32* %353
%355 = icmp eq i32 %354, 0
br i1 %355, label %356, label %363
356: ; preds = %342
%357 = load i32, i32* %6
%358 = load i32, i32* %7
%359 = icmp sgt i32 %357, %358
br i1 %359, label %360, label %362
360: ; preds = %356
%361 = load i32, i32* %6
store i32 %361, i32* %7
br label %362
362: ; preds = %360, %356
store i32 0, i32* %8
store i32 0, i32* %6
br label %363
363: ; preds = %362, %342, %339
br label %364
364: ; preds = %363, %336
br label %365
365: ; preds = %364, %318
br label %366
366: ; preds = %365
%367 = load i32, i32* %5
%368 = add nsw i32 %367, -1
store i32 %368, i32* %5
br label %297
369: ; preds = %297
%370 = load i32, i32* %6
%371 = load i32, i32* %7
%372 = icmp sgt i32 %370, %371
br i1 %372, label %373, label %375
373: ; preds = %369
%374 = load i32, i32* %6
store i32 %374, i32* %7
br label %375
375: ; preds = %373, %369
br label %376
376: ; preds = %375, %291
%377 = load i32, i32* %7
%378 = load i32, i32* %3
%379 = load i32, i32* %4
%380 = sub nsw i32 %378, %379
%381 = icmp eq i32 %377, %380
br i1 %381, label %382, label %383
382: ; preds = %376
br label %551
383: ; preds = %376
store i32 0, i32* %8
store i32 0, i32* %6
store i32 0, i32* %5
br label %384
384: ; preds = %447, %383
%385 = load i32, i32* %5
%386 = load i32, i32* %3
%387 = sub nsw i32 %386, 1
%388 = load i32, i32* %4
%389 = sub nsw i32 %387, %388
%390 = icmp sle i32 %385, %389
br i1 %390, label %391, label %450
391: ; preds = %384
%392 = load i32, i32* %8
%393 = icmp eq i32 %392, 0
br i1 %393, label %394, label %406
394: ; preds = %391
%395 = load i32, i32* %5
%396 = load i32, i32* %4
%397 = add nsw i32 %395, %396
%398 = sext i32 %397 to i64
%399 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %398
%400 = load i32, i32* %5
%401 = sext i32 %400 to i64
%402 = getelementptr inbounds [255 x i32], [255 x i32]* %399, i64 0, i64 %401
%403 = load i32, i32* %402
%404 = icmp eq i32 %403, 1
br i1 %404, label %405, label %406
405: ; preds = %394
store i32 1, i32* %6
store i32 1, i32* %8
br label %446
406: ; preds = %394, %391
%407 = load i32, i32* %8
%408 = icmp eq i32 %407, 1
br i1 %408, label %409, label %423
409: ; preds = %406
%410 = load i32, i32* %5
%411 = load i32, i32* %4
%412 = add nsw i32 %410, %411
%413 = sext i32 %412 to i64
%414 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %413
%415 = load i32, i32* %5
%416 = sext i32 %415 to i64
%417 = getelementptr inbounds [255 x i32], [255 x i32]* %414, i64 0, i64 %416
%418 = load i32, i32* %417
%419 = icmp eq i32 %418, 1
br i1 %419, label %420, label %423
420: ; preds = %409
%421 = load i32, i32* %6
%422 = add nsw i32 %421, 1
store i32 %422, i32* %6
br label %445
423: ; preds = %409, %406
%424 = load i32, i32* %8
%425 = icmp eq i32 %424, 1
br i1 %425, label %426, label %444
426: ; preds = %423
%427 = load i32, i32* %5
%428 = load i32, i32* %4
%429 = add nsw i32 %427, %428
%430 = sext i32 %429 to i64
%431 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %430
%432 = load i32, i32* %5
%433 = sext i32 %432 to i64
%434 = getelementptr inbounds [255 x i32], [255 x i32]* %431, i64 0, i64 %433
%435 = load i32, i32* %434
%436 = icmp eq i32 %435, 0
br i1 %436, label %437, label %444
437: ; preds = %426
%438 = load i32, i32* %6
%439 = load i32, i32* %7
%440 = icmp sgt i32 %438, %439
br i1 %440, label %441, label %443
441: ; preds = %437
%442 = load i32, i32* %6
store i32 %442, i32* %7
br label %443
443: ; preds = %441, %437
store i32 0, i32* %8
store i32 0, i32* %6
br label %444
444: ; preds = %443, %426, %423
br label %445
445: ; preds = %444, %420
br label %446
446: ; preds = %445, %405
br label %447
447: ; preds = %446
%448 = load i32, i32* %5
%449 = add nsw i32 %448, 1
store i32 %449, i32* %5
br label %384
450: ; preds = %384
%451 = load i32, i32* %6
%452 = load i32, i32* %7
%453 = icmp sgt i32 %451, %452
br i1 %453, label %454, label %456
454: ; preds = %450
%455 = load i32, i32* %6
store i32 %455, i32* %7
br label %456
456: ; preds = %454, %450
%457 = load i32, i32* %7
%458 = load i32, i32* %3
%459 = load i32, i32* %4
%460 = sub nsw i32 %458, %459
%461 = icmp eq i32 %457, %460
br i1 %461, label %462, label %463
462: ; preds = %456
br label %551
463: ; preds = %456
store i32 0, i32* %8
store i32 0, i32* %6
%464 = load i32, i32* %4
%465 = icmp ne i32 %464, 0
br i1 %465, label %466, label %540
466: ; preds = %463
store i32 0, i32* %5
br label %467
467: ; preds = %530, %466
%468 = load i32, i32* %5
%469 = load i32, i32* %3
%470 = sub nsw i32 %469, 1
%471 = load i32, i32* %4
%472 = sub nsw i32 %470, %471
%473 = icmp sle i32 %468, %472
br i1 %473, label %474, label %533
474: ; preds = %467
%475 = load i32, i32* %8
%476 = icmp eq i32 %475, 0
br i1 %476, label %477, label %489
477: ; preds = %474
%478 = load i32, i32* %5
%479 = sext i32 %478 to i64
%480 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %479
%481 = load i32, i32* %5
%482 = load i32, i32* %4
%483 = add nsw i32 %481, %482
%484 = sext i32 %483 to i64
%485 = getelementptr inbounds [255 x i32], [255 x i32]* %480, i64 0, i64 %484
%486 = load i32, i32* %485
%487 = icmp eq i32 %486, 1
br i1 %487, label %488, label %489
488: ; preds = %477
store i32 1, i32* %6
store i32 1, i32* %8
br label %529
489: ; preds = %477, %474
%490 = load i32, i32* %8
%491 = icmp eq i32 %490, 1
br i1 %491, label %492, label %506
492: ; preds = %489
%493 = load i32, i32* %5
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %494
%496 = load i32, i32* %5
%497 = load i32, i32* %4
%498 = add nsw i32 %496, %497
%499 = sext i32 %498 to i64
%500 = getelementptr inbounds [255 x i32], [255 x i32]* %495, i64 0, i64 %499
%501 = load i32, i32* %500
%502 = icmp eq i32 %501, 1
br i1 %502, label %503, label %506
503: ; preds = %492
%504 = load i32, i32* %6
%505 = add nsw i32 %504, 1
store i32 %505, i32* %6
br label %528
506: ; preds = %492, %489
%507 = load i32, i32* %8
%508 = icmp eq i32 %507, 1
br i1 %508, label %509, label %527
509: ; preds = %506
%510 = load i32, i32* %5
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds [255 x [255 x i32]], [255 x [255 x i32]]* %2, i64 0, i64 %511
%513 = load i32, i32* %5
%514 = load i32, i32* %4
%515 = add nsw i32 %513, %514
%516 = sext i32 %515 to i64
%517 = getelementptr inbounds [255 x i32], [255 x i32]* %512, i64 0, i64 %516
%518 = load i32, i32* %517
%519 = icmp eq i32 %518, 0
br i1 %519, label %520, label %527
520: ; preds = %509
%521 = load i32, i32* %6
%522 = load i32, i32* %7
%523 = icmp sgt i32 %521, %522
br i1 %523, label %524, label %526
524: ; preds = %520
%525 = load i32, i32* %6
store i32 %525, i32* %7
br label %526
526: ; preds = %524, %520
store i32 0, i32* %8
store i32 0, i32* %6
br label %527
527: ; preds = %526, %509, %506
br label %528
528: ; preds = %527, %503
br label %529
529: ; preds = %528, %488
br label %530
530: ; preds = %529
%531 = load i32, i32* %5
%532 = add nsw i32 %531, 1
store i32 %532, i32* %5
br label %467
533: ; preds = %467
%534 = load i32, i32* %6
%535 = load i32, i32* %7
%536 = icmp sgt i32 %534, %535
br i1 %536, label %537, label %539
537: ; preds = %533
%538 = load i32, i32* %6
store i32 %538, i32* %7
br label %539
539: ; preds = %537, %533
br label %540
540: ; preds = %539, %463
%541 = load i32, i32* %7
%542 = load i32, i32* %3
%543 = load i32, i32* %4
%544 = sub nsw i32 %542, %543
%545 = icmp eq i32 %541, %544
br i1 %545, label %546, label %547
546: ; preds = %540
br label %551
547: ; preds = %540
br label %548
548: ; preds = %547
%549 = load i32, i32* %4
%550 = add nsw i32 %549, 1
store i32 %550, i32* %4
br label %197
551: ; preds = %546, %462, %382, %290, %197
%552 = load i32, i32* %7
%553 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %552)
br label %10
554: ; preds = %14
ret i32 0
}

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