int RightSide(int LnkA, int LnkD, int I1A, int I1D, int I2A, int I2D) {
  if ((I1A == I2D && I1D == I2A) || (I1A < I2D && LnkA <= I2D && LnkA <= I1A) ||
      (I1A > I2D && LnkA >= I2D && LnkA >= I1A) ||
      (I1D < I2A && LnkD <= I2A && LnkD <= I1D) ||
      (I1D > I2A && LnkD >= I2A && LnkD >= I1D))
    return (1);
  return (0);
}


x86 assembly (clang, -O0):
<RightSide>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    %r9d,-0x1c(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jne    1130 <RightSide+0x30>
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
je     11c0 <RightSide+0xc0>
mov    -0x10(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1154 <RightSide+0x54>
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jg     1154 <RightSide+0x54>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jle    11c0 <RightSide+0xc0>
mov    -0x10(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jle    1178 <RightSide+0x78>
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jl     1178 <RightSide+0x78>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    11c0 <RightSide+0xc0>
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    119c <RightSide+0x9c>
mov    -0xc(%rbp),%eax
cmp    -0x18(%rbp),%eax
jg     119c <RightSide+0x9c>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jle    11c0 <RightSide+0xc0>
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jle    11cc <RightSide+0xcc>
mov    -0xc(%rbp),%eax
cmp    -0x18(%rbp),%eax
jl     11cc <RightSide+0xcc>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     11cc <RightSide+0xcc>
movl   $0x1,-0x4(%rbp)
jmp    11d3 <RightSide+0xd3>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<RightSide>:
mov    $0x1,%eax
cmp    %r8d,%ecx
jne    1110 <RightSide+0x10>
cmp    %r9d,%edx
jne    1110 <RightSide+0x10>
ret
cmp    %edx,%edi
jg     111e <RightSide+0x1e>
cmp    %r9d,%edx
jge    111e <RightSide+0x1e>
cmp    %r9d,%edi
jle    110f <RightSide+0xf>
cmp    %edx,%edi
jl     112c <RightSide+0x2c>
cmp    %r9d,%edx
jle    112c <RightSide+0x2c>
cmp    %r9d,%edi
jge    110f <RightSide+0xf>
cmp    %ecx,%esi
jg     113a <RightSide+0x3a>
cmp    %r8d,%ecx
jge    113a <RightSide+0x3a>
cmp    %r8d,%esi
jle    110f <RightSide+0xf>
cmp    %r8d,%ecx
setg   %al
cmp    %r8d,%esi
setge  %dl
and    %al,%dl
cmp    %ecx,%esi
setge  %al
and    %dl,%al
movzbl %al,%eax
ret

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

LLVM IR (-O2):
define i32 @RightSide(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
%7 = icmp eq i32 %2, %5
%8 = icmp eq i32 %3, %4
%9 = and i1 %8, %7
br i1 %9, label %36, label %10
10: ; preds = %6
%11 = icmp sge i32 %2, %5
%12 = icmp sgt i32 %0, %5
%13 = or i1 %11, %12
%14 = icmp sgt i32 %0, %2
%15 = or i1 %14, %13
br i1 %15, label %16, label %36
16: ; preds = %10
%17 = icmp sle i32 %2, %5
%18 = icmp slt i32 %0, %5
%19 = or i1 %17, %18
%20 = icmp slt i32 %0, %2
%21 = or i1 %20, %19
br i1 %21, label %22, label %36
22: ; preds = %16
%23 = icmp sge i32 %3, %4
%24 = icmp sgt i32 %1, %4
%25 = or i1 %23, %24
%26 = icmp sgt i32 %1, %3
%27 = or i1 %26, %25
br i1 %27, label %28, label %36
28: ; preds = %22
%29 = icmp sle i32 %3, %4
%30 = icmp slt i32 %1, %4
%31 = or i1 %29, %30
%32 = icmp slt i32 %1, %3
%33 = or i1 %32, %31
%34 = xor i1 %33, true
%35 = zext i1 %34 to i32
br label %36
36: ; preds = %28, %6, %10, %16, %22
%37 = phi i32 [ 1, %22 ], [ 1, %16 ], [ 1, %10 ], [ 1, %6 ], [ %35, %28 ]
ret i32 %37
}