int cmp_distance_ulong(unsigned long check, unsigned long baseline) {
  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))))))));
}


x86 assembly (clang, -O0):
<cmp_distance_ulong>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
sub    -0x10(%rbp),%rax
cmp    $0x0,%rax
jg     113c <cmp_distance_ulong+0x3c>
mov    -0x8(%rbp),%rdx
sub    -0x10(%rbp),%rdx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%rdx
cmovl  %ecx,%eax
mov    %eax,-0x14(%rbp)
jmp    1149 <cmp_distance_ulong+0x49>
mov    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1149 <cmp_distance_ulong+0x49>
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
ja     117a <cmp_distance_ulong+0x7a>
mov    -0x8(%rbp),%rdx
mov    -0x10(%rbp),%rsi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %rsi,%rdx
cmovb  %ecx,%eax
mov    %eax,-0x1c(%rbp)
jmp    1187 <cmp_distance_ulong+0x87>
mov    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1187 <cmp_distance_ulong+0x87>
mov    -0x1c(%rbp),%eax
cmp    $0x0,%eax
jg     11e3 <cmp_distance_ulong+0xe3>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
ja     11be <cmp_distance_ulong+0xbe>
mov    -0x8(%rbp),%rdx
mov    -0x10(%rbp),%rsi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %rsi,%rdx
cmovb  %ecx,%eax
mov    %eax,-0x20(%rbp)
jmp    11cb <cmp_distance_ulong+0xcb>
mov    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11cb <cmp_distance_ulong+0xcb>
mov    -0x20(%rbp),%edx
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    $0x0,%edx
cmovl  %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    11f0 <cmp_distance_ulong+0xf0>
mov    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11f0 <cmp_distance_ulong+0xf0>
mov    -0x18(%rbp),%eax
mov    -0x24(%rbp),%ecx
cmp    %ecx,%eax
jne    120f <cmp_distance_ulong+0x10f>
mov    -0x8(%rbp),%rax
sub    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
jmp    1250 <cmp_distance_ulong+0x150>
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
ja     123a <cmp_distance_ulong+0x13a>
mov    -0x8(%rbp),%rdx
mov    -0x10(%rbp),%rsi
xor    %eax,%eax
mov    $0xffffffff,%ecx
cmp    %rsi,%rdx
cmovb  %ecx,%eax
mov    %eax,-0x34(%rbp)
jmp    1247 <cmp_distance_ulong+0x147>
mov    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1247 <cmp_distance_ulong+0x147>
mov    -0x34(%rbp),%eax
cltq
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<cmp_distance_ulong>:
cmp    %rsi,%rdi
sbb    %eax,%eax
xor    %ecx,%ecx
sub    %rsi,%rdi
setne  %cl
mov    $0x1,%edx
cmova  %edx,%eax
neg    %ecx
test   %rdi,%rdi
cmovg  %edx,%ecx
cmp    %eax,%ecx
cmove  %edi,%eax
ret

LLVM IR (-O0):
define i32 @cmp_distance_ulong(i64 %0, i64 %1) {
%3 = alloca i64
%4 = alloca i64
store i64 %0, i64* %3
store i64 %1, i64* %4
%5 = load i64, i64* %3
%6 = load i64, i64* %4
%7 = sub nsw i64 %5, %6
%8 = icmp sle i64 %7, 0
br i1 %8, label %9, label %16
9: ; preds = %2
%10 = load i64, i64* %3
%11 = load i64, i64* %4
%12 = sub nsw i64 %10, %11
%13 = icmp slt i64 %12, 0
%14 = zext i1 %13 to i64
%15 = select i1 %13, i32 -1, i32 0
br label %17
16: ; preds = %2
br label %17
17: ; preds = %16, %9
%18 = phi i32 [ %15, %9 ], [ 1, %16 ]
%19 = load i64, i64* %3
%20 = load i64, i64* %4
%21 = icmp ule i64 %19, %20
br i1 %21, label %22, label %28
22: ; preds = %17
%23 = load i64, i64* %3
%24 = load i64, i64* %4
%25 = icmp ult i64 %23, %24
%26 = zext i1 %25 to i64
%27 = select i1 %25, i32 -1, i32 0
br label %29
28: ; preds = %17
br label %29
29: ; preds = %28, %22
%30 = phi i32 [ %27, %22 ], [ 1, %28 ]
%31 = icmp sle i32 %30, 0
br i1 %31, label %32, label %48
32: ; preds = %29
%33 = load i64, i64* %3
%34 = load i64, i64* %4
%35 = icmp ule i64 %33, %34
br i1 %35, label %36, label %42
36: ; preds = %32
%37 = load i64, i64* %3
%38 = load i64, i64* %4
%39 = icmp ult i64 %37, %38
%40 = zext i1 %39 to i64
%41 = select i1 %39, i32 -1, i32 0
br label %43
42: ; preds = %32
br label %43
43: ; preds = %42, %36
%44 = phi i32 [ %41, %36 ], [ 1, %42 ]
%45 = icmp slt i32 %44, 0
%46 = zext i1 %45 to i64
%47 = select i1 %45, i32 -1, i32 0
br label %49
48: ; preds = %29
br label %49
49: ; preds = %48, %43
%50 = phi i32 [ %47, %43 ], [ 1, %48 ]
%51 = icmp eq i32 %18, %50
br i1 %51, label %52, label %56
52: ; preds = %49
%53 = load i64, i64* %3
%54 = load i64, i64* %4
%55 = sub nsw i64 %53, %54
br label %70
56: ; preds = %49
%57 = load i64, i64* %3
%58 = load i64, i64* %4
%59 = icmp ule i64 %57, %58
br i1 %59, label %60, label %66
60: ; preds = %56
%61 = load i64, i64* %3
%62 = load i64, i64* %4
%63 = icmp ult i64 %61, %62
%64 = zext i1 %63 to i64
%65 = select i1 %63, i32 -1, i32 0
br label %67
66: ; preds = %56
br label %67
67: ; preds = %66, %60
%68 = phi i32 [ %65, %60 ], [ 1, %66 ]
%69 = sext i32 %68 to i64
br label %70
70: ; preds = %67, %52
%71 = phi i64 [ %55, %52 ], [ %69, %67 ]
%72 = trunc i64 %71 to i32
ret i32 %72
}

LLVM IR (-O2):
define i32 @cmp_distance_ulong(i64 %0, i64 %1) {
%3 = sub nsw i64 %0, %1
%4 = icmp slt i64 %3, 1
%5 = icmp ne i64 %3, 0
%6 = sext i1 %5 to i32
%7 = select i1 %4, i32 %6, i32 1
%8 = icmp ugt i64 %0, %1
%9 = icmp ult i64 %0, %1
%10 = sext i1 %9 to i32
%11 = select i1 %8, i32 1, i32 %10
%12 = icmp eq i32 %7, %11
%13 = sext i1 %9 to i64
%14 = select i1 %8, i64 1, i64 %13
%15 = select i1 %12, i64 %3, i64 %14
%16 = trunc i64 %15 to i32
ret i32 %16
}