#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 /*<<< orphan*/ scanf(char *, int *, int *);
int main(void) {
  int num, sum, ans[45], i, j, k, l, m;
  while (1) {
    scanf("%d %d\n", &num, &sum);
    if (num == 0 && sum == 0)
      break;
    if (sum > num * (19 - num) / 2 || sum < num * (num - 1) / 2) {
      printf("0\n");
      continue;
    }
    for (i = 0; i < 45; i++)
      ans[i] = 0;
    switch (num) {
    case 1:
      for (i = 0; i <= 9; i++)
        ans[i]++;
      break;
    case 2:
      for (i = 0; i <= 8; i++) {
        for (j = i + 1; j <= 9; j++)
          ans[i + j]++;
      }
      break;
    case 3:
      for (i = 0; i <= 7; i++) {
        for (j = i + 1; j <= 8; j++) {
          for (k = j + 1; k <= 9; k++)
            ans[i + j + k]++;
        }
      }
      break;
    case 4:
      for (i = 0; i <= 6; i++) {
        for (j = i + 1; j <= 7; j++) {
          for (k = j + 1; k <= 8; k++) {
            for (l = k + 1; l <= 9; l++)
              ans[i + j + k + l]++;
          }
        }
      }
      break;
    case 5:
      for (i = 0; i <= 5; i++) {
        for (j = i + 1; j <= 6; j++) {
          for (k = j + 1; k <= 7; k++) {
            for (l = k + 1; l <= 8; l++) {
              for (m = l + 1; m <= 9; m++)
                ans[i + j + k + l + m]++;
            }
          }
        }
      }
      break;
    case 6:
      for (i = 0; i <= 6; i++) {
        for (j = i + 1; j <= 7; j++) {
          for (k = j + 1; k <= 8; k++) {
            for (l = k + 1; l <= 9; l++)
              ans[45 - (i + j + k + l)]++;
          }
        }
      }
      break;
    case 7:
      for (i = 0; i <= 7; i++) {
        for (j = i + 1; j <= 8; j++) {
          for (k = j + 1; k <= 9; k++)
            ans[45 - (i + j + k)]++;
        }
      }
      break;
    case 8:
      for (i = 0; i <= 8; i++) {
        for (j = i + 1; j <= 9; j++)
          ans[45 - (i + j)]++;
      }
      break;
    case 9:
      for (i = 0; i <= 9; i++)
        ans[45 - i]++;
      break;
    }
    printf("%d\n", ans[sum]);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeeb(%rip),%rdi
lea    -0x8(%rbp),%rsi
lea    -0xc(%rbp),%rdx
call   1040 <scanf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    115f <main+0x3f>
cmpl   $0x0,-0xc(%rbp)
jne    115f <main+0x3f>
jmp    18b2 <main+0x792>
mov    -0xc(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x13,%ecx
sub    -0x8(%rbp),%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xd8(%rbp),%eax
cmp    %ecx,%eax
jg     11bb <main+0x9b>
mov    -0xc(%rbp),%eax
mov    %eax,-0xdc(%rbp)
mov    -0x8(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xdc(%rbp),%eax
cmp    %ecx,%eax
jge    11ce <main+0xae>
lea    0xe69(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1132 <main+0x12>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x2d,-0xc4(%rbp)
jge    120b <main+0xeb>
movslq -0xc4(%rbp),%rax
movl   $0x0,-0xc0(%rbp,%rax,4)
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    11d8 <main+0xb8>
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xe8(%rbp)
sub    $0x8,%eax
ja     1894 <main+0x774>
mov    -0xe8(%rbp),%rax
lea    0xdcf(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x0,-0xc4(%rbp)
cmpl   $0x9,-0xc4(%rbp)
jg     127d <main+0x15d>
movslq -0xc4(%rbp),%rax
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    1244 <main+0x124>
jmp    1894 <main+0x774>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x8,-0xc4(%rbp)
jg     1301 <main+0x1e1>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
cmpl   $0x9,-0xc8(%rbp)
jg     12e8 <main+0x1c8>
mov    -0xc4(%rbp),%eax
add    -0xc8(%rbp),%eax
cltq
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    12a8 <main+0x188>
jmp    12ed <main+0x1cd>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    128c <main+0x16c>
jmp    1894 <main+0x774>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x7,-0xc4(%rbp)
jg     13c0 <main+0x2a0>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
cmpl   $0x8,-0xc8(%rbp)
jg     13a7 <main+0x287>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
cmpl   $0x9,-0xcc(%rbp)
jg     138e <main+0x26e>
mov    -0xc4(%rbp),%eax
add    -0xc8(%rbp),%eax
add    -0xcc(%rbp),%eax
cltq
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
jmp    1348 <main+0x228>
jmp    1393 <main+0x273>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    132c <main+0x20c>
jmp    13ac <main+0x28c>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    1310 <main+0x1f0>
jmp    1894 <main+0x774>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x6,-0xc4(%rbp)
jg     14ba <main+0x39a>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
cmpl   $0x7,-0xc8(%rbp)
jg     14a1 <main+0x381>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
cmpl   $0x8,-0xcc(%rbp)
jg     1488 <main+0x368>
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
cmpl   $0x9,-0xd0(%rbp)
jg     146f <main+0x34f>
mov    -0xc4(%rbp),%eax
add    -0xc8(%rbp),%eax
add    -0xcc(%rbp),%eax
add    -0xd0(%rbp),%eax
cltq
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    1423 <main+0x303>
jmp    1474 <main+0x354>
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
jmp    1407 <main+0x2e7>
jmp    148d <main+0x36d>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    13eb <main+0x2cb>
jmp    14a6 <main+0x386>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    13cf <main+0x2af>
jmp    1894 <main+0x774>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x5,-0xc4(%rbp)
jg     15ef <main+0x4cf>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
cmpl   $0x6,-0xc8(%rbp)
jg     15d6 <main+0x4b6>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
cmpl   $0x7,-0xcc(%rbp)
jg     15bd <main+0x49d>
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
cmpl   $0x8,-0xd0(%rbp)
jg     15a4 <main+0x484>
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
cmpl   $0x9,-0xd4(%rbp)
jg     158b <main+0x46b>
mov    -0xc4(%rbp),%eax
add    -0xc8(%rbp),%eax
add    -0xcc(%rbp),%eax
add    -0xd0(%rbp),%eax
add    -0xd4(%rbp),%eax
cltq
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    1539 <main+0x419>
jmp    1590 <main+0x470>
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    151d <main+0x3fd>
jmp    15a9 <main+0x489>
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
jmp    1501 <main+0x3e1>
jmp    15c2 <main+0x4a2>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    14e5 <main+0x3c5>
jmp    15db <main+0x4bb>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    14c9 <main+0x3a9>
jmp    1894 <main+0x774>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x6,-0xc4(%rbp)
jg     16f0 <main+0x5d0>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
cmpl   $0x7,-0xc8(%rbp)
jg     16d7 <main+0x5b7>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
cmpl   $0x8,-0xcc(%rbp)
jg     16be <main+0x59e>
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
cmpl   $0x9,-0xd0(%rbp)
jg     16a5 <main+0x585>
mov    -0xc4(%rbp),%ecx
add    -0xc8(%rbp),%ecx
add    -0xcc(%rbp),%ecx
add    -0xd0(%rbp),%ecx
mov    $0x2d,%eax
sub    %ecx,%eax
cltq
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    1652 <main+0x532>
jmp    16aa <main+0x58a>
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
jmp    1636 <main+0x516>
jmp    16c3 <main+0x5a3>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    161a <main+0x4fa>
jmp    16dc <main+0x5bc>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    15fe <main+0x4de>
jmp    1894 <main+0x774>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x7,-0xc4(%rbp)
jg     17b6 <main+0x696>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
cmpl   $0x8,-0xc8(%rbp)
jg     179d <main+0x67d>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
cmpl   $0x9,-0xcc(%rbp)
jg     1784 <main+0x664>
mov    -0xc4(%rbp),%ecx
add    -0xc8(%rbp),%ecx
add    -0xcc(%rbp),%ecx
mov    $0x2d,%eax
sub    %ecx,%eax
cltq
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
jmp    1737 <main+0x617>
jmp    1789 <main+0x669>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    171b <main+0x5fb>
jmp    17a2 <main+0x682>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    16ff <main+0x5df>
jmp    1894 <main+0x774>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x8,-0xc4(%rbp)
jg     1841 <main+0x721>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
cmpl   $0x9,-0xc8(%rbp)
jg     1828 <main+0x708>
mov    -0xc4(%rbp),%ecx
add    -0xc8(%rbp),%ecx
mov    $0x2d,%eax
sub    %ecx,%eax
cltq
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    17e1 <main+0x6c1>
jmp    182d <main+0x70d>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    17c5 <main+0x6a5>
jmp    1894 <main+0x774>
movl   $0x0,-0xc4(%rbp)
cmpl   $0x9,-0xc4(%rbp)
jg     188f <main+0x76f>
mov    $0x2d,%eax
sub    -0xc4(%rbp),%eax
cltq
mov    -0xc0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    1850 <main+0x730>
jmp    1894 <main+0x774>
movslq -0xc(%rbp),%rax
mov    -0xc0(%rbp,%rax,4),%esi
lea    0x781(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1132 <main+0x12>
xor    %eax,%eax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xd8,%rsp
lea    0xf2c(%rip),%rdi
lea    0x8(%rsp),%rsi
lea    0x4(%rsp),%rdx
call   1050 <scanf@plt>
mov    0x8(%rsp),%eax
mov    0x4(%rsp),%esi
mov    %eax,%ecx
or     %esi,%ecx
jne    1179 <main+0x49>
xor    %eax,%eax
add    $0xd8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xefb(%rip),%r14
lea    0xeed(%rip),%r15
lea    0x8(%rsp),%rbx
lea    0x4(%rsp),%rbp
jmp    11c4 <main+0x94>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r14,%rdi
call   1030 <puts@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
call   1050 <scanf@plt>
mov    0x8(%rsp),%eax
mov    0x4(%rsp),%esi
mov    %eax,%ecx
or     %esi,%ecx
je     1165 <main+0x35>
mov    $0x13,%ecx
sub    %eax,%ecx
imul   %eax,%ecx
mov    %ecx,%edx
shr    $0x1f,%edx
add    %ecx,%edx
sar    %edx
cmp    %edx,%esi
jg     11a0 <main+0x70>
lea    -0x1(%rax),%ecx
imul   %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
add    %eax,%edx
sar    %edx
cmp    %edx,%esi
jl     11a0 <main+0x70>
mov    %esi,0xc(%rsp)
xorps  %xmm0,%xmm0
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movl   $0x0,0xd0(%rsp)
cmp    $0x8,%ecx
ja     1760 <main+0x630>
lea    0xdfa(%rip),%rdx
movslq (%rdx,%rcx,4),%rax
add    %rdx,%rax
jmp    *%rax
movaps 0xd9a(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movabs $0x100000001,%rax
mov    %rax,0x40(%rsp)
jmp    1760 <main+0x630>
movaps 0xdb5(%rip),%xmm0
movups %xmm0,0x24(%rsp)
movaps 0xd99(%rip),%xmm0
movups %xmm0,0x34(%rsp)
movaps 0xd7d(%rip),%xmm0
movups %xmm0,0x44(%rsp)
movaps 0xd61(%rip),%xmm0
movups %xmm0,0x54(%rsp)
movl   $0x1,0x64(%rsp)
jmp    1760 <main+0x630>
lea    0x48(%rsp),%rax
xor    %ecx,%ecx
jmp    12de <main+0x1ae>
nopw   0x0(%rax,%rax,1)
add    $0xc,%rax
cmp    $0x8,%rcx
je     1760 <main+0x630>
mov    %rcx,%rdx
add    $0x1,%rcx
xor    %esi,%esi
jmp    12fa <main+0x1ca>
nopl   0x0(%rax)
add    $0x1,%rsi
cmp    $0x8,%rdi
je     12d0 <main+0x1a0>
lea    (%rdx,%rsi,1),%rdi
add    $0x1,%rdi
cmp    $0x8,%rdi
ja     12f0 <main+0x1c0>
lea    (%rdx,%rsi,1),%rbp
add    $0x2,%rbp
addl   $0x1,-0x1c(%rax,%rsi,8)
cmp    $0x8,%rbp
ja     12f0 <main+0x1c0>
lea    (%rdx,%rsi,1),%rbx
add    $0xfffffffffffffffa,%rbx
addl   $0x1,-0x18(%rax,%rsi,8)
test   %rbx,%rbx
je     12f0 <main+0x1c0>
addl   $0x1,-0x14(%rax,%rsi,8)
cmp    $0x6,%rbp
ja     12f0 <main+0x1c0>
lea    (%rdx,%rsi,1),%rbx
add    $0xfffffffffffffffc,%rbx
addl   $0x1,-0x10(%rax,%rsi,8)
test   %rbx,%rbx
je     12f0 <main+0x1c0>
addl   $0x1,-0xc(%rax,%rsi,8)
cmp    $0x4,%rbp
ja     12f0 <main+0x1c0>
lea    (%rdx,%rsi,1),%rbx
add    $0xfffffffffffffffe,%rbx
addl   $0x1,-0x8(%rax,%rsi,8)
test   %rbx,%rbx
je     12f0 <main+0x1c0>
addl   $0x1,-0x4(%rax,%rsi,8)
cmp    $0x2,%rbp
ja     12f0 <main+0x1c0>
addl   $0x1,(%rax,%rsi,8)
jmp    12f0 <main+0x1c0>
mov    $0x1,%r10d
lea    0x50(%rsp),%r8
xor    %r9d,%r9d
jmp    13a2 <main+0x272>
nop
add    $0x1,%r10
add    $0x10,%r8
cmp    $0x7,%r9
je     1760 <main+0x630>
mov    %r9,%rsi
add    $0x1,%r9
mov    %r8,%rdi
mov    %r10,%rcx
jmp    13ce <main+0x29e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rsi
add    $0xc,%rdi
cmp    $0x8,%rcx
je     1390 <main+0x260>
mov    %rcx,%rax
add    $0x1,%rcx
cmp    $0x7,%rax
ja     13c0 <main+0x290>
xor    %ebx,%ebx
jmp    13ea <main+0x2ba>
nop
add    $0x1,%rbx
cmp    $0x7,%rax
ja     13c0 <main+0x290>
lea    (%rsi,%rbx,1),%rax
add    $0x2,%rax
cmp    $0x8,%rax
ja     13c0 <main+0x290>
lea    (%rsi,%rbx,1),%rbp
add    $0x3,%rbp
addl   $0x1,-0x18(%rdi,%rbx,8)
cmp    $0x8,%rbp
ja     13e0 <main+0x2b0>
lea    (%rsi,%rbx,1),%rdx
add    $0xfffffffffffffffb,%rdx
addl   $0x1,-0x14(%rdi,%rbx,8)
test   %rdx,%rdx
je     13e0 <main+0x2b0>
addl   $0x1,-0x10(%rdi,%rbx,8)
cmp    $0x6,%rbp
ja     13e0 <main+0x2b0>
lea    (%rsi,%rbx,1),%rdx
add    $0xfffffffffffffffd,%rdx
addl   $0x1,-0xc(%rdi,%rbx,8)
test   %rdx,%rdx
je     13e0 <main+0x2b0>
addl   $0x1,-0x8(%rdi,%rbx,8)
cmp    $0x4,%rbp
ja     13e0 <main+0x2b0>
lea    (%rsi,%rbx,1),%rdx
add    $0xffffffffffffffff,%rdx
addl   $0x1,-0x4(%rdi,%rbx,8)
test   %rdx,%rdx
je     13e0 <main+0x2b0>
addl   $0x1,(%rdi,%rbx,8)
jmp    13e0 <main+0x2b0>
mov    $0x2,%r14d
mov    $0x1,%r11d
lea    0x5c(%rsp),%r15
xor    %ebp,%ebp
jmp    14a0 <main+0x370>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x18(%rsp),%r14
add    $0x1,%r14
add    $0x1,%r11
add    $0x14,%r15
mov    0x10(%rsp),%rbp
cmp    $0x6,%rbp
je     1760 <main+0x630>
lea    0x1(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    %r15,%rbx
mov    %r11,%rdx
mov    %r14,0x18(%rsp)
jmp    14d2 <main+0x3a2>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%r14
add    $0x1,%rbp
add    $0x10,%rbx
cmp    $0x7,%rdx
je     1480 <main+0x350>
mov    %rdx,%rcx
add    $0x1,%rdx
mov    %rbx,%rsi
mov    %rbp,%rdi
mov    %r14,%r10
jmp    14f8 <main+0x3c8>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rdi
add    $0xc,%rsi
cmp    $0x6,%rcx
ja     14c0 <main+0x390>
cmp    $0x7,%r10
ja     14c0 <main+0x390>
mov    %r10,%rcx
add    $0x1,%r10
xor    %r12d,%r12d
jmp    151a <main+0x3ea>
add    $0x1,%r12
cmp    $0x7,%r13
ja     14f0 <main+0x3c0>
lea    (%rdi,%r12,1),%r13
add    $0x3,%r13
cmp    $0x8,%r13
ja     14f0 <main+0x3c0>
lea    (%rdi,%r12,1),%r8
add    $0x4,%r8
addl   $0x1,-0x14(%rsi,%r12,8)
cmp    $0x8,%r8
ja     1510 <main+0x3e0>
lea    (%rdi,%r12,1),%r9
add    $0xfffffffffffffffc,%r9
addl   $0x1,-0x10(%rsi,%r12,8)
test   %r9,%r9
je     1510 <main+0x3e0>
addl   $0x1,-0xc(%rsi,%r12,8)
cmp    $0x6,%r8
ja     1510 <main+0x3e0>
lea    (%rdi,%r12,1),%rax
add    $0xfffffffffffffffe,%rax
addl   $0x1,-0x8(%rsi,%r12,8)
test   %rax,%rax
je     1510 <main+0x3e0>
addl   $0x1,-0x4(%rsi,%r12,8)
cmp    $0x4,%r8
ja     1510 <main+0x3e0>
addl   $0x1,(%rsi,%r12,8)
jmp    1510 <main+0x3e0>
mov    $0x2,%r10d
mov    $0x1,%r11d
lea    0xbc(%rsp),%rdi
xor    %r9d,%r9d
jmp    15b6 <main+0x486>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r10
add    $0x1,%r11
add    $0xfffffffffffffff0,%rdi
cmp    $0x7,%r9
je     1760 <main+0x630>
add    $0x1,%r9
mov    %rdi,%rsi
mov    %r11,%rdx
mov    %r10,%rbx
jmp    15de <main+0x4ae>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rbx
add    $0xfffffffffffffff4,%rsi
cmp    $0x8,%rdx
je     15a0 <main+0x470>
mov    %rdx,%rcx
add    $0x1,%rdx
mov    %rsi,%rax
mov    %rbx,%rbp
jmp    15f8 <main+0x4c8>
nopl   (%rax)
add    $0xfffffffffffffff8,%rax
lea    -0x1(%rbp),%rcx
cmp    $0x7,%rcx
ja     15d0 <main+0x4a0>
cmp    $0x8,%rbp
ja     15d0 <main+0x4a0>
mov    %rbp,%rcx
add    $0x1,%rbp
addl   $0x1,(%rax)
cmp    $0x8,%rbp
ja     15f0 <main+0x4c0>
addl   $0x1,-0x4(%rax)
cmp    $0x7,%rcx
je     15f0 <main+0x4c0>
addl   $0x1,-0x8(%rax)
cmp    $0x6,%rbp
ja     15f0 <main+0x4c0>
addl   $0x1,-0xc(%rax)
cmp    $0x5,%rcx
je     15f0 <main+0x4c0>
addl   $0x1,-0x10(%rax)
cmp    $0x4,%rbp
ja     15f0 <main+0x4c0>
addl   $0x1,-0x14(%rax)
cmp    $0x3,%rcx
je     15f0 <main+0x4c0>
addl   $0x1,-0x18(%rax)
jmp    15f0 <main+0x4c0>
mov    $0x9,%eax
lea    0xc8(%rsp),%rcx
xor    %edx,%edx
jmp    1672 <main+0x542>
nopl   (%rax)
add    $0xfffffffffffffff4,%rcx
add    $0x1,%rax
cmp    $0x8,%rdx
je     1760 <main+0x630>
add    $0x1,%rdx
mov    %rax,%rsi
mov    %rcx,%rdi
jmp    168e <main+0x55e>
xchg   %ax,%ax
add    $0xfffffffffffffff8,%rdi
add    $0x1,%rsi
cmp    $0x11,%rsi
je     1660 <main+0x530>
lea    -0x8(%rsi),%rbp
cmp    $0x8,%rbp
ja     1680 <main+0x550>
lea    -0x7(%rsi),%rbp
addl   $0x1,(%rdi)
cmp    $0x8,%rbp
ja     1680 <main+0x550>
addl   $0x1,-0x4(%rdi)
cmp    $0xf,%rsi
je     1680 <main+0x550>
addl   $0x1,-0x8(%rdi)
cmp    $0x6,%rbp
ja     1680 <main+0x550>
addl   $0x1,-0xc(%rdi)
cmp    $0xd,%rsi
je     1680 <main+0x550>
addl   $0x1,-0x10(%rdi)
cmp    $0x4,%rbp
ja     1680 <main+0x550>
addl   $0x1,-0x14(%rdi)
cmp    $0xb,%rsi
je     1680 <main+0x550>
addl   $0x1,-0x18(%rdi)
cmp    $0x2,%rbp
ja     1680 <main+0x550>
addl   $0x1,-0x1c(%rdi)
jmp    1680 <main+0x550>
movl   $0x1,0xd0(%rsp)
movaps 0x917(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0x918(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0x919(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x91a(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
jmp    1760 <main+0x630>
addl   $0x1,0xd4(%rsp)
01
movl   $0x1,0xd0(%rsp)
movaps 0x8b6(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xb0(%rsp)
nopw   0x0(%rax,%rax,1)
movslq 0xc(%rsp),%rax
mov    0x20(%rsp,%rax,4),%esi
lea    0x907(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x8fd(%rip),%r14
lea    0x8ef(%rip),%r15
lea    0x8(%rsp),%rbx
lea    0x4(%rsp),%rbp
jmp    11a8 <main+0x78>

LLVM IR (-O0):
@.str = [7 x i8] c"%d %d\0A\00"
@.str.1 = [3 x i8] c"0\0A\00"
@.str.2 = [4 x i8] c"%d\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca [45 x 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, %34, %371
%11 = call i32 @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %2, i32* %3)
%12 = load i32, i32* %2
%13 = icmp eq i32 %12, 0
br i1 %13, label %14, label %18
14: ; preds = %10
%15 = load i32, i32* %3
%16 = icmp eq i32 %15, 0
br i1 %16, label %17, label %18
17: ; preds = %14
br label %377
18: ; preds = %14, %10
%19 = load i32, i32* %3
%20 = load i32, i32* %2
%21 = load i32, i32* %2
%22 = sub nsw i32 19, %21
%23 = mul nsw i32 %20, %22
%24 = sdiv i32 %23, 2
%25 = icmp sgt i32 %19, %24
br i1 %25, label %34, label %26
26: ; preds = %18
%27 = load i32, i32* %3
%28 = load i32, i32* %2
%29 = load i32, i32* %2
%30 = sub nsw i32 %29, 1
%31 = mul nsw i32 %28, %30
%32 = sdiv i32 %31, 2
%33 = icmp slt i32 %27, %32
br i1 %33, label %34, label %36
34: ; preds = %26, %18
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
br label %10
36: ; preds = %26
store i32 0, i32* %5
br label %37
37: ; preds = %44, %36
%38 = load i32, i32* %5
%39 = icmp slt i32 %38, 45
br i1 %39, label %40, label %47
40: ; preds = %37
%41 = load i32, i32* %5
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %42
store i32 0, i32* %43
br label %44
44: ; preds = %40
%45 = load i32, i32* %5
%46 = add nsw i32 %45, 1
store i32 %46, i32* %5
br label %37
47: ; preds = %37
%48 = load i32, i32* %2
switch i32 %48, label %371 [
i32 1, label %49
i32 2, label %63
i32 3, label %89
i32 4, label %127
i32 5, label %177
i32 6, label %239
i32 7, label %290
i32 8, label %329
i32 9, label %356
]
49: ; preds = %47
store i32 0, i32* %5
br label %50
50: ; preds = %59, %49
%51 = load i32, i32* %5
%52 = icmp sle i32 %51, 9
br i1 %52, label %53, label %62
53: ; preds = %50
%54 = load i32, i32* %5
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %55
%57 = load i32, i32* %56
%58 = add nsw i32 %57, 1
store i32 %58, i32* %56
br label %59
59: ; preds = %53
%60 = load i32, i32* %5
%61 = add nsw i32 %60, 1
store i32 %61, i32* %5
br label %50
62: ; preds = %50
br label %371
63: ; preds = %47
store i32 0, i32* %5
br label %64
64: ; preds = %85, %63
%65 = load i32, i32* %5
%66 = icmp sle i32 %65, 8
br i1 %66, label %67, label %88
67: ; preds = %64
%68 = load i32, i32* %5
%69 = add nsw i32 %68, 1
store i32 %69, i32* %6
br label %70
70: ; preds = %81, %67
%71 = load i32, i32* %6
%72 = icmp sle i32 %71, 9
br i1 %72, label %73, label %84
73: ; preds = %70
%74 = load i32, i32* %5
%75 = load i32, i32* %6
%76 = add nsw i32 %74, %75
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %77
%79 = load i32, i32* %78
%80 = add nsw i32 %79, 1
store i32 %80, i32* %78
br label %81
81: ; preds = %73
%82 = load i32, i32* %6
%83 = add nsw i32 %82, 1
store i32 %83, i32* %6
br label %70
84: ; preds = %70
br label %85
85: ; preds = %84
%86 = load i32, i32* %5
%87 = add nsw i32 %86, 1
store i32 %87, i32* %5
br label %64
88: ; preds = %64
br label %371
89: ; preds = %47
store i32 0, i32* %5
br label %90
90: ; preds = %123, %89
%91 = load i32, i32* %5
%92 = icmp sle i32 %91, 7
br i1 %92, label %93, label %126
93: ; preds = %90
%94 = load i32, i32* %5
%95 = add nsw i32 %94, 1
store i32 %95, i32* %6
br label %96
96: ; preds = %119, %93
%97 = load i32, i32* %6
%98 = icmp sle i32 %97, 8
br i1 %98, label %99, label %122
99: ; preds = %96
%100 = load i32, i32* %6
%101 = add nsw i32 %100, 1
store i32 %101, i32* %7
br label %102
102: ; preds = %115, %99
%103 = load i32, i32* %7
%104 = icmp sle i32 %103, 9
br i1 %104, label %105, label %118
105: ; preds = %102
%106 = load i32, i32* %5
%107 = load i32, i32* %6
%108 = add nsw i32 %106, %107
%109 = load i32, i32* %7
%110 = add nsw i32 %108, %109
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %111
%113 = load i32, i32* %112
%114 = add nsw i32 %113, 1
store i32 %114, i32* %112
br label %115
115: ; preds = %105
%116 = load i32, i32* %7
%117 = add nsw i32 %116, 1
store i32 %117, i32* %7
br label %102
118: ; preds = %102
br label %119
119: ; preds = %118
%120 = load i32, i32* %6
%121 = add nsw i32 %120, 1
store i32 %121, i32* %6
br label %96
122: ; preds = %96
br label %123
123: ; preds = %122
%124 = load i32, i32* %5
%125 = add nsw i32 %124, 1
store i32 %125, i32* %5
br label %90
126: ; preds = %90
br label %371
127: ; preds = %47
store i32 0, i32* %5
br label %128
128: ; preds = %173, %127
%129 = load i32, i32* %5
%130 = icmp sle i32 %129, 6
br i1 %130, label %131, label %176
131: ; preds = %128
%132 = load i32, i32* %5
%133 = add nsw i32 %132, 1
store i32 %133, i32* %6
br label %134
134: ; preds = %169, %131
%135 = load i32, i32* %6
%136 = icmp sle i32 %135, 7
br i1 %136, label %137, label %172
137: ; preds = %134
%138 = load i32, i32* %6
%139 = add nsw i32 %138, 1
store i32 %139, i32* %7
br label %140
140: ; preds = %165, %137
%141 = load i32, i32* %7
%142 = icmp sle i32 %141, 8
br i1 %142, label %143, label %168
143: ; preds = %140
%144 = load i32, i32* %7
%145 = add nsw i32 %144, 1
store i32 %145, i32* %8
br label %146
146: ; preds = %161, %143
%147 = load i32, i32* %8
%148 = icmp sle i32 %147, 9
br i1 %148, label %149, label %164
149: ; preds = %146
%150 = load i32, i32* %5
%151 = load i32, i32* %6
%152 = add nsw i32 %150, %151
%153 = load i32, i32* %7
%154 = add nsw i32 %152, %153
%155 = load i32, i32* %8
%156 = add nsw i32 %154, %155
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %157
%159 = load i32, i32* %158
%160 = add nsw i32 %159, 1
store i32 %160, i32* %158
br label %161
161: ; preds = %149
%162 = load i32, i32* %8
%163 = add nsw i32 %162, 1
store i32 %163, i32* %8
br label %146
164: ; preds = %146
br label %165
165: ; preds = %164
%166 = load i32, i32* %7
%167 = add nsw i32 %166, 1
store i32 %167, i32* %7
br label %140
168: ; preds = %140
br label %169
169: ; preds = %168
%170 = load i32, i32* %6
%171 = add nsw i32 %170, 1
store i32 %171, i32* %6
br label %134
172: ; preds = %134
br label %173
173: ; preds = %172
%174 = load i32, i32* %5
%175 = add nsw i32 %174, 1
store i32 %175, i32* %5
br label %128
176: ; preds = %128
br label %371
177: ; preds = %47
store i32 0, i32* %5
br label %178
178: ; preds = %235, %177
%179 = load i32, i32* %5
%180 = icmp sle i32 %179, 5
br i1 %180, label %181, label %238
181: ; preds = %178
%182 = load i32, i32* %5
%183 = add nsw i32 %182, 1
store i32 %183, i32* %6
br label %184
184: ; preds = %231, %181
%185 = load i32, i32* %6
%186 = icmp sle i32 %185, 6
br i1 %186, label %187, label %234
187: ; preds = %184
%188 = load i32, i32* %6
%189 = add nsw i32 %188, 1
store i32 %189, i32* %7
br label %190
190: ; preds = %227, %187
%191 = load i32, i32* %7
%192 = icmp sle i32 %191, 7
br i1 %192, label %193, label %230
193: ; preds = %190
%194 = load i32, i32* %7
%195 = add nsw i32 %194, 1
store i32 %195, i32* %8
br label %196
196: ; preds = %223, %193
%197 = load i32, i32* %8
%198 = icmp sle i32 %197, 8
br i1 %198, label %199, label %226
199: ; preds = %196
%200 = load i32, i32* %8
%201 = add nsw i32 %200, 1
store i32 %201, i32* %9
br label %202
202: ; preds = %219, %199
%203 = load i32, i32* %9
%204 = icmp sle i32 %203, 9
br i1 %204, label %205, label %222
205: ; preds = %202
%206 = load i32, i32* %5
%207 = load i32, i32* %6
%208 = add nsw i32 %206, %207
%209 = load i32, i32* %7
%210 = add nsw i32 %208, %209
%211 = load i32, i32* %8
%212 = add nsw i32 %210, %211
%213 = load i32, i32* %9
%214 = add nsw i32 %212, %213
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %215
%217 = load i32, i32* %216
%218 = add nsw i32 %217, 1
store i32 %218, i32* %216
br label %219
219: ; preds = %205
%220 = load i32, i32* %9
%221 = add nsw i32 %220, 1
store i32 %221, i32* %9
br label %202
222: ; preds = %202
br label %223
223: ; preds = %222
%224 = load i32, i32* %8
%225 = add nsw i32 %224, 1
store i32 %225, i32* %8
br label %196
226: ; preds = %196
br label %227
227: ; preds = %226
%228 = load i32, i32* %7
%229 = add nsw i32 %228, 1
store i32 %229, i32* %7
br label %190
230: ; preds = %190
br label %231
231: ; preds = %230
%232 = load i32, i32* %6
%233 = add nsw i32 %232, 1
store i32 %233, i32* %6
br label %184
234: ; preds = %184
br label %235
235: ; preds = %234
%236 = load i32, i32* %5
%237 = add nsw i32 %236, 1
store i32 %237, i32* %5
br label %178
238: ; preds = %178
br label %371
239: ; preds = %47
store i32 0, i32* %5
br label %240
240: ; preds = %286, %239
%241 = load i32, i32* %5
%242 = icmp sle i32 %241, 6
br i1 %242, label %243, label %289
243: ; preds = %240
%244 = load i32, i32* %5
%245 = add nsw i32 %244, 1
store i32 %245, i32* %6
br label %246
246: ; preds = %282, %243
%247 = load i32, i32* %6
%248 = icmp sle i32 %247, 7
br i1 %248, label %249, label %285
249: ; preds = %246
%250 = load i32, i32* %6
%251 = add nsw i32 %250, 1
store i32 %251, i32* %7
br label %252
252: ; preds = %278, %249
%253 = load i32, i32* %7
%254 = icmp sle i32 %253, 8
br i1 %254, label %255, label %281
255: ; preds = %252
%256 = load i32, i32* %7
%257 = add nsw i32 %256, 1
store i32 %257, i32* %8
br label %258
258: ; preds = %274, %255
%259 = load i32, i32* %8
%260 = icmp sle i32 %259, 9
br i1 %260, label %261, label %277
261: ; preds = %258
%262 = load i32, i32* %5
%263 = load i32, i32* %6
%264 = add nsw i32 %262, %263
%265 = load i32, i32* %7
%266 = add nsw i32 %264, %265
%267 = load i32, i32* %8
%268 = add nsw i32 %266, %267
%269 = sub nsw i32 45, %268
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %270
%272 = load i32, i32* %271
%273 = add nsw i32 %272, 1
store i32 %273, i32* %271
br label %274
274: ; preds = %261
%275 = load i32, i32* %8
%276 = add nsw i32 %275, 1
store i32 %276, i32* %8
br label %258
277: ; preds = %258
br label %278
278: ; preds = %277
%279 = load i32, i32* %7
%280 = add nsw i32 %279, 1
store i32 %280, i32* %7
br label %252
281: ; preds = %252
br label %282
282: ; preds = %281
%283 = load i32, i32* %6
%284 = add nsw i32 %283, 1
store i32 %284, i32* %6
br label %246
285: ; preds = %246
br label %286
286: ; preds = %285
%287 = load i32, i32* %5
%288 = add nsw i32 %287, 1
store i32 %288, i32* %5
br label %240
289: ; preds = %240
br label %371
290: ; preds = %47
store i32 0, i32* %5
br label %291
291: ; preds = %325, %290
%292 = load i32, i32* %5
%293 = icmp sle i32 %292, 7
br i1 %293, label %294, label %328
294: ; preds = %291
%295 = load i32, i32* %5
%296 = add nsw i32 %295, 1
store i32 %296, i32* %6
br label %297
297: ; preds = %321, %294
%298 = load i32, i32* %6
%299 = icmp sle i32 %298, 8
br i1 %299, label %300, label %324
300: ; preds = %297
%301 = load i32, i32* %6
%302 = add nsw i32 %301, 1
store i32 %302, i32* %7
br label %303
303: ; preds = %317, %300
%304 = load i32, i32* %7
%305 = icmp sle i32 %304, 9
br i1 %305, label %306, label %320
306: ; preds = %303
%307 = load i32, i32* %5
%308 = load i32, i32* %6
%309 = add nsw i32 %307, %308
%310 = load i32, i32* %7
%311 = add nsw i32 %309, %310
%312 = sub nsw i32 45, %311
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %313
%315 = load i32, i32* %314
%316 = add nsw i32 %315, 1
store i32 %316, i32* %314
br label %317
317: ; preds = %306
%318 = load i32, i32* %7
%319 = add nsw i32 %318, 1
store i32 %319, i32* %7
br label %303
320: ; preds = %303
br label %321
321: ; preds = %320
%322 = load i32, i32* %6
%323 = add nsw i32 %322, 1
store i32 %323, i32* %6
br label %297
324: ; preds = %297
br label %325
325: ; preds = %324
%326 = load i32, i32* %5
%327 = add nsw i32 %326, 1
store i32 %327, i32* %5
br label %291
328: ; preds = %291
br label %371
329: ; preds = %47
store i32 0, i32* %5
br label %330
330: ; preds = %352, %329
%331 = load i32, i32* %5
%332 = icmp sle i32 %331, 8
br i1 %332, label %333, label %355
333: ; preds = %330
%334 = load i32, i32* %5
%335 = add nsw i32 %334, 1
store i32 %335, i32* %6
br label %336
336: ; preds = %348, %333
%337 = load i32, i32* %6
%338 = icmp sle i32 %337, 9
br i1 %338, label %339, label %351
339: ; preds = %336
%340 = load i32, i32* %5
%341 = load i32, i32* %6
%342 = add nsw i32 %340, %341
%343 = sub nsw i32 45, %342
%344 = sext i32 %343 to i64
%345 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %344
%346 = load i32, i32* %345
%347 = add nsw i32 %346, 1
store i32 %347, i32* %345
br label %348
348: ; preds = %339
%349 = load i32, i32* %6
%350 = add nsw i32 %349, 1
store i32 %350, i32* %6
br label %336
351: ; preds = %336
br label %352
352: ; preds = %351
%353 = load i32, i32* %5
%354 = add nsw i32 %353, 1
store i32 %354, i32* %5
br label %330
355: ; preds = %330
br label %371
356: ; preds = %47
store i32 0, i32* %5
br label %357
357: ; preds = %367, %356
%358 = load i32, i32* %5
%359 = icmp sle i32 %358, 9
br i1 %359, label %360, label %370
360: ; preds = %357
%361 = load i32, i32* %5
%362 = sub nsw i32 45, %361
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %363
%365 = load i32, i32* %364
%366 = add nsw i32 %365, 1
store i32 %366, i32* %364
br label %367
367: ; preds = %360
%368 = load i32, i32* %5
%369 = add nsw i32 %368, 1
store i32 %369, i32* %5
br label %357
370: ; preds = %357
br label %371
371: ; preds = %47, %370, %355, %328, %289, %238, %176, %126, %88, %62
%372 = load i32, i32* %3
%373 = sext i32 %372 to i64
%374 = getelementptr inbounds [45 x i32], [45 x i32]* %4, i64 0, i64 %373
%375 = load i32, i32* %374
%376 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), i32 %375)
br label %10
377: ; preds = %17
ret i32 0
}

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