#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 */
typedef scalar_t__ u;
typedef scalar_t__ i;

/* Variables and functions */
int /*<<< orphan*/ printf(char *, int, long, unsigned long, long long,
                          long long, unsigned long);
int _test_MAX_equallong_equalulong(long i, unsigned long u) {
  if ((((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
           ? (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                  ? ((((long long)(i)) > ((long long)(u)))
                         ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))
                         : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u)))
                  : (((i) < 0)
                         ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))
                         : ((((unsigned long long)(i)) >
                             ((unsigned long long)(u)))
                                ? ((sizeof(i) < sizeof(long long))
                                       ? ((long long)(i))
                                       : (i))
                                : ((sizeof(u) < sizeof(long long))
                                       ? ((long long)(u))
                                       : (u)))))
           : (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                  ? (((u) < 0)
                         ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))
                         : ((((unsigned long long)(i)) >
                             ((unsigned long long)(u)))
                                ? ((sizeof(i) < sizeof(long long))
                                       ? ((long long)(i))
                                       : (i))
                                : ((sizeof(u) < sizeof(long long))
                                       ? ((long long)(u))
                                       : (u))))
                  : ((((unsigned long long)(i)) > ((unsigned long long)(u)))
                         ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))
                         : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))))) != i) {
    printf(
        "failed test %d MAX(%ld, %ld): %lldLL == %lluLLU != i == %ldL\n", 769,
        i, u,
        (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
             ? (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                    ? ((((long long)(i)) > ((long long)(u)))
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u)))
                    : (((i) < 0)
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((((unsigned long long)(i)) >
                               ((unsigned long long)(u)))
                                  ? ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))
                                  : ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u)))))
             : (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                    ? (((u) < 0)
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((((unsigned long long)(i)) >
                               ((unsigned long long)(u)))
                                  ? ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))
                                  : ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))))
                    : ((((unsigned long long)(i)) > ((unsigned long long)(u)))
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))))),
        (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
             ? (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                    ? ((((long long)(i)) > ((long long)(u)))
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u)))
                    : (((i) < 0)
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((((unsigned long long)(i)) >
                               ((unsigned long long)(u)))
                                  ? ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))
                                  : ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u)))))
             : (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                    ? (((u) < 0)
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((((unsigned long long)(i)) >
                               ((unsigned long long)(u)))
                                  ? ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))
                                  : ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))))
                    : ((((unsigned long long)(i)) > ((unsigned long long)(u)))
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))))),
        i);
  }
  if ((((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
           ? (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                  ? ((((long long)(i)) > ((long long)(u)))
                         ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))
                         : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u)))
                  : (((i) < 0)
                         ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))
                         : ((((unsigned long long)(i)) >
                             ((unsigned long long)(u)))
                                ? ((sizeof(i) < sizeof(long long))
                                       ? ((long long)(i))
                                       : (i))
                                : ((sizeof(u) < sizeof(long long))
                                       ? ((long long)(u))
                                       : (u)))))
           : (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                  ? (((u) < 0)
                         ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))
                         : ((((unsigned long long)(i)) >
                             ((unsigned long long)(u)))
                                ? ((sizeof(i) < sizeof(long long))
                                       ? ((long long)(i))
                                       : (i))
                                : ((sizeof(u) < sizeof(long long))
                                       ? ((long long)(u))
                                       : (u))))
                  : ((((unsigned long long)(i)) > ((unsigned long long)(u)))
                         ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))
                         : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))))) != u) {
    printf(
        "failed test %d MAX(%ld, %ld): %lldLL == %lluLLU != u == %luUL\n", 772,
        i, u,
        (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
             ? (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                    ? ((((long long)(i)) > ((long long)(u)))
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u)))
                    : (((i) < 0)
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((((unsigned long long)(i)) >
                               ((unsigned long long)(u)))
                                  ? ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))
                                  : ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u)))))
             : (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                    ? (((u) < 0)
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((((unsigned long long)(i)) >
                               ((unsigned long long)(u)))
                                  ? ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))
                                  : ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))))
                    : ((((unsigned long long)(i)) > ((unsigned long long)(u)))
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))))),
        (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
             ? (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                    ? ((((long long)(i)) > ((long long)(u)))
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u)))
                    : (((i) < 0)
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((((unsigned long long)(i)) >
                               ((unsigned long long)(u)))
                                  ? ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))
                                  : ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u)))))
             : (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
                    ? (((u) < 0)
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((((unsigned long long)(i)) >
                               ((unsigned long long)(u)))
                                  ? ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))
                                  : ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))))
                    : ((((unsigned long long)(i)) > ((unsigned long long)(u)))
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))))),
        u);
  }
  return 0;
}


x86 assembly (clang, -O0):
<_test_MAX_equallong_equalulong>:
push   %rbp
mov    %rsp,%rbp
sub    $0x200,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
sub    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
cmp    %rcx,%rax
jge    11fb <_test_MAX_equallong_equalulong+0xeb>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    11a3 <_test_MAX_equallong_equalulong+0x93>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jle    118e <_test_MAX_equallong_equalulong+0x7e>
mov    -0x8(%rbp),%rax
mov    %rax,-0x18(%rbp)
jmp    1196 <_test_MAX_equallong_equalulong+0x86>
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x20(%rbp)
jmp    11ee <_test_MAX_equallong_equalulong+0xde>
cmpq   $0x0,-0x8(%rbp)
jge    11bb <_test_MAX_equallong_equalulong+0xab>
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
jmp    11e6 <_test_MAX_equallong_equalulong+0xd6>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    11d6 <_test_MAX_equallong_equalulong+0xc6>
mov    -0x8(%rbp),%rax
mov    %rax,-0x30(%rbp)
jmp    11de <_test_MAX_equallong_equalulong+0xce>
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x38(%rbp)
jmp    12a6 <_test_MAX_equallong_equalulong+0x196>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1273 <_test_MAX_equallong_equalulong+0x163>
cmpq   $0x0,-0x10(%rbp)
jae    123b <_test_MAX_equallong_equalulong+0x12b>
mov    -0x8(%rbp),%rax
mov    %rax,-0x40(%rbp)
jmp    1266 <_test_MAX_equallong_equalulong+0x156>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1256 <_test_MAX_equallong_equalulong+0x146>
mov    -0x8(%rbp),%rax
mov    %rax,-0x48(%rbp)
jmp    125e <_test_MAX_equallong_equalulong+0x14e>
mov    -0x10(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x50(%rbp)
jmp    129e <_test_MAX_equallong_equalulong+0x18e>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    128e <_test_MAX_equallong_equalulong+0x17e>
mov    -0x8(%rbp),%rax
mov    %rax,-0x58(%rbp)
jmp    1296 <_test_MAX_equallong_equalulong+0x186>
mov    -0x10(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x8(%rbp),%rax
je     1688 <_test_MAX_equallong_equalulong+0x578>
mov    -0x8(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x8(%rbp),%rax
sub    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
cmp    %rcx,%rax
jge    13a8 <_test_MAX_equallong_equalulong+0x298>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1344 <_test_MAX_equallong_equalulong+0x234>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jle    132f <_test_MAX_equallong_equalulong+0x21f>
mov    -0x8(%rbp),%rax
mov    %rax,-0x70(%rbp)
jmp    1337 <_test_MAX_equallong_equalulong+0x227>
mov    -0x10(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x78(%rbp)
jmp    1398 <_test_MAX_equallong_equalulong+0x288>
cmpq   $0x0,-0x8(%rbp)
jge    135c <_test_MAX_equallong_equalulong+0x24c>
mov    -0x10(%rbp),%rax
mov    %rax,-0x80(%rbp)
jmp    1390 <_test_MAX_equallong_equalulong+0x280>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    137a <_test_MAX_equallong_equalulong+0x26a>
mov    -0x8(%rbp),%rax
mov    %rax,-0x88(%rbp)
jmp    1385 <_test_MAX_equallong_equalulong+0x275>
mov    -0x10(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
mov    %rax,-0x90(%rbp)
jmp    147a <_test_MAX_equallong_equalulong+0x36a>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1435 <_test_MAX_equallong_equalulong+0x325>
cmpq   $0x0,-0x10(%rbp)
jae    13eb <_test_MAX_equallong_equalulong+0x2db>
mov    -0x8(%rbp),%rax
mov    %rax,-0x98(%rbp)
jmp    1422 <_test_MAX_equallong_equalulong+0x312>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1409 <_test_MAX_equallong_equalulong+0x2f9>
mov    -0x8(%rbp),%rax
mov    %rax,-0xa0(%rbp)
jmp    1414 <_test_MAX_equallong_equalulong+0x304>
mov    -0x10(%rbp),%rax
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rax
mov    %rax,-0xa8(%rbp)
jmp    146c <_test_MAX_equallong_equalulong+0x35c>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1453 <_test_MAX_equallong_equalulong+0x343>
mov    -0x8(%rbp),%rax
mov    %rax,-0xb0(%rbp)
jmp    145e <_test_MAX_equallong_equalulong+0x34e>
mov    -0x10(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0x8(%rbp),%rax
sub    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
cmp    %rcx,%rax
jge    1587 <_test_MAX_equallong_equalulong+0x477>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1514 <_test_MAX_equallong_equalulong+0x404>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jle    14f6 <_test_MAX_equallong_equalulong+0x3e6>
mov    -0x8(%rbp),%rax
mov    %rax,-0xc0(%rbp)
jmp    1501 <_test_MAX_equallong_equalulong+0x3f1>
mov    -0x10(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
mov    %rax,-0xc8(%rbp)
jmp    1574 <_test_MAX_equallong_equalulong+0x464>
cmpq   $0x0,-0x8(%rbp)
jge    152f <_test_MAX_equallong_equalulong+0x41f>
mov    -0x10(%rbp),%rax
mov    %rax,-0xd0(%rbp)
jmp    1566 <_test_MAX_equallong_equalulong+0x456>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    154d <_test_MAX_equallong_equalulong+0x43d>
mov    -0x8(%rbp),%rax
mov    %rax,-0xd8(%rbp)
jmp    1558 <_test_MAX_equallong_equalulong+0x448>
mov    -0x10(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0xd8(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0xd0(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    -0xc8(%rbp),%rax
mov    %rax,-0xe0(%rbp)
jmp    1659 <_test_MAX_equallong_equalulong+0x549>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1614 <_test_MAX_equallong_equalulong+0x504>
cmpq   $0x0,-0x10(%rbp)
jae    15ca <_test_MAX_equallong_equalulong+0x4ba>
mov    -0x8(%rbp),%rax
mov    %rax,-0xe8(%rbp)
jmp    1601 <_test_MAX_equallong_equalulong+0x4f1>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    15e8 <_test_MAX_equallong_equalulong+0x4d8>
mov    -0x8(%rbp),%rax
mov    %rax,-0xf0(%rbp)
jmp    15f3 <_test_MAX_equallong_equalulong+0x4e3>
mov    -0x10(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rax
mov    %rax,-0xf8(%rbp)
jmp    164b <_test_MAX_equallong_equalulong+0x53b>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1632 <_test_MAX_equallong_equalulong+0x522>
mov    -0x8(%rbp),%rax
mov    %rax,-0x100(%rbp)
jmp    163d <_test_MAX_equallong_equalulong+0x52d>
mov    -0x10(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0xb8(%rbp),%r8
mov    -0x60(%rbp),%rcx
mov    -0x68(%rbp),%rdx
mov    -0xe0(%rbp),%r9
mov    -0x8(%rbp),%rax
lea    0x986(%rip),%rdi
mov    $0x301,%esi
mov    %rax,(%rsp)
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
sub    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
cmp    %rcx,%rax
jge    1787 <_test_MAX_equallong_equalulong+0x677>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1714 <_test_MAX_equallong_equalulong+0x604>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jle    16f6 <_test_MAX_equallong_equalulong+0x5e6>
mov    -0x8(%rbp),%rax
mov    %rax,-0x108(%rbp)
jmp    1701 <_test_MAX_equallong_equalulong+0x5f1>
mov    -0x10(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
mov    %rax,-0x110(%rbp)
jmp    1774 <_test_MAX_equallong_equalulong+0x664>
cmpq   $0x0,-0x8(%rbp)
jge    172f <_test_MAX_equallong_equalulong+0x61f>
mov    -0x10(%rbp),%rax
mov    %rax,-0x118(%rbp)
jmp    1766 <_test_MAX_equallong_equalulong+0x656>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    174d <_test_MAX_equallong_equalulong+0x63d>
mov    -0x8(%rbp),%rax
mov    %rax,-0x120(%rbp)
jmp    1758 <_test_MAX_equallong_equalulong+0x648>
mov    -0x10(%rbp),%rax
mov    %rax,-0x120(%rbp)
mov    -0x120(%rbp),%rax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
mov    %rax,-0x128(%rbp)
jmp    1859 <_test_MAX_equallong_equalulong+0x749>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1814 <_test_MAX_equallong_equalulong+0x704>
cmpq   $0x0,-0x10(%rbp)
jae    17ca <_test_MAX_equallong_equalulong+0x6ba>
mov    -0x8(%rbp),%rax
mov    %rax,-0x130(%rbp)
jmp    1801 <_test_MAX_equallong_equalulong+0x6f1>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    17e8 <_test_MAX_equallong_equalulong+0x6d8>
mov    -0x8(%rbp),%rax
mov    %rax,-0x138(%rbp)
jmp    17f3 <_test_MAX_equallong_equalulong+0x6e3>
mov    -0x10(%rbp),%rax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
mov    %rax,-0x140(%rbp)
jmp    184b <_test_MAX_equallong_equalulong+0x73b>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1832 <_test_MAX_equallong_equalulong+0x722>
mov    -0x8(%rbp),%rax
mov    %rax,-0x148(%rbp)
jmp    183d <_test_MAX_equallong_equalulong+0x72d>
mov    -0x10(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
mov    %rax,-0x140(%rbp)
mov    -0x140(%rbp),%rax
mov    %rax,-0x128(%rbp)
mov    -0x128(%rbp),%rax
cmp    -0x10(%rbp),%rax
je     1c65 <_test_MAX_equallong_equalulong+0xb55>
mov    -0x8(%rbp),%rax
mov    %rax,-0x158(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x8(%rbp),%rax
sub    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
cmp    %rcx,%rax
jge    197f <_test_MAX_equallong_equalulong+0x86f>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    190c <_test_MAX_equallong_equalulong+0x7fc>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jle    18ee <_test_MAX_equallong_equalulong+0x7de>
mov    -0x8(%rbp),%rax
mov    %rax,-0x160(%rbp)
jmp    18f9 <_test_MAX_equallong_equalulong+0x7e9>
mov    -0x10(%rbp),%rax
mov    %rax,-0x160(%rbp)
mov    -0x160(%rbp),%rax
mov    %rax,-0x168(%rbp)
jmp    196c <_test_MAX_equallong_equalulong+0x85c>
cmpq   $0x0,-0x8(%rbp)
jge    1927 <_test_MAX_equallong_equalulong+0x817>
mov    -0x10(%rbp),%rax
mov    %rax,-0x170(%rbp)
jmp    195e <_test_MAX_equallong_equalulong+0x84e>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1945 <_test_MAX_equallong_equalulong+0x835>
mov    -0x8(%rbp),%rax
mov    %rax,-0x178(%rbp)
jmp    1950 <_test_MAX_equallong_equalulong+0x840>
mov    -0x10(%rbp),%rax
mov    %rax,-0x178(%rbp)
mov    -0x178(%rbp),%rax
mov    %rax,-0x170(%rbp)
mov    -0x170(%rbp),%rax
mov    %rax,-0x168(%rbp)
mov    -0x168(%rbp),%rax
mov    %rax,-0x180(%rbp)
jmp    1a51 <_test_MAX_equallong_equalulong+0x941>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1a0c <_test_MAX_equallong_equalulong+0x8fc>
cmpq   $0x0,-0x10(%rbp)
jae    19c2 <_test_MAX_equallong_equalulong+0x8b2>
mov    -0x8(%rbp),%rax
mov    %rax,-0x188(%rbp)
jmp    19f9 <_test_MAX_equallong_equalulong+0x8e9>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    19e0 <_test_MAX_equallong_equalulong+0x8d0>
mov    -0x8(%rbp),%rax
mov    %rax,-0x190(%rbp)
jmp    19eb <_test_MAX_equallong_equalulong+0x8db>
mov    -0x10(%rbp),%rax
mov    %rax,-0x190(%rbp)
mov    -0x190(%rbp),%rax
mov    %rax,-0x188(%rbp)
mov    -0x188(%rbp),%rax
mov    %rax,-0x198(%rbp)
jmp    1a43 <_test_MAX_equallong_equalulong+0x933>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1a2a <_test_MAX_equallong_equalulong+0x91a>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1a0(%rbp)
jmp    1a35 <_test_MAX_equallong_equalulong+0x925>
mov    -0x10(%rbp),%rax
mov    %rax,-0x1a0(%rbp)
mov    -0x1a0(%rbp),%rax
mov    %rax,-0x198(%rbp)
mov    -0x198(%rbp),%rax
mov    %rax,-0x180(%rbp)
mov    -0x180(%rbp),%rax
mov    %rax,-0x1a8(%rbp)
mov    -0x8(%rbp),%rax
sub    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x8(%rbp),%rcx
sub    -0x8(%rbp),%rcx
cmp    %rcx,%rax
jge    1b5e <_test_MAX_equallong_equalulong+0xa4e>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1aeb <_test_MAX_equallong_equalulong+0x9db>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jle    1acd <_test_MAX_equallong_equalulong+0x9bd>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1b0(%rbp)
jmp    1ad8 <_test_MAX_equallong_equalulong+0x9c8>
mov    -0x10(%rbp),%rax
mov    %rax,-0x1b0(%rbp)
mov    -0x1b0(%rbp),%rax
mov    %rax,-0x1b8(%rbp)
jmp    1b4b <_test_MAX_equallong_equalulong+0xa3b>
cmpq   $0x0,-0x8(%rbp)
jge    1b06 <_test_MAX_equallong_equalulong+0x9f6>
mov    -0x10(%rbp),%rax
mov    %rax,-0x1c0(%rbp)
jmp    1b3d <_test_MAX_equallong_equalulong+0xa2d>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1b24 <_test_MAX_equallong_equalulong+0xa14>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1c8(%rbp)
jmp    1b2f <_test_MAX_equallong_equalulong+0xa1f>
mov    -0x10(%rbp),%rax
mov    %rax,-0x1c8(%rbp)
mov    -0x1c8(%rbp),%rax
mov    %rax,-0x1c0(%rbp)
mov    -0x1c0(%rbp),%rax
mov    %rax,-0x1b8(%rbp)
mov    -0x1b8(%rbp),%rax
mov    %rax,-0x1d0(%rbp)
jmp    1c30 <_test_MAX_equallong_equalulong+0xb20>
mov    -0x10(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    -0x10(%rbp),%rcx
sub    -0x10(%rbp),%rcx
cmp    %rcx,%rax
jae    1beb <_test_MAX_equallong_equalulong+0xadb>
cmpq   $0x0,-0x10(%rbp)
jae    1ba1 <_test_MAX_equallong_equalulong+0xa91>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1d8(%rbp)
jmp    1bd8 <_test_MAX_equallong_equalulong+0xac8>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1bbf <_test_MAX_equallong_equalulong+0xaaf>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1e0(%rbp)
jmp    1bca <_test_MAX_equallong_equalulong+0xaba>
mov    -0x10(%rbp),%rax
mov    %rax,-0x1e0(%rbp)
mov    -0x1e0(%rbp),%rax
mov    %rax,-0x1d8(%rbp)
mov    -0x1d8(%rbp),%rax
mov    %rax,-0x1e8(%rbp)
jmp    1c22 <_test_MAX_equallong_equalulong+0xb12>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1c09 <_test_MAX_equallong_equalulong+0xaf9>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1f0(%rbp)
jmp    1c14 <_test_MAX_equallong_equalulong+0xb04>
mov    -0x10(%rbp),%rax
mov    %rax,-0x1f0(%rbp)
mov    -0x1f0(%rbp),%rax
mov    %rax,-0x1e8(%rbp)
mov    -0x1e8(%rbp),%rax
mov    %rax,-0x1d0(%rbp)
mov    -0x1a8(%rbp),%r8
mov    -0x150(%rbp),%rcx
mov    -0x158(%rbp),%rdx
mov    -0x1d0(%rbp),%r9
mov    -0x10(%rbp),%rax
lea    0x3e7(%rip),%rdi
mov    $0x304,%esi
mov    %rax,(%rsp)
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x200,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_test_MAX_equallong_equalulong>:
push   %r15
push   %r14
push   %rbx
sub    $0x10,%rsp
mov    %rsi,%r14
mov    %rdi,%r15
cmp    %rsi,%rdi
mov    %rsi,%rbx
cmova  %rdi,%rbx
test   %rdi,%rdi
cmovs  %rsi,%rbx
cmp    %rdi,%rbx
je     1156 <_test_MAX_equallong_equalulong+0x46>
mov    %r15,(%rsp)
lea    0xec0(%rip),%rdi
mov    $0x301,%esi
mov    %r15,%rdx
mov    %r14,%rcx
mov    %rbx,%r8
mov    %rbx,%r9
call   1030 <printf@plt>
cmp    %r14,%rbx
je     117c <_test_MAX_equallong_equalulong+0x6c>
mov    %r14,(%rsp)
lea    0xed8(%rip),%rdi
mov    $0x304,%esi
mov    %r15,%rdx
mov    %r14,%rcx
mov    %rbx,%r8
mov    %rbx,%r9
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
@.str = [62 x i8] c"failed test %d MAX(%ld, %ld): %lldLL == %lluLLU != i == %ldL\0A\00"
@.str.1 = [63 x i8] c"failed test %d MAX(%ld, %ld): %lldLL == %lluLLU != u == %luUL\0A\00"
define i32 @_test_MAX_equallong_equalulong(i64 %0, i64 %1) {
%3 = icmp slt i64 %0, 0
%4 = icmp ugt i64 %0, %1
%5 = select i1 %4, i64 %0, i64 %1
%6 = select i1 %3, i64 %1, i64 %5
%7 = icmp eq i64 %6, %0
br i1 %7, label %10, label %8
8: ; preds = %2
%9 = tail call i32 @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i64 0, i64 0), i32 769, i64 %0, i64 %1, i64 %6, i64 %6, i64 %0)
br label %10
10: ; preds = %8, %2
%11 = icmp eq i64 %6, %1
br i1 %11, label %14, label %12
12: ; preds = %10
%13 = tail call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), i32 772, i64 %0, i64 %1, i64 %6, i64 %6, i64 %1)
br label %14
14: ; preds = %12, %10
ret i32 0
}