int is_linear(const int symbology) {
  int result = 0;
  switch (symbology) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 6:
  case 7:
  case 8:
  case 9:
  case 13:
  case 14:
  case 16:
  case 18:
  case 20:
  case 21:
  case 22:
  case 25:
  case 28:
  case 29:
  case 30:
  case 31:
  case 32:
  case 34:
  case 35:
  case 37:
  case 38:
  case 47:
  case 49:
  case 50:
  case 51:
  case 52:
  case 60:
  case 69:
  case 72:
  case 75:
  case 77:
  case 85:
  case 86:
  case 87:
  case 89:
  case 98:
  case 99:
  case 129:
  case 130:
  case 131:
  case 132:
  case 133:
  case 134:
  case 135:
  case 136:
  case 140:
  case 73:
  case 96:
    result = 1;
    break;
  }
  return result;
}


x86 assembly (clang, -O0):
<is_linear>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
mov    -0x4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0x8b,%eax
ja     1140 <is_linear+0x40>
mov    -0x10(%rbp),%rax
lea    0xed0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<is_linear>:
xor    %eax,%eax
add    $0xffffffff,%edi
cmp    $0x8b,%edi
ja     1122 <is_linear+0x22>
lea    0xeec(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
mov    $0x1,%eax
ret

LLVM IR (-O0):
define i32 @is_linear(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %2
store i32 0, i32* %3
%4 = load i32, i32* %2
switch i32 %4, label %6 [
i32 1, label %5
i32 2, label %5
i32 3, label %5
i32 4, label %5
i32 6, label %5
i32 7, label %5
i32 8, label %5
i32 9, label %5
i32 13, label %5
i32 14, label %5
i32 16, label %5
i32 18, label %5
i32 20, label %5
i32 21, label %5
i32 22, label %5
i32 25, label %5
i32 28, label %5
i32 29, label %5
i32 30, label %5
i32 31, label %5
i32 32, label %5
i32 34, label %5
i32 35, label %5
i32 37, label %5
i32 38, label %5
i32 47, label %5
i32 49, label %5
i32 50, label %5
i32 51, label %5
i32 52, label %5
i32 60, label %5
i32 69, label %5
i32 72, label %5
i32 75, label %5
i32 77, label %5
i32 85, label %5
i32 86, label %5
i32 87, label %5
i32 89, label %5
i32 98, label %5
i32 99, label %5
i32 129, label %5
i32 130, label %5
i32 131, label %5
i32 132, label %5
i32 133, label %5
i32 134, label %5
i32 135, label %5
i32 136, label %5
i32 140, label %5
i32 73, label %5
i32 96, label %5
]
5: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i32 1, i32* %3
br label %6
6: ; preds = %1, %5
%7 = load i32, i32* %3
ret i32 %7
}

LLVM IR (-O2):
define i32 @is_linear(i32 %0) {
switch i32 %0, label %3 [
i32 1, label %2
i32 2, label %2
i32 3, label %2
i32 4, label %2
i32 6, label %2
i32 7, label %2
i32 8, label %2
i32 9, label %2
i32 13, label %2
i32 14, label %2
i32 16, label %2
i32 18, label %2
i32 20, label %2
i32 21, label %2
i32 22, label %2
i32 25, label %2
i32 28, label %2
i32 29, label %2
i32 30, label %2
i32 31, label %2
i32 32, label %2
i32 34, label %2
i32 35, label %2
i32 37, label %2
i32 38, label %2
i32 47, label %2
i32 49, label %2
i32 50, label %2
i32 51, label %2
i32 52, label %2
i32 60, label %2
i32 69, label %2
i32 72, label %2
i32 75, label %2
i32 77, label %2
i32 85, label %2
i32 86, label %2
i32 87, label %2
i32 89, label %2
i32 98, label %2
i32 99, label %2
i32 129, label %2
i32 130, label %2
i32 131, label %2
i32 132, label %2
i32 133, label %2
i32 134, label %2
i32 135, label %2
i32 136, label %2
i32 140, label %2
i32 73, label %2
i32 96, label %2
]
2: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
br label %3
3: ; preds = %1, %2
%4 = phi i32 [ 0, %1 ], [ 1, %2 ]
ret i32 %4
}