iscntl(t) {
  static int tab[] = {270, 264, 282, 267, 272, 269, 0};
  int i;
  for (i = 0; tab[i]; i++)
    if (t == tab[i])
      break;
  return tab[i];
}


x86 assembly (clang, -O0):
<iscntl>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
movslq -0x8(%rbp),%rcx
lea    0x2f17(%rip),%rax
cmpl   $0x0,(%rax,%rcx,4)
je     1152 <iscntl+0x52>
mov    -0x4(%rbp),%eax
movslq -0x8(%rbp),%rdx
lea    0x2eff(%rip),%rcx
cmp    (%rcx,%rdx,4),%eax
jne    113f <iscntl+0x3f>
jmp    1152 <iscntl+0x52>
jmp    1144 <iscntl+0x44>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    110e <iscntl+0xe>
movslq -0x8(%rbp),%rcx
lea    0x2ed3(%rip),%rax
mov    (%rax,%rcx,4),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<iscntl>:
add    $0xfffffef8,%edi
cmp    $0x12,%edi
ja     112c <iscntl+0x2c>
lea    0xf3e(%rip),%rax
lea    0xee7(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
lea    0xf2b(%rip),%rax
mov    (%rax),%eax
ret
lea    0xf35(%rip),%rax
mov    (%rax),%eax
ret
lea    0xf1f(%rip),%rax
mov    (%rax),%eax
ret
lea    0xf1d(%rip),%rax
mov    (%rax),%eax
ret
lea    0xf0f(%rip),%rax
mov    (%rax),%eax
ret
lea    0xefd(%rip),%rax
mov    (%rax),%eax
ret

LLVM IR (-O0):
@iscntl.tab = internal global [7 x i32] [i32 270, i32 264, i32 282, i32 267, i32 272, i32 269, i32 0]
define i32 @iscntl(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %2
store i32 0, i32* %3
br label %4
4: ; preds = %19, %1
%5 = load i32, i32* %3
%6 = sext i32 %5 to i64
%7 = getelementptr inbounds [7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 %6
%8 = load i32, i32* %7
%9 = icmp ne i32 %8, 0
br i1 %9, label %10, label %22
10: ; preds = %4
%11 = load i32, i32* %2
%12 = load i32, i32* %3
%13 = sext i32 %12 to i64
%14 = getelementptr inbounds [7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 %13
%15 = load i32, i32* %14
%16 = icmp eq i32 %11, %15
br i1 %16, label %17, label %18
17: ; preds = %10
br label %22
18: ; preds = %10
br label %19
19: ; preds = %18
%20 = load i32, i32* %3
%21 = add nsw i32 %20, 1
store i32 %21, i32* %3
br label %4
22: ; preds = %17, %4
%23 = load i32, i32* %3
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds [7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 %24
%26 = load i32, i32* %25
ret i32 %26
}

LLVM IR (-O2):
@iscntl.tab = internal unnamed_addr constant [7 x i32] [i32 270, i32 264, i32 282, i32 267, i32 272, i32 269, i32 0]
define i32 @iscntl(i32 %0) {
switch i32 %0, label %2 [
i32 270, label %8
i32 264, label %3
i32 282, label %4
i32 267, label %5
i32 272, label %6
i32 269, label %7
]
2: ; preds = %1
br label %8
3: ; preds = %1
br label %8
4: ; preds = %1
br label %8
5: ; preds = %1
br label %8
6: ; preds = %1
br label %8
7: ; preds = %1
br label %8
8: ; preds = %1, %7, %6, %5, %4, %3, %2
%9 = phi i32* [ getelementptr inbounds ([7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 0), %1 ], [ getelementptr inbounds ([7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 6), %2 ], [ getelementptr inbounds ([7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 1), %3 ], [ getelementptr inbounds ([7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 2), %4 ], [ getelementptr inbounds ([7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 3), %5 ], [ getelementptr inbounds ([7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 4), %6 ], [ getelementptr inbounds ([7 x i32], [7 x i32]* @iscntl.tab, i64 0, i64 5), %7 ]
%10 = load i32, i32* %9
ret i32 %10
}