int iso8859_to_atari(int ch) {
  switch (ch) {
  case 244:
    return 147;
  case 246:
    return 148;
  case 214:
    return 153;
  case 198:
    return 146;
  case 230:
    return 145;
  case 201:
    return 144;
  case 197:
    return 143;
  case 196:
    return 142;
  case 231:
    return 135;
  case 234:
    return 136;
  case 235:
    return 137;
  case 232:
    return 138;
  case 239:
    return 139;
  case 238:
    return 140;
  case 236:
    return 141;
  case 251:
    return 150;
  case 249:
    return 151;
  case 255:
    return 152;
  case 220:
    return 154;
  case 223:
    return 158;
  case 192:
    return 182;
  case 169:
    return 189;
  case 174:
    return 190;
  case 229:
    return 134;
  case 224:
    return 133;
  case 228:
    return 132;
  case 226:
    return 131;
  case 233:
    return 130;
  case 252:
    return 129;
  case 199:
    return 128;
  default:
    return ch;
  }
}


x86 assembly (clang, -O0):
<iso8859_to_atari>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0xffffff57,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0x56,%eax
ja     129a <iso8859_to_atari+0x19a>
mov    -0x10(%rbp),%rax
lea    0xed7(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x93,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x94,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x99,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x92,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x91,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x90,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x8f,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x8e,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x87,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x88,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x89,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x8a,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x8b,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x8c,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x8d,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x96,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x97,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x98,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x9a,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x9e,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0xb6,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0xbd,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0xbe,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x86,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x85,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x84,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x83,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x82,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x81,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
movl   $0x80,-0x4(%rbp)
jmp    12a0 <iso8859_to_atari+0x1a0>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<iso8859_to_atari>:
lea    -0xa9(%rdi),%ecx
cmp    $0x56,%ecx
ja     1126 <iso8859_to_atari+0x26>
mov    $0x93,%eax
lea    0xee9(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xbd,%eax
ret
mov    %edi,%eax
ret
mov    $0xbe,%eax
ret
mov    $0xb6,%eax
ret
mov    $0x8e,%eax
ret
mov    $0x8f,%eax
ret
mov    $0x92,%eax
ret
mov    $0x80,%eax
ret
mov    $0x90,%eax
ret
mov    $0x99,%eax
ret
mov    $0x9a,%eax
ret
mov    $0x9e,%eax
ret
mov    $0x85,%eax
ret
mov    $0x83,%eax
ret
mov    $0x84,%eax
ret
mov    $0x86,%eax
ret
mov    $0x91,%eax
ret
mov    $0x87,%eax
ret
mov    $0x8a,%eax
ret
mov    $0x82,%eax
ret
mov    $0x88,%eax
ret
mov    $0x89,%eax
ret
mov    $0x8d,%eax
ret
mov    $0x8c,%eax
ret
mov    $0x8b,%eax
ret
mov    $0x94,%eax
ret
mov    $0x97,%eax
ret
mov    $0x96,%eax
ret
mov    $0x81,%eax
ret
mov    $0x98,%eax
ret

LLVM IR (-O0):
define i32 @iso8859_to_atari(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %35 [
i32 244, label %5
i32 246, label %6
i32 214, label %7
i32 198, label %8
i32 230, label %9
i32 201, label %10
i32 197, label %11
i32 196, label %12
i32 231, label %13
i32 234, label %14
i32 235, label %15
i32 232, label %16
i32 239, label %17
i32 238, label %18
i32 236, label %19
i32 251, label %20
i32 249, label %21
i32 255, label %22
i32 220, label %23
i32 223, label %24
i32 192, label %25
i32 169, label %26
i32 174, label %27
i32 229, label %28
i32 224, label %29
i32 228, label %30
i32 226, label %31
i32 233, label %32
i32 252, label %33
i32 199, label %34
]
5: ; preds = %1
store i32 147, i32* %2
br label %37
6: ; preds = %1
store i32 148, i32* %2
br label %37
7: ; preds = %1
store i32 153, i32* %2
br label %37
8: ; preds = %1
store i32 146, i32* %2
br label %37
9: ; preds = %1
store i32 145, i32* %2
br label %37
10: ; preds = %1
store i32 144, i32* %2
br label %37
11: ; preds = %1
store i32 143, i32* %2
br label %37
12: ; preds = %1
store i32 142, i32* %2
br label %37
13: ; preds = %1
store i32 135, i32* %2
br label %37
14: ; preds = %1
store i32 136, i32* %2
br label %37
15: ; preds = %1
store i32 137, i32* %2
br label %37
16: ; preds = %1
store i32 138, i32* %2
br label %37
17: ; preds = %1
store i32 139, i32* %2
br label %37
18: ; preds = %1
store i32 140, i32* %2
br label %37
19: ; preds = %1
store i32 141, i32* %2
br label %37
20: ; preds = %1
store i32 150, i32* %2
br label %37
21: ; preds = %1
store i32 151, i32* %2
br label %37
22: ; preds = %1
store i32 152, i32* %2
br label %37
23: ; preds = %1
store i32 154, i32* %2
br label %37
24: ; preds = %1
store i32 158, i32* %2
br label %37
25: ; preds = %1
store i32 182, i32* %2
br label %37
26: ; preds = %1
store i32 189, i32* %2
br label %37
27: ; preds = %1
store i32 190, i32* %2
br label %37
28: ; preds = %1
store i32 134, i32* %2
br label %37
29: ; preds = %1
store i32 133, i32* %2
br label %37
30: ; preds = %1
store i32 132, i32* %2
br label %37
31: ; preds = %1
store i32 131, i32* %2
br label %37
32: ; preds = %1
store i32 130, i32* %2
br label %37
33: ; preds = %1
store i32 129, i32* %2
br label %37
34: ; preds = %1
store i32 128, i32* %2
br label %37
35: ; preds = %1
%36 = load i32, i32* %3
store i32 %36, i32* %2
br label %37
37: ; preds = %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5
%38 = load i32, i32* %2
ret i32 %38
}

LLVM IR (-O2):
define i32 @iso8859_to_atari(i32 %0) {
switch i32 %0, label %31 [
i32 244, label %32
i32 246, label %2
i32 214, label %3
i32 198, label %4
i32 230, label %5
i32 201, label %6
i32 197, label %7
i32 196, label %8
i32 231, label %9
i32 234, label %10
i32 235, label %11
i32 232, label %12
i32 239, label %13
i32 238, label %14
i32 236, label %15
i32 251, label %16
i32 249, label %17
i32 255, label %18
i32 220, label %19
i32 223, label %20
i32 192, label %21
i32 169, label %22
i32 174, label %23
i32 229, label %24
i32 224, label %25
i32 228, label %26
i32 226, label %27
i32 233, label %28
i32 252, label %29
i32 199, label %30
]
2: ; preds = %1
br label %32
3: ; preds = %1
br label %32
4: ; preds = %1
br label %32
5: ; preds = %1
br label %32
6: ; preds = %1
br label %32
7: ; preds = %1
br label %32
8: ; preds = %1
br label %32
9: ; preds = %1
br label %32
10: ; preds = %1
br label %32
11: ; preds = %1
br label %32
12: ; preds = %1
br label %32
13: ; preds = %1
br label %32
14: ; preds = %1
br label %32
15: ; preds = %1
br label %32
16: ; preds = %1
br label %32
17: ; preds = %1
br label %32
18: ; preds = %1
br label %32
19: ; preds = %1
br label %32
20: ; preds = %1
br label %32
21: ; preds = %1
br label %32
22: ; preds = %1
br label %32
23: ; preds = %1
br label %32
24: ; preds = %1
br label %32
25: ; preds = %1
br label %32
26: ; preds = %1
br label %32
27: ; preds = %1
br label %32
28: ; preds = %1
br label %32
29: ; preds = %1
br label %32
30: ; preds = %1
br label %32
31: ; preds = %1
br label %32
32: ; preds = %1, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2
%33 = phi i32 [ %0, %31 ], [ 128, %30 ], [ 129, %29 ], [ 130, %28 ], [ 131, %27 ], [ 132, %26 ], [ 133, %25 ], [ 134, %24 ], [ 190, %23 ], [ 189, %22 ], [ 182, %21 ], [ 158, %20 ], [ 154, %19 ], [ 152, %18 ], [ 151, %17 ], [ 150, %16 ], [ 141, %15 ], [ 140, %14 ], [ 139, %13 ], [ 138, %12 ], [ 137, %11 ], [ 136, %10 ], [ 135, %9 ], [ 142, %8 ], [ 143, %7 ], [ 144, %6 ], [ 145, %5 ], [ 146, %4 ], [ 153, %3 ], [ 148, %2 ], [ 147, %1 ]
ret i32 %33
}