int NearPar(int Res1, int Res2, int Res3, int Res4, int Res5, int Res6,
            int Res7, int Res8, char Cn1, char Cn2, char Cn3, char Cn4,
            int *DistBest, int *DistWorst) {
  int a, b, c1, d1, c, d, Nei1, Nei2;
  if (Cn1 != Cn2 || Cn3 != Cn4)
    return (0);
  if (Res1 >= Res2 && Res2 >= Res5 && Res7 >= Res1 && Res4 >= Res3 &&
      Res4 >= Res6 && Res8 >= Res4) {
    if (Res5 == Res2)
      Nei1 = Res2;
    else
      Nei1 = Res2 - 1;
    if (Res1 == Res7)
      Nei2 = Res1;
    else
      Nei2 = Res1 + 1;
    a = Nei2 - Nei1;
    c1 = Nei2 - Res5;
    if (Res3 == Res6)
      Nei1 = Res3;
    else
      Nei1 = Res3 - 1;
    if (Res4 == Res8)
      Nei2 = Res4;
    else
      Nei2 = Res4 + 1;
    b = Nei2 - Nei1;
    d1 = Nei2 - Res6;
  } else if (Res1 <= Res2 && Res2 <= Res5 && Res7 <= Res1 && Res4 <= Res3 &&
             Res4 <= Res6 && Res8 <= Res4) {
    if (Res5 == Res2)
      Nei1 = Res2;
    else
      Nei1 = Res2 + 1;
    if (Res1 == Res7)
      Nei2 = Res1;
    else
      Nei2 = Res1 - 1;
    a = Nei1 - Nei2;
    c1 = Res1 - Res7;
    if (Res3 == Res6)
      Nei1 = Res3;
    else
      Nei1 = Res3 + 1;
    if (Res4 == Res8)
      Nei2 = Res4;
    else
      Nei2 = Res4 - 1;
    b = Nei1 - Nei2;
    d1 = Nei1 - Res8;
  } else
    return (0);
  c = ((c1) < (a) ? a : c1);
  d = ((d1) < (b) ? b : d1);
  if (a >= 0 && b >= 0 && c >= 0 && d >= 0 &&
      ((a <= 2 && b <= 5) || (a <= 5 && b <= 2))) {
    *DistBest = ((a) < (b) ? a : b);
    *DistWorst = ((c) < (d) ? d : c);
    if (*DistBest <= *DistWorst)
      return (1);
    else
      return (0);
  }
  return (0);
}


x86 assembly (clang, -O0):
<NearPar>:
push   %rbp
mov    %rsp,%rbp
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%al
mov    0x30(%rbp),%al
mov    0x28(%rbp),%al
mov    0x20(%rbp),%al
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    %r9d,-0x1c(%rbp)
movsbl 0x20(%rbp),%eax
movsbl 0x28(%rbp),%ecx
cmp    %ecx,%eax
jne    1152 <NearPar+0x52>
movsbl 0x30(%rbp),%eax
movsbl 0x38(%rbp),%ecx
cmp    %ecx,%eax
je     115e <NearPar+0x5e>
movl   $0x0,-0x4(%rbp)
jmp    1464 <NearPar+0x364>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     124f <NearPar+0x14f>
mov    -0xc(%rbp),%eax
cmp    -0x18(%rbp),%eax
jl     124f <NearPar+0x14f>
mov    0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     124f <NearPar+0x14f>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     124f <NearPar+0x14f>
mov    -0x14(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jl     124f <NearPar+0x14f>
mov    0x18(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     124f <NearPar+0x14f>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    11bd <NearPar+0xbd>
mov    -0xc(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    11c6 <NearPar+0xc6>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%eax
cmp    0x10(%rbp),%eax
jne    11dd <NearPar+0xdd>
mov    -0x8(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    11e6 <NearPar+0xe6>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jne    120f <NearPar+0x10f>
mov    -0x10(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    1218 <NearPar+0x118>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x14(%rbp),%eax
cmp    0x18(%rbp),%eax
jne    122f <NearPar+0x12f>
mov    -0x14(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    1238 <NearPar+0x138>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
jmp    1351 <NearPar+0x251>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1340 <NearPar+0x240>
mov    -0xc(%rbp),%eax
cmp    -0x18(%rbp),%eax
jg     1340 <NearPar+0x240>
mov    0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     1340 <NearPar+0x240>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     1340 <NearPar+0x240>
mov    -0x14(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jg     1340 <NearPar+0x240>
mov    0x18(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     1340 <NearPar+0x240>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    12ae <NearPar+0x1ae>
mov    -0xc(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    12b7 <NearPar+0x1b7>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%eax
cmp    0x10(%rbp),%eax
jne    12ce <NearPar+0x1ce>
mov    -0x8(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    12d7 <NearPar+0x1d7>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x3c(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x8(%rbp),%eax
sub    0x10(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jne    1300 <NearPar+0x200>
mov    -0x10(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    1309 <NearPar+0x209>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x14(%rbp),%eax
cmp    0x18(%rbp),%eax
jne    1320 <NearPar+0x220>
mov    -0x14(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    1329 <NearPar+0x229>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x3c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x38(%rbp),%eax
sub    0x18(%rbp),%eax
mov    %eax,-0x2c(%rbp)
jmp    134c <NearPar+0x24c>
movl   $0x0,-0x4(%rbp)
jmp    1464 <NearPar+0x364>
jmp    1351 <NearPar+0x251>
mov    -0x28(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1368 <NearPar+0x268>
mov    -0x20(%rbp),%eax
mov    %eax,-0x40(%rbp)
jmp    136e <NearPar+0x26e>
mov    -0x28(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    138b <NearPar+0x28b>
mov    -0x24(%rbp),%eax
mov    %eax,-0x44(%rbp)
jmp    1391 <NearPar+0x291>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x0,-0x20(%rbp)
jl     145d <NearPar+0x35d>
cmpl   $0x0,-0x24(%rbp)
jl     145d <NearPar+0x35d>
cmpl   $0x0,-0x30(%rbp)
jl     145d <NearPar+0x35d>
cmpl   $0x0,-0x34(%rbp)
jl     145d <NearPar+0x35d>
cmpl   $0x2,-0x20(%rbp)
jg     13d3 <NearPar+0x2d3>
cmpl   $0x5,-0x24(%rbp)
jle    13e7 <NearPar+0x2e7>
cmpl   $0x5,-0x20(%rbp)
jg     145d <NearPar+0x35d>
cmpl   $0x2,-0x24(%rbp)
jg     145d <NearPar+0x35d>
mov    -0x20(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    13fe <NearPar+0x2fe>
mov    -0x20(%rbp),%eax
mov    %eax,-0x48(%rbp)
jmp    1404 <NearPar+0x304>
mov    -0x24(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%ecx
mov    0x40(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x30(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    1424 <NearPar+0x324>
mov    -0x34(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    142a <NearPar+0x32a>
mov    -0x30(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%ecx
mov    0x48(%rbp),%rax
mov    %ecx,(%rax)
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    0x48(%rbp),%rcx
cmp    (%rcx),%eax
jg     1451 <NearPar+0x351>
movl   $0x1,-0x4(%rbp)
jmp    1464 <NearPar+0x364>
movl   $0x0,-0x4(%rbp)
jmp    1464 <NearPar+0x364>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<NearPar>:
push   %rbp
push   %rbx
mov    0x28(%rsp),%bl
xor    %eax,%eax
cmp    0x30(%rsp),%bl
jne    123d <NearPar+0x13d>
mov    0x40(%rsp),%bl
cmp    %bl,0x38(%rsp)
jne    123d <NearPar+0x13d>
mov    0x20(%rsp),%r11d
mov    0x18(%rsp),%ebx
cmp    %ecx,%r11d
jl     117d <NearPar+0x7d>
cmp    %r9d,%ecx
jl     117d <NearPar+0x7d>
cmp    %edx,%ecx
jl     117d <NearPar+0x7d>
cmp    %edi,%esi
jg     117d <NearPar+0x7d>
cmp    %r8d,%esi
jl     117d <NearPar+0x7d>
cmp    %ebx,%edi
jg     117d <NearPar+0x7d>
xor    %r10d,%r10d
cmp    %esi,%r8d
setne  %r10b
xor    %ebp,%ebp
cmp    %ebx,%edi
setne  %bpl
add    %edi,%ebp
sub    %esi,%r10d
add    %ebp,%r10d
sub    %r8d,%ebp
xor    %ebx,%ebx
cmp    %r9d,%edx
setne  %bl
xor    %esi,%esi
cmp    %r11d,%ecx
setne  %sil
add    %ecx,%esi
sub    %edx,%ebx
add    %esi,%ebx
sub    %r9d,%esi
jmp    11e9 <NearPar+0xe9>
cmp    %ecx,%r11d
jg     123d <NearPar+0x13d>
cmp    %r9d,%ecx
jg     123d <NearPar+0x13d>
cmp    %edx,%ecx
jg     123d <NearPar+0x13d>
mov    %esi,%r10d
sub    %edi,%r10d
jl     123d <NearPar+0x13d>
cmp    %r8d,%esi
jg     123d <NearPar+0x13d>
cmp    %ebx,%edi
jl     123d <NearPar+0x13d>
xor    %ebp,%ebp
cmp    %esi,%r8d
setne  %bpl
xor    %esi,%esi
sub    %ebx,%edi
setne  %sil
add    %ebp,%r10d
add    %esi,%r10d
xor    %esi,%esi
cmp    %r9d,%edx
setne  %sil
add    %edx,%esi
xor    %edx,%edx
cmp    %r11d,%ecx
setne  %dl
mov    %esi,%ebx
sub    %ecx,%ebx
add    %edx,%ebx
sub    %r11d,%esi
mov    %edi,%ebp
cmp    %r10d,%ebp
cmovl  %r10d,%ebp
cmp    %ebx,%esi
cmovl  %ebx,%esi
test   %r10d,%r10d
js     123d <NearPar+0x13d>
test   %ebx,%ebx
js     123d <NearPar+0x13d>
test   %ebp,%ebp
js     123d <NearPar+0x13d>
test   %esi,%esi
js     123d <NearPar+0x13d>
cmp    $0x2,%r10d
ja     1211 <NearPar+0x111>
cmp    $0x6,%ebx
jb     121c <NearPar+0x11c>
cmp    $0x5,%r10d
ja     123d <NearPar+0x13d>
cmp    $0x2,%ebx
ja     123d <NearPar+0x13d>
mov    0x50(%rsp),%rax
mov    0x48(%rsp),%rcx
cmp    %ebx,%r10d
cmovb  %r10d,%ebx
mov    %ebx,(%rcx)
cmp    %esi,%ebp
cmovb  %esi,%ebp
mov    %ebp,(%rax)
xor    %eax,%eax
cmp    %ebp,(%rcx)
setle  %al
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
define i32 @NearPar(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7, i8 signext %8, i8 signext %9, i8 signext %10, i8 signext %11, i32* %12, i32* %13) {
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i8
%25 = alloca i8
%26 = alloca i8
%27 = alloca i8
%28 = alloca i32*
%29 = alloca i32*
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
store i32 %0, i32* %16
store i32 %1, i32* %17
store i32 %2, i32* %18
store i32 %3, i32* %19
store i32 %4, i32* %20
store i32 %5, i32* %21
store i32 %6, i32* %22
store i32 %7, i32* %23
store i8 %8, i8* %24
store i8 %9, i8* %25
store i8 %10, i8* %26
store i8 %11, i8* %27
store i32* %12, i32** %28
store i32* %13, i32** %29
%38 = load i8, i8* %24
%39 = sext i8 %38 to i32
%40 = load i8, i8* %25
%41 = sext i8 %40 to i32
%42 = icmp ne i32 %39, %41
br i1 %42, label %49, label %43
43: ; preds = %14
%44 = load i8, i8* %26
%45 = sext i8 %44 to i32
%46 = load i8, i8* %27
%47 = sext i8 %46 to i32
%48 = icmp ne i32 %45, %47
br i1 %48, label %49, label %50
49: ; preds = %43, %14
store i32 0, i32* %15
br label %269
50: ; preds = %43
%51 = load i32, i32* %16
%52 = load i32, i32* %17
%53 = icmp sge i32 %51, %52
br i1 %53, label %54, label %123
54: ; preds = %50
%55 = load i32, i32* %17
%56 = load i32, i32* %20
%57 = icmp sge i32 %55, %56
br i1 %57, label %58, label %123
58: ; preds = %54
%59 = load i32, i32* %22
%60 = load i32, i32* %16
%61 = icmp sge i32 %59, %60
br i1 %61, label %62, label %123
62: ; preds = %58
%63 = load i32, i32* %19
%64 = load i32, i32* %18
%65 = icmp sge i32 %63, %64
br i1 %65, label %66, label %123
66: ; preds = %62
%67 = load i32, i32* %19
%68 = load i32, i32* %21
%69 = icmp sge i32 %67, %68
br i1 %69, label %70, label %123
70: ; preds = %66
%71 = load i32, i32* %23
%72 = load i32, i32* %19
%73 = icmp sge i32 %71, %72
br i1 %73, label %74, label %123
74: ; preds = %70
%75 = load i32, i32* %20
%76 = load i32, i32* %17
%77 = icmp eq i32 %75, %76
br i1 %77, label %78, label %80
78: ; preds = %74
%79 = load i32, i32* %17
store i32 %79, i32* %36
br label %83
80: ; preds = %74
%81 = load i32, i32* %17
%82 = sub nsw i32 %81, 1
store i32 %82, i32* %36
br label %83
83: ; preds = %80, %78
%84 = load i32, i32* %16
%85 = load i32, i32* %22
%86 = icmp eq i32 %84, %85
br i1 %86, label %87, label %89
87: ; preds = %83
%88 = load i32, i32* %16
store i32 %88, i32* %37
br label %92
89: ; preds = %83
%90 = load i32, i32* %16
%91 = add nsw i32 %90, 1
store i32 %91, i32* %37
br label %92
92: ; preds = %89, %87
%93 = load i32, i32* %37
%94 = load i32, i32* %36
%95 = sub nsw i32 %93, %94
store i32 %95, i32* %30
%96 = load i32, i32* %37
%97 = load i32, i32* %20
%98 = sub nsw i32 %96, %97
store i32 %98, i32* %32
%99 = load i32, i32* %18
%100 = load i32, i32* %21
%101 = icmp eq i32 %99, %100
br i1 %101, label %102, label %104
102: ; preds = %92
%103 = load i32, i32* %18
store i32 %103, i32* %36
br label %107
104: ; preds = %92
%105 = load i32, i32* %18
%106 = sub nsw i32 %105, 1
store i32 %106, i32* %36
br label %107
107: ; preds = %104, %102
%108 = load i32, i32* %19
%109 = load i32, i32* %23
%110 = icmp eq i32 %108, %109
br i1 %110, label %111, label %113
111: ; preds = %107
%112 = load i32, i32* %19
store i32 %112, i32* %37
br label %116
113: ; preds = %107
%114 = load i32, i32* %19
%115 = add nsw i32 %114, 1
store i32 %115, i32* %37
br label %116
116: ; preds = %113, %111
%117 = load i32, i32* %37
%118 = load i32, i32* %36
%119 = sub nsw i32 %117, %118
store i32 %119, i32* %31
%120 = load i32, i32* %37
%121 = load i32, i32* %21
%122 = sub nsw i32 %120, %121
store i32 %122, i32* %33
br label %198
123: ; preds = %70, %66, %62, %58, %54, %50
%124 = load i32, i32* %16
%125 = load i32, i32* %17
%126 = icmp sle i32 %124, %125
br i1 %126, label %127, label %196
127: ; preds = %123
%128 = load i32, i32* %17
%129 = load i32, i32* %20
%130 = icmp sle i32 %128, %129
br i1 %130, label %131, label %196
131: ; preds = %127
%132 = load i32, i32* %22
%133 = load i32, i32* %16
%134 = icmp sle i32 %132, %133
br i1 %134, label %135, label %196
135: ; preds = %131
%136 = load i32, i32* %19
%137 = load i32, i32* %18
%138 = icmp sle i32 %136, %137
br i1 %138, label %139, label %196
139: ; preds = %135
%140 = load i32, i32* %19
%141 = load i32, i32* %21
%142 = icmp sle i32 %140, %141
br i1 %142, label %143, label %196
143: ; preds = %139
%144 = load i32, i32* %23
%145 = load i32, i32* %19
%146 = icmp sle i32 %144, %145
br i1 %146, label %147, label %196
147: ; preds = %143
%148 = load i32, i32* %20
%149 = load i32, i32* %17
%150 = icmp eq i32 %148, %149
br i1 %150, label %151, label %153
151: ; preds = %147
%152 = load i32, i32* %17
store i32 %152, i32* %36
br label %156
153: ; preds = %147
%154 = load i32, i32* %17
%155 = add nsw i32 %154, 1
store i32 %155, i32* %36
br label %156
156: ; preds = %153, %151
%157 = load i32, i32* %16
%158 = load i32, i32* %22
%159 = icmp eq i32 %157, %158
br i1 %159, label %160, label %162
160: ; preds = %156
%161 = load i32, i32* %16
store i32 %161, i32* %37
br label %165
162: ; preds = %156
%163 = load i32, i32* %16
%164 = sub nsw i32 %163, 1
store i32 %164, i32* %37
br label %165
165: ; preds = %162, %160
%166 = load i32, i32* %36
%167 = load i32, i32* %37
%168 = sub nsw i32 %166, %167
store i32 %168, i32* %30
%169 = load i32, i32* %16
%170 = load i32, i32* %22
%171 = sub nsw i32 %169, %170
store i32 %171, i32* %32
%172 = load i32, i32* %18
%173 = load i32, i32* %21
%174 = icmp eq i32 %172, %173
br i1 %174, label %175, label %177
175: ; preds = %165
%176 = load i32, i32* %18
store i32 %176, i32* %36
br label %180
177: ; preds = %165
%178 = load i32, i32* %18
%179 = add nsw i32 %178, 1
store i32 %179, i32* %36
br label %180
180: ; preds = %177, %175
%181 = load i32, i32* %19
%182 = load i32, i32* %23
%183 = icmp eq i32 %181, %182
br i1 %183, label %184, label %186
184: ; preds = %180
%185 = load i32, i32* %19
store i32 %185, i32* %37
br label %189
186: ; preds = %180
%187 = load i32, i32* %19
%188 = sub nsw i32 %187, 1
store i32 %188, i32* %37
br label %189
189: ; preds = %186, %184
%190 = load i32, i32* %36
%191 = load i32, i32* %37
%192 = sub nsw i32 %190, %191
store i32 %192, i32* %31
%193 = load i32, i32* %36
%194 = load i32, i32* %23
%195 = sub nsw i32 %193, %194
store i32 %195, i32* %33
br label %197
196: ; preds = %143, %139, %135, %131, %127, %123
store i32 0, i32* %15
br label %269
197: ; preds = %189
br label %198
198: ; preds = %197, %116
%199 = load i32, i32* %32
%200 = load i32, i32* %30
%201 = icmp slt i32 %199, %200
br i1 %201, label %202, label %204
202: ; preds = %198
%203 = load i32, i32* %30
br label %206
204: ; preds = %198
%205 = load i32, i32* %32
br label %206
206: ; preds = %204, %202
%207 = phi i32 [ %203, %202 ], [ %205, %204 ]
store i32 %207, i32* %34
%208 = load i32, i32* %33
%209 = load i32, i32* %31
%210 = icmp slt i32 %208, %209
br i1 %210, label %211, label %213
211: ; preds = %206
%212 = load i32, i32* %31
br label %215
213: ; preds = %206
%214 = load i32, i32* %33
br label %215
215: ; preds = %213, %211
%216 = phi i32 [ %212, %211 ], [ %214, %213 ]
store i32 %216, i32* %35
%217 = load i32, i32* %30
%218 = icmp sge i32 %217, 0
br i1 %218, label %219, label %268
219: ; preds = %215
%220 = load i32, i32* %31
%221 = icmp sge i32 %220, 0
br i1 %221, label %222, label %268
222: ; preds = %219
%223 = load i32, i32* %34
%224 = icmp sge i32 %223, 0
br i1 %224, label %225, label %268
225: ; preds = %222
%226 = load i32, i32* %35
%227 = icmp sge i32 %226, 0
br i1 %227, label %228, label %268
228: ; preds = %225
%229 = load i32, i32* %30
%230 = icmp sle i32 %229, 2
br i1 %230, label %231, label %234
231: ; preds = %228
%232 = load i32, i32* %31
%233 = icmp sle i32 %232, 5
br i1 %233, label %240, label %234
234: ; preds = %231, %228
%235 = load i32, i32* %30
%236 = icmp sle i32 %235, 5
br i1 %236, label %237, label %268
237: ; preds = %234
%238 = load i32, i32* %31
%239 = icmp sle i32 %238, 2
br i1 %239, label %240, label %268
240: ; preds = %237, %231
%241 = load i32, i32* %30
%242 = load i32, i32* %31
%243 = icmp slt i32 %241, %242
br i1 %243, label %244, label %246
244: ; preds = %240
%245 = load i32, i32* %30
br label %248
246: ; preds = %240
%247 = load i32, i32* %31
br label %248
248: ; preds = %246, %244
%249 = phi i32 [ %245, %244 ], [ %247, %246 ]
%250 = load i32*, i32** %28
store i32 %249, i32* %250
%251 = load i32, i32* %34
%252 = load i32, i32* %35
%253 = icmp slt i32 %251, %252
br i1 %253, label %254, label %256
254: ; preds = %248
%255 = load i32, i32* %35
br label %258
256: ; preds = %248
%257 = load i32, i32* %34
br label %258
258: ; preds = %256, %254
%259 = phi i32 [ %255, %254 ], [ %257, %256 ]
%260 = load i32*, i32** %29
store i32 %259, i32* %260
%261 = load i32*, i32** %28
%262 = load i32, i32* %261
%263 = load i32*, i32** %29
%264 = load i32, i32* %263
%265 = icmp sle i32 %262, %264
br i1 %265, label %266, label %267
266: ; preds = %258
store i32 1, i32* %15
br label %269
267: ; preds = %258
store i32 0, i32* %15
br label %269
268: ; preds = %237, %234, %225, %222, %219, %215
store i32 0, i32* %15
br label %269
269: ; preds = %268, %267, %266, %196, %49
%270 = load i32, i32* %15
ret i32 %270
}

LLVM IR (-O2):
define i32 @NearPar(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7, i8 signext %8, i8 signext %9, i8 signext %10, i8 signext %11, i32* nocapture %12, i32* nocapture writeonly %13) {
%15 = icmp eq i8 %8, %9
%16 = icmp eq i8 %10, %11
%17 = and i1 %15, %16
br i1 %17, label %18, label %108
18: ; preds = %14
%19 = icmp sgt i32 %1, %0
%20 = icmp slt i32 %1, %4
%21 = or i1 %19, %20
%22 = icmp sgt i32 %0, %6
%23 = or i1 %21, %22
%24 = icmp slt i32 %3, %2
%25 = or i1 %24, %23
%26 = icmp slt i32 %3, %5
%27 = or i1 %26, %25
%28 = icmp slt i32 %7, %3
%29 = or i1 %28, %27
br i1 %29, label %47, label %30
30: ; preds = %18
%31 = icmp ne i32 %4, %1
%32 = zext i1 %31 to i32
%33 = icmp ne i32 %0, %6
%34 = zext i1 %33 to i32
%35 = add nsw i32 %34, %0
%36 = sub i32 %32, %1
%37 = add i32 %36, %35
%38 = sub nsw i32 %35, %4
%39 = icmp ne i32 %2, %5
%40 = zext i1 %39 to i32
%41 = icmp ne i32 %3, %7
%42 = zext i1 %41 to i32
%43 = add nsw i32 %42, %3
%44 = sub i32 %40, %2
%45 = add i32 %44, %43
%46 = sub nsw i32 %43, %5
br label %76
47: ; preds = %18
%48 = icmp slt i32 %1, %0
%49 = icmp sgt i32 %1, %4
%50 = or i1 %48, %49
%51 = icmp slt i32 %0, %6
%52 = or i1 %50, %51
%53 = icmp sgt i32 %3, %2
%54 = or i1 %53, %52
%55 = icmp sgt i32 %3, %5
%56 = or i1 %55, %54
%57 = icmp sgt i32 %7, %3
%58 = or i1 %57, %56
br i1 %58, label %108, label %59
59: ; preds = %47
%60 = icmp ne i32 %4, %1
%61 = zext i1 %60 to i32
%62 = icmp ne i32 %0, %6
%63 = zext i1 %62 to i32
%64 = sub i32 %1, %0
%65 = add i32 %64, %61
%66 = add i32 %65, %63
%67 = sub nsw i32 %0, %6
%68 = icmp ne i32 %2, %5
%69 = zext i1 %68 to i32
%70 = add nsw i32 %69, %2
%71 = icmp ne i32 %3, %7
%72 = zext i1 %71 to i32
%73 = sub i32 %70, %3
%74 = add i32 %73, %72
%75 = sub nsw i32 %70, %7
br label %76
76: ; preds = %59, %30
%77 = phi i32 [ %45, %30 ], [ %74, %59 ]
%78 = phi i32 [ %38, %30 ], [ %67, %59 ]
%79 = phi i32 [ %46, %30 ], [ %75, %59 ]
%80 = phi i32 [ %37, %30 ], [ %66, %59 ]
%81 = icmp slt i32 %78, %80
%82 = select i1 %81, i32 %80, i32 %78
%83 = icmp slt i32 %79, %77
%84 = select i1 %83, i32 %77, i32 %79
%85 = icmp sgt i32 %80, -1
%86 = icmp sgt i32 %77, -1
%87 = select i1 %85, i1 %86, i1 false
%88 = icmp sgt i32 %82, -1
%89 = select i1 %87, i1 %88, i1 false
%90 = icmp sgt i32 %84, -1
%91 = select i1 %89, i1 %90, i1 false
br i1 %91, label %92, label %108
92: ; preds = %76
%93 = icmp ult i32 %80, 3
%94 = icmp ult i32 %77, 6
%95 = select i1 %93, i1 %94, i1 false
br i1 %95, label %100, label %96
96: ; preds = %92
%97 = icmp ult i32 %80, 6
%98 = icmp ult i32 %77, 3
%99 = select i1 %97, i1 %98, i1 false
br i1 %99, label %100, label %108
100: ; preds = %96, %92
%101 = icmp ult i32 %80, %77
%102 = select i1 %101, i32 %80, i32 %77
store i32 %102, i32* %12
%103 = icmp ult i32 %82, %84
%104 = select i1 %103, i32 %84, i32 %82
store i32 %104, i32* %13
%105 = load i32, i32* %12
%106 = icmp sle i32 %105, %104
%107 = zext i1 %106 to i32
br label %108
108: ; preds = %76, %96, %100, %47, %14
%109 = phi i32 [ 0, %14 ], [ 0, %47 ], [ %107, %100 ], [ 0, %96 ], [ 0, %76 ]
ret i32 %109
}