#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 ordering_err_2();
int compare_uint(void *context, const unsigned int *check,
                 const unsigned int *baseline) {
  if (!check || !baseline)
    return ordering_err_2();
  return ((
      (((((((((((((((((signed long)(*check)) - ((signed long)(*baseline))))) <=
                  (((0))))
                     ? (((((((signed long)(*check)) -
                            ((signed long)(*baseline))))) < (((0))))
                            ? ((-1))
                            : ((0)))
                     : ((1))))) ==
              ((((((((((
                      ((((*check))) <= (((*baseline))))
                          ? (((((*check))) < (((*baseline)))) ? ((-1)) : ((0)))
                          : ((1)))))))) <= (((0))))
                     ? ((((((((((((*check))) <= (((*baseline))))
                                   ? (((((*check))) < (((*baseline)))) ? ((-1))
                                                                       : ((0)))
                                   : ((1)))))))) < (((0))))
                            ? ((-1))
                            : ((0)))
                     : ((1))))))
                 ? ((((signed long)(*check)) - ((signed long)(*baseline))))
                 : (((((
                       ((((*check))) <= (((*baseline))))
                           ? (((((*check))) < (((*baseline)))) ? ((-1)) : ((0)))
                           : ((1))))))))))) !=
         (((int)-(((int)0x37ED)
                  << (8 * (((!!(((!!(sizeof(int))) * ((sizeof(int)) - 1)))) *
                            ((((!!(sizeof(int))) * ((sizeof(int)) - 1))) -
                             1)))))))) &&
        (((((((((((((((signed long)(*check)) - ((signed long)(*baseline))))) <=
                  (((0))))
                     ? (((((((signed long)(*check)) -
                            ((signed long)(*baseline))))) < (((0))))
                            ? ((-1))
                            : ((0)))
                     : ((1))))) ==
              (((((((((
                      (((((*check))) <= (((*baseline))))
                           ? (((((*check))) < (((*baseline)))) ? ((-1)) : ((0)))
                           : ((1)))))))) <= (((0))))
                     ? ((((((((((((*check))) <= (((*baseline))))
                                   ? (((((*check))) < (((*baseline)))) ? ((-1))
                                                                       : ((0)))
                                   : ((1)))))))) < (((0))))
                            ? ((-1))
                            : ((0)))
                     : ((1))))))
                 ? ((((signed long)(*check)) - ((signed long)(*baseline))))
                 : (((((
                       ((((*check))) <= (((*baseline))))
                           ? (((((*check))) < (((*baseline)))) ? ((-1)) : ((0)))
                           : ((1))))))))))) !=
         (((int)-(((int)0x37EE)
                  << (8 * (((!!(((!!(sizeof(int))) * ((sizeof(int)) - 1)))) *
                            ((((!!(sizeof(int))) * ((sizeof(int)) - 1))) -
                             1))))))))))
          ? (((((((((((((signed long)(*check)) -
                       ((signed long)(*baseline))))) <= (((0))))
                       ? (((((((signed long)(*check)) -
                              ((signed long)(*baseline))))) < (((0))))
                              ? ((-1))
                              : ((0)))
                       : ((1))))) ==
                ((((((((((((((*check))) <= (((*baseline))))
                              ? (((((*check))) < (((*baseline)))) ? ((-1))
                                                                  : ((0)))
                              : ((1)))))))) <= (((0))))
                       ? (((((((
                               (((((*check))) <= (((*baseline))))
                                    ? (((((*check))) < (((*baseline)))) ? ((-1))
                                                                        : ((0)))
                                    : ((1)))))))) < (((0))))
                              ? ((-1))
                              : ((0)))
                       : ((1))))))
                   ? ((((signed long)(*check)) - ((signed long)(*baseline))))
                   : (((((((((*check))) <= (((*baseline))))
                              ? (((((*check))) < (((*baseline)))) ? ((-1))
                                                                  : ((0)))
                              : ((1))))))))))
          : ((((((((((((((((((signed long)(*check)) -
                            ((signed long)(*baseline))))) <= (((0))))
                            ? (((((((signed long)(*check)) -
                                   ((signed long)(*baseline))))) < (((0))))
                                   ? ((-1))
                                   : ((0)))
                            : ((1))))) ==
                     ((((((((((((((*check))) <= (((*baseline))))
                                   ? (((((*check))) < (((*baseline)))) ? ((-1))
                                                                       : ((0)))
                                   : ((1)))))))) <= (((0))))
                            ? ((((((((((((*check))) <= (((*baseline))))
                                          ? (((((*check))) < (((*baseline))))
                                                 ? ((-1))
                                                 : ((0)))
                                          : ((1)))))))) < (((0))))
                                   ? ((-1))
                                   : ((0)))
                            : ((1))))))
                        ? ((((signed long)(*check)) -
                            ((signed long)(*baseline))))
                        : (((((((((*check))) <= (((*baseline))))
                                   ? (((((*check))) < (((*baseline)))) ? ((-1))
                                                                       : ((0)))
                                   : ((1)))))))))))) <= ((0)))
                  ? (((((((((((((((((signed long)(*check)) -
                                   ((signed long)(*baseline))))) <= (((0))))
                                   ? (((((((signed long)(*check)) -
                                          ((signed long)(*baseline))))) <
                                       (((0))))
                                          ? ((-1))
                                          : ((0)))
                                   : ((1))))) ==
                            ((((((((((((((*check))) <= (((*baseline))))
                                          ? (((((*check))) < (((*baseline))))
                                                 ? ((-1))
                                                 : ((0)))
                                          : ((1)))))))) <= (((0))))
                                   ? ((((((((((((*check))) <= (((*baseline))))
                                                 ? (((((*check))) <
                                                     (((*baseline))))
                                                        ? ((-1))
                                                        : ((0)))
                                                 : ((1)))))))) < (((0))))
                                          ? ((-1))
                                          : ((0)))
                                   : ((1))))))
                               ? ((((signed long)(*check)) -
                                   ((signed long)(*baseline))))
                               : (((((((((*check))) <= (((*baseline))))
                                          ? (((((*check))) < (((*baseline))))
                                                 ? ((-1))
                                                 : ((0)))
                                          : ((1)))))))))))) < ((0)))
                         ? (((((int)-(((int)0x37EF)
                                      << (8 * (((!!(((!!(sizeof(int))) *
                                                     ((sizeof(int)) - 1)))) *
                                                ((((!!(sizeof(int))) *
                                                   ((sizeof(int)) - 1))) -
                                                 1)))))))))
                         : (((0))))
                  : (((((int)-(((int)-(
                        ((int)0x37EF)
                        << (8 *
                            (((!!(((!!(sizeof(int))) * ((sizeof(int)) - 1)))) *
                              ((((!!(sizeof(int))) * ((sizeof(int)) - 1))) -
                               1)))))))))))))));
}


x86 assembly (clang, -O0):
<compare_uint>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
cmpq   $0x0,-0x18(%rbp)
je     113d <compare_uint+0x2d>
cmpq   $0x0,-0x20(%rbp)
jne    114c <compare_uint+0x3c>
mov    $0x0,%al
call   1030 <ordering_err_2@plt>
mov    %eax,-0x4(%rbp)
jmp    1981 <compare_uint+0x871>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
cmp    $0x0,%rax
jg     118c <compare_uint+0x7c>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
sub    %rax,%rdx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%rdx
cmovl  %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    1199 <compare_uint+0x89>
mov    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1199 <compare_uint+0x89>
mov    -0x24(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     11d1 <compare_uint+0xc1>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x2c(%rbp)
jmp    11de <compare_uint+0xce>
mov    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11de <compare_uint+0xce>
mov    -0x2c(%rbp),%eax
cmp    $0x0,%eax
jg     1241 <compare_uint+0x131>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     121c <compare_uint+0x10c>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x30(%rbp)
jmp    1229 <compare_uint+0x119>
mov    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1229 <compare_uint+0x119>
mov    -0x30(%rbp),%edx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%edx
cmovl  %ecx,%eax
mov    %eax,-0x34(%rbp)
jmp    124e <compare_uint+0x13e>
mov    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    124e <compare_uint+0x13e>
mov    -0x28(%rbp),%eax
mov    -0x34(%rbp),%ecx
cmp    %ecx,%eax
jne    1274 <compare_uint+0x164>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
mov    %rax,-0x40(%rbp)
jmp    12bc <compare_uint+0x1ac>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     12a6 <compare_uint+0x196>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x44(%rbp)
jmp    12b3 <compare_uint+0x1a3>
mov    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    12b3 <compare_uint+0x1a3>
mov    -0x44(%rbp),%eax
cltq
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    $0xffffffffc8130000,%rax
je     15d5 <compare_uint+0x4c5>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
cmp    $0x0,%rax
jg     130c <compare_uint+0x1fc>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
sub    %rax,%rdx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%rdx
cmovl  %ecx,%eax
mov    %eax,-0x48(%rbp)
jmp    1319 <compare_uint+0x209>
mov    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1319 <compare_uint+0x209>
mov    -0x48(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     1351 <compare_uint+0x241>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x50(%rbp)
jmp    135e <compare_uint+0x24e>
mov    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    135e <compare_uint+0x24e>
mov    -0x50(%rbp),%eax
cmp    $0x0,%eax
jg     13c1 <compare_uint+0x2b1>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     139c <compare_uint+0x28c>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x54(%rbp)
jmp    13a9 <compare_uint+0x299>
mov    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    13a9 <compare_uint+0x299>
mov    -0x54(%rbp),%edx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%edx
cmovl  %ecx,%eax
mov    %eax,-0x58(%rbp)
jmp    13ce <compare_uint+0x2be>
mov    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    13ce <compare_uint+0x2be>
mov    -0x4c(%rbp),%eax
mov    -0x58(%rbp),%ecx
cmp    %ecx,%eax
jne    13f4 <compare_uint+0x2e4>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
mov    %rax,-0x60(%rbp)
jmp    143c <compare_uint+0x32c>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     1426 <compare_uint+0x316>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x64(%rbp)
jmp    1433 <compare_uint+0x323>
mov    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1433 <compare_uint+0x323>
mov    -0x64(%rbp),%eax
cltq
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
cmp    $0xffffffffc8120000,%rax
je     15d5 <compare_uint+0x4c5>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
cmp    $0x0,%rax
jg     148c <compare_uint+0x37c>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
sub    %rax,%rdx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%rdx
cmovl  %ecx,%eax
mov    %eax,-0x68(%rbp)
jmp    1499 <compare_uint+0x389>
mov    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    1499 <compare_uint+0x389>
mov    -0x68(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     14d1 <compare_uint+0x3c1>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x70(%rbp)
jmp    14de <compare_uint+0x3ce>
mov    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    14de <compare_uint+0x3ce>
mov    -0x70(%rbp),%eax
cmp    $0x0,%eax
jg     1541 <compare_uint+0x431>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     151c <compare_uint+0x40c>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x74(%rbp)
jmp    1529 <compare_uint+0x419>
mov    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    1529 <compare_uint+0x419>
mov    -0x74(%rbp),%edx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%edx
cmovl  %ecx,%eax
mov    %eax,-0x78(%rbp)
jmp    154e <compare_uint+0x43e>
mov    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    154e <compare_uint+0x43e>
mov    -0x6c(%rbp),%eax
mov    -0x78(%rbp),%ecx
cmp    %ecx,%eax
jne    1574 <compare_uint+0x464>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
mov    %rax,-0x80(%rbp)
jmp    15c5 <compare_uint+0x4b5>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     15a9 <compare_uint+0x499>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x84(%rbp)
jmp    15b9 <compare_uint+0x4a9>
mov    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    15b9 <compare_uint+0x4a9>
mov    -0x84(%rbp),%eax
cltq
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
mov    %rax,-0x90(%rbp)
jmp    1977 <compare_uint+0x867>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
cmp    $0x0,%rax
jg     1618 <compare_uint+0x508>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
sub    %rax,%rdx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%rdx
cmovl  %ecx,%eax
mov    %eax,-0x94(%rbp)
jmp    1628 <compare_uint+0x518>
mov    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1628 <compare_uint+0x518>
mov    -0x94(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     1669 <compare_uint+0x559>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0x9c(%rbp)
jmp    1679 <compare_uint+0x569>
mov    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    1679 <compare_uint+0x569>
mov    -0x9c(%rbp),%eax
cmp    $0x0,%eax
jg     16eb <compare_uint+0x5db>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     16bd <compare_uint+0x5ad>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0xa0(%rbp)
jmp    16cd <compare_uint+0x5bd>
mov    $0x1,%eax
mov    %eax,-0xa0(%rbp)
jmp    16cd <compare_uint+0x5bd>
mov    -0xa0(%rbp),%edx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%edx
cmovl  %ecx,%eax
mov    %eax,-0xa4(%rbp)
jmp    16fb <compare_uint+0x5eb>
mov    $0x1,%eax
mov    %eax,-0xa4(%rbp)
jmp    16fb <compare_uint+0x5eb>
mov    -0x98(%rbp),%eax
mov    -0xa4(%rbp),%ecx
cmp    %ecx,%eax
jne    172a <compare_uint+0x61a>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
mov    %rax,-0xb0(%rbp)
jmp    177e <compare_uint+0x66e>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     175f <compare_uint+0x64f>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0xb4(%rbp)
jmp    176f <compare_uint+0x65f>
mov    $0x1,%eax
mov    %eax,-0xb4(%rbp)
jmp    176f <compare_uint+0x65f>
mov    -0xb4(%rbp),%eax
cltq
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
cmp    $0x0,%rax
jg     1958 <compare_uint+0x848>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
cmp    $0x0,%rax
jg     17d2 <compare_uint+0x6c2>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
sub    %rax,%rdx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%rdx
cmovl  %ecx,%eax
mov    %eax,-0xb8(%rbp)
jmp    17e2 <compare_uint+0x6d2>
mov    $0x1,%eax
mov    %eax,-0xb8(%rbp)
jmp    17e2 <compare_uint+0x6d2>
mov    -0xb8(%rbp),%eax
mov    %eax,-0xbc(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     1823 <compare_uint+0x713>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0xc0(%rbp)
jmp    1833 <compare_uint+0x723>
mov    $0x1,%eax
mov    %eax,-0xc0(%rbp)
jmp    1833 <compare_uint+0x723>
mov    -0xc0(%rbp),%eax
cmp    $0x0,%eax
jg     18a5 <compare_uint+0x795>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     1877 <compare_uint+0x767>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0xc4(%rbp)
jmp    1887 <compare_uint+0x777>
mov    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    1887 <compare_uint+0x777>
mov    -0xc4(%rbp),%edx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%edx
cmovl  %ecx,%eax
mov    %eax,-0xc8(%rbp)
jmp    18b5 <compare_uint+0x7a5>
mov    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    18b5 <compare_uint+0x7a5>
mov    -0xbc(%rbp),%eax
mov    -0xc8(%rbp),%ecx
cmp    %ecx,%eax
jne    18e4 <compare_uint+0x7d4>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
mov    (%rcx),%ecx
sub    %rcx,%rax
mov    %rax,-0xd0(%rbp)
jmp    1938 <compare_uint+0x828>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
ja     1919 <compare_uint+0x809>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %esi,%edx
cmovb  %ecx,%eax
mov    %eax,-0xd4(%rbp)
jmp    1929 <compare_uint+0x819>
mov    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    1929 <compare_uint+0x819>
mov    -0xd4(%rbp),%eax
cltq
mov    %rax,-0xd0(%rbp)
mov    -0xd0(%rbp),%rdx
xor    %eax,%eax
mov    $0xc8110000,%ecx
cmp    $0x0,%rdx
cmovl  %ecx,%eax
mov    %eax,-0xd8(%rbp)
jmp    1968 <compare_uint+0x858>
mov    $0x37ef0000,%eax
mov    %eax,-0xd8(%rbp)
jmp    1968 <compare_uint+0x858>
mov    -0xd8(%rbp),%eax
cltq
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<compare_uint>:
test   %rsi,%rsi
je     1181 <compare_uint+0x71>
test   %rdx,%rdx
je     1181 <compare_uint+0x71>
mov    (%rsi),%r9d
mov    (%rdx),%edx
cmp    %edx,%r9d
sbb    %r8d,%r8d
mov    %r9d,%eax
sub    %edx,%eax
mov    $0x1,%r10d
mov    %r8d,%edi
cmova  %r10d,%edi
xor    %esi,%esi
cmp    %rdx,%r9
setne  %sil
neg    %esi
mov    %r9,%rcx
sub    %rdx,%rcx
cmovg  %r10d,%esi
cmp    %edi,%esi
jne    1159 <compare_uint+0x49>
cmp    $0xffffffffc8130000,%rcx
je     1166 <compare_uint+0x56>
cmp    %edi,%esi
jne    11ab <compare_uint+0x9b>
cmp    $0xffffffffc8120000,%rcx
jne    11ab <compare_uint+0x9b>
cmp    %edx,%r9d
jbe    1188 <compare_uint+0x78>
mov    $0x37ef0000,%eax
cmp    $0x1,%esi
jne    1180 <compare_uint+0x70>
mov    $0x1,%r8d
test   %rcx,%rcx
jle    1197 <compare_uint+0x87>
ret
xor    %eax,%eax
jmp    1030 <ordering_err_2@plt>
cmp    %r8d,%esi
jne    1197 <compare_uint+0x87>
mov    $0x37ef0000,%eax
test   %rcx,%rcx
jg     1180 <compare_uint+0x70>
xor    %eax,%eax
cmp    %edx,%r9d
mov    $0xc8110000,%ecx
cmovb  %ecx,%eax
cmp    %r8d,%esi
cmove  %ecx,%eax
ret
cmp    %edi,%esi
cmovne %edi,%eax
ret

LLVM IR (-O0):
define i32 @compare_uint(i8* %0, i32* %1, i32* %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i32*
%7 = alloca i32*
store i8* %0, i8** %5
store i32* %1, i32** %6
store i32* %2, i32** %7
%8 = load i32*, i32** %6
%9 = icmp ne i32* %8, null
br i1 %9, label %10, label %13
10: ; preds = %3
%11 = load i32*, i32** %7
%12 = icmp ne i32* %11, null
br i1 %12, label %15, label %13
13: ; preds = %10, %3
%14 = call i32 (...) @ordering_err_2()
store i32 %14, i32* %4
br label %488
15: ; preds = %10
%16 = load i32*, i32** %6
%17 = load i32, i32* %16
%18 = zext i32 %17 to i64
%19 = load i32*, i32** %7
%20 = load i32, i32* %19
%21 = zext i32 %20 to i64
%22 = sub nsw i64 %18, %21
%23 = icmp sle i64 %22, 0
br i1 %23, label %24, label %35
24: ; preds = %15
%25 = load i32*, i32** %6
%26 = load i32, i32* %25
%27 = zext i32 %26 to i64
%28 = load i32*, i32** %7
%29 = load i32, i32* %28
%30 = zext i32 %29 to i64
%31 = sub nsw i64 %27, %30
%32 = icmp slt i64 %31, 0
%33 = zext i1 %32 to i64
%34 = select i1 %32, i32 -1, i32 0
br label %36
35: ; preds = %15
br label %36
36: ; preds = %35, %24
%37 = phi i32 [ %34, %24 ], [ 1, %35 ]
%38 = load i32*, i32** %6
%39 = load i32, i32* %38
%40 = load i32*, i32** %7
%41 = load i32, i32* %40
%42 = icmp ule i32 %39, %41
br i1 %42, label %43, label %51
43: ; preds = %36
%44 = load i32*, i32** %6
%45 = load i32, i32* %44
%46 = load i32*, i32** %7
%47 = load i32, i32* %46
%48 = icmp ult i32 %45, %47
%49 = zext i1 %48 to i64
%50 = select i1 %48, i32 -1, i32 0
br label %52
51: ; preds = %36
br label %52
52: ; preds = %51, %43
%53 = phi i32 [ %50, %43 ], [ 1, %51 ]
%54 = icmp sle i32 %53, 0
br i1 %54, label %55, label %75
55: ; preds = %52
%56 = load i32*, i32** %6
%57 = load i32, i32* %56
%58 = load i32*, i32** %7
%59 = load i32, i32* %58
%60 = icmp ule i32 %57, %59
br i1 %60, label %61, label %69
61: ; preds = %55
%62 = load i32*, i32** %6
%63 = load i32, i32* %62
%64 = load i32*, i32** %7
%65 = load i32, i32* %64
%66 = icmp ult i32 %63, %65
%67 = zext i1 %66 to i64
%68 = select i1 %66, i32 -1, i32 0
br label %70
69: ; preds = %55
br label %70
70: ; preds = %69, %61
%71 = phi i32 [ %68, %61 ], [ 1, %69 ]
%72 = icmp slt i32 %71, 0
%73 = zext i1 %72 to i64
%74 = select i1 %72, i32 -1, i32 0
br label %76
75: ; preds = %52
br label %76
76: ; preds = %75, %70
%77 = phi i32 [ %74, %70 ], [ 1, %75 ]
%78 = icmp eq i32 %37, %77
br i1 %78, label %79, label %87
79: ; preds = %76
%80 = load i32*, i32** %6
%81 = load i32, i32* %80
%82 = zext i32 %81 to i64
%83 = load i32*, i32** %7
%84 = load i32, i32* %83
%85 = zext i32 %84 to i64
%86 = sub nsw i64 %82, %85
br label %105
87: ; preds = %76
%88 = load i32*, i32** %6
%89 = load i32, i32* %88
%90 = load i32*, i32** %7
%91 = load i32, i32* %90
%92 = icmp ule i32 %89, %91
br i1 %92, label %93, label %101
93: ; preds = %87
%94 = load i32*, i32** %6
%95 = load i32, i32* %94
%96 = load i32*, i32** %7
%97 = load i32, i32* %96
%98 = icmp ult i32 %95, %97
%99 = zext i1 %98 to i64
%100 = select i1 %98, i32 -1, i32 0
br label %102
101: ; preds = %87
br label %102
102: ; preds = %101, %93
%103 = phi i32 [ %100, %93 ], [ 1, %101 ]
%104 = sext i32 %103 to i64
br label %105
105: ; preds = %102, %79
%106 = phi i64 [ %86, %79 ], [ %104, %102 ]
%107 = icmp ne i64 %106, -938278912
br i1 %107, label %108, label %293
108: ; preds = %105
%109 = load i32*, i32** %6
%110 = load i32, i32* %109
%111 = zext i32 %110 to i64
%112 = load i32*, i32** %7
%113 = load i32, i32* %112
%114 = zext i32 %113 to i64
%115 = sub nsw i64 %111, %114
%116 = icmp sle i64 %115, 0
br i1 %116, label %117, label %128
117: ; preds = %108
%118 = load i32*, i32** %6
%119 = load i32, i32* %118
%120 = zext i32 %119 to i64
%121 = load i32*, i32** %7
%122 = load i32, i32* %121
%123 = zext i32 %122 to i64
%124 = sub nsw i64 %120, %123
%125 = icmp slt i64 %124, 0
%126 = zext i1 %125 to i64
%127 = select i1 %125, i32 -1, i32 0
br label %129
128: ; preds = %108
br label %129
129: ; preds = %128, %117
%130 = phi i32 [ %127, %117 ], [ 1, %128 ]
%131 = load i32*, i32** %6
%132 = load i32, i32* %131
%133 = load i32*, i32** %7
%134 = load i32, i32* %133
%135 = icmp ule i32 %132, %134
br i1 %135, label %136, label %144
136: ; preds = %129
%137 = load i32*, i32** %6
%138 = load i32, i32* %137
%139 = load i32*, i32** %7
%140 = load i32, i32* %139
%141 = icmp ult i32 %138, %140
%142 = zext i1 %141 to i64
%143 = select i1 %141, i32 -1, i32 0
br label %145
144: ; preds = %129
br label %145
145: ; preds = %144, %136
%146 = phi i32 [ %143, %136 ], [ 1, %144 ]
%147 = icmp sle i32 %146, 0
br i1 %147, label %148, label %168
148: ; preds = %145
%149 = load i32*, i32** %6
%150 = load i32, i32* %149
%151 = load i32*, i32** %7
%152 = load i32, i32* %151
%153 = icmp ule i32 %150, %152
br i1 %153, label %154, label %162
154: ; preds = %148
%155 = load i32*, i32** %6
%156 = load i32, i32* %155
%157 = load i32*, i32** %7
%158 = load i32, i32* %157
%159 = icmp ult i32 %156, %158
%160 = zext i1 %159 to i64
%161 = select i1 %159, i32 -1, i32 0
br label %163
162: ; preds = %148
br label %163
163: ; preds = %162, %154
%164 = phi i32 [ %161, %154 ], [ 1, %162 ]
%165 = icmp slt i32 %164, 0
%166 = zext i1 %165 to i64
%167 = select i1 %165, i32 -1, i32 0
br label %169
168: ; preds = %145
br label %169
169: ; preds = %168, %163
%170 = phi i32 [ %167, %163 ], [ 1, %168 ]
%171 = icmp eq i32 %130, %170
br i1 %171, label %172, label %180
172: ; preds = %169
%173 = load i32*, i32** %6
%174 = load i32, i32* %173
%175 = zext i32 %174 to i64
%176 = load i32*, i32** %7
%177 = load i32, i32* %176
%178 = zext i32 %177 to i64
%179 = sub nsw i64 %175, %178
br label %198
180: ; preds = %169
%181 = load i32*, i32** %6
%182 = load i32, i32* %181
%183 = load i32*, i32** %7
%184 = load i32, i32* %183
%185 = icmp ule i32 %182, %184
br i1 %185, label %186, label %194
186: ; preds = %180
%187 = load i32*, i32** %6
%188 = load i32, i32* %187
%189 = load i32*, i32** %7
%190 = load i32, i32* %189
%191 = icmp ult i32 %188, %190
%192 = zext i1 %191 to i64
%193 = select i1 %191, i32 -1, i32 0
br label %195
194: ; preds = %180
br label %195
195: ; preds = %194, %186
%196 = phi i32 [ %193, %186 ], [ 1, %194 ]
%197 = sext i32 %196 to i64
br label %198
198: ; preds = %195, %172
%199 = phi i64 [ %179, %172 ], [ %197, %195 ]
%200 = icmp ne i64 %199, -938344448
br i1 %200, label %201, label %293
201: ; preds = %198
%202 = load i32*, i32** %6
%203 = load i32, i32* %202
%204 = zext i32 %203 to i64
%205 = load i32*, i32** %7
%206 = load i32, i32* %205
%207 = zext i32 %206 to i64
%208 = sub nsw i64 %204, %207
%209 = icmp sle i64 %208, 0
br i1 %209, label %210, label %221
210: ; preds = %201
%211 = load i32*, i32** %6
%212 = load i32, i32* %211
%213 = zext i32 %212 to i64
%214 = load i32*, i32** %7
%215 = load i32, i32* %214
%216 = zext i32 %215 to i64
%217 = sub nsw i64 %213, %216
%218 = icmp slt i64 %217, 0
%219 = zext i1 %218 to i64
%220 = select i1 %218, i32 -1, i32 0
br label %222
221: ; preds = %201
br label %222
222: ; preds = %221, %210
%223 = phi i32 [ %220, %210 ], [ 1, %221 ]
%224 = load i32*, i32** %6
%225 = load i32, i32* %224
%226 = load i32*, i32** %7
%227 = load i32, i32* %226
%228 = icmp ule i32 %225, %227
br i1 %228, label %229, label %237
229: ; preds = %222
%230 = load i32*, i32** %6
%231 = load i32, i32* %230
%232 = load i32*, i32** %7
%233 = load i32, i32* %232
%234 = icmp ult i32 %231, %233
%235 = zext i1 %234 to i64
%236 = select i1 %234, i32 -1, i32 0
br label %238
237: ; preds = %222
br label %238
238: ; preds = %237, %229
%239 = phi i32 [ %236, %229 ], [ 1, %237 ]
%240 = icmp sle i32 %239, 0
br i1 %240, label %241, label %261
241: ; preds = %238
%242 = load i32*, i32** %6
%243 = load i32, i32* %242
%244 = load i32*, i32** %7
%245 = load i32, i32* %244
%246 = icmp ule i32 %243, %245
br i1 %246, label %247, label %255
247: ; preds = %241
%248 = load i32*, i32** %6
%249 = load i32, i32* %248
%250 = load i32*, i32** %7
%251 = load i32, i32* %250
%252 = icmp ult i32 %249, %251
%253 = zext i1 %252 to i64
%254 = select i1 %252, i32 -1, i32 0
br label %256
255: ; preds = %241
br label %256
256: ; preds = %255, %247
%257 = phi i32 [ %254, %247 ], [ 1, %255 ]
%258 = icmp slt i32 %257, 0
%259 = zext i1 %258 to i64
%260 = select i1 %258, i32 -1, i32 0
br label %262
261: ; preds = %238
br label %262
262: ; preds = %261, %256
%263 = phi i32 [ %260, %256 ], [ 1, %261 ]
%264 = icmp eq i32 %223, %263
br i1 %264, label %265, label %273
265: ; preds = %262
%266 = load i32*, i32** %6
%267 = load i32, i32* %266
%268 = zext i32 %267 to i64
%269 = load i32*, i32** %7
%270 = load i32, i32* %269
%271 = zext i32 %270 to i64
%272 = sub nsw i64 %268, %271
br label %291
273: ; preds = %262
%274 = load i32*, i32** %6
%275 = load i32, i32* %274
%276 = load i32*, i32** %7
%277 = load i32, i32* %276
%278 = icmp ule i32 %275, %277
br i1 %278, label %279, label %287
279: ; preds = %273
%280 = load i32*, i32** %6
%281 = load i32, i32* %280
%282 = load i32*, i32** %7
%283 = load i32, i32* %282
%284 = icmp ult i32 %281, %283
%285 = zext i1 %284 to i64
%286 = select i1 %284, i32 -1, i32 0
br label %288
287: ; preds = %273
br label %288
288: ; preds = %287, %279
%289 = phi i32 [ %286, %279 ], [ 1, %287 ]
%290 = sext i32 %289 to i64
br label %291
291: ; preds = %288, %265
%292 = phi i64 [ %272, %265 ], [ %290, %288 ]
br label %485
293: ; preds = %198, %105
%294 = load i32*, i32** %6
%295 = load i32, i32* %294
%296 = zext i32 %295 to i64
%297 = load i32*, i32** %7
%298 = load i32, i32* %297
%299 = zext i32 %298 to i64
%300 = sub nsw i64 %296, %299
%301 = icmp sle i64 %300, 0
br i1 %301, label %302, label %313
302: ; preds = %293
%303 = load i32*, i32** %6
%304 = load i32, i32* %303
%305 = zext i32 %304 to i64
%306 = load i32*, i32** %7
%307 = load i32, i32* %306
%308 = zext i32 %307 to i64
%309 = sub nsw i64 %305, %308
%310 = icmp slt i64 %309, 0
%311 = zext i1 %310 to i64
%312 = select i1 %310, i32 -1, i32 0
br label %314
313: ; preds = %293
br label %314
314: ; preds = %313, %302
%315 = phi i32 [ %312, %302 ], [ 1, %313 ]
%316 = load i32*, i32** %6
%317 = load i32, i32* %316
%318 = load i32*, i32** %7
%319 = load i32, i32* %318
%320 = icmp ule i32 %317, %319
br i1 %320, label %321, label %329
321: ; preds = %314
%322 = load i32*, i32** %6
%323 = load i32, i32* %322
%324 = load i32*, i32** %7
%325 = load i32, i32* %324
%326 = icmp ult i32 %323, %325
%327 = zext i1 %326 to i64
%328 = select i1 %326, i32 -1, i32 0
br label %330
329: ; preds = %314
br label %330
330: ; preds = %329, %321
%331 = phi i32 [ %328, %321 ], [ 1, %329 ]
%332 = icmp sle i32 %331, 0
br i1 %332, label %333, label %353
333: ; preds = %330
%334 = load i32*, i32** %6
%335 = load i32, i32* %334
%336 = load i32*, i32** %7
%337 = load i32, i32* %336
%338 = icmp ule i32 %335, %337
br i1 %338, label %339, label %347
339: ; preds = %333
%340 = load i32*, i32** %6
%341 = load i32, i32* %340
%342 = load i32*, i32** %7
%343 = load i32, i32* %342
%344 = icmp ult i32 %341, %343
%345 = zext i1 %344 to i64
%346 = select i1 %344, i32 -1, i32 0
br label %348
347: ; preds = %333
br label %348
348: ; preds = %347, %339
%349 = phi i32 [ %346, %339 ], [ 1, %347 ]
%350 = icmp slt i32 %349, 0
%351 = zext i1 %350 to i64
%352 = select i1 %350, i32 -1, i32 0
br label %354
353: ; preds = %330
br label %354
354: ; preds = %353, %348
%355 = phi i32 [ %352, %348 ], [ 1, %353 ]
%356 = icmp eq i32 %315, %355
br i1 %356, label %357, label %365
357: ; preds = %354
%358 = load i32*, i32** %6
%359 = load i32, i32* %358
%360 = zext i32 %359 to i64
%361 = load i32*, i32** %7
%362 = load i32, i32* %361
%363 = zext i32 %362 to i64
%364 = sub nsw i64 %360, %363
br label %383
365: ; preds = %354
%366 = load i32*, i32** %6
%367 = load i32, i32* %366
%368 = load i32*, i32** %7
%369 = load i32, i32* %368
%370 = icmp ule i32 %367, %369
br i1 %370, label %371, label %379
371: ; preds = %365
%372 = load i32*, i32** %6
%373 = load i32, i32* %372
%374 = load i32*, i32** %7
%375 = load i32, i32* %374
%376 = icmp ult i32 %373, %375
%377 = zext i1 %376 to i64
%378 = select i1 %376, i32 -1, i32 0
br label %380
379: ; preds = %365
br label %380
380: ; preds = %379, %371
%381 = phi i32 [ %378, %371 ], [ 1, %379 ]
%382 = sext i32 %381 to i64
br label %383
383: ; preds = %380, %357
%384 = phi i64 [ %364, %357 ], [ %382, %380 ]
%385 = icmp sle i64 %384, 0
br i1 %385, label %386, label %481
386: ; preds = %383
%387 = load i32*, i32** %6
%388 = load i32, i32* %387
%389 = zext i32 %388 to i64
%390 = load i32*, i32** %7
%391 = load i32, i32* %390
%392 = zext i32 %391 to i64
%393 = sub nsw i64 %389, %392
%394 = icmp sle i64 %393, 0
br i1 %394, label %395, label %406
395: ; preds = %386
%396 = load i32*, i32** %6
%397 = load i32, i32* %396
%398 = zext i32 %397 to i64
%399 = load i32*, i32** %7
%400 = load i32, i32* %399
%401 = zext i32 %400 to i64
%402 = sub nsw i64 %398, %401
%403 = icmp slt i64 %402, 0
%404 = zext i1 %403 to i64
%405 = select i1 %403, i32 -1, i32 0
br label %407
406: ; preds = %386
br label %407
407: ; preds = %406, %395
%408 = phi i32 [ %405, %395 ], [ 1, %406 ]
%409 = load i32*, i32** %6
%410 = load i32, i32* %409
%411 = load i32*, i32** %7
%412 = load i32, i32* %411
%413 = icmp ule i32 %410, %412
br i1 %413, label %414, label %422
414: ; preds = %407
%415 = load i32*, i32** %6
%416 = load i32, i32* %415
%417 = load i32*, i32** %7
%418 = load i32, i32* %417
%419 = icmp ult i32 %416, %418
%420 = zext i1 %419 to i64
%421 = select i1 %419, i32 -1, i32 0
br label %423
422: ; preds = %407
br label %423
423: ; preds = %422, %414
%424 = phi i32 [ %421, %414 ], [ 1, %422 ]
%425 = icmp sle i32 %424, 0
br i1 %425, label %426, label %446
426: ; preds = %423
%427 = load i32*, i32** %6
%428 = load i32, i32* %427
%429 = load i32*, i32** %7
%430 = load i32, i32* %429
%431 = icmp ule i32 %428, %430
br i1 %431, label %432, label %440
432: ; preds = %426
%433 = load i32*, i32** %6
%434 = load i32, i32* %433
%435 = load i32*, i32** %7
%436 = load i32, i32* %435
%437 = icmp ult i32 %434, %436
%438 = zext i1 %437 to i64
%439 = select i1 %437, i32 -1, i32 0
br label %441
440: ; preds = %426
br label %441
441: ; preds = %440, %432
%442 = phi i32 [ %439, %432 ], [ 1, %440 ]
%443 = icmp slt i32 %442, 0
%444 = zext i1 %443 to i64
%445 = select i1 %443, i32 -1, i32 0
br label %447
446: ; preds = %423
br label %447
447: ; preds = %446, %441
%448 = phi i32 [ %445, %441 ], [ 1, %446 ]
%449 = icmp eq i32 %408, %448
br i1 %449, label %450, label %458
450: ; preds = %447
%451 = load i32*, i32** %6
%452 = load i32, i32* %451
%453 = zext i32 %452 to i64
%454 = load i32*, i32** %7
%455 = load i32, i32* %454
%456 = zext i32 %455 to i64
%457 = sub nsw i64 %453, %456
br label %476
458: ; preds = %447
%459 = load i32*, i32** %6
%460 = load i32, i32* %459
%461 = load i32*, i32** %7
%462 = load i32, i32* %461
%463 = icmp ule i32 %460, %462
br i1 %463, label %464, label %472
464: ; preds = %458
%465 = load i32*, i32** %6
%466 = load i32, i32* %465
%467 = load i32*, i32** %7
%468 = load i32, i32* %467
%469 = icmp ult i32 %466, %468
%470 = zext i1 %469 to i64
%471 = select i1 %469, i32 -1, i32 0
br label %473
472: ; preds = %458
br label %473
473: ; preds = %472, %464
%474 = phi i32 [ %471, %464 ], [ 1, %472 ]
%475 = sext i32 %474 to i64
br label %476
476: ; preds = %473, %450
%477 = phi i64 [ %457, %450 ], [ %475, %473 ]
%478 = icmp slt i64 %477, 0
%479 = zext i1 %478 to i64
%480 = select i1 %478, i32 -938409984, i32 0
br label %482
481: ; preds = %383
br label %482
482: ; preds = %481, %476
%483 = phi i32 [ %480, %476 ], [ 938409984, %481 ]
%484 = sext i32 %483 to i64
br label %485
485: ; preds = %482, %291
%486 = phi i64 [ %292, %291 ], [ %484, %482 ]
%487 = trunc i64 %486 to i32
store i32 %487, i32* %4
br label %488
488: ; preds = %485, %13
%489 = load i32, i32* %4
ret i32 %489
}

LLVM IR (-O2):
define i32 @compare_uint(i8* nocapture readnone %0, i32* %1, i32* %2) {
%4 = icmp ne i32* %1, null
%5 = icmp ne i32* %2, null
%6 = and i1 %4, %5
br i1 %6, label %9, label %7
7: ; preds = %3
%8 = tail call i32 (...) @ordering_err_2()
br label %44
9: ; preds = %3
%10 = load i32, i32* %1
%11 = zext i32 %10 to i64
%12 = load i32, i32* %2
%13 = zext i32 %12 to i64
%14 = sub nsw i64 %11, %13
%15 = icmp slt i64 %14, 1
%16 = icmp ne i64 %14, 0
%17 = sext i1 %16 to i32
%18 = select i1 %15, i32 %17, i32 1
%19 = icmp ugt i32 %10, %12
%20 = icmp ult i32 %10, %12
%21 = sext i1 %20 to i32
%22 = select i1 %19, i32 1, i32 %21
%23 = icmp eq i32 %18, %22
%24 = icmp eq i64 %14, -938278912
%25 = select i1 %23, i1 %24, i1 false
br i1 %25, label %32, label %26
26: ; preds = %9
%27 = icmp eq i64 %14, -938344448
%28 = select i1 %23, i1 %27, i1 false
br i1 %28, label %32, label %29
29: ; preds = %26
%30 = sub i32 %10, %12
%31 = select i1 %23, i32 %30, i32 %22
br label %44
32: ; preds = %26, %9
br i1 %19, label %33, label %36
33: ; preds = %32
%34 = icmp eq i32 %18, 1
%35 = and i1 %34, %15
br i1 %35, label %39, label %44
36: ; preds = %32
%37 = icmp ne i32 %18, %21
%38 = or i1 %37, %15
br i1 %38, label %39, label %44
39: ; preds = %33, %36
%40 = phi i32 [ %21, %36 ], [ 1, %33 ]
%41 = icmp eq i32 %18, %40
%42 = select i1 %41, i1 true, i1 %20
%43 = select i1 %42, i32 -938409984, i32 0
br label %44
44: ; preds = %29, %36, %33, %39, %7
%45 = phi i32 [ %8, %7 ], [ %43, %39 ], [ 938409984, %33 ], [ 938409984, %36 ], [ %31, %29 ]
ret i32 %45
}