int glcd_icon5x8(int icon) {
  int icon_char;
  switch (icon) {
  case 0x100:
    icon_char = 0x98;
    break;
  case 0x109:
    icon_char = 0x80;
    break;
  case 0x108:
    icon_char = 0x81;
    break;
  case 0x110:
    icon_char = 0x82;
    break;
  case 0x111:
    icon_char = 0x83;
    break;
  case 0x112:
    icon_char = 0x84;
    break;
  case 0x113:
    icon_char = 0x85;
    break;
  case 0x120:
    icon_char = 0x86;
    break;
  case 0x121:
    icon_char = 0x87;
    break;
  case 0x122:
    icon_char = 0x88;
    break;
  case 0x128:
    icon_char = 0x89;
    break;
  case 0x129:
    icon_char = 0x8a;
    break;
  case 0x130:
    icon_char = 0x8b;
    break;
  case 0x200:
    icon_char = 0x8c;
    break;
  case 0x201:
    icon_char = 0x8d;
    break;
  case 0x202:
    icon_char = 0x89;
    break;
  case 0x203:
    icon_char = 0x8a;
    break;
  case 0x204:
    icon_char = 0xab;
    break;
  case 0x205:
    icon_char = 0xbb;
    break;
  case 0x206:
    icon_char = 0x8e;
    break;
  case 0x207:
    icon_char = 0x8f;
    break;
  case 0x208:
    icon_char = 0xac;
    break;
  default:
    icon_char = -1;
  }
  return icon_char;
}


x86 assembly (clang, -O0):
<glcd_icon5x8>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    -0x4(%rbp),%eax
mov    %eax,-0xc(%rbp)
sub    $0x100,%eax
je     12ac <glcd_icon5x8+0x1ac>
jmp    111d <glcd_icon5x8+0x1d>
mov    -0xc(%rbp),%eax
sub    $0x108,%eax
je     12c4 <glcd_icon5x8+0x1c4>
jmp    1130 <glcd_icon5x8+0x30>
mov    -0xc(%rbp),%eax
sub    $0x109,%eax
je     12b8 <glcd_icon5x8+0x1b8>
jmp    1143 <glcd_icon5x8+0x43>
mov    -0xc(%rbp),%eax
sub    $0x110,%eax
je     12d0 <glcd_icon5x8+0x1d0>
jmp    1156 <glcd_icon5x8+0x56>
mov    -0xc(%rbp),%eax
sub    $0x111,%eax
je     12dc <glcd_icon5x8+0x1dc>
jmp    1169 <glcd_icon5x8+0x69>
mov    -0xc(%rbp),%eax
sub    $0x112,%eax
je     12e8 <glcd_icon5x8+0x1e8>
jmp    117c <glcd_icon5x8+0x7c>
mov    -0xc(%rbp),%eax
sub    $0x113,%eax
je     12f4 <glcd_icon5x8+0x1f4>
jmp    118f <glcd_icon5x8+0x8f>
mov    -0xc(%rbp),%eax
sub    $0x120,%eax
je     1300 <glcd_icon5x8+0x200>
jmp    11a2 <glcd_icon5x8+0xa2>
mov    -0xc(%rbp),%eax
sub    $0x121,%eax
je     130c <glcd_icon5x8+0x20c>
jmp    11b5 <glcd_icon5x8+0xb5>
mov    -0xc(%rbp),%eax
sub    $0x122,%eax
je     1318 <glcd_icon5x8+0x218>
jmp    11c8 <glcd_icon5x8+0xc8>
mov    -0xc(%rbp),%eax
sub    $0x128,%eax
je     1324 <glcd_icon5x8+0x224>
jmp    11db <glcd_icon5x8+0xdb>
mov    -0xc(%rbp),%eax
sub    $0x129,%eax
je     1330 <glcd_icon5x8+0x230>
jmp    11ee <glcd_icon5x8+0xee>
mov    -0xc(%rbp),%eax
sub    $0x130,%eax
je     133c <glcd_icon5x8+0x23c>
jmp    1201 <glcd_icon5x8+0x101>
mov    -0xc(%rbp),%eax
sub    $0x200,%eax
je     1348 <glcd_icon5x8+0x248>
jmp    1214 <glcd_icon5x8+0x114>
mov    -0xc(%rbp),%eax
sub    $0x201,%eax
je     1354 <glcd_icon5x8+0x254>
jmp    1227 <glcd_icon5x8+0x127>
mov    -0xc(%rbp),%eax
sub    $0x202,%eax
je     1360 <glcd_icon5x8+0x260>
jmp    123a <glcd_icon5x8+0x13a>
mov    -0xc(%rbp),%eax
sub    $0x203,%eax
je     136c <glcd_icon5x8+0x26c>
jmp    124d <glcd_icon5x8+0x14d>
mov    -0xc(%rbp),%eax
sub    $0x204,%eax
je     1378 <glcd_icon5x8+0x278>
jmp    1260 <glcd_icon5x8+0x160>
mov    -0xc(%rbp),%eax
sub    $0x205,%eax
je     1384 <glcd_icon5x8+0x284>
jmp    1273 <glcd_icon5x8+0x173>
mov    -0xc(%rbp),%eax
sub    $0x206,%eax
je     1390 <glcd_icon5x8+0x290>
jmp    1286 <glcd_icon5x8+0x186>
mov    -0xc(%rbp),%eax
sub    $0x207,%eax
je     139c <glcd_icon5x8+0x29c>
jmp    1299 <glcd_icon5x8+0x199>
mov    -0xc(%rbp),%eax
sub    $0x208,%eax
je     13a8 <glcd_icon5x8+0x2a8>
jmp    13b4 <glcd_icon5x8+0x2b4>
movl   $0x98,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x80,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x81,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x82,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x83,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x84,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x85,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x86,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x87,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x88,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x89,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x8a,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x8b,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x8c,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x8d,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x89,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x8a,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0xab,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0xbb,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x8e,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0x8f,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0xac,-0x8(%rbp)
jmp    13bb <glcd_icon5x8+0x2bb>
movl   $0xffffffff,-0x8(%rbp)
mov    -0x8(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<glcd_icon5x8>:
lea    -0x100(%rdi),%ecx
cmp    $0x30,%ecx
ja     1126 <glcd_icon5x8+0x26>
mov    $0x98,%eax
lea    0xee9(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x81,%eax
ret
add    $0xfffffe00,%edi
cmp    $0x8,%edi
ja     1153 <glcd_icon5x8+0x53>
lea    0xf8c(%rip),%rax
movslq (%rax,%rdi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
mov    $0x8c,%eax
ret
mov    $0x89,%eax
ret
mov    $0x8a,%eax
ret
mov    $0xffffffff,%eax
ret
mov    $0x80,%eax
ret
mov    $0x82,%eax
ret
mov    $0x83,%eax
ret
mov    $0x84,%eax
ret
mov    $0x85,%eax
ret
mov    $0x86,%eax
ret
mov    $0x87,%eax
ret
mov    $0x88,%eax
ret
mov    $0x8b,%eax
ret
mov    $0x8d,%eax
ret
mov    $0xab,%eax
ret
mov    $0xbb,%eax
ret
mov    $0x8e,%eax
ret
mov    $0x8f,%eax
ret
mov    $0xac,%eax
ret

LLVM IR (-O0):
define i32 @glcd_icon5x8(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %2
%4 = load i32, i32* %2
switch i32 %4, label %27 [
i32 256, label %5
i32 265, label %6
i32 264, label %7
i32 272, label %8
i32 273, label %9
i32 274, label %10
i32 275, label %11
i32 288, label %12
i32 289, label %13
i32 290, label %14
i32 296, label %15
i32 297, label %16
i32 304, label %17
i32 512, label %18
i32 513, label %19
i32 514, label %20
i32 515, label %21
i32 516, label %22
i32 517, label %23
i32 518, label %24
i32 519, label %25
i32 520, label %26
]
5: ; preds = %1
store i32 152, i32* %3
br label %28
6: ; preds = %1
store i32 128, i32* %3
br label %28
7: ; preds = %1
store i32 129, i32* %3
br label %28
8: ; preds = %1
store i32 130, i32* %3
br label %28
9: ; preds = %1
store i32 131, i32* %3
br label %28
10: ; preds = %1
store i32 132, i32* %3
br label %28
11: ; preds = %1
store i32 133, i32* %3
br label %28
12: ; preds = %1
store i32 134, i32* %3
br label %28
13: ; preds = %1
store i32 135, i32* %3
br label %28
14: ; preds = %1
store i32 136, i32* %3
br label %28
15: ; preds = %1
store i32 137, i32* %3
br label %28
16: ; preds = %1
store i32 138, i32* %3
br label %28
17: ; preds = %1
store i32 139, i32* %3
br label %28
18: ; preds = %1
store i32 140, i32* %3
br label %28
19: ; preds = %1
store i32 141, i32* %3
br label %28
20: ; preds = %1
store i32 137, i32* %3
br label %28
21: ; preds = %1
store i32 138, i32* %3
br label %28
22: ; preds = %1
store i32 171, i32* %3
br label %28
23: ; preds = %1
store i32 187, i32* %3
br label %28
24: ; preds = %1
store i32 142, i32* %3
br label %28
25: ; preds = %1
store i32 143, i32* %3
br label %28
26: ; preds = %1
store i32 172, i32* %3
br label %28
27: ; preds = %1
store i32 -1, i32* %3
br label %28
28: ; preds = %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5
%29 = load i32, i32* %3
ret i32 %29
}

LLVM IR (-O2):
define i32 @glcd_icon5x8(i32 %0) {
switch i32 %0, label %23 [
i32 256, label %24
i32 265, label %2
i32 264, label %3
i32 272, label %4
i32 273, label %5
i32 274, label %6
i32 275, label %7
i32 288, label %8
i32 289, label %9
i32 290, label %10
i32 296, label %11
i32 297, label %12
i32 304, label %13
i32 512, label %14
i32 513, label %15
i32 514, label %16
i32 515, label %17
i32 516, label %18
i32 517, label %19
i32 518, label %20
i32 519, label %21
i32 520, label %22
]
2: ; preds = %1
br label %24
3: ; preds = %1
br label %24
4: ; preds = %1
br label %24
5: ; preds = %1
br label %24
6: ; preds = %1
br label %24
7: ; preds = %1
br label %24
8: ; preds = %1
br label %24
9: ; preds = %1
br label %24
10: ; preds = %1
br label %24
11: ; preds = %1
br label %24
12: ; preds = %1
br label %24
13: ; preds = %1
br label %24
14: ; preds = %1
br label %24
15: ; preds = %1
br label %24
16: ; preds = %1
br label %24
17: ; preds = %1
br label %24
18: ; preds = %1
br label %24
19: ; preds = %1
br label %24
20: ; preds = %1
br label %24
21: ; preds = %1
br label %24
22: ; preds = %1
br label %24
23: ; preds = %1
br label %24
24: ; preds = %1, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2
%25 = phi i32 [ -1, %23 ], [ 172, %22 ], [ 143, %21 ], [ 142, %20 ], [ 187, %19 ], [ 171, %18 ], [ 138, %17 ], [ 137, %16 ], [ 141, %15 ], [ 140, %14 ], [ 139, %13 ], [ 138, %12 ], [ 137, %11 ], [ 136, %10 ], [ 135, %9 ], [ 134, %8 ], [ 133, %7 ], [ 132, %6 ], [ 131, %5 ], [ 130, %4 ], [ 129, %3 ], [ 128, %2 ], [ 152, %1 ]
ret i32 %25
}