int main(int argc, char **argv) {
  int number1 = atoi(argv[1]);
  char sign = argv[2][0];
  int number2 = atoi(argv[3]);
  int result = atoi(argv[5]);
  int prob[10][10] = {
      {0, 2, 3, 5, 6, 8, 9, 0, 0, 0}, {1, 4, 7, 0, 0, 0, 0, 0, 0, 0},
      {2, 0, 3, 5, 6, 8, 9, 0, 0, 0}, {3, 0, 2, 4, 5, 6, 7, 8, 9, 0},
      {4, 1, 3, 5, 9, 0, 0, 0, 0, 0}, {5, 0, 2, 3, 4, 6, 8, 9, 0, 0},
      {6, 0, 2, 3, 5, 8, 9, 0, 0, 0}, {7, 1, 3, 4, 0, 0, 0, 0, 0, 0},
      {8, 0, 2, 3, 5, 6, 9, 0, 0, 0}, {9, 0, 2, 3, 4, 5, 6, 8, 0, 0}};
  double mov[10][10][2] = {{{0, 0},
                            {100, 100},
                            {2, 1},
                            {2, 1},
                            {100, 100},
                            {2, 1},
                            {1, 1},
                            {100, 100},
                            {0, 1},
                            {1, 1}},
                           {{100, 100},
                            {0, 0},
                            {100, 100},
                            {100, 100},
                            {0, 2},
                            {100, 100},
                            {100, 100},
                            {0, 1},
                            {100, 100},
                            {100, 100}},
                           {{1, 2},
                            {100, 100},
                            {0, 0},
                            {1, 1},
                            {100, 100},
                            {2, 2},
                            {1, 2},
                            {100, 100},
                            {0, 2},
                            {1, 2}},
                           {{1, 2},
                            {100, 100},
                            {1, 1},
                            {0, 0},
                            {2, 1},
                            {1, 1},
                            {1, 2},
                            {2, 0},
                            {0, 2},
                            {0, 1}},
                           {{100, 100},
                            {2, 0},
                            {100, 100},
                            {1, 2},
                            {0, 0},
                            {1, 2},
                            {100, 100},
                            {100, 100},
                            {100, 100},
                            {0, 2}},
                           {{1, 2},
                            {100, 100},
                            {2, 2},
                            {1, 1},
                            {2, 1},
                            {0, 0},
                            {0, 1},
                            {100, 100},
                            {0, 2},
                            {0, 1}},
                           {{1, 1},
                            {100, 100},
                            {2, 1},
                            {2, 1},
                            {100, 100},
                            {1, 0},
                            {0, 0},
                            {100, 100},
                            {0, 1},
                            {1, 1}},
                           {{100, 100},
                            {1, 0},
                            {100, 100},
                            {0, 2},
                            {1, 2},
                            {100, 100},
                            {100, 100},
                            {0, 0},
                            {100, 100},
                            {100, 100}},
                           {{1, 0},
                            {100, 100},
                            {2, 0},
                            {2, 0},
                            {100, 100},
                            {2, 0},
                            {1, 0},
                            {100, 100},
                            {0, 0},
                            {1, 0}},
                           {{1, 1},
                            {100, 100},
                            {2, 1},
                            {1, 0},
                            {2, 0},
                            {1, 0},
                            {1, 1},
                            {100, 100},
                            {0, 1},
                            {0, 0}}};
  int i, j, k, pick, put;
  for (i = 0; i < 10; i++)
    for (j = 0; j < 10; j++)
      for (k = 0; k < 10; k++) {
        if (prob[number1][i] + prob[number2][j] == prob[result][k]) {
          pick = mov[number1][prob[number1][i]][0] +
                 mov[number2][prob[number2][j]][0] +
                 mov[result][prob[result][k]][0];
          put = mov[number1][prob[number1][i]][1] +
                mov[number2][prob[number2][j]][1] +
                mov[result][prob[result][k]][1];
          if (sign == '-')
            put++;
          switch (pick) {
          case 1:
            if (put == 1) {
              printf("%s %d + %d = %d    %s[ correct ]%s   [ one move  ]\n",
                     "\x1B[33m", prob[number1][i], prob[number2][j],
                     prob[result][k], "\x1B[32m", "\x1B[31m");
            }
            break;
          case 2:
            if (put == 1 || put == 2) {
              printf("%s %d + %d = %d    %s[ correct ]%s   [ two moves ]\n",
                     "\x1B[33m", prob[number1][i], prob[number2][j],
                     prob[result][k], "\x1B[32m", "\x1B[36m");
            }
            break;
          }
        }
        if (prob[number1][i] - prob[number2][j] == prob[result][k]) {
          pick = mov[number1][prob[number1][i]][0] +
                 mov[number2][prob[number2][j]][0] +
                 mov[result][prob[result][k]][0];
          put = mov[number1][prob[number1][i]][1] +
                mov[number2][prob[number2][j]][1] +
                mov[result][prob[result][k]][1];
          if (sign == '+')
            pick++;
          switch (pick) {
          case 1:
            if (put == 1) {
              printf("%s %d - %d = %d    %s[ correct ]%s   [ one move  ]\n",
                     "\x1B[33m", prob[number1][i], prob[number2][j],
                     prob[result][k], "\x1B[32m", "\x1B[31m");
            }
            break;
          case 2:
            if (put == 1 || put == 2) {
              printf("%s %d - %d = %d    %s[ correct ]%s   [ two moves ]\n",
                     "\x1B[33m", prob[number1][i], prob[number2][j],
                     prob[result][k], "\x1B[32m", "\x1B[36m");
            }
            break;
          }
        }
      }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x820,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x0,%al
call   1050 <atoi@plt>
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    (%rax),%al
mov    %al,-0x15(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
mov    $0x0,%al
call   1050 <atoi@plt>
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
mov    $0x0,%al
call   1050 <atoi@plt>
mov    %eax,-0x20(%rbp)
lea    -0x1b0(%rbp),%rdi
lea    0xe66(%rip),%rsi
mov    $0x190,%edx
call   1040 <memcpy@plt>
lea    -0x7f0(%rbp),%rdi
lea    0xfde(%rip),%rsi
mov    $0x640,%edx
call   1040 <memcpy@plt>
movl   $0x0,-0x7f4(%rbp)
cmpl   $0xa,-0x7f4(%rbp)
jge    18fa <main+0x7ca>
movl   $0x0,-0x7f8(%rbp)
cmpl   $0xa,-0x7f8(%rbp)
jge    18e1 <main+0x7b1>
movl   $0x0,-0x7fc(%rbp)
cmpl   $0xa,-0x7fc(%rbp)
jge    18c8 <main+0x798>
movslq -0x14(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
movslq -0x1c(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f8(%rbp),%rdx
add    (%rcx,%rdx,4),%eax
movslq -0x20(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7fc(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jne    1558 <main+0x428>
movslq -0x14(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f4(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
movsd  (%rax),%xmm0
movslq -0x1c(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f8(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
addsd  (%rax),%xmm0
movslq -0x20(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7fc(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
addsd  (%rax),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x800(%rbp)
movslq -0x14(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f4(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
movsd  0x8(%rax),%xmm0
movslq -0x1c(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f8(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
addsd  0x8(%rax),%xmm0
movslq -0x20(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7fc(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
addsd  0x8(%rax),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x804(%rbp)
movsbl -0x15(%rbp),%eax
cmp    $0x2d,%eax
jne    13fc <main+0x2cc>
mov    -0x804(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x804(%rbp)
mov    -0x800(%rbp),%eax
mov    %eax,-0x808(%rbp)
sub    $0x1,%eax
je     142a <main+0x2fa>
jmp    1416 <main+0x2e6>
mov    -0x808(%rbp),%eax
sub    $0x2,%eax
je     14b8 <main+0x388>
jmp    1553 <main+0x423>
cmpl   $0x1,-0x804(%rbp)
jne    14b3 <main+0x383>
movslq -0x14(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f4(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
movslq -0x1c(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f8(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x20(%rbp),%rsi
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rsi,%rsi
add    %rsi,%rax
movslq -0x7fc(%rbp),%rsi
mov    (%rax,%rsi,4),%r8d
lea    0x133d(%rip),%rdi
lea    0x136a(%rip),%rsi
lea    0x1369(%rip),%r9
lea    0x1368(%rip),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1553 <main+0x423>
cmpl   $0x1,-0x804(%rbp)
je     14d2 <main+0x3a2>
cmpl   $0x2,-0x804(%rbp)
jne    154e <main+0x41e>
movslq -0x14(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f4(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
movslq -0x1c(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f8(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x20(%rbp),%rsi
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rsi,%rsi
add    %rsi,%rax
movslq -0x7fc(%rbp),%rsi
mov    (%rax,%rsi,4),%r8d
lea    0x12e8(%rip),%rdi
lea    0x12cf(%rip),%rsi
lea    0x12ce(%rip),%r9
lea    0x1307(%rip),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1553 <main+0x423>
jmp    1558 <main+0x428>
movslq -0x14(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
movslq -0x1c(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f8(%rbp),%rdx
sub    (%rcx,%rdx,4),%eax
movslq -0x20(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7fc(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jne    18af <main+0x77f>
movslq -0x14(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f4(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
movsd  (%rax),%xmm0
movslq -0x1c(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f8(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
addsd  (%rax),%xmm0
movslq -0x20(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7fc(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
addsd  (%rax),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x800(%rbp)
movslq -0x14(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f4(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
movsd  0x8(%rax),%xmm0
movslq -0x1c(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7f8(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
addsd  0x8(%rax),%xmm0
movslq -0x20(%rbp),%rcx
lea    -0x7f0(%rbp),%rax
imul   $0xa0,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rdx
lea    -0x1b0(%rbp),%rcx
imul   $0x28,%rdx,%rdx
add    %rdx,%rcx
movslq -0x7fc(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
shl    $0x4,%rcx
add    %rcx,%rax
addsd  0x8(%rax),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x804(%rbp)
movsbl -0x15(%rbp),%eax
cmp    $0x2b,%eax
jne    1753 <main+0x623>
mov    -0x800(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x800(%rbp)
mov    -0x800(%rbp),%eax
mov    %eax,-0x80c(%rbp)
sub    $0x1,%eax
je     1781 <main+0x651>
jmp    176d <main+0x63d>
mov    -0x80c(%rbp),%eax
sub    $0x2,%eax
je     180f <main+0x6df>
jmp    18aa <main+0x77a>
cmpl   $0x1,-0x804(%rbp)
jne    180a <main+0x6da>
movslq -0x14(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f4(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
movslq -0x1c(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f8(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x20(%rbp),%rsi
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rsi,%rsi
add    %rsi,%rax
movslq -0x7fc(%rbp),%rsi
mov    (%rax,%rsi,4),%r8d
lea    0x1066(%rip),%rdi
lea    0x1013(%rip),%rsi
lea    0x1012(%rip),%r9
lea    0x1011(%rip),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18aa <main+0x77a>
cmpl   $0x1,-0x804(%rbp)
je     1829 <main+0x6f9>
cmpl   $0x2,-0x804(%rbp)
jne    18a5 <main+0x775>
movslq -0x14(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f4(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
movslq -0x1c(%rbp),%rcx
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rcx,%rcx
add    %rcx,%rax
movslq -0x7f8(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x20(%rbp),%rsi
lea    -0x1b0(%rbp),%rax
imul   $0x28,%rsi,%rsi
add    %rsi,%rax
movslq -0x7fc(%rbp),%rsi
mov    (%rax,%rsi,4),%r8d
lea    0xfff(%rip),%rdi
lea    0xf78(%rip),%rsi
lea    0xf77(%rip),%r9
lea    0xfb0(%rip),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18aa <main+0x77a>
jmp    18af <main+0x77f>
jmp    18b4 <main+0x784>
mov    -0x7fc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7fc(%rbp)
jmp    11f4 <main+0xc4>
jmp    18cd <main+0x79d>
mov    -0x7f8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7f8(%rbp)
jmp    11dd <main+0xad>
jmp    18e6 <main+0x7b6>
mov    -0x7f4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7f4(%rbp)
jmp    11c6 <main+0x96>
xor    %eax,%eax
add    $0x820,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %rsi,%rbx
mov    0x8(%rsi),%rdi
xor    %eax,%eax
call   1040 <atoi@plt>
mov    %eax,%r14d
mov    0x10(%rbx),%rax
mov    0x18(%rbx),%rdi
mov    (%rax),%r15b
xor    %eax,%eax
call   1040 <atoi@plt>
mov    %eax,%ebp
mov    0x28(%rbx),%rdi
xor    %eax,%eax
call   1040 <atoi@plt>
movslq %r14d,%rcx
movslq %ebp,%rdx
mov    %rdx,0x58(%rsp)
cltq
xor    %edx,%edx
cmp    $0x2d,%r15b
sete   %dl
mov    %edx,0x34(%rsp)
xor    %edx,%edx
cmp    $0x2b,%r15b
sete   %dl
mov    %edx,0x30(%rsp)
lea    (%rax,%rax,4),%rax
lea    0xe6d(%rip),%rdx
mov    %rax,0x50(%rsp)
lea    (%rdx,%rax,8),%rsi
lea    (%rcx,%rcx,4),%rax
lea    (%rdx,%rax,8),%rcx
mov    %rcx,0x38(%rsp)
shl    $0x5,%rax
lea    0xfdc(%rip),%rcx
add    %rcx,%rax
mov    %rax,0x40(%rsp)
xor    %ecx,%ecx
mov    %rsi,0x10(%rsp)
jmp    11e3 <main+0xc3>
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x48(%rsp),%rcx
add    $0x1,%rcx
cmp    $0xa,%rcx
je     144a <main+0x32a>
mov    0x38(%rsp),%rax
mov    %rcx,0x48(%rsp)
movslq (%rax,%rcx,4),%rax
mov    %rax,0x8(%rsp)
shl    $0x4,%rax
mov    0x40(%rsp),%rcx
lea    (%rcx,%rax,1),%rdx
lea    (%rax,%rcx,1),%rdi
add    $0x8,%rdi
xor    %ebp,%ebp
mov    %rdx,0x20(%rsp)
mov    %rdi,0x18(%rsp)
jmp    122f <main+0x10f>
nopl   0x0(%rax)
mov    0x60(%rsp),%rbp
add    $0x1,%rbp
cmp    $0xa,%rbp
je     11d0 <main+0xb0>
mov    0x58(%rsp),%rax
lea    (%rax,%rax,4),%rax
lea    0xdc1(%rip),%rcx
lea    (%rcx,%rax,8),%rcx
mov    %rbp,0x60(%rsp)
movslq (%rcx,%rbp,4),%rbx
mov    0x8(%rsp),%rbp
lea    (%rbx,%rbp,1),%r13d
shl    $0x5,%rax
lea    0xf30(%rip),%r8
add    %r8,%rax
mov    %rbx,%rcx
shl    $0x4,%rcx
lea    (%rax,%rcx,1),%r12
lea    (%rcx,%rax,1),%r14
add    $0x8,%r14
mov    %rbx,0x28(%rsp)
sub    %ebx,%ebp
movslq %r13d,%rax
mov    0x50(%rsp),%rcx
shl    $0x5,%rcx
add    %r8,%rcx
shl    $0x4,%rax
lea    (%rcx,%rax,1),%rbx
mov    %rbx,0x80(%rsp)
add    %rcx,%rax
add    $0x8,%rax
mov    %rax,0x78(%rsp)
movslq %ebp,%rax
shl    $0x4,%rax
lea    (%rcx,%rax,1),%rbx
mov    %rbx,0x70(%rsp)
add    %rcx,%rax
add    $0x8,%rax
mov    %rax,0x68(%rsp)
xor    %r15d,%r15d
jmp    130e <main+0x1ee>
lea    0x1534(%rip),%rsi
mov    0x8(%rsp),%rdx
mov    0x28(%rsp),%rcx
mov    %ebp,%r8d
lea    0x1526(%rip),%r9
xor    %eax,%eax
call   1030 <printf@plt>
mov    0x18(%rsp),%rdi
mov    0x20(%rsp),%rdx
mov    0x10(%rsp),%rsi
nopw   0x0(%rax,%rax,1)
add    $0x1,%r15
cmp    $0xa,%r15
je     1220 <main+0x100>
mov    (%rsi,%r15,4),%ebx
cmp    %ebx,%r13d
jne    13c0 <main+0x2a0>
movsd  (%rdx),%xmm0
addsd  (%r12),%xmm0
mov    0x80(%rsp),%rax
addsd  (%rax),%xmm0
cvttsd2si %xmm0,%ecx
movsd  (%rdi),%xmm0
addsd  (%r14),%xmm0
mov    0x78(%rsp),%rax
addsd  (%rax),%xmm0
cvttsd2si %xmm0,%eax
add    0x34(%rsp),%eax
cmp    $0x2,%ecx
je     1372 <main+0x252>
cmp    $0x1,%ecx
jne    13c0 <main+0x2a0>
cmp    $0x1,%eax
jne    13c0 <main+0x2a0>
lea    0x14ab(%rip),%rax
mov    %rax,(%rsp)
lea    0x1460(%rip),%rdi
jmp    138c <main+0x26c>
add    $0xffffffff,%eax
cmp    $0x1,%eax
ja     13c0 <main+0x2a0>
lea    0x14c9(%rip),%rax
mov    %rax,(%rsp)
lea    0x148a(%rip),%rdi
lea    0x1471(%rip),%rsi
mov    0x8(%rsp),%rdx
mov    0x28(%rsp),%rcx
mov    %r13d,%r8d
lea    0x1463(%rip),%r9
xor    %eax,%eax
call   1030 <printf@plt>
mov    0x18(%rsp),%rdi
mov    0x20(%rsp),%rdx
mov    0x10(%rsp),%rsi
nopl   (%rax)
cmp    %ebx,%ebp
jne    1300 <main+0x1e0>
movsd  (%rdx),%xmm0
addsd  (%r12),%xmm0
mov    0x70(%rsp),%rax
addsd  (%rax),%xmm0
cvttsd2si %xmm0,%eax
movsd  (%rdi),%xmm0
addsd  (%r14),%xmm0
mov    0x68(%rsp),%rcx
addsd  (%rcx),%xmm0
add    0x30(%rsp),%eax
cvttsd2si %xmm0,%ecx
cmp    $0x2,%eax
je     1427 <main+0x307>
cmp    $0x1,%eax
jne    1300 <main+0x1e0>
cmp    $0x1,%ecx
jne    1300 <main+0x1e0>
lea    0x13f9(%rip),%rax
mov    %rax,(%rsp)
lea    0x142e(%rip),%rdi
jmp    12c9 <main+0x1a9>
add    $0xffffffff,%ecx
cmp    $0x1,%ecx
ja     1300 <main+0x1e0>
lea    0x1410(%rip),%rax
mov    %rax,(%rsp)
lea    0x143f(%rip),%rdi
jmp    12c9 <main+0x1a9>
xor    %eax,%eax
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@__const.main.prob = [10 x [10 x i32]] [[10 x i32] [i32 0, i32 2, i32 3, i32 5, i32 6, i32 8, i32 9, i32 0, i32 0, i32 0], [10 x i32] [i32 1, i32 4, i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0], [10 x i32] [i32 2, i32 0, i32 3, i32 5, i32 6, i32 8, i32 9, i32 0, i32 0, i32 0], [10 x i32] [i32 3, i32 0, i32 2, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 0], [10 x i32] [i32 4, i32 1, i32 3, i32 5, i32 9, i32 0, i32 0, i32 0, i32 0, i32 0], [10 x i32] [i32 5, i32 0, i32 2, i32 3, i32 4, i32 6, i32 8, i32 9, i32 0, i32 0], [10 x i32] [i32 6, i32 0, i32 2, i32 3, i32 5, i32 8, i32 9, i32 0, i32 0, i32 0], [10 x i32] [i32 7, i32 1, i32 3, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0], [10 x i32] [i32 8, i32 0, i32 2, i32 3, i32 5, i32 6, i32 9, i32 0, i32 0, i32 0], [10 x i32] [i32 9, i32 0, i32 2, i32 3, i32 4, i32 5, i32 6, i32 8, i32 0, i32 0]]
@__const.main.mov = [10 x [10 x [2 x double]]] [[10 x [2 x double]] [[2 x double] zeroinitializer, [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 1.000000e+00], [2 x double] [double 2.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+00, double 1.000000e+00]], [10 x [2 x double]] [[2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] zeroinitializer, [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+02, double 1.000000e+02]], [10 x [2 x double]] [[2 x double] [double 1.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] zeroinitializer, [2 x double] [double 1.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+00, double 2.000000e+00]], [10 x [2 x double]] [[2 x double] [double 1.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+00, double 1.000000e+00], [2 x double] zeroinitializer, [2 x double] [double 2.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+00, double 2.000000e+00], [2 x double] [double 2.000000e+00, double 0.000000e+00], [2 x double] [double 0.000000e+00, double 2.000000e+00], [2 x double] [double 0.000000e+00, double 1.000000e+00]], [10 x [2 x double]] [[2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 0.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+00, double 2.000000e+00], [2 x double] zeroinitializer, [2 x double] [double 1.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 2.000000e+00]], [10 x [2 x double]] [[2 x double] [double 1.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+00, double 1.000000e+00], [2 x double] [double 2.000000e+00, double 1.000000e+00], [2 x double] zeroinitializer, [2 x double] [double 0.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 2.000000e+00], [2 x double] [double 0.000000e+00, double 1.000000e+00]], [10 x [2 x double]] [[2 x double] [double 1.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 1.000000e+00], [2 x double] [double 2.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+00, double 0.000000e+00], [2 x double] zeroinitializer, [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+00, double 1.000000e+00]], [10 x [2 x double]] [[2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+00, double 0.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+00, double 2.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] zeroinitializer, [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 1.000000e+02, double 1.000000e+02]], [10 x [2 x double]] [[2 x double] [double 1.000000e+00, double 0.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 0.000000e+00], [2 x double] [double 2.000000e+00, double 0.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 0.000000e+00], [2 x double] [double 1.000000e+00, double 0.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] zeroinitializer, [2 x double] [double 1.000000e+00, double 0.000000e+00]], [10 x [2 x double]] [[2 x double] [double 1.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 2.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+00, double 0.000000e+00], [2 x double] [double 2.000000e+00, double 0.000000e+00], [2 x double] [double 1.000000e+00, double 0.000000e+00], [2 x double] [double 1.000000e+00, double 1.000000e+00], [2 x double] [double 1.000000e+02, double 1.000000e+02], [2 x double] [double 0.000000e+00, double 1.000000e+00], [2 x double] zeroinitializer]]
@.str = [52 x i8] c"%s %d + %d = %d %s[ correct ]%s [ one move ]\0A\00"
@.str.1 = [6 x i8] c"\1B[33m\00"
@.str.2 = [6 x i8] c"\1B[32m\00"
@.str.3 = [6 x i8] c"\1B[31m\00"
@.str.4 = [52 x i8] c"%s %d + %d = %d %s[ correct ]%s [ two moves ]\0A\00"
@.str.5 = [6 x i8] c"\1B[36m\00"
@.str.6 = [52 x i8] c"%s %d - %d = %d %s[ correct ]%s [ one move ]\0A\00"
@.str.7 = [52 x i8] c"%s %d - %d = %d %s[ correct ]%s [ two moves ]\0A\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = getelementptr inbounds i8*, i8** %1, i64 1
%4 = load i8*, i8** %3
%5 = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %4)
%6 = getelementptr inbounds i8*, i8** %1, i64 2
%7 = load i8*, i8** %6
%8 = load i8, i8* %7
%9 = getelementptr inbounds i8*, i8** %1, i64 3
%10 = load i8*, i8** %9
%11 = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %10)
%12 = getelementptr inbounds i8*, i8** %1, i64 5
%13 = load i8*, i8** %12
%14 = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %13)
%15 = sext i32 %5 to i64
%16 = sext i32 %11 to i64
%17 = sext i32 %14 to i64
%18 = icmp eq i8 %8, 45
%19 = zext i1 %18 to i32
%20 = icmp eq i8 %8, 43
%21 = zext i1 %20 to i32
br label %22
22: ; preds = %2, %103
%23 = phi i64 [ 0, %2 ], [ %104, %103 ]
%24 = getelementptr inbounds [10 x [10 x i32]], [10 x [10 x i32]]* @__const.main.prob, i64 0, i64 %15, i64 %23
%25 = load i32, i32* %24
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds [10 x [10 x [2 x double]]], [10 x [10 x [2 x double]]]* @__const.main.mov, i64 0, i64 %15, i64 %26, i64 0
%28 = getelementptr inbounds [10 x [10 x [2 x double]]], [10 x [10 x [2 x double]]]* @__const.main.mov, i64 0, i64 %15, i64 %26, i64 1
br label %29
29: ; preds = %22, %100
%30 = phi i64 [ 0, %22 ], [ %101, %100 ]
%31 = getelementptr inbounds [10 x [10 x i32]], [10 x [10 x i32]]* @__const.main.prob, i64 0, i64 %16, i64 %30
%32 = load i32, i32* %31
%33 = add nsw i32 %32, %25
%34 = sext i32 %32 to i64
%35 = getelementptr inbounds [10 x [10 x [2 x double]]], [10 x [10 x [2 x double]]]* @__const.main.mov, i64 0, i64 %16, i64 %34, i64 0
%36 = getelementptr inbounds [10 x [10 x [2 x double]]], [10 x [10 x [2 x double]]]* @__const.main.mov, i64 0, i64 %16, i64 %34, i64 1
%37 = sub nsw i32 %25, %32
%38 = sext i32 %33 to i64
%39 = getelementptr inbounds [10 x [10 x [2 x double]]], [10 x [10 x [2 x double]]]* @__const.main.mov, i64 0, i64 %17, i64 %38, i64 0
%40 = getelementptr inbounds [10 x [10 x [2 x double]]], [10 x [10 x [2 x double]]]* @__const.main.mov, i64 0, i64 %17, i64 %38, i64 1
%41 = sext i32 %37 to i64
%42 = getelementptr inbounds [10 x [10 x [2 x double]]], [10 x [10 x [2 x double]]]* @__const.main.mov, i64 0, i64 %17, i64 %41, i64 0
%43 = getelementptr inbounds [10 x [10 x [2 x double]]], [10 x [10 x [2 x double]]]* @__const.main.mov, i64 0, i64 %17, i64 %41, i64 1
br label %44
44: ; preds = %29, %97
%45 = phi i64 [ 0, %29 ], [ %98, %97 ]
%46 = getelementptr inbounds [10 x [10 x i32]], [10 x [10 x i32]]* @__const.main.prob, i64 0, i64 %17, i64 %45
%47 = load i32, i32* %46
%48 = icmp eq i32 %33, %47
br i1 %48, label %49, label %72
49: ; preds = %44
%50 = load double, double* %27
%51 = load double, double* %35
%52 = fadd double %50, %51
%53 = load double, double* %39
%54 = fadd double %52, %53
%55 = fptosi double %54 to i32
%56 = load double, double* %28
%57 = load double, double* %36
%58 = fadd double %56, %57
%59 = load double, double* %40
%60 = fadd double %58, %59
%61 = fptosi double %60 to i32
%62 = add nsw i32 %61, %19
switch i32 %55, label %72 [
i32 1, label %63
i32 2, label %67
]
63: ; preds = %49
%64 = icmp eq i32 %62, 1
br i1 %64, label %65, label %72
65: ; preds = %63
%66 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 %25, i32 %32, i32 %33, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
br label %72
67: ; preds = %49
%68 = add i32 %62, -1
%69 = icmp ult i32 %68, 2
br i1 %69, label %70, label %72
70: ; preds = %67
%71 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 %25, i32 %32, i32 %33, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
br label %72
72: ; preds = %49, %65, %63, %67, %70, %44
%73 = icmp eq i32 %37, %47
br i1 %73, label %74, label %97
74: ; preds = %72
%75 = load double, double* %27
%76 = load double, double* %35
%77 = fadd double %75, %76
%78 = load double, double* %42
%79 = fadd double %77, %78
%80 = fptosi double %79 to i32
%81 = load double, double* %28
%82 = load double, double* %36
%83 = fadd double %81, %82
%84 = load double, double* %43
%85 = fadd double %83, %84
%86 = fptosi double %85 to i32
%87 = add nsw i32 %80, %21
switch i32 %87, label %97 [
i32 1, label %88
i32 2, label %92
]
88: ; preds = %74
%89 = icmp eq i32 %86, 1
br i1 %89, label %90, label %97
90: ; preds = %88
%91 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 %25, i32 %32, i32 %37, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
br label %97
92: ; preds = %74
%93 = add i32 %86, -1
%94 = icmp ult i32 %93, 2
br i1 %94, label %95, label %97
95: ; preds = %92
%96 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 %25, i32 %32, i32 %37, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
br label %97
97: ; preds = %72, %95, %92, %88, %90, %74
%98 = add nuw nsw i64 %45, 1
%99 = icmp eq i64 %98, 10
br i1 %99, label %100, label %44
100: ; preds = %97
%101 = add nuw nsw i64 %30, 1
%102 = icmp eq i64 %101, 10
br i1 %102, label %103, label %29
103: ; preds = %100
%104 = add nuw nsw i64 %23, 1
%105 = icmp eq i64 %104, 10
br i1 %105, label %106, label %22
106: ; preds = %103
ret i32 0
}