#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 *, long long *, long long *, long long *,
                         long long *);
int main() {
  long long a1, b1;
  long long a2, b2;
  scanf("%lld %lld %lld %lld", &a1, &b1, &a2, &b2);
  long long m1, n1;
  long long m2, n2;
  m1 = a1;
  n1 = b1;
  m2 = a2;
  n2 = b2;
  long long count_num1_2x = 0;
  long long count_num1_3x = 0;
  long long count_num2_2x = 0;
  long long count_num2_3x = 0;
  while (a1 % 2 == 0 || a1 % 3 == 0) {
    if (a1 % 2 == 0) {
      count_num1_2x++;
      a1 /= 2;
    }
    if (a1 % 3 == 0) {
      count_num1_3x++;
      a1 /= 3;
    }
  }
  while (b1 % 2 == 0 || b1 % 3 == 0) {
    if (b1 % 2 == 0) {
      count_num1_2x++;
      b1 /= 2;
    }
    if (b1 % 3 == 0) {
      count_num1_3x++;
      b1 /= 3;
    }
  }
  while (a2 % 2 == 0 || a2 % 3 == 0) {
    if (a2 % 2 == 0) {
      count_num2_2x++;
      a2 /= 2;
    }
    if (a2 % 3 == 0) {
      count_num2_3x++;
      a2 /= 3;
    }
  }
  while (b2 % 2 == 0 || b2 % 3 == 0) {
    if (b2 % 2 == 0) {
      count_num2_2x++;
      b2 /= 2;
    }
    if (b2 % 3 == 0) {
      count_num2_3x++;
      b2 /= 3;
    }
  }
  long long ans = 0;
  if (count_num2_3x > count_num1_3x) {
    long long times = count_num2_3x - count_num1_3x;
    count_num2_2x += times;
    ans += times;
    long long i = 0;
    for (i = 0; i < times; i++) {
      if (m2 % 3 == 0)
        m2 = m2 / 3 * 2;
      else
        n2 = n2 / 3 * 2;
    }
  } else {
    long long times = count_num1_3x - count_num2_3x;
    count_num1_2x += times;
    ans += times;
    long long i = 0;
    for (i = 0; i < times; i++) {
      if (m1 % 3 == 0)
        m1 = m1 / 3 * 2;
      else
        n1 = n1 / 3 * 2;
    }
  }
  if (count_num2_2x > count_num1_2x) {
    long long times = count_num2_2x - count_num1_2x;
    ans += times;
    long long i = 0;
    for (i = 0; i < times; i++) {
      if (m2 % 2 == 0)
        m2 /= 2;
      else
        n2 /= 2;
    }
  } else {
    long long times = count_num1_2x - count_num2_2x;
    ans += times;
    long long i = 0;
    for (i = 0; i < times; i++) {
      if (m1 % 2 == 0)
        m1 /= 2;
      else
        n1 /= 2;
    }
  }
  if (m1 * n1 == m2 * n2)
    printf("%lld\n", ans);
  else
    printf("-1\n");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xec7(%rip),%rdi
lea    -0x10(%rbp),%rsi
lea    -0x18(%rbp),%rdx
lea    -0x20(%rbp),%rcx
lea    -0x28(%rbp),%r8
call   1040 <scanf@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
movq   $0x0,-0x50(%rbp)
movq   $0x0,-0x58(%rbp)
movq   $0x0,-0x60(%rbp)
movq   $0x0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    $0x1,%al
cmp    $0x0,%rdx
mov    %al,-0xb1(%rbp)
je     11c9 <main+0xa9>
mov    -0x10(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
sete   %al
mov    %al,-0xb1(%rbp)
mov    -0xb1(%rbp),%al
test   $0x1,%al
jne    11dc <main+0xbc>
jmp    124d <main+0x12d>
mov    -0x10(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    1212 <main+0xf2>
mov    -0x50(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    1248 <main+0x128>
mov    -0x58(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x58(%rbp)
mov    -0x10(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
mov    %rax,-0x10(%rbp)
jmp    118e <main+0x6e>
jmp    1252 <main+0x132>
mov    -0x18(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    $0x1,%al
cmp    $0x0,%rdx
mov    %al,-0xb2(%rbp)
je     128d <main+0x16d>
mov    -0x18(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
sete   %al
mov    %al,-0xb2(%rbp)
mov    -0xb2(%rbp),%al
test   $0x1,%al
jne    12a0 <main+0x180>
jmp    1311 <main+0x1f1>
mov    -0x18(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    12d6 <main+0x1b6>
mov    -0x50(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    130c <main+0x1ec>
mov    -0x58(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x58(%rbp)
mov    -0x18(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
mov    %rax,-0x18(%rbp)
jmp    1252 <main+0x132>
jmp    1316 <main+0x1f6>
mov    -0x20(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    $0x1,%al
cmp    $0x0,%rdx
mov    %al,-0xb3(%rbp)
je     1351 <main+0x231>
mov    -0x20(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
sete   %al
mov    %al,-0xb3(%rbp)
mov    -0xb3(%rbp),%al
test   $0x1,%al
jne    1364 <main+0x244>
jmp    13d5 <main+0x2b5>
mov    -0x20(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    139a <main+0x27a>
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x20(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    13d0 <main+0x2b0>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
mov    -0x20(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
mov    %rax,-0x20(%rbp)
jmp    1316 <main+0x1f6>
jmp    13da <main+0x2ba>
mov    -0x28(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    $0x1,%al
cmp    $0x0,%rdx
mov    %al,-0xb4(%rbp)
je     1415 <main+0x2f5>
mov    -0x28(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
sete   %al
mov    %al,-0xb4(%rbp)
mov    -0xb4(%rbp),%al
test   $0x1,%al
jne    1428 <main+0x308>
jmp    1499 <main+0x379>
mov    -0x28(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    145e <main+0x33e>
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x28(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    1494 <main+0x374>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
mov    -0x28(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
mov    %rax,-0x28(%rbp)
jmp    13da <main+0x2ba>
movq   $0x0,-0x70(%rbp)
mov    -0x68(%rbp),%rax
cmp    -0x58(%rbp),%rax
jle    1555 <main+0x435>
mov    -0x68(%rbp),%rax
sub    -0x58(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
add    -0x60(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x78(%rbp),%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
movq   $0x0,-0x80(%rbp)
movq   $0x0,-0x80(%rbp)
mov    -0x80(%rbp),%rax
cmp    -0x78(%rbp),%rax
jge    1550 <main+0x430>
mov    -0x40(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    1524 <main+0x404>
mov    -0x40(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
shl    $0x1,%rax
mov    %rax,-0x40(%rbp)
jmp    153a <main+0x41a>
mov    -0x48(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
shl    $0x1,%rax
mov    %rax,-0x48(%rbp)
jmp    153f <main+0x41f>
mov    -0x80(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x80(%rbp)
jmp    14e3 <main+0x3c3>
jmp    1616 <main+0x4f6>
mov    -0x58(%rbp),%rax
sub    -0x68(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
add    -0x50(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x88(%rbp),%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
movq   $0x0,-0x90(%rbp)
movq   $0x0,-0x90(%rbp)
mov    -0x90(%rbp),%rax
cmp    -0x88(%rbp),%rax
jge    1611 <main+0x4f1>
mov    -0x30(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    15df <main+0x4bf>
mov    -0x30(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
shl    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    15f5 <main+0x4d5>
mov    -0x38(%rbp),%rax
mov    $0x3,%ecx
cqto
idiv   %rcx
shl    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    15fa <main+0x4da>
mov    -0x90(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x90(%rbp)
jmp    1598 <main+0x478>
jmp    1616 <main+0x4f6>
mov    -0x60(%rbp),%rax
cmp    -0x50(%rbp),%rax
jle    16ce <main+0x5ae>
mov    -0x60(%rbp),%rax
sub    -0x50(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
movq   $0x0,-0xa0(%rbp)
movq   $0x0,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
cmp    -0x98(%rbp),%rax
jge    16c9 <main+0x5a9>
mov    -0x40(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    169b <main+0x57b>
mov    -0x40(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,-0x40(%rbp)
jmp    16ad <main+0x58d>
mov    -0x48(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,-0x48(%rbp)
jmp    16b2 <main+0x592>
mov    -0xa0(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0xa0(%rbp)
jmp    1658 <main+0x538>
jmp    1778 <main+0x658>
mov    -0x50(%rbp),%rax
sub    -0x60(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
movq   $0x0,-0xb0(%rbp)
movq   $0x0,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
cmp    -0xa8(%rbp),%rax
jge    1773 <main+0x653>
mov    -0x30(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    1745 <main+0x625>
mov    -0x30(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,-0x30(%rbp)
jmp    1757 <main+0x637>
mov    -0x38(%rbp),%rax
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,-0x38(%rbp)
jmp    175c <main+0x63c>
mov    -0xb0(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0xb0(%rbp)
jmp    1702 <main+0x5e2>
jmp    1778 <main+0x658>
mov    -0x30(%rbp),%rax
imul   -0x38(%rbp),%rax
mov    -0x40(%rbp),%rcx
imul   -0x48(%rbp),%rcx
cmp    %rcx,%rax
jne    17aa <main+0x68a>
mov    -0x70(%rbp),%rsi
lea    0x876(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17b8 <main+0x698>
lea    0x869(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x20,%rsp
lea    0xebc(%rip),%rdi
lea    0x18(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0x8(%rsp),%rcx
mov    %rsp,%r8
call   1050 <scanf@plt>
mov    0x18(%rsp),%r9
mov    0x10(%rsp),%r8
movabs $0x5555555555555556,%r12
55 55 55
mov    %r9,%rax
imul   %r12
test   $0x1,%r9b
sete   %al
je     119e <main+0x6e>
mov    %rdx,%rcx
shr    $0x3f,%rcx
add    %rdx,%rcx
lea    (%rcx,%rcx,2),%rcx
mov    %r9,%rdx
sub    %rcx,%rdx
je     119e <main+0x6e>
xor    %esi,%esi
xor    %r14d,%r14d
jmp    1230 <main+0x100>
xor    %r14d,%r14d
xor    %esi,%esi
mov    %r9,%rcx
cs nopw 0x0(%rax,%rax,1)
test   $0x1,%al
je     11d0 <main+0xa0>
add    $0x1,%rsi
mov    %rcx,%rdi
shr    $0x3f,%rdi
add    %rcx,%rdi
sar    %rdi
mov    %rdi,0x18(%rsp)
jmp    11d3 <main+0xa3>
nopl   0x0(%rax)
mov    %rcx,%rdi
mov    %rdi,%rax
imul   %r12
mov    %rdx,%rcx
shr    $0x3f,%rcx
add    %rdx,%rcx
lea    (%rcx,%rcx,2),%rax
mov    %rdi,%rdx
sub    %rax,%rdx
je     1200 <main+0xd0>
mov    %rdi,%rcx
jmp    1223 <main+0xf3>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r14
mov    %rcx,0x18(%rsp)
mov    %rcx,%rax
imul   %r12
mov    %rdx,%rax
shr    $0x3f,%rax
add    %rdx,%rax
lea    (%rax,%rax,2),%rax
mov    %rcx,%rdx
sub    %rax,%rdx
test   $0x1,%cl
sete   %al
je     11b0 <main+0x80>
test   %rdx,%rdx
je     11b0 <main+0x80>
mov    0x8(%rsp),%r10
mov    %r8,%rax
imul   %r12
test   $0x1,%r8b
sete   %al
je     1263 <main+0x133>
mov    %rdx,%rcx
shr    $0x3f,%rcx
add    %rdx,%rcx
lea    (%rcx,%rcx,2),%rdx
mov    %r8,%rdi
mov    %r8,%rcx
sub    %rdx,%rdi
jne    12f0 <main+0x1c0>
jmp    1270 <main+0x140>
mov    %r8,%rcx
cs nopw 0x0(%rax,%rax,1)
test   $0x1,%al
je     1290 <main+0x160>
add    $0x1,%rsi
mov    %rcx,%rdi
shr    $0x3f,%rdi
add    %rcx,%rdi
sar    %rdi
mov    %rdi,0x10(%rsp)
jmp    1293 <main+0x163>
nopl   0x0(%rax)
mov    %rcx,%rdi
mov    %rdi,%rax
imul   %r12
mov    %rdx,%rcx
shr    $0x3f,%rcx
add    %rdx,%rcx
lea    (%rcx,%rcx,2),%rax
mov    %rdi,%rdx
sub    %rax,%rdx
je     12c0 <main+0x190>
mov    %rdi,%rcx
jmp    12e3 <main+0x1b3>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r14
mov    %rcx,0x10(%rsp)
mov    %rcx,%rax
imul   %r12
mov    %rdx,%rax
shr    $0x3f,%rax
add    %rdx,%rax
lea    (%rax,%rax,2),%rax
mov    %rcx,%rdx
sub    %rax,%rdx
test   $0x1,%cl
sete   %al
je     1270 <main+0x140>
test   %rdx,%rdx
je     1270 <main+0x140>
mov    (%rsp),%r11
mov    %r10,%rax
imul   %r12
test   $0x1,%r10b
sete   %al
je     1323 <main+0x1f3>
mov    %rdx,%rcx
shr    $0x3f,%rcx
add    %rdx,%rcx
lea    (%rcx,%rcx,2),%rcx
mov    %r10,%rdx
sub    %rcx,%rdx
je     1323 <main+0x1f3>
xor    %r15d,%r15d
xor    %ebx,%ebx
jmp    13b5 <main+0x285>
xor    %ebx,%ebx
xor    %r15d,%r15d
mov    %r10,%rdi
nopl   0x0(%rax,%rax,1)
test   $0x1,%al
je     1350 <main+0x220>
add    $0x1,%r15
mov    %rdi,%rcx
shr    $0x3f,%rcx
add    %rdi,%rcx
sar    %rcx
mov    %rcx,0x8(%rsp)
jmp    1353 <main+0x223>
nopl   0x0(%rax)
mov    %rdi,%rcx
mov    %rcx,%rax
imul   %r12
mov    %rdx,%rdi
shr    $0x3f,%rdi
add    %rdx,%rdi
lea    (%rdi,%rdi,2),%rax
mov    %rcx,%rdx
sub    %rax,%rdx
je     1380 <main+0x250>
mov    %rcx,%rdi
jmp    13a3 <main+0x273>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rbx
mov    %rdi,0x8(%rsp)
mov    %rdi,%rax
imul   %r12
mov    %rdx,%rax
shr    $0x3f,%rax
add    %rdx,%rax
lea    (%rax,%rax,2),%rax
mov    %rdi,%rdx
sub    %rax,%rdx
test   $0x1,%dil
sete   %al
je     1330 <main+0x200>
test   %rdx,%rdx
je     1330 <main+0x200>
mov    %r11,%rax
imul   %r12
test   $0x1,%r11b
sete   %al
je     13e3 <main+0x2b3>
mov    %rdx,%rcx
shr    $0x3f,%rcx
add    %rdx,%rcx
lea    (%rcx,%rcx,2),%rdx
mov    %r11,%rdi
mov    %r11,%rcx
sub    %rdx,%rdi
jne    146f <main+0x33f>
jmp    13f0 <main+0x2c0>
mov    %r11,%rcx
cs nopw 0x0(%rax,%rax,1)
test   $0x1,%al
je     1410 <main+0x2e0>
add    $0x1,%r15
mov    %rcx,%rdi
shr    $0x3f,%rdi
add    %rcx,%rdi
sar    %rdi
mov    %rdi,(%rsp)
jmp    1413 <main+0x2e3>
nopl   0x0(%rax,%rax,1)
mov    %rcx,%rdi
mov    %rdi,%rax
imul   %r12
mov    %rdx,%rcx
shr    $0x3f,%rcx
add    %rdx,%rcx
lea    (%rcx,%rcx,2),%rax
mov    %rdi,%rdx
sub    %rax,%rdx
je     1440 <main+0x310>
mov    %rdi,%rcx
jmp    1462 <main+0x332>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rbx
mov    %rcx,(%rsp)
mov    %rcx,%rax
imul   %r12
mov    %rdx,%rax
shr    $0x3f,%rax
add    %rdx,%rax
lea    (%rax,%rax,2),%rax
mov    %rcx,%rdx
sub    %rax,%rdx
test   $0x1,%cl
sete   %al
je     13f0 <main+0x2c0>
test   %rdx,%rdx
je     13f0 <main+0x2c0>
mov    %rbx,%r13
sub    %r14,%r13
jle    14f6 <main+0x3c6>
add    %r13,%r15
test   %r13,%r13
jle    14f1 <main+0x3c1>
movabs $0xaaaaaaaaaaaaaaab,%r14
aa aa aa
movabs $0x2aaaaaaaaaaaaaaa,%rbx
aa aa 2a
movabs $0x5555555555555554,%rcx
55 55 55
mov    %r13,%rdi
jmp    14c3 <main+0x393>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %rdx,%r10
shr    $0x3f,%r10
add    %rdx,%r10
add    %r10,%r10
add    $0xffffffffffffffff,%rdi
je     14f1 <main+0x3c1>
mov    %r10,%rax
imul   %r12
mov    %r10,%rax
imul   %r14,%rax
add    %rbx,%rax
cmp    %rcx,%rax
jbe    14b0 <main+0x380>
mov    %r11,%rax
imul   %r12
mov    %rdx,%r11
shr    $0x3f,%r11
add    %rdx,%r11
add    %r11,%r11
add    $0xffffffffffffffff,%rdi
jne    14c3 <main+0x393>
mov    %r13,%r14
jmp    1571 <main+0x441>
sub    %rbx,%r14
add    %r14,%rsi
test   %r14,%r14
jle    1571 <main+0x441>
movabs $0xaaaaaaaaaaaaaaab,%r13
aa aa aa
movabs $0x2aaaaaaaaaaaaaaa,%rdi
aa aa 2a
movabs $0x5555555555555554,%rbx
55 55 55
mov    %r14,%rcx
jmp    1543 <main+0x413>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %rdx,%r9
shr    $0x3f,%r9
add    %rdx,%r9
add    %r9,%r9
add    $0xffffffffffffffff,%rcx
je     1571 <main+0x441>
mov    %r9,%rax
imul   %r12
mov    %r9,%rax
imul   %r13,%rax
add    %rdi,%rax
cmp    %rbx,%rax
jbe    1530 <main+0x400>
mov    %r8,%rax
imul   %r12
mov    %rdx,%r8
shr    $0x3f,%r8
add    %rdx,%r8
add    %r8,%r8
add    $0xffffffffffffffff,%rcx
jne    1543 <main+0x413>
mov    %r15,%rax
sub    %rsi,%rax
jle    15c7 <main+0x497>
test   %rax,%rax
jle    15c2 <main+0x492>
mov    %rax,%rcx
jmp    15a6 <main+0x476>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r11,%rdx
shr    $0x3f,%rdx
add    %r11,%rdx
sar    %rdx
mov    %rdx,%r11
add    $0xffffffffffffffff,%rcx
je     15c2 <main+0x492>
test   $0x1,%r10b
jne    1590 <main+0x460>
mov    %r10,%rdx
shr    $0x3f,%rdx
add    %r10,%rdx
sar    %rdx
mov    %rdx,%r10
add    $0xffffffffffffffff,%rcx
jne    15a6 <main+0x476>
mov    %rax,%rsi
jmp    1612 <main+0x4e2>
sub    %r15,%rsi
test   %rsi,%rsi
jle    1612 <main+0x4e2>
mov    %rsi,%rax
jmp    15f6 <main+0x4c6>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r8,%rcx
shr    $0x3f,%rcx
add    %r8,%rcx
sar    %rcx
mov    %rcx,%r8
add    $0xffffffffffffffff,%rax
je     1612 <main+0x4e2>
test   $0x1,%r9b
jne    15e0 <main+0x4b0>
mov    %r9,%rcx
shr    $0x3f,%rcx
add    %r9,%rcx
sar    %rcx
mov    %rcx,%r9
add    $0xffffffffffffffff,%rax
jne    15f6 <main+0x4c6>
imul   %r10,%r11
imul   %r9,%r8
cmp    %r11,%r8
jne    1632 <main+0x502>
add    %r14,%rsi
lea    0x9eb(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    163e <main+0x50e>
lea    0x9e1(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

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

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