#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, unsigned long, int, long long, long long,
                          unsigned long);
int _test_MAX_biggerulong_smallerint(unsigned long u, int i) {
  if ((((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
           ? (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                  ? ((((long long)(u)) > ((long long)(i)))
                         ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))
                         : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i)))
                  : (((u) < 0)
                         ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))
                         : ((((unsigned long long)(u)) >
                             ((unsigned long long)(i)))
                                ? ((sizeof(u) < sizeof(long long))
                                       ? ((long long)(u))
                                       : (u))
                                : ((sizeof(i) < sizeof(long long))
                                       ? ((long long)(i))
                                       : (i)))))
           : (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                  ? (((i) < 0)
                         ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))
                         : ((((unsigned long long)(u)) >
                             ((unsigned long long)(i)))
                                ? ((sizeof(u) < sizeof(long long))
                                       ? ((long long)(u))
                                       : (u))
                                : ((sizeof(i) < sizeof(long long))
                                       ? ((long long)(i))
                                       : (i))))
                  : ((((unsigned long long)(u)) > ((unsigned long long)(i)))
                         ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))
                         : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))))) <= i) {
    printf(
        "failed test %d MAX(%luUL, %d): %lldLL == %lluLLU <= i == %d\n", 614, u,
        i,
        (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
             ? (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                    ? ((((long long)(u)) > ((long long)(i)))
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i)))
                    : (((u) < 0)
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((((unsigned long long)(u)) >
                               ((unsigned long long)(i)))
                                  ? ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))
                                  : ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i)))))
             : (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                    ? (((i) < 0)
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((((unsigned long long)(u)) >
                               ((unsigned long long)(i)))
                                  ? ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))
                                  : ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))))
                    : ((((unsigned long long)(u)) > ((unsigned long long)(i)))
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))))),
        (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
             ? (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                    ? ((((long long)(u)) > ((long long)(i)))
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i)))
                    : (((u) < 0)
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((((unsigned long long)(u)) >
                               ((unsigned long long)(i)))
                                  ? ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))
                                  : ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i)))))
             : (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                    ? (((i) < 0)
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((((unsigned long long)(u)) >
                               ((unsigned long long)(i)))
                                  ? ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))
                                  : ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))))
                    : ((((unsigned long long)(u)) > ((unsigned long long)(i)))
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))))),
        i);
  }
  if ((((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
           ? (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                  ? ((((long long)(u)) > ((long long)(i)))
                         ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))
                         : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i)))
                  : (((u) < 0)
                         ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))
                         : ((((unsigned long long)(u)) >
                             ((unsigned long long)(i)))
                                ? ((sizeof(u) < sizeof(long long))
                                       ? ((long long)(u))
                                       : (u))
                                : ((sizeof(i) < sizeof(long long))
                                       ? ((long long)(i))
                                       : (i)))))
           : (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                  ? (((i) < 0)
                         ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))
                         : ((((unsigned long long)(u)) >
                             ((unsigned long long)(i)))
                                ? ((sizeof(u) < sizeof(long long))
                                       ? ((long long)(u))
                                       : (u))
                                : ((sizeof(i) < sizeof(long long))
                                       ? ((long long)(i))
                                       : (i))))
                  : ((((unsigned long long)(u)) > ((unsigned long long)(i)))
                         ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                            : (u))
                         : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                            : (i))))) != u) {
    printf(
        "failed test %d MAX(%luUL, %d): %lldLL == %lluLLU != u == %luUL\n", 617,
        u, i,
        (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
             ? (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                    ? ((((long long)(u)) > ((long long)(i)))
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i)))
                    : (((u) < 0)
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((((unsigned long long)(u)) >
                               ((unsigned long long)(i)))
                                  ? ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))
                                  : ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i)))))
             : (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                    ? (((i) < 0)
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((((unsigned long long)(u)) >
                               ((unsigned long long)(i)))
                                  ? ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))
                                  : ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))))
                    : ((((unsigned long long)(u)) > ((unsigned long long)(i)))
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))))),
        (((((u) - (u)) - (((u) - (u)) + 1)) < ((u) - (u)))
             ? (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                    ? ((((long long)(u)) > ((long long)(i)))
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i)))
                    : (((u) < 0)
                           ? ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))
                           : ((((unsigned long long)(u)) >
                               ((unsigned long long)(i)))
                                  ? ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))
                                  : ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i)))))
             : (((((i) - (i)) - (((i) - (i)) + 1)) < ((i) - (i)))
                    ? (((i) < 0)
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((((unsigned long long)(u)) >
                               ((unsigned long long)(i)))
                                  ? ((sizeof(u) < sizeof(long long))
                                         ? ((long long)(u))
                                         : (u))
                                  : ((sizeof(i) < sizeof(long long))
                                         ? ((long long)(i))
                                         : (i))))
                    : ((((unsigned long long)(u)) > ((unsigned long long)(i)))
                           ? ((sizeof(u) < sizeof(long long)) ? ((long long)(u))
                                                              : (u))
                           : ((sizeof(i) < sizeof(long long)) ? ((long long)(i))
                                                              : (i))))),
        u);
  }
  return 0;
}


x86 assembly (clang, -O0):
<_test_MAX_biggerulong_smallerint>:
push   %rbp
mov    %rsp,%rbp
sub    $0x200,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%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
jae    11f7 <_test_MAX_biggerulong_smallerint+0xe7>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    119c <_test_MAX_biggerulong_smallerint+0x8c>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jle    1187 <_test_MAX_biggerulong_smallerint+0x77>
mov    -0x8(%rbp),%rax
mov    %rax,-0x18(%rbp)
jmp    118f <_test_MAX_biggerulong_smallerint+0x7f>
movslq -0xc(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x20(%rbp)
jmp    11ea <_test_MAX_biggerulong_smallerint+0xda>
cmpq   $0x0,-0x8(%rbp)
jae    11b4 <_test_MAX_biggerulong_smallerint+0xa4>
movslq -0xc(%rbp),%rax
mov    %rax,-0x28(%rbp)
jmp    11e2 <_test_MAX_biggerulong_smallerint+0xd2>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    11d2 <_test_MAX_biggerulong_smallerint+0xc2>
mov    -0x8(%rbp),%rax
mov    %rax,-0x30(%rbp)
jmp    11da <_test_MAX_biggerulong_smallerint+0xca>
movslq -0xc(%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    129e <_test_MAX_biggerulong_smallerint+0x18e>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    1268 <_test_MAX_biggerulong_smallerint+0x158>
cmpl   $0x0,-0xc(%rbp)
jge    122d <_test_MAX_biggerulong_smallerint+0x11d>
mov    -0x8(%rbp),%rax
mov    %rax,-0x40(%rbp)
jmp    125b <_test_MAX_biggerulong_smallerint+0x14b>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    124b <_test_MAX_biggerulong_smallerint+0x13b>
mov    -0x8(%rbp),%rax
mov    %rax,-0x48(%rbp)
jmp    1253 <_test_MAX_biggerulong_smallerint+0x143>
movslq -0xc(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x50(%rbp)
jmp    1296 <_test_MAX_biggerulong_smallerint+0x186>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1286 <_test_MAX_biggerulong_smallerint+0x176>
mov    -0x8(%rbp),%rax
mov    %rax,-0x58(%rbp)
jmp    128e <_test_MAX_biggerulong_smallerint+0x17e>
movslq -0xc(%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
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
ja     1672 <_test_MAX_biggerulong_smallerint+0x562>
mov    -0x8(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x5c(%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
jae    139e <_test_MAX_biggerulong_smallerint+0x28e>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    1337 <_test_MAX_biggerulong_smallerint+0x227>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jle    1322 <_test_MAX_biggerulong_smallerint+0x212>
mov    -0x8(%rbp),%rax
mov    %rax,-0x70(%rbp)
jmp    132a <_test_MAX_biggerulong_smallerint+0x21a>
movslq -0xc(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x78(%rbp)
jmp    138e <_test_MAX_biggerulong_smallerint+0x27e>
cmpq   $0x0,-0x8(%rbp)
jae    134f <_test_MAX_biggerulong_smallerint+0x23f>
movslq -0xc(%rbp),%rax
mov    %rax,-0x80(%rbp)
jmp    1386 <_test_MAX_biggerulong_smallerint+0x276>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1370 <_test_MAX_biggerulong_smallerint+0x260>
mov    -0x8(%rbp),%rax
mov    %rax,-0x88(%rbp)
jmp    137b <_test_MAX_biggerulong_smallerint+0x26b>
movslq -0xc(%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    146c <_test_MAX_biggerulong_smallerint+0x35c>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    1424 <_test_MAX_biggerulong_smallerint+0x314>
cmpl   $0x0,-0xc(%rbp)
jge    13d7 <_test_MAX_biggerulong_smallerint+0x2c7>
mov    -0x8(%rbp),%rax
mov    %rax,-0x98(%rbp)
jmp    1411 <_test_MAX_biggerulong_smallerint+0x301>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    13f8 <_test_MAX_biggerulong_smallerint+0x2e8>
mov    -0x8(%rbp),%rax
mov    %rax,-0xa0(%rbp)
jmp    1403 <_test_MAX_biggerulong_smallerint+0x2f3>
movslq -0xc(%rbp),%rax
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rax
mov    %rax,-0xa8(%rbp)
jmp    145e <_test_MAX_biggerulong_smallerint+0x34e>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1445 <_test_MAX_biggerulong_smallerint+0x335>
mov    -0x8(%rbp),%rax
mov    %rax,-0xb0(%rbp)
jmp    1450 <_test_MAX_biggerulong_smallerint+0x340>
movslq -0xc(%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
jae    1576 <_test_MAX_biggerulong_smallerint+0x466>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    1500 <_test_MAX_biggerulong_smallerint+0x3f0>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jle    14e2 <_test_MAX_biggerulong_smallerint+0x3d2>
mov    -0x8(%rbp),%rax
mov    %rax,-0xc0(%rbp)
jmp    14ed <_test_MAX_biggerulong_smallerint+0x3dd>
movslq -0xc(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
mov    %rax,-0xc8(%rbp)
jmp    1563 <_test_MAX_biggerulong_smallerint+0x453>
cmpq   $0x0,-0x8(%rbp)
jae    151b <_test_MAX_biggerulong_smallerint+0x40b>
movslq -0xc(%rbp),%rax
mov    %rax,-0xd0(%rbp)
jmp    1555 <_test_MAX_biggerulong_smallerint+0x445>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    153c <_test_MAX_biggerulong_smallerint+0x42c>
mov    -0x8(%rbp),%rax
mov    %rax,-0xd8(%rbp)
jmp    1547 <_test_MAX_biggerulong_smallerint+0x437>
movslq -0xc(%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    1644 <_test_MAX_biggerulong_smallerint+0x534>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    15fc <_test_MAX_biggerulong_smallerint+0x4ec>
cmpl   $0x0,-0xc(%rbp)
jge    15af <_test_MAX_biggerulong_smallerint+0x49f>
mov    -0x8(%rbp),%rax
mov    %rax,-0xe8(%rbp)
jmp    15e9 <_test_MAX_biggerulong_smallerint+0x4d9>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    15d0 <_test_MAX_biggerulong_smallerint+0x4c0>
mov    -0x8(%rbp),%rax
mov    %rax,-0xf0(%rbp)
jmp    15db <_test_MAX_biggerulong_smallerint+0x4cb>
movslq -0xc(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rax
mov    %rax,-0xf8(%rbp)
jmp    1636 <_test_MAX_biggerulong_smallerint+0x526>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    161d <_test_MAX_biggerulong_smallerint+0x50d>
mov    -0x8(%rbp),%rax
mov    %rax,-0x100(%rbp)
jmp    1628 <_test_MAX_biggerulong_smallerint+0x518>
movslq -0xc(%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    -0x5c(%rbp),%ecx
mov    -0x68(%rbp),%rdx
mov    -0xe0(%rbp),%r9
movslq -0xc(%rbp),%rax
lea    0x99c(%rip),%rdi
mov    $0x266,%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
jae    176e <_test_MAX_biggerulong_smallerint+0x65e>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    16f8 <_test_MAX_biggerulong_smallerint+0x5e8>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jle    16da <_test_MAX_biggerulong_smallerint+0x5ca>
mov    -0x8(%rbp),%rax
mov    %rax,-0x108(%rbp)
jmp    16e5 <_test_MAX_biggerulong_smallerint+0x5d5>
movslq -0xc(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
mov    %rax,-0x110(%rbp)
jmp    175b <_test_MAX_biggerulong_smallerint+0x64b>
cmpq   $0x0,-0x8(%rbp)
jae    1713 <_test_MAX_biggerulong_smallerint+0x603>
movslq -0xc(%rbp),%rax
mov    %rax,-0x118(%rbp)
jmp    174d <_test_MAX_biggerulong_smallerint+0x63d>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1734 <_test_MAX_biggerulong_smallerint+0x624>
mov    -0x8(%rbp),%rax
mov    %rax,-0x120(%rbp)
jmp    173f <_test_MAX_biggerulong_smallerint+0x62f>
movslq -0xc(%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    183c <_test_MAX_biggerulong_smallerint+0x72c>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    17f4 <_test_MAX_biggerulong_smallerint+0x6e4>
cmpl   $0x0,-0xc(%rbp)
jge    17a7 <_test_MAX_biggerulong_smallerint+0x697>
mov    -0x8(%rbp),%rax
mov    %rax,-0x130(%rbp)
jmp    17e1 <_test_MAX_biggerulong_smallerint+0x6d1>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    17c8 <_test_MAX_biggerulong_smallerint+0x6b8>
mov    -0x8(%rbp),%rax
mov    %rax,-0x138(%rbp)
jmp    17d3 <_test_MAX_biggerulong_smallerint+0x6c3>
movslq -0xc(%rbp),%rax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
mov    %rax,-0x140(%rbp)
jmp    182e <_test_MAX_biggerulong_smallerint+0x71e>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1815 <_test_MAX_biggerulong_smallerint+0x705>
mov    -0x8(%rbp),%rax
mov    %rax,-0x148(%rbp)
jmp    1820 <_test_MAX_biggerulong_smallerint+0x710>
movslq -0xc(%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    -0x8(%rbp),%rax
je     1c37 <_test_MAX_biggerulong_smallerint+0xb27>
mov    -0x8(%rbp),%rax
mov    %rax,-0x158(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x14c(%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
jae    195d <_test_MAX_biggerulong_smallerint+0x84d>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    18e7 <_test_MAX_biggerulong_smallerint+0x7d7>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jle    18c9 <_test_MAX_biggerulong_smallerint+0x7b9>
mov    -0x8(%rbp),%rax
mov    %rax,-0x160(%rbp)
jmp    18d4 <_test_MAX_biggerulong_smallerint+0x7c4>
movslq -0xc(%rbp),%rax
mov    %rax,-0x160(%rbp)
mov    -0x160(%rbp),%rax
mov    %rax,-0x168(%rbp)
jmp    194a <_test_MAX_biggerulong_smallerint+0x83a>
cmpq   $0x0,-0x8(%rbp)
jae    1902 <_test_MAX_biggerulong_smallerint+0x7f2>
movslq -0xc(%rbp),%rax
mov    %rax,-0x170(%rbp)
jmp    193c <_test_MAX_biggerulong_smallerint+0x82c>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1923 <_test_MAX_biggerulong_smallerint+0x813>
mov    -0x8(%rbp),%rax
mov    %rax,-0x178(%rbp)
jmp    192e <_test_MAX_biggerulong_smallerint+0x81e>
movslq -0xc(%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    1a2b <_test_MAX_biggerulong_smallerint+0x91b>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    19e3 <_test_MAX_biggerulong_smallerint+0x8d3>
cmpl   $0x0,-0xc(%rbp)
jge    1996 <_test_MAX_biggerulong_smallerint+0x886>
mov    -0x8(%rbp),%rax
mov    %rax,-0x188(%rbp)
jmp    19d0 <_test_MAX_biggerulong_smallerint+0x8c0>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    19b7 <_test_MAX_biggerulong_smallerint+0x8a7>
mov    -0x8(%rbp),%rax
mov    %rax,-0x190(%rbp)
jmp    19c2 <_test_MAX_biggerulong_smallerint+0x8b2>
movslq -0xc(%rbp),%rax
mov    %rax,-0x190(%rbp)
mov    -0x190(%rbp),%rax
mov    %rax,-0x188(%rbp)
mov    -0x188(%rbp),%rax
mov    %rax,-0x198(%rbp)
jmp    1a1d <_test_MAX_biggerulong_smallerint+0x90d>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1a04 <_test_MAX_biggerulong_smallerint+0x8f4>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1a0(%rbp)
jmp    1a0f <_test_MAX_biggerulong_smallerint+0x8ff>
movslq -0xc(%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
jae    1b35 <_test_MAX_biggerulong_smallerint+0xa25>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    1abf <_test_MAX_biggerulong_smallerint+0x9af>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jle    1aa1 <_test_MAX_biggerulong_smallerint+0x991>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1b0(%rbp)
jmp    1aac <_test_MAX_biggerulong_smallerint+0x99c>
movslq -0xc(%rbp),%rax
mov    %rax,-0x1b0(%rbp)
mov    -0x1b0(%rbp),%rax
mov    %rax,-0x1b8(%rbp)
jmp    1b22 <_test_MAX_biggerulong_smallerint+0xa12>
cmpq   $0x0,-0x8(%rbp)
jae    1ada <_test_MAX_biggerulong_smallerint+0x9ca>
movslq -0xc(%rbp),%rax
mov    %rax,-0x1c0(%rbp)
jmp    1b14 <_test_MAX_biggerulong_smallerint+0xa04>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1afb <_test_MAX_biggerulong_smallerint+0x9eb>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1c8(%rbp)
jmp    1b06 <_test_MAX_biggerulong_smallerint+0x9f6>
movslq -0xc(%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    1c03 <_test_MAX_biggerulong_smallerint+0xaf3>
mov    -0xc(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    -0xc(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    1bbb <_test_MAX_biggerulong_smallerint+0xaab>
cmpl   $0x0,-0xc(%rbp)
jge    1b6e <_test_MAX_biggerulong_smallerint+0xa5e>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1d8(%rbp)
jmp    1ba8 <_test_MAX_biggerulong_smallerint+0xa98>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1b8f <_test_MAX_biggerulong_smallerint+0xa7f>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1e0(%rbp)
jmp    1b9a <_test_MAX_biggerulong_smallerint+0xa8a>
movslq -0xc(%rbp),%rax
mov    %rax,-0x1e0(%rbp)
mov    -0x1e0(%rbp),%rax
mov    %rax,-0x1d8(%rbp)
mov    -0x1d8(%rbp),%rax
mov    %rax,-0x1e8(%rbp)
jmp    1bf5 <_test_MAX_biggerulong_smallerint+0xae5>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
cmp    %rcx,%rax
jbe    1bdc <_test_MAX_biggerulong_smallerint+0xacc>
mov    -0x8(%rbp),%rax
mov    %rax,-0x1f0(%rbp)
jmp    1be7 <_test_MAX_biggerulong_smallerint+0xad7>
movslq -0xc(%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    -0x14c(%rbp),%ecx
mov    -0x158(%rbp),%rdx
mov    -0x1d0(%rbp),%r9
mov    -0x8(%rbp),%rax
lea    0x414(%rip),%rdi
mov    $0x269,%esi
mov    %rax,(%rsp)
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x200,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_test_MAX_biggerulong_smallerint>:
push   %rbp
push   %r14
push   %rbx
sub    $0x10,%rsp
mov    %esi,%r14d
mov    %rdi,%rbp
movslq %esi,%rcx
cmp    %rdi,%rcx
mov    %rcx,%rbx
cmovb  %rdi,%rbx
test   %ecx,%ecx
cmovs  %rdi,%rbx
cmp    %rcx,%rbx
ja     1154 <_test_MAX_biggerulong_smallerint+0x44>
mov    %rcx,(%rsp)
lea    0xebf(%rip),%rdi
mov    $0x266,%esi
mov    %rbp,%rdx
mov    %rbx,%r8
mov    %rbx,%r9
call   1030 <printf@plt>
cmp    %rbp,%rbx
je     117a <_test_MAX_biggerulong_smallerint+0x6a>
mov    %rbp,(%rsp)
lea    0xed9(%rip),%rdi
mov    $0x269,%esi
mov    %rbp,%rdx
mov    %r14d,%ecx
mov    %rbx,%r8
mov    %rbx,%r9
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [61 x i8] c"failed test %d MAX(%luUL, %d): %lldLL == %lluLLU <= i == %d\0A\00"
@.str.1 = [64 x i8] c"failed test %d MAX(%luUL, %d): %lldLL == %lluLLU != u == %luUL\0A\00"
define i32 @_test_MAX_biggerulong_smallerint(i64 %0, i32 %1) {
%3 = icmp slt i32 %1, 0
%4 = sext i32 %1 to i64
%5 = icmp ult i64 %4, %0
%6 = or i1 %3, %5
%7 = select i1 %6, i64 %0, i64 %4
%8 = icmp ugt i64 %7, %4
br i1 %8, label %11, label %9
9: ; preds = %2
%10 = tail call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str, i64 0, i64 0), i32 614, i64 %0, i32 %1, i64 %7, i64 %7, i64 %4)
br label %11
11: ; preds = %9, %2
%12 = icmp eq i64 %7, %0
br i1 %12, label %15, label %13
13: ; preds = %11
%14 = tail call i32 @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.1, i64 0, i64 0), i32 617, i64 %0, i32 %1, i64 %7, i64 %7, i64 %0)
br label %15
15: ; preds = %13, %11
ret i32 0
}