#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int CHAR_BIT;
int /*<<< orphan*/ _test_MIN_smallerint_biggeruint(int, unsigned int);
int _test_various_MIN_smallerint_biggeruint() {
  _test_MIN_smallerint_biggeruint(-1, 0);
  _test_MIN_smallerint_biggeruint(-1, 1);
  _test_MIN_smallerint_biggeruint(
      -1,
      ((((unsigned int)(((unsigned int)(((unsigned int)1)
                                        << ((sizeof(unsigned int) * CHAR_BIT) -
                                            2))) +
                        ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                        << ((sizeof(
                                                                 unsigned int) *
                                                             CHAR_BIT) -
                                                            2))) -
                                        1)))) >
        ((unsigned int)(~((unsigned int)0))))
           ? ((unsigned int)(((unsigned int)(((unsigned int)1)
                                             << ((sizeof(unsigned int) *
                                                  CHAR_BIT) -
                                                 2))) +
                             ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                             << ((sizeof(
                                                                      unsigned int) *
                                                                  CHAR_BIT) -
                                                                 2))) -
                                             1))))
           : ((unsigned int)(~((unsigned int)0)))));
  _test_MIN_smallerint_biggeruint(0, 1);
  _test_MIN_smallerint_biggeruint(0, 2);
  _test_MIN_smallerint_biggeruint(
      0,
      ((((unsigned int)(((unsigned int)(((unsigned int)1)
                                        << ((sizeof(unsigned int) * CHAR_BIT) -
                                            2))) +
                        ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                        << ((sizeof(
                                                                 unsigned int) *
                                                             CHAR_BIT) -
                                                            2))) -
                                        1)))) >
        ((unsigned int)(~((unsigned int)0))))
           ? ((unsigned int)(((unsigned int)(((unsigned int)1)
                                             << ((sizeof(unsigned int) *
                                                  CHAR_BIT) -
                                                 2))) +
                             ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                             << ((sizeof(
                                                                      unsigned int) *
                                                                  CHAR_BIT) -
                                                                 2))) -
                                             1))))
           : ((unsigned int)(~((unsigned int)0)))));
  _test_MIN_smallerint_biggeruint(1, 2);
  _test_MIN_smallerint_biggeruint(1, 3);
  _test_MIN_smallerint_biggeruint(
      1,
      ((((unsigned int)(((unsigned int)(((unsigned int)1)
                                        << ((sizeof(unsigned int) * CHAR_BIT) -
                                            2))) +
                        ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                        << ((sizeof(
                                                                 unsigned int) *
                                                             CHAR_BIT) -
                                                            2))) -
                                        1)))) >
        ((unsigned int)(~((unsigned int)0))))
           ? ((unsigned int)(((unsigned int)(((unsigned int)1)
                                             << ((sizeof(unsigned int) *
                                                  CHAR_BIT) -
                                                 2))) +
                             ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                             << ((sizeof(
                                                                      unsigned int) *
                                                                  CHAR_BIT) -
                                                                 2))) -
                                             1))))
           : ((unsigned int)(~((unsigned int)0)))));
  _test_MIN_smallerint_biggeruint(
      ((((int)((-((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) +
                        ((int)(((int)(((int)1)
                                      << ((sizeof(int) * CHAR_BIT) - 2))) -
                               1))))) -
               1)) < ((int)0))
           ? ((int)((-((int)(((int)(((int)1)
                                    << ((sizeof(int) * CHAR_BIT) - 2))) +
                             ((int)(((int)(((int)1)
                                           << ((sizeof(int) * CHAR_BIT) - 2))) -
                                    1))))) -
                    1))
           : ((int)0)),
      0);
  _test_MIN_smallerint_biggeruint(
      ((((int)((-((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) +
                        ((int)(((int)(((int)1)
                                      << ((sizeof(int) * CHAR_BIT) - 2))) -
                               1))))) -
               1)) < ((int)0))
           ? ((int)((-((int)(((int)(((int)1)
                                    << ((sizeof(int) * CHAR_BIT) - 2))) +
                             ((int)(((int)(((int)1)
                                           << ((sizeof(int) * CHAR_BIT) - 2))) -
                                    1))))) -
                    1))
           : ((int)0)),
      2);
  _test_MIN_smallerint_biggeruint(
      ((((int)((-((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) +
                        ((int)(((int)(((int)1)
                                      << ((sizeof(int) * CHAR_BIT) - 2))) -
                               1))))) -
               1)) < ((int)0))
           ? ((int)((-((int)(((int)(((int)1)
                                    << ((sizeof(int) * CHAR_BIT) - 2))) +
                             ((int)(((int)(((int)1)
                                           << ((sizeof(int) * CHAR_BIT) - 2))) -
                                    1))))) -
                    1))
           : ((int)0)),
      ((((unsigned int)(((unsigned int)(((unsigned int)1)
                                        << ((sizeof(unsigned int) * CHAR_BIT) -
                                            2))) +
                        ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                        << ((sizeof(
                                                                 unsigned int) *
                                                             CHAR_BIT) -
                                                            2))) -
                                        1)))) >
        ((unsigned int)(~((unsigned int)0))))
           ? ((unsigned int)(((unsigned int)(((unsigned int)1)
                                             << ((sizeof(unsigned int) *
                                                  CHAR_BIT) -
                                                 2))) +
                             ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                             << ((sizeof(
                                                                      unsigned int) *
                                                                  CHAR_BIT) -
                                                                 2))) -
                                             1))))
           : ((unsigned int)(~((unsigned int)0)))));
  _test_MIN_smallerint_biggeruint(
      ((((int)((-((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) +
                        ((int)(((int)(((int)1)
                                      << ((sizeof(int) * CHAR_BIT) - 2))) -
                               1))))) -
               1)) < ((int)0))
           ? ((int)((-((int)(((int)(((int)1)
                                    << ((sizeof(int) * CHAR_BIT) - 2))) +
                             ((int)(((int)(((int)1)
                                           << ((sizeof(int) * CHAR_BIT) - 2))) -
                                    1))))) -
                    1))
           : ((int)0)),
      ((((unsigned int)((-((unsigned int)(((unsigned int)(((unsigned int)1)
                                                          << ((sizeof(
                                                                   unsigned int) *
                                                               CHAR_BIT) -
                                                              2))) +
                                          ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                                          << ((sizeof(
                                                                                   unsigned int) *
                                                                               CHAR_BIT) -
                                                                              2))) -
                                                          1))))) -
                        1)) < ((unsigned int)0))
           ? ((unsigned int)((-((unsigned int)(((unsigned int)(((unsigned int)1)
                                                               << ((sizeof(
                                                                        unsigned int) *
                                                                    CHAR_BIT) -
                                                                   2))) +
                                               ((unsigned int)(((unsigned int)(((unsigned int)1)
                                                                               << ((sizeof(
                                                                                        unsigned int) *
                                                                                    CHAR_BIT) -
                                                                                   2))) -
                                                               1))))) -
                             1))
           : ((unsigned int)0)));
  return 0;
}


x86 assembly (clang, -O0):
<_test_various_MIN_smallerint_biggeruint>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    $0xffffffff,%edi
xor    %esi,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    $0xffffffff,%edi
mov    $0x1,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    0x2ea6(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2e8b(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jbe    11ba <_test_various_MIN_smallerint_biggeruint+0xaa>
mov    0x2e62(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2e47(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    11c7 <_test_various_MIN_smallerint_biggeruint+0xb7>
mov    $0xffffffff,%eax
mov    %eax,-0x4(%rbp)
jmp    11c7 <_test_various_MIN_smallerint_biggeruint+0xb7>
mov    -0x4(%rbp),%esi
mov    $0xffffffff,%edi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
xor    %edi,%edi
mov    $0x1,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
xor    %edi,%edi
mov    $0x2,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    0x2ded(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2dd2(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jbe    1273 <_test_various_MIN_smallerint_biggeruint+0x163>
mov    0x2da9(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2d8e(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0x8(%rbp)
jmp    1280 <_test_various_MIN_smallerint_biggeruint+0x170>
mov    $0xffffffff,%eax
mov    %eax,-0x8(%rbp)
jmp    1280 <_test_various_MIN_smallerint_biggeruint+0x170>
mov    -0x8(%rbp),%esi
xor    %edi,%edi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    $0x1,%edi
mov    $0x2,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    $0x1,%edi
mov    $0x3,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    0x2d31(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2d16(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jbe    132f <_test_various_MIN_smallerint_biggeruint+0x21f>
mov    0x2ced(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2cd2(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0xc(%rbp)
jmp    133c <_test_various_MIN_smallerint_biggeruint+0x22c>
mov    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
jmp    133c <_test_various_MIN_smallerint_biggeruint+0x22c>
mov    -0xc(%rbp),%esi
mov    $0x1,%edi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    0x2c90(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x10(%rbp)
mov    0x2c72(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x10(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    13ea <_test_various_MIN_smallerint_biggeruint+0x2da>
mov    0x2c3f(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x18(%rbp)
mov    0x2c21(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    13f4 <_test_various_MIN_smallerint_biggeruint+0x2e4>
xor    %eax,%eax
mov    %eax,-0x14(%rbp)
jmp    13f4 <_test_various_MIN_smallerint_biggeruint+0x2e4>
mov    -0x14(%rbp),%edi
xor    %esi,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    0x2bdb(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x1c(%rbp)
mov    0x2bbd(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    149f <_test_various_MIN_smallerint_biggeruint+0x38f>
mov    0x2b8a(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x24(%rbp)
mov    0x2b6c(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x24(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    14a9 <_test_various_MIN_smallerint_biggeruint+0x399>
xor    %eax,%eax
mov    %eax,-0x20(%rbp)
jmp    14a9 <_test_various_MIN_smallerint_biggeruint+0x399>
mov    -0x20(%rbp),%edi
mov    $0x2,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    0x2b23(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x28(%rbp)
mov    0x2b05(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x28(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    1557 <_test_various_MIN_smallerint_biggeruint+0x447>
mov    0x2ad2(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x30(%rbp)
mov    0x2ab4(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x30(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1561 <_test_various_MIN_smallerint_biggeruint+0x451>
xor    %eax,%eax
mov    %eax,-0x2c(%rbp)
jmp    1561 <_test_various_MIN_smallerint_biggeruint+0x451>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    0x2a72(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2a57(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jbe    15ee <_test_various_MIN_smallerint_biggeruint+0x4de>
mov    0x2a2e(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2a13(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
jmp    15fb <_test_various_MIN_smallerint_biggeruint+0x4eb>
mov    $0xffffffff,%eax
mov    %eax,-0x38(%rbp)
jmp    15fb <_test_various_MIN_smallerint_biggeruint+0x4eb>
mov    -0x34(%rbp),%edi
mov    -0x38(%rbp),%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    0x29d3(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x3c(%rbp)
mov    0x29b5(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x3c(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    16a7 <_test_various_MIN_smallerint_biggeruint+0x597>
mov    0x2982(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x44(%rbp)
mov    0x2964(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x44(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    16b1 <_test_various_MIN_smallerint_biggeruint+0x5a1>
xor    %eax,%eax
mov    %eax,-0x40(%rbp)
jmp    16b1 <_test_various_MIN_smallerint_biggeruint+0x5a1>
mov    -0x40(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    0x2922(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x48(%rbp)
mov    0x2904(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x48(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jae    1758 <_test_various_MIN_smallerint_biggeruint+0x648>
mov    0x28d1(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x54(%rbp)
mov    0x28b3(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x54(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    1762 <_test_various_MIN_smallerint_biggeruint+0x652>
xor    %eax,%eax
mov    %eax,-0x50(%rbp)
jmp    1762 <_test_various_MIN_smallerint_biggeruint+0x652>
mov    -0x4c(%rbp),%edi
mov    -0x50(%rbp),%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
xor    %eax,%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_test_various_MIN_smallerint_biggeruint>:
push   %r14
push   %rbx
push   %rax
mov    $0xffffffff,%edi
xor    %esi,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    $0xffffffff,%edi
mov    $0x1,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    $0xffffffff,%edi
mov    $0xffffffff,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
xor    %edi,%edi
mov    $0x1,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
xor    %edi,%edi
mov    $0x2,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    $0x1,%edi
mov    $0x2,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    $0x1,%edi
mov    $0x3,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    $0x1,%edi
mov    $0xffffffff,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    0x2e4a(%rip),%r14
mov    (%r14),%cl
shl    $0x2,%cl
add    $0xfe,%cl
mov    $0xfffffffe,%eax
shl    %cl,%eax
mov    $0xfffffffe,%ebx
mov    %eax,%edi
sar    $0x1f,%edi
and    %eax,%edi
xor    %esi,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    (%r14),%cl
shl    $0x2,%cl
add    $0xfe,%cl
mov    $0xfffffffe,%eax
shl    %cl,%eax
mov    %eax,%edi
sar    $0x1f,%edi
and    %eax,%edi
mov    $0x2,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    (%r14),%cl
shl    $0x2,%cl
add    $0xfe,%cl
mov    $0xfffffffe,%eax
shl    %cl,%eax
mov    %eax,%edi
sar    $0x1f,%edi
and    %eax,%edi
mov    $0xffffffff,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
mov    (%r14),%cl
shl    $0x2,%cl
add    $0xfe,%cl
shl    %cl,%ebx
mov    %ebx,%edi
sar    $0x1f,%edi
and    %ebx,%edi
xor    %esi,%esi
call   1030 <_test_MIN_smallerint_biggeruint@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@CHAR_BIT = global i32 0
define i32 @_test_various_MIN_smallerint_biggeruint() {
%1 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 -1, i32 0)
%2 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 -1, i32 1)
%3 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 -1, i32 -1)
%4 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 0, i32 1)
%5 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 0, i32 2)
%6 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 0, i32 -1)
%7 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 1, i32 2)
%8 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 1, i32 3)
%9 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 1, i32 -1)
%10 = load i32, i32* @CHAR_BIT
%11 = shl i32 %10, 2
%12 = add i32 %11, -2
%13 = shl i32 -2, %12
%14 = icmp slt i32 %13, 0
%15 = select i1 %14, i32 %13, i32 0
%16 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 %15, i32 0)
%17 = load i32, i32* @CHAR_BIT
%18 = shl i32 %17, 2
%19 = add i32 %18, -2
%20 = shl i32 -2, %19
%21 = icmp slt i32 %20, 0
%22 = select i1 %21, i32 %20, i32 0
%23 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 %22, i32 2)
%24 = load i32, i32* @CHAR_BIT
%25 = shl i32 %24, 2
%26 = add i32 %25, -2
%27 = shl i32 -2, %26
%28 = icmp slt i32 %27, 0
%29 = select i1 %28, i32 %27, i32 0
%30 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 %29, i32 -1)
%31 = load i32, i32* @CHAR_BIT
%32 = shl i32 %31, 2
%33 = add i32 %32, -2
%34 = shl i32 -2, %33
%35 = icmp slt i32 %34, 0
%36 = select i1 %35, i32 %34, i32 0
%37 = tail call i32 @_test_MIN_smallerint_biggeruint(i32 %36, i32 0)
ret i32 0
}