void get_char_in_latin_1(unsigned char *buffer, unsigned char c) {
  unsigned char c1 = '?';
  if (c < 0x80) {
    switch (c) {
    case 0x2a:
      c1 = 0xe1;
      break;
    case 0x5c:
      c1 = 0xe9;
      break;
    case 0x5e:
      c1 = 0xed;
      break;
    case 0x5f:
      c1 = 0xf3;
      break;
    case 0x60:
      c1 = 0xfa;
      break;
    case 0x7b:
      c1 = 0xe7;
      break;
    case 0x7c:
      c1 = 0xf7;
      break;
    case 0x7d:
      c1 = 0xd1;
      break;
    case 0x7e:
      c1 = 0xf1;
      break;
    default:
      c1 = c;
      break;
    }
    *buffer = c1;
    return;
  }
  switch (c) {
  case 0x80:
    c1 = 0xae;
    break;
  case 0x81:
    c1 = 0xb0;
    break;
  case 0x82:
    c1 = 0xbd;
    break;
  case 0x83:
    c1 = 0xbf;
    break;
  case 0x84:
    break;
  case 0x85:
    c1 = 0xa2;
    break;
  case 0x86:
    c1 = 0xa3;
    break;
  case 0x87:
    c1 = 0xb6;
    break;
  case 0x88:
    c1 = 0xe0;
    break;
  case 0x89:
    c1 = 0x20;
    break;
  case 0x8a:
    c1 = 0xe8;
    break;
  case 0x8b:
    c1 = 0xe2;
    break;
  case 0x8c:
    c1 = 0xea;
    break;
  case 0x8d:
    c1 = 0xee;
    break;
  case 0x8e:
    c1 = 0xf4;
    break;
  case 0x8f:
    c1 = 0xfb;
    break;
  case 0x90:
    c1 = 0xc1;
    break;
  case 0x91:
    c1 = 0xc9;
    break;
  case 0x92:
    c1 = 0xd3;
    break;
  case 0x93:
    c1 = 0xda;
    break;
  case 0x94:
    c1 = 0xdc;
    break;
  case 0x95:
    c1 = 0xfc;
    break;
  case 0x96:
    c1 = 0x27;
    break;
  case 0x97:
    c1 = 0xa1;
    break;
  case 0x98:
    c1 = 0x2a;
    break;
  case 0x99:
    c1 = 0x27;
    break;
  case 0x9a:
    c1 = 0x2d;
    break;
  case 0x9b:
    c1 = 0xa9;
    break;
  case 0x9c:
    break;
  case 0x9d:
    c1 = 0x2e;
    break;
  case 0x9e:
    c1 = 0x22;
    break;
  case 0x9f:
    c1 = 0x22;
    break;
  case 0xa0:
    c1 = 0xc0;
    break;
  case 0xa1:
    c1 = 0xc2;
    break;
  case 0xa2:
    c1 = 0xc7;
    break;
  case 0xa3:
    c1 = 0xc8;
    break;
  case 0xa4:
    c1 = 0xca;
    break;
  case 0xa5:
    c1 = 0xcb;
    break;
  case 0xa6:
    c1 = 0xeb;
    break;
  case 0xa7:
    c1 = 0xce;
    break;
  case 0xa8:
    c1 = 0xcf;
    break;
  case 0xa9:
    c1 = 0xef;
    break;
  case 0xaa:
    c1 = 0xd4;
    break;
  case 0xab:
    c1 = 0xd9;
    break;
  case 0xac:
    c1 = 0xf9;
    break;
  case 0xad:
    c1 = 0xdb;
    break;
  case 0xae:
    c1 = 0xab;
    break;
  case 0xaf:
    c1 = 0xbb;
    break;
  case 0xb0:
    c1 = 0xc3;
    break;
  case 0xb1:
    c1 = 0xe3;
    break;
  case 0xb2:
    c1 = 0xcd;
    break;
  case 0xb3:
    c1 = 0xcc;
    break;
  case 0xb4:
    c1 = 0xec;
    break;
  case 0xb5:
    c1 = 0xd2;
    break;
  case 0xb6:
    c1 = 0xf2;
    break;
  case 0xb7:
    c1 = 0xd5;
    break;
  case 0xb8:
    c1 = 0xf5;
    break;
  case 0xb9:
    c1 = 0x7b;
    break;
  case 0xba:
    c1 = 0x7d;
    break;
  case 0xbb:
    c1 = 0x5c;
    break;
  case 0xbc:
    c1 = 0x5e;
    break;
  case 0xbd:
    c1 = 0x5f;
    break;
  case 0xbe:
    c1 = 0xa6;
    break;
  case 0xbf:
    c1 = 0x7e;
    break;
  case 0xc0:
    c1 = 0xc4;
    break;
  case 0xc1:
    c1 = 0xe3;
    break;
  case 0xc2:
    c1 = 0xd6;
    break;
  case 0xc3:
    c1 = 0xf6;
    break;
  case 0xc4:
    c1 = 0xdf;
    break;
  case 0xc5:
    c1 = 0xa5;
    break;
  case 0xc6:
    c1 = 0xa4;
    break;
  case 0xc7:
    c1 = 0x7c;
    break;
  case 0xc8:
    c1 = 0xc5;
    break;
  case 0xc9:
    c1 = 0xe5;
    break;
  case 0xca:
    c1 = 0xd8;
    break;
  case 0xcb:
    c1 = 0xf8;
    break;
  case 0xcc:
  case 0xcd:
  case 0xce:
  case 0xcf:
  default:
    *buffer = '?';
    break;
  }
  *buffer = c1;
}


x86 assembly (clang, -O0):
<get_char_in_latin_1>:
push   %rbp
mov    %rsp,%rbp
mov    %sil,%al
mov    %rdi,-0x8(%rbp)
mov    %al,-0x9(%rbp)
movb   $0x3f,-0xa(%rbp)
movzbl -0x9(%rbp),%eax
cmp    $0x80,%eax
jge    11b0 <get_char_in_latin_1+0xb0>
movzbl -0x9(%rbp),%eax
add    $0xffffffd6,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x54,%eax
ja     119c <get_char_in_latin_1+0x9c>
mov    -0x18(%rbp),%rax
lea    0xffe(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movb   $0xe1,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
movb   $0xe9,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
movb   $0xed,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
movb   $0xf3,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
movb   $0xfa,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
movb   $0xe7,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
movb   $0xf7,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
movb   $0xd1,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
movb   $0xf1,-0xa(%rbp)
jmp    11a2 <get_char_in_latin_1+0xa2>
mov    -0x9(%rbp),%al
mov    %al,-0xa(%rbp)
mov    -0xa(%rbp),%cl
mov    -0x8(%rbp),%rax
mov    %cl,(%rax)
jmp    1493 <get_char_in_latin_1+0x393>
movzbl -0x9(%rbp),%eax
add    $0xffffff80,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0x4f,%eax
ja     1483 <get_char_in_latin_1+0x383>
mov    -0x20(%rbp),%rax
lea    0xe2f(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movb   $0xae,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xb0,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xbd,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xbf,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xa2,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xa3,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xb6,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xe0,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x20,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xe8,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xe2,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xea,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xee,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xf4,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xfb,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc1,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc9,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xd3,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xda,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xdc,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xfc,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x27,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xa1,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x2a,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x27,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x2d,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xa9,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x2e,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x22,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x22,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc0,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc2,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc7,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc8,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xca,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xcb,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xeb,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xce,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xcf,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xef,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xd4,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xd9,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xf9,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xdb,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xab,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xbb,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc3,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xe3,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xcd,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xcc,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xec,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xd2,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xf2,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xd5,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xf5,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x7b,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x7d,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x5c,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x5e,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x5f,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xa6,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x7e,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc4,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xe3,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xd6,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xf6,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xdf,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xa5,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xa4,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0x7c,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xc5,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xe5,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xd8,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
movb   $0xf8,-0xa(%rbp)
jmp    148a <get_char_in_latin_1+0x38a>
jmp    1483 <get_char_in_latin_1+0x383>
mov    -0x8(%rbp),%rax
movb   $0x3f,(%rax)
mov    -0xa(%rbp),%cl
mov    -0x8(%rbp),%rax
mov    %cl,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_char_in_latin_1>:
test   %sil,%sil
js     1127 <get_char_in_latin_1+0x27>
lea    -0x2a(%rsi),%ecx
cmp    $0x54,%cl
ja     1143 <get_char_in_latin_1+0x43>
mov    $0xe1,%al
movzbl %cl,%ecx
lea    0xee7(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xe9,%al
mov    %al,(%rdi)
ret
movsbq %sil,%rcx
xor    $0xffffffffffffff80,%rcx
mov    $0x3f,%al
cmp    $0x4b,%cl
ja     1140 <get_char_in_latin_1+0x40>
lea    0x1017(%rip),%rax
mov    (%rcx,%rax,1),%al
mov    %al,(%rdi)
ret
mov    %sil,(%rdi)
ret
mov    $0xed,%al
mov    %al,(%rdi)
ret
mov    $0xf3,%al
mov    %al,(%rdi)
ret
mov    $0xfa,%al
mov    %al,(%rdi)
ret
mov    $0xe7,%al
mov    %al,(%rdi)
ret
mov    $0xf7,%al
mov    %al,(%rdi)
ret
mov    $0xd1,%al
mov    %al,(%rdi)
ret
mov    $0xf1,%al
mov    %al,(%rdi)
ret

LLVM IR (-O0):
define void @get_char_in_latin_1(i8* %0, i8 zeroext %1) {
%3 = alloca i8*
%4 = alloca i8
%5 = alloca i8
store i8* %0, i8** %3
store i8 %1, i8* %4
store i8 63, i8* %5
%6 = load i8, i8* %4
%7 = zext i8 %6 to i32
%8 = icmp slt i32 %7, 128
br i1 %8, label %9, label %26
9: ; preds = %2
%10 = load i8, i8* %4
%11 = zext i8 %10 to i32
switch i32 %11, label %21 [
i32 42, label %12
i32 92, label %13
i32 94, label %14
i32 95, label %15
i32 96, label %16
i32 123, label %17
i32 124, label %18
i32 125, label %19
i32 126, label %20
]
12: ; preds = %9
store i8 -31, i8* %5
br label %23
13: ; preds = %9
store i8 -23, i8* %5
br label %23
14: ; preds = %9
store i8 -19, i8* %5
br label %23
15: ; preds = %9
store i8 -13, i8* %5
br label %23
16: ; preds = %9
store i8 -6, i8* %5
br label %23
17: ; preds = %9
store i8 -25, i8* %5
br label %23
18: ; preds = %9
store i8 -9, i8* %5
br label %23
19: ; preds = %9
store i8 -47, i8* %5
br label %23
20: ; preds = %9
store i8 -15, i8* %5
br label %23
21: ; preds = %9
%22 = load i8, i8* %4
store i8 %22, i8* %5
br label %23
23: ; preds = %21, %20, %19, %18, %17, %16, %15, %14, %13, %12
%24 = load i8, i8* %5
%25 = load i8*, i8** %3
store i8 %24, i8* %25
br label %111
26: ; preds = %2
%27 = load i8, i8* %4
%28 = zext i8 %27 to i32
switch i32 %28, label %106 [
i32 128, label %29
i32 129, label %30
i32 130, label %31
i32 131, label %32
i32 132, label %33
i32 133, label %34
i32 134, label %35
i32 135, label %36
i32 136, label %37
i32 137, label %38
i32 138, label %39
i32 139, label %40
i32 140, label %41
i32 141, label %42
i32 142, label %43
i32 143, label %44
i32 144, label %45
i32 145, label %46
i32 146, label %47
i32 147, label %48
i32 148, label %49
i32 149, label %50
i32 150, label %51
i32 151, label %52
i32 152, label %53
i32 153, label %54
i32 154, label %55
i32 155, label %56
i32 156, label %57
i32 157, label %58
i32 158, label %59
i32 159, label %60
i32 160, label %61
i32 161, label %62
i32 162, label %63
i32 163, label %64
i32 164, label %65
i32 165, label %66
i32 166, label %67
i32 167, label %68
i32 168, label %69
i32 169, label %70
i32 170, label %71
i32 171, label %72
i32 172, label %73
i32 173, label %74
i32 174, label %75
i32 175, label %76
i32 176, label %77
i32 177, label %78
i32 178, label %79
i32 179, label %80
i32 180, label %81
i32 181, label %82
i32 182, label %83
i32 183, label %84
i32 184, label %85
i32 185, label %86
i32 186, label %87
i32 187, label %88
i32 188, label %89
i32 189, label %90
i32 190, label %91
i32 191, label %92
i32 192, label %93
i32 193, label %94
i32 194, label %95
i32 195, label %96
i32 196, label %97
i32 197, label %98
i32 198, label %99
i32 199, label %100
i32 200, label %101
i32 201, label %102
i32 202, label %103
i32 203, label %104
i32 204, label %105
i32 205, label %105
i32 206, label %105
i32 207, label %105
]
29: ; preds = %26
store i8 -82, i8* %5
br label %108
30: ; preds = %26
store i8 -80, i8* %5
br label %108
31: ; preds = %26
store i8 -67, i8* %5
br label %108
32: ; preds = %26
store i8 -65, i8* %5
br label %108
33: ; preds = %26
br label %108
34: ; preds = %26
store i8 -94, i8* %5
br label %108
35: ; preds = %26
store i8 -93, i8* %5
br label %108
36: ; preds = %26
store i8 -74, i8* %5
br label %108
37: ; preds = %26
store i8 -32, i8* %5
br label %108
38: ; preds = %26
store i8 32, i8* %5
br label %108
39: ; preds = %26
store i8 -24, i8* %5
br label %108
40: ; preds = %26
store i8 -30, i8* %5
br label %108
41: ; preds = %26
store i8 -22, i8* %5
br label %108
42: ; preds = %26
store i8 -18, i8* %5
br label %108
43: ; preds = %26
store i8 -12, i8* %5
br label %108
44: ; preds = %26
store i8 -5, i8* %5
br label %108
45: ; preds = %26
store i8 -63, i8* %5
br label %108
46: ; preds = %26
store i8 -55, i8* %5
br label %108
47: ; preds = %26
store i8 -45, i8* %5
br label %108
48: ; preds = %26
store i8 -38, i8* %5
br label %108
49: ; preds = %26
store i8 -36, i8* %5
br label %108
50: ; preds = %26
store i8 -4, i8* %5
br label %108
51: ; preds = %26
store i8 39, i8* %5
br label %108
52: ; preds = %26
store i8 -95, i8* %5
br label %108
53: ; preds = %26
store i8 42, i8* %5
br label %108
54: ; preds = %26
store i8 39, i8* %5
br label %108
55: ; preds = %26
store i8 45, i8* %5
br label %108
56: ; preds = %26
store i8 -87, i8* %5
br label %108
57: ; preds = %26
br label %108
58: ; preds = %26
store i8 46, i8* %5
br label %108
59: ; preds = %26
store i8 34, i8* %5
br label %108
60: ; preds = %26
store i8 34, i8* %5
br label %108
61: ; preds = %26
store i8 -64, i8* %5
br label %108
62: ; preds = %26
store i8 -62, i8* %5
br label %108
63: ; preds = %26
store i8 -57, i8* %5
br label %108
64: ; preds = %26
store i8 -56, i8* %5
br label %108
65: ; preds = %26
store i8 -54, i8* %5
br label %108
66: ; preds = %26
store i8 -53, i8* %5
br label %108
67: ; preds = %26
store i8 -21, i8* %5
br label %108
68: ; preds = %26
store i8 -50, i8* %5
br label %108
69: ; preds = %26
store i8 -49, i8* %5
br label %108
70: ; preds = %26
store i8 -17, i8* %5
br label %108
71: ; preds = %26
store i8 -44, i8* %5
br label %108
72: ; preds = %26
store i8 -39, i8* %5
br label %108
73: ; preds = %26
store i8 -7, i8* %5
br label %108
74: ; preds = %26
store i8 -37, i8* %5
br label %108
75: ; preds = %26
store i8 -85, i8* %5
br label %108
76: ; preds = %26
store i8 -69, i8* %5
br label %108
77: ; preds = %26
store i8 -61, i8* %5
br label %108
78: ; preds = %26
store i8 -29, i8* %5
br label %108
79: ; preds = %26
store i8 -51, i8* %5
br label %108
80: ; preds = %26
store i8 -52, i8* %5
br label %108
81: ; preds = %26
store i8 -20, i8* %5
br label %108
82: ; preds = %26
store i8 -46, i8* %5
br label %108
83: ; preds = %26
store i8 -14, i8* %5
br label %108
84: ; preds = %26
store i8 -43, i8* %5
br label %108
85: ; preds = %26
store i8 -11, i8* %5
br label %108
86: ; preds = %26
store i8 123, i8* %5
br label %108
87: ; preds = %26
store i8 125, i8* %5
br label %108
88: ; preds = %26
store i8 92, i8* %5
br label %108
89: ; preds = %26
store i8 94, i8* %5
br label %108
90: ; preds = %26
store i8 95, i8* %5
br label %108
91: ; preds = %26
store i8 -90, i8* %5
br label %108
92: ; preds = %26
store i8 126, i8* %5
br label %108
93: ; preds = %26
store i8 -60, i8* %5
br label %108
94: ; preds = %26
store i8 -29, i8* %5
br label %108
95: ; preds = %26
store i8 -42, i8* %5
br label %108
96: ; preds = %26
store i8 -10, i8* %5
br label %108
97: ; preds = %26
store i8 -33, i8* %5
br label %108
98: ; preds = %26
store i8 -91, i8* %5
br label %108
99: ; preds = %26
store i8 -92, i8* %5
br label %108
100: ; preds = %26
store i8 124, i8* %5
br label %108
101: ; preds = %26
store i8 -59, i8* %5
br label %108
102: ; preds = %26
store i8 -27, i8* %5
br label %108
103: ; preds = %26
store i8 -40, i8* %5
br label %108
104: ; preds = %26
store i8 -8, i8* %5
br label %108
105: ; preds = %26, %26, %26, %26
br label %106
106: ; preds = %26, %105
%107 = load i8*, i8** %3
store i8 63, i8* %107
br label %108
108: ; preds = %106, %104, %103, %102, %101, %100, %99, %98, %97, %96, %95, %94, %93, %92, %91, %90, %89, %88, %87, %86, %85, %84, %83, %82, %81, %80, %79, %78, %77, %76, %75, %74, %73, %72, %71, %70, %69, %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29
%109 = load i8, i8* %5
%110 = load i8*, i8** %3
store i8 %109, i8* %110
br label %111
111: ; preds = %108, %23
ret void
}

LLVM IR (-O2):
@switch.table.get_char_in_latin_1 = [76 x i8] c"\AE\B0\BD\BF?\A2\A3\B6\E0 \E8\E2\EA\EE\F4\FB\C1\C9\D3\DA\DC\FC'\A1*'-\A9?.\22\22\C0\C2\C7\C8\CA\CB\EB\CE\CF\EF\D4\D9\F9\DB\AB\BB\C3\E3\CD\CC\EC\D2\F2\D5\F5{}\\^_\A6~\C4\E3\D6\F6\DF\A5\A4|\C5\E5\D8\F8"
define void @get_char_in_latin_1(i8* nocapture writeonly %0, i8 zeroext %1) {
%3 = icmp sgt i8 %1, -1
br i1 %3, label %4, label %14
4: ; preds = %2
switch i8 %1, label %13 [
i8 42, label %21
i8 92, label %5
i8 94, label %6
i8 95, label %7
i8 96, label %8
i8 123, label %9
i8 124, label %10
i8 125, label %11
i8 126, label %12
]
5: ; preds = %4
br label %21
6: ; preds = %4
br label %21
7: ; preds = %4
br label %21
8: ; preds = %4
br label %21
9: ; preds = %4
br label %21
10: ; preds = %4
br label %21
11: ; preds = %4
br label %21
12: ; preds = %4
br label %21
13: ; preds = %4
br label %21
14: ; preds = %2
%15 = xor i8 %1, -128
%16 = icmp ult i8 %15, 76
br i1 %16, label %17, label %21
17: ; preds = %14
%18 = sext i8 %15 to i64
%19 = getelementptr inbounds [76 x i8], [76 x i8]* @switch.table.get_char_in_latin_1, i64 0, i64 %18
%20 = load i8, i8* %19
br label %21
21: ; preds = %17, %14, %5, %6, %7, %8, %9, %10, %11, %12, %13, %4
%22 = phi i8 [ %1, %13 ], [ -15, %12 ], [ -47, %11 ], [ -9, %10 ], [ -25, %9 ], [ -6, %8 ], [ -13, %7 ], [ -19, %6 ], [ -23, %5 ], [ -31, %4 ], [ 63, %14 ], [ %20, %17 ]
store i8 %22, i8* %0
ret void
}