unsigned char opcode_zp_equiv(unsigned char op) {
  switch (op) {
  case 0x6D:
    return 0x65;
  case 0x7D:
    return 0x75;
  case 0x2D:
    return 0x25;
  case 0x3D:
    return 0x35;
  case 0x0E:
    return 0x06;
  case 0x1E:
    return 0x16;
  case 0x2C:
    return 0x24;
  case 0xCD:
    return 0xC5;
  case 0xDD:
    return 0xD5;
  case 0xEC:
    return 0xE4;
  case 0xCC:
    return 0xC4;
  case 0xCE:
    return 0xC6;
  case 0xDE:
    return 0xD6;
  case 0x4D:
    return 0x45;
  case 0x5D:
    return 0x55;
  case 0xEE:
    return 0xE6;
  case 0xFE:
    return 0xF6;
  case 0xAD:
    return 0xA5;
  case 0xBD:
    return 0xB5;
  case 0xAE:
    return 0xA6;
  case 0xBE:
    return 0xB6;
  case 0xAC:
    return 0xA4;
  case 0xBC:
    return 0xB4;
  case 0x4E:
    return 0x46;
  case 0x5E:
    return 0x56;
  case 0x0D:
    return 0x05;
  case 0x1D:
    return 0x15;
  case 0x2E:
    return 0x26;
  case 0x3E:
    return 0x36;
  case 0x6E:
    return 0x66;
  case 0x7E:
    return 0x76;
  case 0xED:
    return 0xE5;
  case 0xFD:
    return 0xF5;
  case 0x8D:
    return 0x85;
  case 0x9D:
    return 0x95;
  case 0x8E:
    return 0x86;
  case 0x8C:
    return 0x84;
  }
  return 0xFF;
}


x86 assembly (clang, -O0):
<opcode_zp_equiv>:
push   %rbp
mov    %rsp,%rbp
mov    %dil,%al
mov    %al,-0x2(%rbp)
movzbl -0x2(%rbp),%eax
add    $0xfffffff3,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0xf1,%eax
ja     1283 <opcode_zp_equiv+0x183>
mov    -0x10(%rbp),%rax
lea    0xed3(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movb   $0x65,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x75,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x25,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x35,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x6,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x16,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x24,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xc5,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xd5,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xe4,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xc4,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xc6,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xd6,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x45,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x55,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xe6,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xf6,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xa5,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xb5,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xa6,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xb6,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xa4,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xb4,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x46,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x56,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x5,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x15,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x26,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x36,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x66,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x76,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xe5,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xf5,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x85,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x95,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x86,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0x84,-0x1(%rbp)
jmp    1287 <opcode_zp_equiv+0x187>
movb   $0xff,-0x1(%rbp)
movzbl -0x1(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<opcode_zp_equiv>:
add    $0x74,%dil
cmp    $0xf2,%dil
ja     1129 <opcode_zp_equiv+0x29>
mov    $0x65,%al
movzbl %dil,%ecx
lea    0xee9(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x84,%al
ret
mov    $0x85,%al
ret
mov    $0x86,%al
ret
mov    $0xff,%al
ret
mov    $0x95,%al
ret
mov    $0xa4,%al
ret
mov    $0xa5,%al
ret
mov    $0xa6,%al
ret
mov    $0xb4,%al
ret
mov    $0xb5,%al
ret
mov    $0xb6,%al
ret
mov    $0xc4,%al
ret
mov    $0xc5,%al
ret
mov    $0xc6,%al
ret
mov    $0xd5,%al
ret
mov    $0xd6,%al
ret
mov    $0xe4,%al
ret
mov    $0xe5,%al
ret
mov    $0xe6,%al
ret
mov    $0xf5,%al
ret
mov    $0xf6,%al
ret
mov    $0x5,%al
ret
mov    $0x6,%al
ret
mov    $0x15,%al
ret
mov    $0x16,%al
ret
mov    $0x24,%al
ret
mov    $0x25,%al
ret
mov    $0x26,%al
ret
mov    $0x35,%al
ret
mov    $0x36,%al
ret
mov    $0x45,%al
ret
mov    $0x46,%al
ret
mov    $0x55,%al
ret
mov    $0x56,%al
ret
mov    $0x66,%al
ret
mov    $0x75,%al
ret
mov    $0x76,%al
ret

LLVM IR (-O0):
define zeroext i8 @opcode_zp_equiv(i8 zeroext %0) {
%2 = alloca i8
%3 = alloca i8
store i8 %0, i8* %3
%4 = load i8, i8* %3
%5 = zext i8 %4 to i32
switch i32 %5, label %43 [
i32 109, label %6
i32 125, label %7
i32 45, label %8
i32 61, label %9
i32 14, label %10
i32 30, label %11
i32 44, label %12
i32 205, label %13
i32 221, label %14
i32 236, label %15
i32 204, label %16
i32 206, label %17
i32 222, label %18
i32 77, label %19
i32 93, label %20
i32 238, label %21
i32 254, label %22
i32 173, label %23
i32 189, label %24
i32 174, label %25
i32 190, label %26
i32 172, label %27
i32 188, label %28
i32 78, label %29
i32 94, label %30
i32 13, label %31
i32 29, label %32
i32 46, label %33
i32 62, label %34
i32 110, label %35
i32 126, label %36
i32 237, label %37
i32 253, label %38
i32 141, label %39
i32 157, label %40
i32 142, label %41
i32 140, label %42
]
6: ; preds = %1
store i8 101, i8* %2
br label %44
7: ; preds = %1
store i8 117, i8* %2
br label %44
8: ; preds = %1
store i8 37, i8* %2
br label %44
9: ; preds = %1
store i8 53, i8* %2
br label %44
10: ; preds = %1
store i8 6, i8* %2
br label %44
11: ; preds = %1
store i8 22, i8* %2
br label %44
12: ; preds = %1
store i8 36, i8* %2
br label %44
13: ; preds = %1
store i8 -59, i8* %2
br label %44
14: ; preds = %1
store i8 -43, i8* %2
br label %44
15: ; preds = %1
store i8 -28, i8* %2
br label %44
16: ; preds = %1
store i8 -60, i8* %2
br label %44
17: ; preds = %1
store i8 -58, i8* %2
br label %44
18: ; preds = %1
store i8 -42, i8* %2
br label %44
19: ; preds = %1
store i8 69, i8* %2
br label %44
20: ; preds = %1
store i8 85, i8* %2
br label %44
21: ; preds = %1
store i8 -26, i8* %2
br label %44
22: ; preds = %1
store i8 -10, i8* %2
br label %44
23: ; preds = %1
store i8 -91, i8* %2
br label %44
24: ; preds = %1
store i8 -75, i8* %2
br label %44
25: ; preds = %1
store i8 -90, i8* %2
br label %44
26: ; preds = %1
store i8 -74, i8* %2
br label %44
27: ; preds = %1
store i8 -92, i8* %2
br label %44
28: ; preds = %1
store i8 -76, i8* %2
br label %44
29: ; preds = %1
store i8 70, i8* %2
br label %44
30: ; preds = %1
store i8 86, i8* %2
br label %44
31: ; preds = %1
store i8 5, i8* %2
br label %44
32: ; preds = %1
store i8 21, i8* %2
br label %44
33: ; preds = %1
store i8 38, i8* %2
br label %44
34: ; preds = %1
store i8 54, i8* %2
br label %44
35: ; preds = %1
store i8 102, i8* %2
br label %44
36: ; preds = %1
store i8 118, i8* %2
br label %44
37: ; preds = %1
store i8 -27, i8* %2
br label %44
38: ; preds = %1
store i8 -11, i8* %2
br label %44
39: ; preds = %1
store i8 -123, i8* %2
br label %44
40: ; preds = %1
store i8 -107, i8* %2
br label %44
41: ; preds = %1
store i8 -122, i8* %2
br label %44
42: ; preds = %1
store i8 -124, i8* %2
br label %44
43: ; preds = %1
store i8 -1, i8* %2
br label %44
44: ; preds = %43, %42, %41, %40, %39, %38, %37, %36, %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
%45 = load i8, i8* %2
ret i8 %45
}

LLVM IR (-O2):
define zeroext i8 @opcode_zp_equiv(i8 zeroext %0) {
switch i8 %0, label %38 [
i8 109, label %39
i8 125, label %2
i8 45, label %3
i8 61, label %4
i8 14, label %5
i8 30, label %6
i8 44, label %7
i8 -51, label %8
i8 -35, label %9
i8 -20, label %10
i8 -52, label %11
i8 -50, label %12
i8 -34, label %13
i8 77, label %14
i8 93, label %15
i8 -18, label %16
i8 -2, label %17
i8 -83, label %18
i8 -67, label %19
i8 -82, label %20
i8 -66, label %21
i8 -84, label %22
i8 -68, label %23
i8 78, label %24
i8 94, label %25
i8 13, label %26
i8 29, label %27
i8 46, label %28
i8 62, label %29
i8 110, label %30
i8 126, label %31
i8 -19, label %32
i8 -3, label %33
i8 -115, label %34
i8 -99, label %35
i8 -114, label %36
i8 -116, label %37
]
2: ; preds = %1
br label %39
3: ; preds = %1
br label %39
4: ; preds = %1
br label %39
5: ; preds = %1
br label %39
6: ; preds = %1
br label %39
7: ; preds = %1
br label %39
8: ; preds = %1
br label %39
9: ; preds = %1
br label %39
10: ; preds = %1
br label %39
11: ; preds = %1
br label %39
12: ; preds = %1
br label %39
13: ; preds = %1
br label %39
14: ; preds = %1
br label %39
15: ; preds = %1
br label %39
16: ; preds = %1
br label %39
17: ; preds = %1
br label %39
18: ; preds = %1
br label %39
19: ; preds = %1
br label %39
20: ; preds = %1
br label %39
21: ; preds = %1
br label %39
22: ; preds = %1
br label %39
23: ; preds = %1
br label %39
24: ; preds = %1
br label %39
25: ; preds = %1
br label %39
26: ; preds = %1
br label %39
27: ; preds = %1
br label %39
28: ; preds = %1
br label %39
29: ; preds = %1
br label %39
30: ; preds = %1
br label %39
31: ; preds = %1
br label %39
32: ; preds = %1
br label %39
33: ; preds = %1
br label %39
34: ; preds = %1
br label %39
35: ; preds = %1
br label %39
36: ; preds = %1
br label %39
37: ; preds = %1
br label %39
38: ; preds = %1
br label %39
39: ; preds = %1, %38, %37, %36, %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, %4, %3, %2
%40 = phi i8 [ -1, %38 ], [ -124, %37 ], [ -122, %36 ], [ -107, %35 ], [ -123, %34 ], [ -11, %33 ], [ -27, %32 ], [ 118, %31 ], [ 102, %30 ], [ 54, %29 ], [ 38, %28 ], [ 21, %27 ], [ 5, %26 ], [ 86, %25 ], [ 70, %24 ], [ -76, %23 ], [ -92, %22 ], [ -74, %21 ], [ -90, %20 ], [ -75, %19 ], [ -91, %18 ], [ -10, %17 ], [ -26, %16 ], [ 85, %15 ], [ 69, %14 ], [ -42, %13 ], [ -58, %12 ], [ -60, %11 ], [ -28, %10 ], [ -43, %9 ], [ -59, %8 ], [ 36, %7 ], [ 22, %6 ], [ 6, %5 ], [ 53, %4 ], [ 37, %3 ], [ 117, %2 ], [ 101, %1 ]
ret i8 %40
}