int ISOencoding(char ch1, char ch2) {
  int code;
  code = 0;
  switch (ch1) {
  case '`':
    switch (ch2) {
    case 'A':
      code = 0300;
      break;
    case 'E':
      code = 0310;
      break;
    case 'I':
      code = 0314;
      break;
    case 'O':
      code = 0322;
      break;
    case 'U':
      code = 0331;
      break;
    case 'a':
      code = 0340;
      break;
    case 'e':
      code = 0350;
      break;
    case 'i':
      code = 0354;
      break;
    case 'o':
      code = 0362;
      break;
    case 'u':
      code = 0371;
      break;
    default:
      break;
    };
    break;
  case '\'':
    switch (ch2) {
    case 'A':
      code = 0301;
      break;
    case 'E':
      code = 0311;
      break;
    case 'I':
      code = 0315;
      break;
    case 'U':
      code = 0332;
      break;
    case 'Y':
      code = 0335;
      break;
    case 'a':
      code = 0341;
      break;
    case 'e':
      code = 0351;
      break;
    case 'i':
      code = 0355;
      break;
    case 'o':
      code = 0363;
      break;
    case 'u':
      code = 0372;
      break;
    case 'y':
      code = 0375;
      break;
    default:
      break;
    };
    break;
  case '^':
    switch (ch2) {
    case 'A':
      code = 0302;
      break;
    case 'E':
      code = 0312;
      break;
    case 'I':
      code = 0316;
      break;
    case 'O':
      code = 0324;
      break;
    case 'U':
      code = 0333;
      break;
    case 'a':
      code = 0342;
      break;
    case 'e':
      code = 0352;
      break;
    case 'i':
      code = 0356;
      break;
    case 'o':
      code = 0364;
      break;
    case 'u':
      code = 0373;
      break;
    default:
      break;
    };
    break;
  case '"':
    switch (ch2) {
    case 'A':
      code = 0304;
      break;
    case 'E':
      code = 0313;
      break;
    case 'I':
      code = 0317;
      break;
    case 'O':
      code = 0326;
      break;
    case 'U':
      code = 0334;
      break;
    case 'a':
      code = 0344;
      break;
    case 'e':
      code = 0353;
      break;
    case 'i':
      code = 0357;
      break;
    case 'o':
      code = 0366;
      break;
    case 'u':
      code = 0374;
      break;
    case 'y':
      code = 0377;
      break;
    default:
      break;
    };
    break;
  case '~':
    switch (ch2) {
    case 'A':
      code = 0303;
      break;
    case 'N':
      code = 0321;
      break;
    case 'O':
      code = 0325;
      break;
    case 'a':
      code = 0343;
      break;
    case 'n':
      code = 0361;
      break;
    case 'o':
      code = 0365;
      break;
    default:
      break;
    };
    break;
  case 'c':
    switch (ch2) {
    case 'C':
      code = 0307;
      break;
    case 'c':
      code = 0347;
      break;
    default:
      break;
    };
    break;
  case 'o':
    switch (ch2) {
    case 'A':
      code = 0305;
      break;
    case 'a':
      code = 0345;
      break;
    default:
      break;
    };
    break;
  case 'A':
    if (ch2 == 'A') {
      code = 0305;
    };
    if (ch2 == 'E') {
      code = 0305;
    };
    break;
  case 'a':
    if (ch2 == 'a') {
      code = 0345;
    };
    if (ch2 == 'e') {
      code = 0346;
    };
    break;
  case 's':
    if (ch2 == 's') {
      code = 0337;
    };
    break;
  default:
    break;
  };
  return (code);
}


x86 assembly (clang, -O0):
<ISOencoding>:
push   %rbp
mov    %rsp,%rbp
mov    %sil,%al
mov    %dil,%cl
mov    %cl,-0x1(%rbp)
mov    %al,-0x2(%rbp)
movl   $0x0,-0x8(%rbp)
movsbl -0x1(%rbp),%eax
add    $0xffffffde,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0x5c,%eax
ja     1588 <ISOencoding+0x488>
mov    -0x10(%rbp),%rax
lea    0xec8(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl -0x2(%rbp),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x34,%eax
ja     11e3 <ISOencoding+0xe3>
mov    -0x18(%rbp),%rax
lea    0x136a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xc0,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xc8,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xcc,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xd2,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xd9,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xe0,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xe8,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xec,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xf2,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
movl   $0xf9,-0x8(%rbp)
jmp    11e8 <ISOencoding+0xe8>
jmp    11e8 <ISOencoding+0xe8>
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0x38,%eax
ja     129b <ISOencoding+0x19b>
mov    -0x20(%rbp),%rax
lea    0x11da(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xc1,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xc9,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xcd,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xda,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xdd,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xe1,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xe9,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xed,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xf3,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xfa,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
movl   $0xfd,-0x8(%rbp)
jmp    12a0 <ISOencoding+0x1a0>
jmp    12a0 <ISOencoding+0x1a0>
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x34,%eax
ja     1347 <ISOencoding+0x247>
mov    -0x28(%rbp),%rax
lea    0x104e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xc2,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xca,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xce,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xd4,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xdb,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xe2,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xea,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xee,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xf4,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
movl   $0xfb,-0x8(%rbp)
jmp    134c <ISOencoding+0x24c>
jmp    134c <ISOencoding+0x24c>
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x38,%eax
ja     13ff <ISOencoding+0x2ff>
mov    -0x30(%rbp),%rax
lea    0xebe(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xc4,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xcb,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xcf,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xd6,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xdc,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xe4,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xeb,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xef,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xf6,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xfc,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
movl   $0xff,-0x8(%rbp)
jmp    1404 <ISOencoding+0x304>
jmp    1404 <ISOencoding+0x304>
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x2e,%eax
ja     147b <ISOencoding+0x37b>
mov    -0x38(%rbp),%rax
lea    0xd4a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xc3,-0x8(%rbp)
jmp    1480 <ISOencoding+0x380>
movl   $0xd1,-0x8(%rbp)
jmp    1480 <ISOencoding+0x380>
movl   $0xd5,-0x8(%rbp)
jmp    1480 <ISOencoding+0x380>
movl   $0xe3,-0x8(%rbp)
jmp    1480 <ISOencoding+0x380>
movl   $0xf1,-0x8(%rbp)
jmp    1480 <ISOencoding+0x380>
movl   $0xf5,-0x8(%rbp)
jmp    1480 <ISOencoding+0x380>
jmp    1480 <ISOencoding+0x380>
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
mov    %eax,-0x3c(%rbp)
sub    $0x43,%eax
je     14ab <ISOencoding+0x3ab>
jmp    149a <ISOencoding+0x39a>
mov    -0x3c(%rbp),%eax
sub    $0x63,%eax
je     14b7 <ISOencoding+0x3b7>
jmp    14c3 <ISOencoding+0x3c3>
movl   $0xc7,-0x8(%rbp)
jmp    14c8 <ISOencoding+0x3c8>
movl   $0xe7,-0x8(%rbp)
jmp    14c8 <ISOencoding+0x3c8>
jmp    14c8 <ISOencoding+0x3c8>
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
mov    %eax,-0x40(%rbp)
sub    $0x41,%eax
je     14f3 <ISOencoding+0x3f3>
jmp    14e2 <ISOencoding+0x3e2>
mov    -0x40(%rbp),%eax
sub    $0x61,%eax
je     14ff <ISOencoding+0x3ff>
jmp    150b <ISOencoding+0x40b>
movl   $0xc5,-0x8(%rbp)
jmp    1510 <ISOencoding+0x410>
movl   $0xe5,-0x8(%rbp)
jmp    1510 <ISOencoding+0x410>
jmp    1510 <ISOencoding+0x410>
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
cmp    $0x41,%eax
jne    1529 <ISOencoding+0x429>
movl   $0xc5,-0x8(%rbp)
movsbl -0x2(%rbp),%eax
cmp    $0x45,%eax
jne    153d <ISOencoding+0x43d>
movl   $0xc5,-0x8(%rbp)
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
cmp    $0x61,%eax
jne    1556 <ISOencoding+0x456>
movl   $0xe5,-0x8(%rbp)
movsbl -0x2(%rbp),%eax
cmp    $0x65,%eax
jne    156a <ISOencoding+0x46a>
movl   $0xe6,-0x8(%rbp)
jmp    158d <ISOencoding+0x48d>
movsbl -0x2(%rbp),%eax
cmp    $0x73,%eax
jne    1583 <ISOencoding+0x483>
movl   $0xdf,-0x8(%rbp)
jmp    158d <ISOencoding+0x48d>
jmp    158d <ISOencoding+0x48d>
mov    -0x8(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<ISOencoding>:
xor    %eax,%eax
add    $0xffffffde,%edi
cmp    $0x5c,%edi
ja     1215 <ISOencoding+0x115>
lea    0xeeb(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
movsbl %sil,%ecx
add    $0xffffffbf,%ecx
cmp    $0x38,%ecx
ja     1215 <ISOencoding+0x115>
lea    0x10fb(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xc4,%eax
ret
and    $0xfb,%sil
xor    %ecx,%ecx
jmp    11fc <ISOencoding+0xfc>
xor    %eax,%eax
cmp    $0x61,%sil
mov    $0xe5,%ecx
cmovne %eax,%ecx
cmp    $0x65,%sil
mov    $0xe6,%eax
jmp    1212 <ISOencoding+0x112>
movsbl %sil,%ecx
add    $0xffffffbf,%ecx
cmp    $0x38,%ecx
ja     1215 <ISOencoding+0x115>
lea    0x1266(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xc1,%eax
ret
movsbl %sil,%ecx
add    $0xffffffbf,%ecx
cmp    $0x34,%ecx
ja     1215 <ISOencoding+0x115>
lea    0x1170(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xc2,%eax
ret
movsbl %sil,%ecx
add    $0xffffffbf,%ecx
cmp    $0x34,%ecx
ja     1215 <ISOencoding+0x115>
lea    0x1306(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xc0,%eax
ret
xor    %eax,%eax
cmp    $0x63,%sil
mov    $0xe7,%ecx
cmovne %eax,%ecx
cmp    $0x43,%sil
mov    $0xc7,%eax
jmp    1212 <ISOencoding+0x112>
xor    %eax,%eax
cmp    $0x61,%sil
mov    $0xe5,%ecx
cmovne %eax,%ecx
cmp    $0x41,%sil
mov    $0xc5,%eax
jmp    1212 <ISOencoding+0x112>
xor    %ecx,%ecx
cmp    $0x73,%sil
mov    $0xdf,%eax
cmovne %ecx,%eax
ret
movsbl %sil,%ecx
add    $0xffffffbf,%ecx
cmp    $0x2e,%ecx
ja     1215 <ISOencoding+0x115>
lea    0xf4b(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xc3,%eax
ret
mov    $0xd1,%eax
ret
mov    $0xd5,%eax
ret
mov    $0xe3,%eax
ret
mov    $0xf1,%eax
ret
mov    $0xf5,%eax
ret
mov    $0xcb,%eax
ret
mov    $0xcf,%eax
ret
mov    $0xd6,%eax
ret
mov    $0xdc,%eax
ret
mov    $0xe4,%eax
ret
mov    $0xeb,%eax
ret
mov    $0xef,%eax
ret
mov    $0xf6,%eax
ret
mov    $0xfc,%eax
ret
mov    $0xff,%eax
ret
mov    $0xc9,%eax
ret
mov    $0xcd,%eax
ret
mov    $0xda,%eax
ret
mov    $0xdd,%eax
ret
mov    $0xe1,%eax
ret
mov    $0xe9,%eax
ret
mov    $0xed,%eax
ret
mov    $0xf3,%eax
ret
mov    $0xfa,%eax
ret
mov    $0xfd,%eax
ret
mov    $0xca,%eax
ret
mov    $0xce,%eax
ret
mov    $0xd4,%eax
ret
mov    $0xdb,%eax
ret
mov    $0xe2,%eax
ret
mov    $0xea,%eax
ret
mov    $0xee,%eax
ret
mov    $0xf4,%eax
ret
mov    $0xfb,%eax
ret
mov    $0xc8,%eax
ret
mov    $0xcc,%eax
ret
mov    $0xd2,%eax
ret
mov    $0xd9,%eax
ret
mov    $0xe0,%eax
ret
mov    $0xe8,%eax
ret
mov    $0xec,%eax
ret
mov    $0xf2,%eax
ret
mov    $0xf9,%eax
ret

LLVM IR (-O0):
define i32 @ISOencoding(i8 signext %0, i8 signext %1) {
%3 = alloca i8
%4 = alloca i8
%5 = alloca i32
store i8 %0, i8* %3
store i8 %1, i8* %4
store i32 0, i32* %5
%6 = load i8, i8* %3
%7 = sext i8 %6 to i32
switch i32 %7, label %123 [
i32 96, label %8
i32 39, label %23
i32 94, label %39
i32 34, label %54
i32 126, label %70
i32 99, label %81
i32 111, label %88
i32 65, label %95
i32 97, label %106
i32 115, label %117
]
8: ; preds = %2
%9 = load i8, i8* %4
%10 = sext i8 %9 to i32
switch i32 %10, label %21 [
i32 65, label %11
i32 69, label %12
i32 73, label %13
i32 79, label %14
i32 85, label %15
i32 97, label %16
i32 101, label %17
i32 105, label %18
i32 111, label %19
i32 117, label %20
]
11: ; preds = %8
store i32 192, i32* %5
br label %22
12: ; preds = %8
store i32 200, i32* %5
br label %22
13: ; preds = %8
store i32 204, i32* %5
br label %22
14: ; preds = %8
store i32 210, i32* %5
br label %22
15: ; preds = %8
store i32 217, i32* %5
br label %22
16: ; preds = %8
store i32 224, i32* %5
br label %22
17: ; preds = %8
store i32 232, i32* %5
br label %22
18: ; preds = %8
store i32 236, i32* %5
br label %22
19: ; preds = %8
store i32 242, i32* %5
br label %22
20: ; preds = %8
store i32 249, i32* %5
br label %22
21: ; preds = %8
br label %22
22: ; preds = %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11
br label %124
23: ; preds = %2
%24 = load i8, i8* %4
%25 = sext i8 %24 to i32
switch i32 %25, label %37 [
i32 65, label %26
i32 69, label %27
i32 73, label %28
i32 85, label %29
i32 89, label %30
i32 97, label %31
i32 101, label %32
i32 105, label %33
i32 111, label %34
i32 117, label %35
i32 121, label %36
]
26: ; preds = %23
store i32 193, i32* %5
br label %38
27: ; preds = %23
store i32 201, i32* %5
br label %38
28: ; preds = %23
store i32 205, i32* %5
br label %38
29: ; preds = %23
store i32 218, i32* %5
br label %38
30: ; preds = %23
store i32 221, i32* %5
br label %38
31: ; preds = %23
store i32 225, i32* %5
br label %38
32: ; preds = %23
store i32 233, i32* %5
br label %38
33: ; preds = %23
store i32 237, i32* %5
br label %38
34: ; preds = %23
store i32 243, i32* %5
br label %38
35: ; preds = %23
store i32 250, i32* %5
br label %38
36: ; preds = %23
store i32 253, i32* %5
br label %38
37: ; preds = %23
br label %38
38: ; preds = %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26
br label %124
39: ; preds = %2
%40 = load i8, i8* %4
%41 = sext i8 %40 to i32
switch i32 %41, label %52 [
i32 65, label %42
i32 69, label %43
i32 73, label %44
i32 79, label %45
i32 85, label %46
i32 97, label %47
i32 101, label %48
i32 105, label %49
i32 111, label %50
i32 117, label %51
]
42: ; preds = %39
store i32 194, i32* %5
br label %53
43: ; preds = %39
store i32 202, i32* %5
br label %53
44: ; preds = %39
store i32 206, i32* %5
br label %53
45: ; preds = %39
store i32 212, i32* %5
br label %53
46: ; preds = %39
store i32 219, i32* %5
br label %53
47: ; preds = %39
store i32 226, i32* %5
br label %53
48: ; preds = %39
store i32 234, i32* %5
br label %53
49: ; preds = %39
store i32 238, i32* %5
br label %53
50: ; preds = %39
store i32 244, i32* %5
br label %53
51: ; preds = %39
store i32 251, i32* %5
br label %53
52: ; preds = %39
br label %53
53: ; preds = %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42
br label %124
54: ; preds = %2
%55 = load i8, i8* %4
%56 = sext i8 %55 to i32
switch i32 %56, label %68 [
i32 65, label %57
i32 69, label %58
i32 73, label %59
i32 79, label %60
i32 85, label %61
i32 97, label %62
i32 101, label %63
i32 105, label %64
i32 111, label %65
i32 117, label %66
i32 121, label %67
]
57: ; preds = %54
store i32 196, i32* %5
br label %69
58: ; preds = %54
store i32 203, i32* %5
br label %69
59: ; preds = %54
store i32 207, i32* %5
br label %69
60: ; preds = %54
store i32 214, i32* %5
br label %69
61: ; preds = %54
store i32 220, i32* %5
br label %69
62: ; preds = %54
store i32 228, i32* %5
br label %69
63: ; preds = %54
store i32 235, i32* %5
br label %69
64: ; preds = %54
store i32 239, i32* %5
br label %69
65: ; preds = %54
store i32 246, i32* %5
br label %69
66: ; preds = %54
store i32 252, i32* %5
br label %69
67: ; preds = %54
store i32 255, i32* %5
br label %69
68: ; preds = %54
br label %69
69: ; preds = %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57
br label %124
70: ; preds = %2
%71 = load i8, i8* %4
%72 = sext i8 %71 to i32
switch i32 %72, label %79 [
i32 65, label %73
i32 78, label %74
i32 79, label %75
i32 97, label %76
i32 110, label %77
i32 111, label %78
]
73: ; preds = %70
store i32 195, i32* %5
br label %80
74: ; preds = %70
store i32 209, i32* %5
br label %80
75: ; preds = %70
store i32 213, i32* %5
br label %80
76: ; preds = %70
store i32 227, i32* %5
br label %80
77: ; preds = %70
store i32 241, i32* %5
br label %80
78: ; preds = %70
store i32 245, i32* %5
br label %80
79: ; preds = %70
br label %80
80: ; preds = %79, %78, %77, %76, %75, %74, %73
br label %124
81: ; preds = %2
%82 = load i8, i8* %4
%83 = sext i8 %82 to i32
switch i32 %83, label %86 [
i32 67, label %84
i32 99, label %85
]
84: ; preds = %81
store i32 199, i32* %5
br label %87
85: ; preds = %81
store i32 231, i32* %5
br label %87
86: ; preds = %81
br label %87
87: ; preds = %86, %85, %84
br label %124
88: ; preds = %2
%89 = load i8, i8* %4
%90 = sext i8 %89 to i32
switch i32 %90, label %93 [
i32 65, label %91
i32 97, label %92
]
91: ; preds = %88
store i32 197, i32* %5
br label %94
92: ; preds = %88
store i32 229, i32* %5
br label %94
93: ; preds = %88
br label %94
94: ; preds = %93, %92, %91
br label %124
95: ; preds = %2
%96 = load i8, i8* %4
%97 = sext i8 %96 to i32
%98 = icmp eq i32 %97, 65
br i1 %98, label %99, label %100
99: ; preds = %95
store i32 197, i32* %5
br label %100
100: ; preds = %99, %95
%101 = load i8, i8* %4
%102 = sext i8 %101 to i32
%103 = icmp eq i32 %102, 69
br i1 %103, label %104, label %105
104: ; preds = %100
store i32 197, i32* %5
br label %105
105: ; preds = %104, %100
br label %124
106: ; preds = %2
%107 = load i8, i8* %4
%108 = sext i8 %107 to i32
%109 = icmp eq i32 %108, 97
br i1 %109, label %110, label %111
110: ; preds = %106
store i32 229, i32* %5
br label %111
111: ; preds = %110, %106
%112 = load i8, i8* %4
%113 = sext i8 %112 to i32
%114 = icmp eq i32 %113, 101
br i1 %114, label %115, label %116
115: ; preds = %111
store i32 230, i32* %5
br label %116
116: ; preds = %115, %111
br label %124
117: ; preds = %2
%118 = load i8, i8* %4
%119 = sext i8 %118 to i32
%120 = icmp eq i32 %119, 115
br i1 %120, label %121, label %122
121: ; preds = %117
store i32 223, i32* %5
br label %122
122: ; preds = %121, %117
br label %124
123: ; preds = %2
br label %124
124: ; preds = %123, %122, %116, %105, %94, %87, %80, %69, %53, %38, %22
%125 = load i32, i32* %5
ret i32 %125
}

LLVM IR (-O2):
define i32 @ISOencoding(i8 signext %0, i8 signext %1) {
%3 = sext i8 %0 to i32
switch i32 %3, label %84 [
i32 96, label %4
i32 39, label %16
i32 94, label %29
i32 34, label %41
i32 126, label %54
i32 99, label %62
i32 111, label %67
i32 65, label %72
i32 97, label %76
i32 115, label %81
]
4: ; preds = %2
%5 = sext i8 %1 to i32
switch i32 %5, label %84 [
i32 65, label %6
i32 69, label %7
i32 73, label %8
i32 79, label %9
i32 85, label %10
i32 97, label %11
i32 101, label %12
i32 105, label %13
i32 111, label %14
i32 117, label %15
]
6: ; preds = %4
br label %84
7: ; preds = %4
br label %84
8: ; preds = %4
br label %84
9: ; preds = %4
br label %84
10: ; preds = %4
br label %84
11: ; preds = %4
br label %84
12: ; preds = %4
br label %84
13: ; preds = %4
br label %84
14: ; preds = %4
br label %84
15: ; preds = %4
br label %84
16: ; preds = %2
%17 = sext i8 %1 to i32
switch i32 %17, label %84 [
i32 65, label %18
i32 69, label %19
i32 73, label %20
i32 85, label %21
i32 89, label %22
i32 97, label %23
i32 101, label %24
i32 105, label %25
i32 111, label %26
i32 117, label %27
i32 121, label %28
]
18: ; preds = %16
br label %84
19: ; preds = %16
br label %84
20: ; preds = %16
br label %84
21: ; preds = %16
br label %84
22: ; preds = %16
br label %84
23: ; preds = %16
br label %84
24: ; preds = %16
br label %84
25: ; preds = %16
br label %84
26: ; preds = %16
br label %84
27: ; preds = %16
br label %84
28: ; preds = %16
br label %84
29: ; preds = %2
%30 = sext i8 %1 to i32
switch i32 %30, label %84 [
i32 65, label %31
i32 69, label %32
i32 73, label %33
i32 79, label %34
i32 85, label %35
i32 97, label %36
i32 101, label %37
i32 105, label %38
i32 111, label %39
i32 117, label %40
]
31: ; preds = %29
br label %84
32: ; preds = %29
br label %84
33: ; preds = %29
br label %84
34: ; preds = %29
br label %84
35: ; preds = %29
br label %84
36: ; preds = %29
br label %84
37: ; preds = %29
br label %84
38: ; preds = %29
br label %84
39: ; preds = %29
br label %84
40: ; preds = %29
br label %84
41: ; preds = %2
%42 = sext i8 %1 to i32
switch i32 %42, label %84 [
i32 65, label %43
i32 69, label %44
i32 73, label %45
i32 79, label %46
i32 85, label %47
i32 97, label %48
i32 101, label %49
i32 105, label %50
i32 111, label %51
i32 117, label %52
i32 121, label %53
]
43: ; preds = %41
br label %84
44: ; preds = %41
br label %84
45: ; preds = %41
br label %84
46: ; preds = %41
br label %84
47: ; preds = %41
br label %84
48: ; preds = %41
br label %84
49: ; preds = %41
br label %84
50: ; preds = %41
br label %84
51: ; preds = %41
br label %84
52: ; preds = %41
br label %84
53: ; preds = %41
br label %84
54: ; preds = %2
%55 = sext i8 %1 to i32
switch i32 %55, label %84 [
i32 65, label %56
i32 78, label %57
i32 79, label %58
i32 97, label %59
i32 110, label %60
i32 111, label %61
]
56: ; preds = %54
br label %84
57: ; preds = %54
br label %84
58: ; preds = %54
br label %84
59: ; preds = %54
br label %84
60: ; preds = %54
br label %84
61: ; preds = %54
br label %84
62: ; preds = %2
%63 = icmp eq i8 %1, 99
%64 = select i1 %63, i32 231, i32 0
%65 = icmp eq i8 %1, 67
%66 = select i1 %65, i32 199, i32 %64
br label %84
67: ; preds = %2
%68 = icmp eq i8 %1, 97
%69 = select i1 %68, i32 229, i32 0
%70 = icmp eq i8 %1, 65
%71 = select i1 %70, i32 197, i32 %69
br label %84
72: ; preds = %2
%73 = and i8 %1, -5
%74 = icmp eq i8 %73, 65
%75 = select i1 %74, i32 197, i32 0
br label %84
76: ; preds = %2
%77 = icmp eq i8 %1, 97
%78 = select i1 %77, i32 229, i32 0
%79 = icmp eq i8 %1, 101
%80 = select i1 %79, i32 230, i32 %78
br label %84
81: ; preds = %2
%82 = icmp eq i8 %1, 115
%83 = select i1 %82, i32 223, i32 0
br label %84
84: ; preds = %76, %72, %81, %67, %62, %2, %56, %57, %58, %59, %60, %61, %54, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %41, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %29, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %16, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %4
%85 = phi i32 [ 0, %2 ], [ 0, %54 ], [ 245, %61 ], [ 241, %60 ], [ 227, %59 ], [ 213, %58 ], [ 209, %57 ], [ 195, %56 ], [ 0, %41 ], [ 255, %53 ], [ 252, %52 ], [ 246, %51 ], [ 239, %50 ], [ 235, %49 ], [ 228, %48 ], [ 220, %47 ], [ 214, %46 ], [ 207, %45 ], [ 203, %44 ], [ 196, %43 ], [ 0, %29 ], [ 251, %40 ], [ 244, %39 ], [ 238, %38 ], [ 234, %37 ], [ 226, %36 ], [ 219, %35 ], [ 212, %34 ], [ 206, %33 ], [ 202, %32 ], [ 194, %31 ], [ 0, %16 ], [ 253, %28 ], [ 250, %27 ], [ 243, %26 ], [ 237, %25 ], [ 233, %24 ], [ 225, %23 ], [ 221, %22 ], [ 218, %21 ], [ 205, %20 ], [ 201, %19 ], [ 193, %18 ], [ 0, %4 ], [ 249, %15 ], [ 242, %14 ], [ 236, %13 ], [ 232, %12 ], [ 224, %11 ], [ 217, %10 ], [ 210, %9 ], [ 204, %8 ], [ 200, %7 ], [ 192, %6 ], [ %66, %62 ], [ %71, %67 ], [ %83, %81 ], [ %75, %72 ], [ %80, %76 ]
ret i32 %85
}