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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ INT_MAX;
int /*<<< orphan*/ INT_MIN;
int /*<<< orphan*/ abort();
int /*<<< orphan*/ exit(int /*<<< orphan*/);
scalar_t__ neq(int /*<<< orphan*/, int /*<<< orphan*/);
int nge(int /*<<< orphan*/, int /*<<< orphan*/);
int ngeu(unsigned int, unsigned int);
int ngt(int /*<<< orphan*/, int /*<<< orphan*/);
int ngtu(unsigned int, unsigned int);
int nle(int /*<<< orphan*/, int /*<<< orphan*/);
int nleu(unsigned int, unsigned int);
int nlt(int /*<<< orphan*/, int /*<<< orphan*/);
int nltu(unsigned int, unsigned int);
int nne(int /*<<< orphan*/, int /*<<< orphan*/);
int main() {
  if (nge(INT_MIN, INT_MAX) != 0)
    abort();
  if (nge(INT_MAX, INT_MIN) != -1)
    abort();
  if (ngt(INT_MIN, INT_MAX) != 0)
    abort();
  if (ngt(INT_MAX, INT_MIN) != -1)
    abort();
  if (nle(INT_MIN, INT_MAX) != -1)
    abort();
  if (nle(INT_MAX, INT_MIN) != 0)
    abort();
  if (nlt(INT_MIN, INT_MAX) != -1)
    abort();
  if (nlt(INT_MAX, INT_MIN) != 0)
    abort();
  if (neq(INT_MIN, INT_MAX) != 0)
    abort();
  if (neq(INT_MAX, INT_MIN) != 0)
    abort();
  if (nne(INT_MIN, INT_MAX) != -1)
    abort();
  if (nne(INT_MAX, INT_MIN) != -1)
    abort();
  if (ngeu(0, ~0U) != 0)
    abort();
  if (ngeu(~0U, 0) != -1)
    abort();
  if (ngtu(0, ~0U) != 0)
    abort();
  if (ngtu(~0U, 0) != -1)
    abort();
  if (nleu(0, ~0U) != -1)
    abort();
  if (nleu(~0U, 0) != 0)
    abort();
  if (nltu(0, ~0U) != -1)
    abort();
  if (nltu(~0U, 0) != 0)
    abort();
  exit(0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    0x2e0a(%rip),%rax
mov    (%rax),%edi
mov    0x2e09(%rip),%rax
mov    (%rax),%esi
call   10c0 <nge@plt>
cmp    $0x0,%eax
je     11f6 <main+0x36>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2deb(%rip),%rax
mov    (%rax),%edi
mov    0x2dda(%rip),%rax
mov    (%rax),%esi
call   10c0 <nge@plt>
cmp    $0xffffffff,%eax
je     121d <main+0x5d>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2dbc(%rip),%rax
mov    (%rax),%edi
mov    0x2dbb(%rip),%rax
mov    (%rax),%esi
call   1060 <ngt@plt>
cmp    $0x0,%eax
je     1244 <main+0x84>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2d9d(%rip),%rax
mov    (%rax),%edi
mov    0x2d8c(%rip),%rax
mov    (%rax),%esi
call   1060 <ngt@plt>
cmp    $0xffffffff,%eax
je     126b <main+0xab>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2d6e(%rip),%rax
mov    (%rax),%edi
mov    0x2d6d(%rip),%rax
mov    (%rax),%esi
call   10e0 <nle@plt>
cmp    $0xffffffff,%eax
je     1292 <main+0xd2>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2d4f(%rip),%rax
mov    (%rax),%edi
mov    0x2d3e(%rip),%rax
mov    (%rax),%esi
call   10e0 <nle@plt>
cmp    $0x0,%eax
je     12b9 <main+0xf9>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2d20(%rip),%rax
mov    (%rax),%edi
mov    0x2d1f(%rip),%rax
mov    (%rax),%esi
call   1080 <nlt@plt>
cmp    $0xffffffff,%eax
je     12e0 <main+0x120>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2d01(%rip),%rax
mov    (%rax),%edi
mov    0x2cf0(%rip),%rax
mov    (%rax),%esi
call   1080 <nlt@plt>
cmp    $0x0,%eax
je     1307 <main+0x147>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2cd2(%rip),%rax
mov    (%rax),%edi
mov    0x2cd1(%rip),%rax
mov    (%rax),%esi
call   1050 <neq@plt>
cmp    $0x0,%rax
je     132f <main+0x16f>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2cb2(%rip),%rax
mov    (%rax),%edi
mov    0x2ca1(%rip),%rax
mov    (%rax),%esi
call   1050 <neq@plt>
cmp    $0x0,%rax
je     1357 <main+0x197>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2c82(%rip),%rax
mov    (%rax),%edi
mov    0x2c81(%rip),%rax
mov    (%rax),%esi
call   10b0 <nne@plt>
cmp    $0xffffffff,%eax
je     137e <main+0x1be>
mov    $0x0,%al
call   1040 <abort@plt>
mov    0x2c63(%rip),%rax
mov    (%rax),%edi
mov    0x2c52(%rip),%rax
mov    (%rax),%esi
call   10b0 <nne@plt>
cmp    $0xffffffff,%eax
je     13a5 <main+0x1e5>
mov    $0x0,%al
call   1040 <abort@plt>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   1030 <ngeu@plt>
cmp    $0x0,%eax
je     13c1 <main+0x201>
mov    $0x0,%al
call   1040 <abort@plt>
mov    $0xffffffff,%edi
xor    %esi,%esi
call   1030 <ngeu@plt>
cmp    $0xffffffff,%eax
je     13dd <main+0x21d>
mov    $0x0,%al
call   1040 <abort@plt>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   1070 <ngtu@plt>
cmp    $0x0,%eax
je     13f9 <main+0x239>
mov    $0x0,%al
call   1040 <abort@plt>
mov    $0xffffffff,%edi
xor    %esi,%esi
call   1070 <ngtu@plt>
cmp    $0xffffffff,%eax
je     1415 <main+0x255>
mov    $0x0,%al
call   1040 <abort@plt>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   1090 <nleu@plt>
cmp    $0xffffffff,%eax
je     1431 <main+0x271>
mov    $0x0,%al
call   1040 <abort@plt>
mov    $0xffffffff,%edi
xor    %esi,%esi
call   1090 <nleu@plt>
cmp    $0x0,%eax
je     144d <main+0x28d>
mov    $0x0,%al
call   1040 <abort@plt>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   10a0 <nltu@plt>
cmp    $0xffffffff,%eax
je     1469 <main+0x2a9>
mov    $0x0,%al
call   1040 <abort@plt>
mov    $0xffffffff,%edi
xor    %esi,%esi
call   10a0 <nltu@plt>
cmp    $0x0,%eax
je     1485 <main+0x2c5>
mov    $0x0,%al
call   1040 <abort@plt>
xor    %edi,%edi
call   10d0 <exit@plt>

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
push   %rax
mov    0x2e15(%rip),%r14
mov    (%r14),%edi
mov    0x2e13(%rip),%rbx
mov    (%rbx),%esi
call   10c0 <nge@plt>
test   %eax,%eax
jne    133d <main+0x17d>
mov    (%rbx),%edi
mov    (%r14),%esi
call   10c0 <nge@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
mov    (%r14),%edi
mov    (%rbx),%esi
call   1060 <ngt@plt>
test   %eax,%eax
jne    133d <main+0x17d>
mov    (%rbx),%edi
mov    (%r14),%esi
call   1060 <ngt@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
mov    (%r14),%edi
mov    (%rbx),%esi
call   10e0 <nle@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
mov    (%rbx),%edi
mov    (%r14),%esi
call   10e0 <nle@plt>
test   %eax,%eax
jne    133d <main+0x17d>
mov    (%r14),%edi
mov    (%rbx),%esi
call   1080 <nlt@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
mov    (%rbx),%edi
mov    (%r14),%esi
call   1080 <nlt@plt>
test   %eax,%eax
jne    133d <main+0x17d>
mov    (%r14),%edi
mov    (%rbx),%esi
call   1050 <neq@plt>
test   %rax,%rax
jne    133d <main+0x17d>
mov    (%rbx),%edi
mov    (%r14),%esi
call   1050 <neq@plt>
test   %rax,%rax
jne    133d <main+0x17d>
mov    (%r14),%edi
mov    (%rbx),%esi
call   10b0 <nne@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
mov    (%rbx),%edi
mov    (%r14),%esi
call   10b0 <nne@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   1030 <ngeu@plt>
test   %eax,%eax
jne    133d <main+0x17d>
mov    $0xffffffff,%edi
xor    %esi,%esi
call   1030 <ngeu@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   1070 <ngtu@plt>
test   %eax,%eax
jne    133d <main+0x17d>
mov    $0xffffffff,%edi
xor    %esi,%esi
call   1070 <ngtu@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   1090 <nleu@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
mov    $0xffffffff,%edi
xor    %esi,%esi
call   1090 <nleu@plt>
test   %eax,%eax
jne    133d <main+0x17d>
xor    %edi,%edi
mov    $0xffffffff,%esi
call   10a0 <nltu@plt>
cmp    $0xffffffff,%eax
jne    133d <main+0x17d>
mov    $0xffffffff,%edi
xor    %esi,%esi
call   10a0 <nltu@plt>
test   %eax,%eax
jne    133d <main+0x17d>
xor    %edi,%edi
call   10d0 <exit@plt>
xor    %eax,%eax
call   1040 <abort@plt>

LLVM IR (-O0):
@INT_MIN = global i32 0
@INT_MAX = global i32 0
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = load i32, i32* @INT_MIN
%3 = load i32, i32* @INT_MAX
%4 = call i32 @nge(i32 %2, i32 %3)
%5 = icmp ne i32 %4, 0
br i1 %5, label %6, label %8
6: ; preds = %0
%7 = call i32 (...) @abort()
unreachable
8: ; preds = %0
%9 = load i32, i32* @INT_MAX
%10 = load i32, i32* @INT_MIN
%11 = call i32 @nge(i32 %9, i32 %10)
%12 = icmp ne i32 %11, -1
br i1 %12, label %13, label %15
13: ; preds = %8
%14 = call i32 (...) @abort()
unreachable
15: ; preds = %8
%16 = load i32, i32* @INT_MIN
%17 = load i32, i32* @INT_MAX
%18 = call i32 @ngt(i32 %16, i32 %17)
%19 = icmp ne i32 %18, 0
br i1 %19, label %20, label %22
20: ; preds = %15
%21 = call i32 (...) @abort()
unreachable
22: ; preds = %15
%23 = load i32, i32* @INT_MAX
%24 = load i32, i32* @INT_MIN
%25 = call i32 @ngt(i32 %23, i32 %24)
%26 = icmp ne i32 %25, -1
br i1 %26, label %27, label %29
27: ; preds = %22
%28 = call i32 (...) @abort()
unreachable
29: ; preds = %22
%30 = load i32, i32* @INT_MIN
%31 = load i32, i32* @INT_MAX
%32 = call i32 @nle(i32 %30, i32 %31)
%33 = icmp ne i32 %32, -1
br i1 %33, label %34, label %36
34: ; preds = %29
%35 = call i32 (...) @abort()
unreachable
36: ; preds = %29
%37 = load i32, i32* @INT_MAX
%38 = load i32, i32* @INT_MIN
%39 = call i32 @nle(i32 %37, i32 %38)
%40 = icmp ne i32 %39, 0
br i1 %40, label %41, label %43
41: ; preds = %36
%42 = call i32 (...) @abort()
unreachable
43: ; preds = %36
%44 = load i32, i32* @INT_MIN
%45 = load i32, i32* @INT_MAX
%46 = call i32 @nlt(i32 %44, i32 %45)
%47 = icmp ne i32 %46, -1
br i1 %47, label %48, label %50
48: ; preds = %43
%49 = call i32 (...) @abort()
unreachable
50: ; preds = %43
%51 = load i32, i32* @INT_MAX
%52 = load i32, i32* @INT_MIN
%53 = call i32 @nlt(i32 %51, i32 %52)
%54 = icmp ne i32 %53, 0
br i1 %54, label %55, label %57
55: ; preds = %50
%56 = call i32 (...) @abort()
unreachable
57: ; preds = %50
%58 = load i32, i32* @INT_MIN
%59 = load i32, i32* @INT_MAX
%60 = call i64 @neq(i32 %58, i32 %59)
%61 = icmp ne i64 %60, 0
br i1 %61, label %62, label %64
62: ; preds = %57
%63 = call i32 (...) @abort()
unreachable
64: ; preds = %57
%65 = load i32, i32* @INT_MAX
%66 = load i32, i32* @INT_MIN
%67 = call i64 @neq(i32 %65, i32 %66)
%68 = icmp ne i64 %67, 0
br i1 %68, label %69, label %71
69: ; preds = %64
%70 = call i32 (...) @abort()
unreachable
71: ; preds = %64
%72 = load i32, i32* @INT_MIN
%73 = load i32, i32* @INT_MAX
%74 = call i32 @nne(i32 %72, i32 %73)
%75 = icmp ne i32 %74, -1
br i1 %75, label %76, label %78
76: ; preds = %71
%77 = call i32 (...) @abort()
unreachable
78: ; preds = %71
%79 = load i32, i32* @INT_MAX
%80 = load i32, i32* @INT_MIN
%81 = call i32 @nne(i32 %79, i32 %80)
%82 = icmp ne i32 %81, -1
br i1 %82, label %83, label %85
83: ; preds = %78
%84 = call i32 (...) @abort()
unreachable
85: ; preds = %78
%86 = call i32 @ngeu(i32 0, i32 -1)
%87 = icmp ne i32 %86, 0
br i1 %87, label %88, label %90
88: ; preds = %85
%89 = call i32 (...) @abort()
unreachable
90: ; preds = %85
%91 = call i32 @ngeu(i32 -1, i32 0)
%92 = icmp ne i32 %91, -1
br i1 %92, label %93, label %95
93: ; preds = %90
%94 = call i32 (...) @abort()
unreachable
95: ; preds = %90
%96 = call i32 @ngtu(i32 0, i32 -1)
%97 = icmp ne i32 %96, 0
br i1 %97, label %98, label %100
98: ; preds = %95
%99 = call i32 (...) @abort()
unreachable
100: ; preds = %95
%101 = call i32 @ngtu(i32 -1, i32 0)
%102 = icmp ne i32 %101, -1
br i1 %102, label %103, label %105
103: ; preds = %100
%104 = call i32 (...) @abort()
unreachable
105: ; preds = %100
%106 = call i32 @nleu(i32 0, i32 -1)
%107 = icmp ne i32 %106, -1
br i1 %107, label %108, label %110
108: ; preds = %105
%109 = call i32 (...) @abort()
unreachable
110: ; preds = %105
%111 = call i32 @nleu(i32 -1, i32 0)
%112 = icmp ne i32 %111, 0
br i1 %112, label %113, label %115
113: ; preds = %110
%114 = call i32 (...) @abort()
unreachable
115: ; preds = %110
%116 = call i32 @nltu(i32 0, i32 -1)
%117 = icmp ne i32 %116, -1
br i1 %117, label %118, label %120
118: ; preds = %115
%119 = call i32 (...) @abort()
unreachable
120: ; preds = %115
%121 = call i32 @nltu(i32 -1, i32 0)
%122 = icmp ne i32 %121, 0
br i1 %122, label %123, label %125
123: ; preds = %120
%124 = call i32 (...) @abort()
unreachable
125: ; preds = %120
%126 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@INT_MIN = global i32 0
@INT_MAX = global i32 0
define i32 @main() {
%1 = load i32, i32* @INT_MIN
%2 = load i32, i32* @INT_MAX
%3 = tail call i32 @nge(i32 %1, i32 %2)
%4 = icmp eq i32 %3, 0
br i1 %4, label %7, label %5
5: ; preds = %0
%6 = tail call i32 (...) @abort()
unreachable
7: ; preds = %0
%8 = load i32, i32* @INT_MAX
%9 = load i32, i32* @INT_MIN
%10 = tail call i32 @nge(i32 %8, i32 %9)
%11 = icmp eq i32 %10, -1
br i1 %11, label %14, label %12
12: ; preds = %7
%13 = tail call i32 (...) @abort()
unreachable
14: ; preds = %7
%15 = load i32, i32* @INT_MIN
%16 = load i32, i32* @INT_MAX
%17 = tail call i32 @ngt(i32 %15, i32 %16)
%18 = icmp eq i32 %17, 0
br i1 %18, label %21, label %19
19: ; preds = %14
%20 = tail call i32 (...) @abort()
unreachable
21: ; preds = %14
%22 = load i32, i32* @INT_MAX
%23 = load i32, i32* @INT_MIN
%24 = tail call i32 @ngt(i32 %22, i32 %23)
%25 = icmp eq i32 %24, -1
br i1 %25, label %28, label %26
26: ; preds = %21
%27 = tail call i32 (...) @abort()
unreachable
28: ; preds = %21
%29 = load i32, i32* @INT_MIN
%30 = load i32, i32* @INT_MAX
%31 = tail call i32 @nle(i32 %29, i32 %30)
%32 = icmp eq i32 %31, -1
br i1 %32, label %35, label %33
33: ; preds = %28
%34 = tail call i32 (...) @abort()
unreachable
35: ; preds = %28
%36 = load i32, i32* @INT_MAX
%37 = load i32, i32* @INT_MIN
%38 = tail call i32 @nle(i32 %36, i32 %37)
%39 = icmp eq i32 %38, 0
br i1 %39, label %42, label %40
40: ; preds = %35
%41 = tail call i32 (...) @abort()
unreachable
42: ; preds = %35
%43 = load i32, i32* @INT_MIN
%44 = load i32, i32* @INT_MAX
%45 = tail call i32 @nlt(i32 %43, i32 %44)
%46 = icmp eq i32 %45, -1
br i1 %46, label %49, label %47
47: ; preds = %42
%48 = tail call i32 (...) @abort()
unreachable
49: ; preds = %42
%50 = load i32, i32* @INT_MAX
%51 = load i32, i32* @INT_MIN
%52 = tail call i32 @nlt(i32 %50, i32 %51)
%53 = icmp eq i32 %52, 0
br i1 %53, label %56, label %54
54: ; preds = %49
%55 = tail call i32 (...) @abort()
unreachable
56: ; preds = %49
%57 = load i32, i32* @INT_MIN
%58 = load i32, i32* @INT_MAX
%59 = tail call i64 @neq(i32 %57, i32 %58)
%60 = icmp eq i64 %59, 0
br i1 %60, label %63, label %61
61: ; preds = %56
%62 = tail call i32 (...) @abort()
unreachable
63: ; preds = %56
%64 = load i32, i32* @INT_MAX
%65 = load i32, i32* @INT_MIN
%66 = tail call i64 @neq(i32 %64, i32 %65)
%67 = icmp eq i64 %66, 0
br i1 %67, label %70, label %68
68: ; preds = %63
%69 = tail call i32 (...) @abort()
unreachable
70: ; preds = %63
%71 = load i32, i32* @INT_MIN
%72 = load i32, i32* @INT_MAX
%73 = tail call i32 @nne(i32 %71, i32 %72)
%74 = icmp eq i32 %73, -1
br i1 %74, label %77, label %75
75: ; preds = %70
%76 = tail call i32 (...) @abort()
unreachable
77: ; preds = %70
%78 = load i32, i32* @INT_MAX
%79 = load i32, i32* @INT_MIN
%80 = tail call i32 @nne(i32 %78, i32 %79)
%81 = icmp eq i32 %80, -1
br i1 %81, label %84, label %82
82: ; preds = %77
%83 = tail call i32 (...) @abort()
unreachable
84: ; preds = %77
%85 = tail call i32 @ngeu(i32 0, i32 -1)
%86 = icmp eq i32 %85, 0
br i1 %86, label %89, label %87
87: ; preds = %84
%88 = tail call i32 (...) @abort()
unreachable
89: ; preds = %84
%90 = tail call i32 @ngeu(i32 -1, i32 0)
%91 = icmp eq i32 %90, -1
br i1 %91, label %94, label %92
92: ; preds = %89
%93 = tail call i32 (...) @abort()
unreachable
94: ; preds = %89
%95 = tail call i32 @ngtu(i32 0, i32 -1)
%96 = icmp eq i32 %95, 0
br i1 %96, label %99, label %97
97: ; preds = %94
%98 = tail call i32 (...) @abort()
unreachable
99: ; preds = %94
%100 = tail call i32 @ngtu(i32 -1, i32 0)
%101 = icmp eq i32 %100, -1
br i1 %101, label %104, label %102
102: ; preds = %99
%103 = tail call i32 (...) @abort()
unreachable
104: ; preds = %99
%105 = tail call i32 @nleu(i32 0, i32 -1)
%106 = icmp eq i32 %105, -1
br i1 %106, label %109, label %107
107: ; preds = %104
%108 = tail call i32 (...) @abort()
unreachable
109: ; preds = %104
%110 = tail call i32 @nleu(i32 -1, i32 0)
%111 = icmp eq i32 %110, 0
br i1 %111, label %114, label %112
112: ; preds = %109
%113 = tail call i32 (...) @abort()
unreachable
114: ; preds = %109
%115 = tail call i32 @nltu(i32 0, i32 -1)
%116 = icmp eq i32 %115, -1
br i1 %116, label %119, label %117
117: ; preds = %114
%118 = tail call i32 (...) @abort()
unreachable
119: ; preds = %114
%120 = tail call i32 @nltu(i32 -1, i32 0)
%121 = icmp eq i32 %120, 0
br i1 %121, label %124, label %122
122: ; preds = %119
%123 = tail call i32 (...) @abort()
unreachable
124: ; preds = %119
%125 = tail call i32 @exit(i32 0)
unreachable
}