int is_marker_valid(const unsigned int marker) {
  switch (marker) {
  case 0xc0:
  case 0xc1:
  case 0xc2:
  case 0xc3:
  case 0xc4:
  case 0xc5:
  case 0xc6:
  case 0xc7:
  case 0xc8:
  case 0xc9:
  case 0xca:
  case 0xcb:
  case 0xcc:
  case 0xcd:
  case 0xce:
  case 0xcf:
  case 0xdb:
  case 0xdd:
  case 0xe0 ... 0xef:
  case 0xfe:
  case 0xff:
    return 1;
  default:
    return 0;
  }
}


x86 assembly (clang, -O0):
<is_marker_valid>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
add    $0xffffff40,%eax
sub    $0x10,%eax
jb     1172 <is_marker_valid+0x72>
jmp    1120 <is_marker_valid+0x20>
mov    -0xc(%rbp),%eax
sub    $0xdb,%eax
je     1172 <is_marker_valid+0x72>
jmp    1133 <is_marker_valid+0x33>
mov    -0xc(%rbp),%eax
sub    $0xdd,%eax
je     1172 <is_marker_valid+0x72>
jmp    1146 <is_marker_valid+0x46>
mov    -0xc(%rbp),%eax
add    $0xffffff20,%eax
sub    $0x10,%eax
jb     1177 <is_marker_valid+0x77>
jmp    115c <is_marker_valid+0x5c>
mov    -0xc(%rbp),%eax
add    $0xffffff02,%eax
sub    $0x2,%eax
jb     117c <is_marker_valid+0x7c>
jmp    1188 <is_marker_valid+0x88>
jmp    1177 <is_marker_valid+0x77>
jmp    117c <is_marker_valid+0x7c>
movl   $0x1,-0x4(%rbp)
jmp    118f <is_marker_valid+0x8f>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<is_marker_valid>:
add    $0xffffff40,%edi
xor    %eax,%eax
cmp    $0x3f,%edi
ja     111a <is_marker_valid+0x1a>
movslq %edi,%rax
lea    0xee9(%rip),%rcx
mov    (%rcx,%rax,4),%eax
ret

LLVM IR (-O0):
define i32 @is_marker_valid(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %8 [
i32 192, label %5
i32 193, label %5
i32 194, label %5
i32 195, label %5
i32 196, label %5
i32 197, label %5
i32 198, label %5
i32 199, label %5
i32 200, label %5
i32 201, label %5
i32 202, label %5
i32 203, label %5
i32 204, label %5
i32 205, label %5
i32 206, label %5
i32 207, label %5
i32 219, label %5
i32 221, label %5
i32 254, label %7
i32 255, label %7
i32 224, label %6
i32 225, label %6
i32 226, label %6
i32 227, label %6
i32 228, label %6
i32 229, label %6
i32 230, label %6
i32 231, label %6
i32 232, label %6
i32 233, label %6
i32 234, label %6
i32 235, label %6
i32 236, label %6
i32 237, label %6
i32 238, label %6
i32 239, label %6
]
5: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
br label %6
6: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %5
br label %7
7: ; preds = %1, %1, %6
store i32 1, i32* %2
br label %9
8: ; preds = %1
store i32 0, i32* %2
br label %9
9: ; preds = %8, %7
%10 = load i32, i32* %2
ret i32 %10
}

LLVM IR (-O2):
@switch.table.is_marker_valid = [64 x i32] [i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1]
define i32 @is_marker_valid(i32 %0) {
%2 = add i32 %0, -192
%3 = icmp ult i32 %2, 64
br i1 %3, label %4, label %8
4: ; preds = %1
%5 = sext i32 %2 to i64
%6 = getelementptr inbounds [64 x i32], [64 x i32]* @switch.table.is_marker_valid, i64 0, i64 %5
%7 = load i32, i32* %6
br label %8
8: ; preds = %1, %4
%9 = phi i32 [ %7, %4 ], [ 0, %1 ]
ret i32 %9
}