int e_get_sw_cmp(int xin, int yin, int x, int y, int xmin, int ymin, int c) {
  return ((c == 0 && yin == y && (xin - 1 <= x && xin + xmin >= x)) ||
          ((c == 335 || c == 336 || c == 9) && yin > y &&
           (yin < ymin || (yin == ymin && xin <= x && xin > xmin))) ||
          ((c == 327 || c == 328 || c == 28) && yin < y &&
           (yin > ymin || (yin == ymin && xin <= x && xin > xmin))) ||
          ((c == 330 || c == 370) && yin == y && xin < x && xin > xmin) ||
          ((c == 332 || c == 371) && yin == y && xin > x && xin < xmin));
}


x86 assembly (clang, -O0):
<e_get_sw_cmp>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8d,-0x14(%rbp)
mov    %r9d,-0x18(%rbp)
cmpl   $0x0,0x10(%rbp)
jne    1154 <e_get_sw_cmp+0x54>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jne    1154 <e_get_sw_cmp+0x54>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
cmp    -0xc(%rbp),%eax
jg     1154 <e_get_sw_cmp+0x54>
mov    -0x4(%rbp),%ecx
add    -0x14(%rbp),%ecx
mov    $0x1,%al
cmp    -0xc(%rbp),%ecx
mov    %al,-0x19(%rbp)
jge    12be <e_get_sw_cmp+0x1be>
cmpl   $0x14f,0x10(%rbp)
je     1178 <e_get_sw_cmp+0x78>
cmpl   $0x150,0x10(%rbp)
je     1178 <e_get_sw_cmp+0x78>
cmpl   $0x9,0x10(%rbp)
jne    11be <e_get_sw_cmp+0xbe>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jle    11be <e_get_sw_cmp+0xbe>
mov    -0x8(%rbp),%ecx
mov    $0x1,%al
cmp    -0x18(%rbp),%ecx
mov    %al,-0x19(%rbp)
jl     12be <e_get_sw_cmp+0x1be>
mov    -0x8(%rbp),%eax
cmp    -0x18(%rbp),%eax
jne    11be <e_get_sw_cmp+0xbe>
mov    -0x4(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     11be <e_get_sw_cmp+0xbe>
mov    -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    -0x14(%rbp),%ecx
mov    %al,-0x19(%rbp)
jg     12be <e_get_sw_cmp+0x1be>
cmpl   $0x147,0x10(%rbp)
je     11e2 <e_get_sw_cmp+0xe2>
cmpl   $0x148,0x10(%rbp)
je     11e2 <e_get_sw_cmp+0xe2>
cmpl   $0x1c,0x10(%rbp)
jne    1228 <e_get_sw_cmp+0x128>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1228 <e_get_sw_cmp+0x128>
mov    -0x8(%rbp),%ecx
mov    $0x1,%al
cmp    -0x18(%rbp),%ecx
mov    %al,-0x19(%rbp)
jg     12be <e_get_sw_cmp+0x1be>
mov    -0x8(%rbp),%eax
cmp    -0x18(%rbp),%eax
jne    1228 <e_get_sw_cmp+0x128>
mov    -0x4(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1228 <e_get_sw_cmp+0x128>
mov    -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    -0x14(%rbp),%ecx
mov    %al,-0x19(%rbp)
jg     12be <e_get_sw_cmp+0x1be>
cmpl   $0x14a,0x10(%rbp)
je     1242 <e_get_sw_cmp+0x142>
cmpl   $0x172,0x10(%rbp)
jne    126b <e_get_sw_cmp+0x16b>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jne    126b <e_get_sw_cmp+0x16b>
mov    -0x4(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    126b <e_get_sw_cmp+0x16b>
mov    -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    -0x14(%rbp),%ecx
mov    %al,-0x19(%rbp)
jg     12be <e_get_sw_cmp+0x1be>
cmpl   $0x14c,0x10(%rbp)
je     128a <e_get_sw_cmp+0x18a>
xor    %eax,%eax
cmpl   $0x173,0x10(%rbp)
mov    %al,-0x1a(%rbp)
jne    12b8 <e_get_sw_cmp+0x1b8>
mov    -0x8(%rbp),%ecx
xor    %eax,%eax
cmp    -0x10(%rbp),%ecx
mov    %al,-0x1a(%rbp)
jne    12b8 <e_get_sw_cmp+0x1b8>
mov    -0x4(%rbp),%ecx
xor    %eax,%eax
cmp    -0xc(%rbp),%ecx
mov    %al,-0x1a(%rbp)
jle    12b8 <e_get_sw_cmp+0x1b8>
mov    -0x4(%rbp),%eax
cmp    -0x14(%rbp),%eax
setl   %al
mov    %al,-0x1a(%rbp)
mov    -0x1a(%rbp),%al
mov    %al,-0x19(%rbp)
mov    -0x19(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<e_get_sw_cmp>:
push   %rbx
mov    0x10(%rsp),%r10d
cmp    %ecx,%esi
jne    1125 <e_get_sw_cmp+0x25>
test   %r10d,%r10d
jne    1125 <e_get_sw_cmp+0x25>
lea    -0x1(%rdi),%eax
cmp    %edx,%eax
jg     1125 <e_get_sw_cmp+0x25>
lea    (%r8,%rdi,1),%eax
cmp    %edx,%eax
jl     1125 <e_get_sw_cmp+0x25>
mov    $0x1,%eax
pop    %rbx
ret
lea    -0x147(%r10),%r11d
cmp    $0x2c,%r11d
ja     1181 <e_get_sw_cmp+0x81>
lea    0xec7(%rip),%rax
movslq (%rax,%r11,4),%rbx
add    %rax,%rbx
xor    %eax,%eax
jmp    *%rbx
cmp    %edx,%edi
jge    115a <e_get_sw_cmp+0x5a>
cmp    %ecx,%esi
jne    115a <e_get_sw_cmp+0x5a>
mov    $0x1,%eax
cmp    %r8d,%edi
jg     1210 <e_get_sw_cmp+0x110>
cmp    %edx,%edi
jle    1212 <e_get_sw_cmp+0x112>
cmp    %ecx,%esi
jne    1212 <e_get_sw_cmp+0x112>
mov    $0x0,%eax
cmp    $0x14c,%r10d
je     1206 <e_get_sw_cmp+0x106>
jmp    1210 <e_get_sw_cmp+0x110>
cmp    $0x1c,%r10d
je     11c1 <e_get_sw_cmp+0xc1>
cmp    $0x9,%r10d
jne    1212 <e_get_sw_cmp+0x112>
cmp    %ecx,%esi
jle    11ac <e_get_sw_cmp+0xac>
cmp    %r9d,%esi
jl     111e <e_get_sw_cmp+0x1e>
cmp    %r8d,%edi
jle    11ac <e_get_sw_cmp+0xac>
cmp    %edx,%edi
jg     11ac <e_get_sw_cmp+0xac>
cmp    %r9d,%esi
je     111e <e_get_sw_cmp+0x1e>
cmp    $0x149,%r10d
jg     11e3 <e_get_sw_cmp+0xe3>
cmp    $0x2,%r11d
jb     11c1 <e_get_sw_cmp+0xc1>
cmp    $0x1c,%r10d
jne    1212 <e_get_sw_cmp+0x112>
cmp    %ecx,%esi
jge    1212 <e_get_sw_cmp+0x112>
cmp    %r9d,%esi
jg     111e <e_get_sw_cmp+0x1e>
cmp    %r8d,%edi
jle    1212 <e_get_sw_cmp+0x112>
cmp    %edx,%edi
jg     1212 <e_get_sw_cmp+0x112>
mov    $0x1,%eax
cmp    %r9d,%esi
je     1210 <e_get_sw_cmp+0x110>
jmp    1212 <e_get_sw_cmp+0x112>
cmp    $0x14a,%r10d
je     1144 <e_get_sw_cmp+0x44>
cmp    $0x14c,%r10d
jne    1212 <e_get_sw_cmp+0x112>
cmp    %edx,%edi
jle    1212 <e_get_sw_cmp+0x112>
mov    $0x0,%eax
cmp    %ecx,%esi
jne    1210 <e_get_sw_cmp+0x110>
xor    %eax,%eax
cmp    %r8d,%edi
setl   %al
pop    %rbx
ret
pop    %rbx
ret
xor    %eax,%eax
pop    %rbx
ret

LLVM IR (-O0):
define i32 @e_get_sw_cmp(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6) {
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = 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
store i32 %6, i32* %14
%15 = load i32, i32* %14
%16 = icmp eq i32 %15, 0
br i1 %16, label %17, label %32
17: ; preds = %7
%18 = load i32, i32* %9
%19 = load i32, i32* %11
%20 = icmp eq i32 %18, %19
br i1 %20, label %21, label %32
21: ; preds = %17
%22 = load i32, i32* %8
%23 = sub nsw i32 %22, 1
%24 = load i32, i32* %10
%25 = icmp sle i32 %23, %24
br i1 %25, label %26, label %32
26: ; preds = %21
%27 = load i32, i32* %8
%28 = load i32, i32* %12
%29 = add nsw i32 %27, %28
%30 = load i32, i32* %10
%31 = icmp sge i32 %29, %30
br i1 %31, label %128, label %32
32: ; preds = %26, %21, %17, %7
%33 = load i32, i32* %14
%34 = icmp eq i32 %33, 335
br i1 %34, label %41, label %35
35: ; preds = %32
%36 = load i32, i32* %14
%37 = icmp eq i32 %36, 336
br i1 %37, label %41, label %38
38: ; preds = %35
%39 = load i32, i32* %14
%40 = icmp eq i32 %39, 9
br i1 %40, label %41, label %61
41: ; preds = %38, %35, %32
%42 = load i32, i32* %9
%43 = load i32, i32* %11
%44 = icmp sgt i32 %42, %43
br i1 %44, label %45, label %61
45: ; preds = %41
%46 = load i32, i32* %9
%47 = load i32, i32* %13
%48 = icmp slt i32 %46, %47
br i1 %48, label %128, label %49
49: ; preds = %45
%50 = load i32, i32* %9
%51 = load i32, i32* %13
%52 = icmp eq i32 %50, %51
br i1 %52, label %53, label %61
53: ; preds = %49
%54 = load i32, i32* %8
%55 = load i32, i32* %10
%56 = icmp sle i32 %54, %55
br i1 %56, label %57, label %61
57: ; preds = %53
%58 = load i32, i32* %8
%59 = load i32, i32* %12
%60 = icmp sgt i32 %58, %59
br i1 %60, label %128, label %61
61: ; preds = %57, %53, %49, %41, %38
%62 = load i32, i32* %14
%63 = icmp eq i32 %62, 327
br i1 %63, label %70, label %64
64: ; preds = %61
%65 = load i32, i32* %14
%66 = icmp eq i32 %65, 328
br i1 %66, label %70, label %67
67: ; preds = %64
%68 = load i32, i32* %14
%69 = icmp eq i32 %68, 28
br i1 %69, label %70, label %90
70: ; preds = %67, %64, %61
%71 = load i32, i32* %9
%72 = load i32, i32* %11
%73 = icmp slt i32 %71, %72
br i1 %73, label %74, label %90
74: ; preds = %70
%75 = load i32, i32* %9
%76 = load i32, i32* %13
%77 = icmp sgt i32 %75, %76
br i1 %77, label %128, label %78
78: ; preds = %74
%79 = load i32, i32* %9
%80 = load i32, i32* %13
%81 = icmp eq i32 %79, %80
br i1 %81, label %82, label %90
82: ; preds = %78
%83 = load i32, i32* %8
%84 = load i32, i32* %10
%85 = icmp sle i32 %83, %84
br i1 %85, label %86, label %90
86: ; preds = %82
%87 = load i32, i32* %8
%88 = load i32, i32* %12
%89 = icmp sgt i32 %87, %88
br i1 %89, label %128, label %90
90: ; preds = %86, %82, %78, %70, %67
%91 = load i32, i32* %14
%92 = icmp eq i32 %91, 330
br i1 %92, label %96, label %93
93: ; preds = %90
%94 = load i32, i32* %14
%95 = icmp eq i32 %94, 370
br i1 %95, label %96, label %108
96: ; preds = %93, %90
%97 = load i32, i32* %9
%98 = load i32, i32* %11
%99 = icmp eq i32 %97, %98
br i1 %99, label %100, label %108
100: ; preds = %96
%101 = load i32, i32* %8
%102 = load i32, i32* %10
%103 = icmp slt i32 %101, %102
br i1 %103, label %104, label %108
104: ; preds = %100
%105 = load i32, i32* %8
%106 = load i32, i32* %12
%107 = icmp sgt i32 %105, %106
br i1 %107, label %128, label %108
108: ; preds = %104, %100, %96, %93
%109 = load i32, i32* %14
%110 = icmp eq i32 %109, 332
br i1 %110, label %114, label %111
111: ; preds = %108
%112 = load i32, i32* %14
%113 = icmp eq i32 %112, 371
br i1 %113, label %114, label %126
114: ; preds = %111, %108
%115 = load i32, i32* %9
%116 = load i32, i32* %11
%117 = icmp eq i32 %115, %116
br i1 %117, label %118, label %126
118: ; preds = %114
%119 = load i32, i32* %8
%120 = load i32, i32* %10
%121 = icmp sgt i32 %119, %120
br i1 %121, label %122, label %126
122: ; preds = %118
%123 = load i32, i32* %8
%124 = load i32, i32* %12
%125 = icmp slt i32 %123, %124
br label %126
126: ; preds = %122, %118, %114, %111
%127 = phi i1 [ false, %118 ], [ false, %114 ], [ false, %111 ], [ %125, %122 ]
br label %128
128: ; preds = %126, %104, %86, %74, %57, %45, %26
%129 = phi i1 [ true, %104 ], [ true, %86 ], [ true, %74 ], [ true, %57 ], [ true, %45 ], [ true, %26 ], [ %127, %126 ]
%130 = zext i1 %129 to i32
ret i32 %130
}

LLVM IR (-O2):
define i32 @e_get_sw_cmp(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6) {
%8 = icmp eq i32 %6, 0
%9 = icmp eq i32 %1, %3
%10 = and i1 %9, %8
%11 = xor i1 %10, true
%12 = add nsw i32 %0, -1
%13 = icmp sgt i32 %12, %2
%14 = select i1 %11, i1 true, i1 %13
%15 = add nsw i32 %4, %0
%16 = icmp slt i32 %15, %2
%17 = select i1 %14, i1 true, i1 %16
br i1 %17, label %18, label %57
18: ; preds = %7
switch i32 %6, label %57 [
i32 336, label %19
i32 335, label %19
i32 9, label %19
i32 328, label %30
i32 327, label %30
i32 28, label %30
i32 370, label %41
i32 330, label %41
i32 371, label %51
i32 332, label %51
]
19: ; preds = %18, %18, %18
%20 = icmp sgt i32 %1, %3
br i1 %20, label %21, label %29
21: ; preds = %19
%22 = icmp slt i32 %1, %5
br i1 %22, label %57, label %23
23: ; preds = %21
%24 = icmp eq i32 %1, %5
%25 = icmp sle i32 %0, %2
%26 = and i1 %25, %24
%27 = icmp sgt i32 %0, %4
%28 = and i1 %27, %26
br i1 %28, label %57, label %29
29: ; preds = %23, %19
switch i32 %6, label %57 [
i32 328, label %30
i32 327, label %30
i32 28, label %30
i32 332, label %51
i32 330, label %41
]
30: ; preds = %18, %18, %18, %29, %29, %29
%31 = icmp slt i32 %1, %3
br i1 %31, label %32, label %40
32: ; preds = %30
%33 = icmp sgt i32 %1, %5
br i1 %33, label %57, label %34
34: ; preds = %32
%35 = icmp eq i32 %1, %5
%36 = icmp sle i32 %0, %2
%37 = and i1 %36, %35
%38 = icmp sgt i32 %0, %4
%39 = and i1 %38, %37
br i1 %39, label %57, label %40
40: ; preds = %34, %30
br label %57
41: ; preds = %18, %18, %29
%42 = icmp slt i32 %0, %2
%43 = and i1 %42, %9
%44 = icmp sgt i32 %0, %4
%45 = and i1 %43, %44
br i1 %45, label %57, label %46
46: ; preds = %41
%47 = icmp eq i32 %6, 332
%48 = icmp sgt i32 %0, %2
%49 = and i1 %48, %9
%50 = and i1 %49, %47
br i1 %50, label %54, label %57
51: ; preds = %29, %18, %18
%52 = icmp sgt i32 %0, %2
%53 = and i1 %52, %9
br i1 %53, label %54, label %57
54: ; preds = %46, %51
%55 = icmp slt i32 %0, %4
%56 = zext i1 %55 to i32
br label %57
57: ; preds = %46, %40, %18, %29, %41, %34, %23, %7, %51, %54, %32, %21
%58 = phi i32 [ 1, %32 ], [ 1, %21 ], [ 0, %51 ], [ %56, %54 ], [ 0, %46 ], [ 1, %7 ], [ 1, %23 ], [ 1, %34 ], [ 1, %41 ], [ 0, %40 ], [ 0, %29 ], [ 0, %18 ]
ret i32 %58
}