char *atom2human_type(int type) {
  switch (type) {
  case 0x766F6F6D:
    return ("Information sections");
  case 0x6468766D:
    return ("Movie header");
  case 0x6169646D:
    return ("Media stream");
  case 0x64686D76:
    return ("Video media header");
  case 0x64686D73:
    return ("Sound media header");
  case 0x6468646D:
    return ("Media header");
  case 0x666E696D:
    return ("Media information");
  case 0x726C6468:
    return ("Handler reference");
  case 0x6B617274:
    return ("New track (stream)");
  case 0x75716D72:
    return ("rmqu");
  case 0x65657266:
    return ("free");
  case 0x64686B74:
    return ("Track header");
  case 0x61746475:
    return ("User data");
  case 0x7461646D:
    return ("Movie data");
  case 0x6C627473:
    return ("Sample information table");
  case 0x64737473:
    return ("Sample description");
  case 0x6F637473:
    return ("Chunk offset table");
  case 0x73747473:
    return ("Sample time table");
  case 0x63737473:
    return ("Sample->Chunk mapping table");
  case 0x7A737473:
    return ("Sample size table");
  }
  return ("unknown");
}


x86 assembly (clang, -O0):
<atom2human_type>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
sub    $0x6169646d,%eax
je     12a6 <atom2human_type+0x1a6>
jmp    111d <atom2human_type+0x1d>
mov    -0x10(%rbp),%eax
sub    $0x61746475,%eax
je     1346 <atom2human_type+0x246>
jmp    1130 <atom2human_type+0x30>
mov    -0x10(%rbp),%eax
sub    $0x63737473,%eax
je     13a6 <atom2human_type+0x2a6>
jmp    1143 <atom2human_type+0x43>
mov    -0x10(%rbp),%eax
sub    $0x6468646d,%eax
je     12d6 <atom2human_type+0x1d6>
jmp    1156 <atom2human_type+0x56>
mov    -0x10(%rbp),%eax
sub    $0x64686b74,%eax
je     1336 <atom2human_type+0x236>
jmp    1169 <atom2human_type+0x69>
mov    -0x10(%rbp),%eax
sub    $0x64686d73,%eax
je     12c6 <atom2human_type+0x1c6>
jmp    117c <atom2human_type+0x7c>
mov    -0x10(%rbp),%eax
sub    $0x64686d76,%eax
je     12b6 <atom2human_type+0x1b6>
jmp    118f <atom2human_type+0x8f>
mov    -0x10(%rbp),%eax
sub    $0x6468766d,%eax
je     1296 <atom2human_type+0x196>
jmp    11a2 <atom2human_type+0xa2>
mov    -0x10(%rbp),%eax
sub    $0x64737473,%eax
je     1376 <atom2human_type+0x276>
jmp    11b5 <atom2human_type+0xb5>
mov    -0x10(%rbp),%eax
sub    $0x65657266,%eax
je     1326 <atom2human_type+0x226>
jmp    11c8 <atom2human_type+0xc8>
mov    -0x10(%rbp),%eax
sub    $0x666e696d,%eax
je     12e6 <atom2human_type+0x1e6>
jmp    11db <atom2human_type+0xdb>
mov    -0x10(%rbp),%eax
sub    $0x6b617274,%eax
je     1306 <atom2human_type+0x206>
jmp    11ee <atom2human_type+0xee>
mov    -0x10(%rbp),%eax
sub    $0x6c627473,%eax
je     1366 <atom2human_type+0x266>
jmp    1201 <atom2human_type+0x101>
mov    -0x10(%rbp),%eax
sub    $0x6f637473,%eax
je     1386 <atom2human_type+0x286>
jmp    1214 <atom2human_type+0x114>
mov    -0x10(%rbp),%eax
sub    $0x726c6468,%eax
je     12f6 <atom2human_type+0x1f6>
jmp    1227 <atom2human_type+0x127>
mov    -0x10(%rbp),%eax
sub    $0x73747473,%eax
je     1396 <atom2human_type+0x296>
jmp    123a <atom2human_type+0x13a>
mov    -0x10(%rbp),%eax
sub    $0x7461646d,%eax
je     1356 <atom2human_type+0x256>
jmp    124d <atom2human_type+0x14d>
mov    -0x10(%rbp),%eax
sub    $0x75716d72,%eax
je     1316 <atom2human_type+0x216>
jmp    1260 <atom2human_type+0x160>
mov    -0x10(%rbp),%eax
sub    $0x766f6f6d,%eax
je     1286 <atom2human_type+0x186>
jmp    1273 <atom2human_type+0x173>
mov    -0x10(%rbp),%eax
sub    $0x7a737473,%eax
je     13b6 <atom2human_type+0x2b6>
jmp    13c6 <atom2human_type+0x2c6>
lea    0xd73(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd78(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd75(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd72(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd75(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd78(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd75(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd77(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd79(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd7c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd71(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd66(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd63(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd5d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd58(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd61(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd64(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd67(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd69(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd75(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d1 <atom2human_type+0x2d1>
lea    0xd77(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<atom2human_type>:
cmp    $0x666e696c,%edi
jg     1148 <atom2human_type+0x48>
cmp    $0x64686d72,%edi
jg     1188 <atom2human_type+0x88>
cmp    $0x63737472,%edi
jle    11f8 <atom2human_type+0xf8>
cmp    $0x63737473,%edi
je     126c <atom2human_type+0x16c>
cmp    $0x6468646d,%edi
je     1274 <atom2human_type+0x174>
cmp    $0x64686b74,%edi
jne    12cc <atom2human_type+0x1cc>
lea    0xf5c(%rip),%rax
ret
cmp    $0x73747472,%edi
jg     11c0 <atom2human_type+0xc0>
cmp    $0x6c627472,%edi
jle    1218 <atom2human_type+0x118>
cmp    $0x6c627473,%edi
je     127c <atom2human_type+0x17c>
cmp    $0x6f637473,%edi
je     1284 <atom2human_type+0x184>
cmp    $0x726c6468,%edi
jne    12cc <atom2human_type+0x1cc>
lea    0xeed(%rip),%rax
ret
cmp    $0x6468766c,%edi
jle    1238 <atom2human_type+0x138>
cmp    $0x6468766d,%edi
je     128c <atom2human_type+0x18c>
cmp    $0x64737473,%edi
je     1294 <atom2human_type+0x194>
cmp    $0x65657266,%edi
jne    12cc <atom2human_type+0x1cc>
lea    0xedf(%rip),%rax
ret
cmp    $0x75716d71,%edi
jle    1254 <atom2human_type+0x154>
cmp    $0x75716d72,%edi
je     129c <atom2human_type+0x19c>
cmp    $0x766f6f6d,%edi
je     12a4 <atom2human_type+0x1a4>
cmp    $0x7a737473,%edi
jne    12cc <atom2human_type+0x1cc>
lea    0xf3b(%rip),%rax
ret
cmp    $0x6169646d,%edi
je     12ac <atom2human_type+0x1ac>
cmp    $0x61746475,%edi
jne    12cc <atom2human_type+0x1cc>
lea    0xe99(%rip),%rax
ret
cmp    $0x666e696d,%edi
je     12b4 <atom2human_type+0x1b4>
cmp    $0x6b617274,%edi
jne    12cc <atom2human_type+0x1cc>
lea    0xe4f(%rip),%rax
ret
cmp    $0x64686d73,%edi
je     12bc <atom2human_type+0x1bc>
cmp    $0x64686d76,%edi
jne    12cc <atom2human_type+0x1cc>
lea    0xddc(%rip),%rax
ret
cmp    $0x73747473,%edi
je     12c4 <atom2human_type+0x1c4>
cmp    $0x7461646d,%edi
jne    12cc <atom2human_type+0x1cc>
lea    0xe4f(%rip),%rax
ret
lea    0xea3(%rip),%rax
ret
lea    0xdda(%rip),%rax
ret
lea    0xe42(%rip),%rax
ret
lea    0xe66(%rip),%rax
ret
lea    0xd82(%rip),%rax
ret
lea    0xe43(%rip),%rax
ret
lea    0xdf6(%rip),%rax
ret
lea    0xd55(%rip),%rax
ret
lea    0xd6f(%rip),%rax
ret
lea    0xda7(%rip),%rax
ret
lea    0xd7f(%rip),%rax
ret
lea    0xe39(%rip),%rax
ret
lea    0xe71(%rip),%rax
ret

LLVM IR (-O0):
@.str = [21 x i8] c"Information sections\00"
@.str.1 = [13 x i8] c"Movie header\00"
@.str.2 = [13 x i8] c"Media stream\00"
@.str.3 = [19 x i8] c"Video media header\00"
@.str.4 = [19 x i8] c"Sound media header\00"
@.str.5 = [13 x i8] c"Media header\00"
@.str.6 = [18 x i8] c"Media information\00"
@.str.7 = [18 x i8] c"Handler reference\00"
@.str.8 = [19 x i8] c"New track (stream)\00"
@.str.9 = [5 x i8] c"rmqu\00"
@.str.10 = [5 x i8] c"free\00"
@.str.11 = [13 x i8] c"Track header\00"
@.str.12 = [10 x i8] c"User data\00"
@.str.13 = [11 x i8] c"Movie data\00"
@.str.14 = [25 x i8] c"Sample information table\00"
@.str.15 = [19 x i8] c"Sample description\00"
@.str.16 = [19 x i8] c"Chunk offset table\00"
@.str.17 = [18 x i8] c"Sample time table\00"
@.str.18 = [28 x i8] c"Sample->Chunk mapping table\00"
@.str.19 = [18 x i8] c"Sample size table\00"
@.str.20 = [8 x i8] c"unknown\00"
define i8* @atom2human_type(i32 %0) {
%2 = alloca i8*
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %25 [
i32 1987014509, label %5
i32 1684567661, label %6
i32 1634296941, label %7
i32 1684565366, label %8
i32 1684565363, label %9
i32 1684563053, label %10
i32 1718511981, label %11
i32 1919706216, label %12
i32 1801548404, label %13
i32 1970367858, label %14
i32 1701147238, label %15
i32 1684564852, label %16
i32 1635017845, label %17
i32 1952539757, label %18
i32 1818391667, label %19
i32 1685288051, label %20
i32 1868788851, label %21
i32 1937011827, label %22
i32 1668510835, label %23
i32 2054386803, label %24
]
5: ; preds = %1
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0), i8** %2
br label %26
6: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %26
7: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %26
8: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %26
9: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %26
10: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %26
11: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %26
12: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %26
13: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %26
14: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %26
15: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %26
16: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %26
17: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %26
18: ; preds = %1
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %26
19: ; preds = %1
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %26
20: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %26
21: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %26
22: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %26
23: ; preds = %1
store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %26
24: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %26
25: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %26
26: ; preds = %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5
%27 = load i8*, i8** %2
ret i8* %27
}

LLVM IR (-O2):
@.str = [21 x i8] c"Information sections\00"
@.str.1 = [13 x i8] c"Movie header\00"
@.str.2 = [13 x i8] c"Media stream\00"
@.str.3 = [19 x i8] c"Video media header\00"
@.str.4 = [19 x i8] c"Sound media header\00"
@.str.5 = [13 x i8] c"Media header\00"
@.str.6 = [18 x i8] c"Media information\00"
@.str.7 = [18 x i8] c"Handler reference\00"
@.str.8 = [19 x i8] c"New track (stream)\00"
@.str.9 = [5 x i8] c"rmqu\00"
@.str.10 = [5 x i8] c"free\00"
@.str.11 = [13 x i8] c"Track header\00"
@.str.12 = [10 x i8] c"User data\00"
@.str.13 = [11 x i8] c"Movie data\00"
@.str.14 = [25 x i8] c"Sample information table\00"
@.str.15 = [19 x i8] c"Sample description\00"
@.str.16 = [19 x i8] c"Chunk offset table\00"
@.str.17 = [18 x i8] c"Sample time table\00"
@.str.18 = [28 x i8] c"Sample->Chunk mapping table\00"
@.str.19 = [18 x i8] c"Sample size table\00"
@.str.20 = [8 x i8] c"unknown\00"
define i8* @atom2human_type(i32 %0) {
switch i32 %0, label %21 [
i32 1987014509, label %22
i32 1684567661, label %2
i32 1634296941, label %3
i32 1684565366, label %4
i32 1684565363, label %5
i32 1684563053, label %6
i32 1718511981, label %7
i32 1919706216, label %8
i32 1801548404, label %9
i32 1970367858, label %10
i32 1701147238, label %11
i32 1684564852, label %12
i32 1635017845, label %13
i32 1952539757, label %14
i32 1818391667, label %15
i32 1685288051, label %16
i32 1868788851, label %17
i32 1937011827, label %18
i32 1668510835, label %19
i32 2054386803, label %20
]
2: ; preds = %1
br label %22
3: ; preds = %1
br label %22
4: ; preds = %1
br label %22
5: ; preds = %1
br label %22
6: ; preds = %1
br label %22
7: ; preds = %1
br label %22
8: ; preds = %1
br label %22
9: ; preds = %1
br label %22
10: ; preds = %1
br label %22
11: ; preds = %1
br label %22
12: ; preds = %1
br label %22
13: ; preds = %1
br label %22
14: ; preds = %1
br label %22
15: ; preds = %1
br label %22
16: ; preds = %1
br label %22
17: ; preds = %1
br label %22
18: ; preds = %1
br label %22
19: ; preds = %1
br label %22
20: ; preds = %1
br label %22
21: ; preds = %1
br label %22
22: ; preds = %1, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2
%23 = phi i8* [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.20, i64 0, i64 0), %21 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), %20 ], [ getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), %19 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.17, i64 0, i64 0), %18 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0), %17 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.15, i64 0, i64 0), %16 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.14, i64 0, i64 0), %15 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), %14 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), %13 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), %12 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), %11 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), %10 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.8, i64 0, i64 0), %9 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), %8 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), %7 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i64 0, i64 0), %6 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), %5 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0), %4 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), %3 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0), %2 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0), %1 ]
ret i8* %23
}