#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
char up(char const);
void encode_single(char const in, char **out) {
  char up_in = up(in);
  switch (up_in) {
  case 'A':
    *out = ".- ";
    break;
  case 'B':
    *out = "-... ";
    break;
  case 'C':
    *out = "-.-. ";
    break;
  case 'D':
    *out = "-.. ";
    break;
  case 'E':
    *out = ". ";
    break;
  case 'F':
    *out = "..-. ";
    break;
  case 'G':
    *out = "--. ";
    break;
  case 'H':
    *out = ".... ";
    break;
  case 'I':
    *out = ".. ";
    break;
  case 'J':
    *out = ".--- ";
    break;
  case 'K':
    *out = "-.- ";
    break;
  case 'L':
    *out = ".-.. ";
    break;
  case 'M':
    *out = "-- ";
    break;
  case 'N':
    *out = "-. ";
    break;
  case 'O':
    *out = "--- ";
    break;
  case 'P':
    *out = ".--. ";
    break;
  case 'Q':
    *out = "--.- ";
    break;
  case 'R':
    *out = ".-. ";
    break;
  case 'S':
    *out = "... ";
    break;
  case 'T':
    *out = "- ";
    break;
  case 'U':
    *out = "..- ";
    break;
  case 'V':
    *out = "...- ";
    break;
  case 'W':
    *out = ".-- ";
    break;
  case 'X':
    *out = "-..- ";
    break;
  case 'Y':
    *out = "-.-- ";
    break;
  case 'Z':
    *out = "--.. ";
    break;
  case '0':
    *out = "----- ";
    break;
  case '1':
    *out = ".---- ";
    break;
  case '2':
    *out = "..--- ";
    break;
  case '3':
    *out = "...-- ";
    break;
  case '4':
    *out = "....- ";
    break;
  case '5':
    *out = "..... ";
    break;
  case '6':
    *out = "-.... ";
    break;
  case '7':
    *out = "--... ";
    break;
  case '8':
    *out = "---.. ";
    break;
  case '9':
    *out = "----. ";
    break;
  default:
    *out = "";
    break;
  }
}


x86 assembly (clang, -O0):
<encode_single>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %dil,%al
mov    %al,-0x1(%rbp)
mov    %rsi,-0x10(%rbp)
movsbl -0x1(%rbp),%edi
call   1030 <up@plt>
mov    %al,-0x11(%rbp)
movsbl -0x11(%rbp),%eax
add    $0xffffffd0,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0x2a,%eax
ja     1404 <encode_single+0x2f4>
mov    -0x20(%rbp),%rax
lea    0xeb1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rax
lea    0xf63(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xf92(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xf23(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xf74(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xf6a(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xef0(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xf42(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xf19(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xf16(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xed7(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xea4(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe84(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe92(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xebe(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe6b(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe3e(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe31(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe07(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe50(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe0e(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xdec(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xe01(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xdcc(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xdb2(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xda5(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xdd1(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd85(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd79(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd6d(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd61(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd55(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd49(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd3d(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd31(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd25(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xd19(%rip),%rcx
mov    %rcx,(%rax)
jmp    1412 <encode_single+0x302>
mov    -0x10(%rbp),%rax
lea    0xccd(%rip),%rcx
mov    %rcx,(%rax)
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<encode_single>:
push   %rbx
mov    %rsi,%rbx
call   1030 <up@plt>
movsbl %al,%eax
add    $0xffffffd0,%eax
cmp    $0x2a,%eax
ja     1136 <encode_single+0x26>
cltq
lea    0xf43(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    113d <encode_single+0x2d>
lea    0xef3(%rip),%rax
mov    %rax,(%rbx)
pop    %rbx
ret

LLVM IR (-O0):
@.str = [4 x i8] c".- \00"
@.str.1 = [6 x i8] c"-... \00"
@.str.2 = [6 x i8] c"-.-. \00"
@.str.3 = [5 x i8] c"-.. \00"
@.str.4 = [3 x i8] c". \00"
@.str.5 = [6 x i8] c"..-. \00"
@.str.6 = [5 x i8] c"--. \00"
@.str.7 = [6 x i8] c".... \00"
@.str.8 = [4 x i8] c".. \00"
@.str.9 = [6 x i8] c".--- \00"
@.str.10 = [5 x i8] c"-.- \00"
@.str.11 = [6 x i8] c".-.. \00"
@.str.12 = [4 x i8] c"-- \00"
@.str.13 = [4 x i8] c"-. \00"
@.str.14 = [5 x i8] c"--- \00"
@.str.15 = [6 x i8] c".--. \00"
@.str.16 = [6 x i8] c"--.- \00"
@.str.17 = [5 x i8] c".-. \00"
@.str.18 = [5 x i8] c"... \00"
@.str.19 = [3 x i8] c"- \00"
@.str.20 = [5 x i8] c"..- \00"
@.str.21 = [6 x i8] c"...- \00"
@.str.22 = [5 x i8] c".-- \00"
@.str.23 = [6 x i8] c"-..- \00"
@.str.24 = [6 x i8] c"-.-- \00"
@.str.25 = [6 x i8] c"--.. \00"
@.str.26 = [7 x i8] c"----- \00"
@.str.27 = [7 x i8] c".---- \00"
@.str.28 = [7 x i8] c"..--- \00"
@.str.29 = [7 x i8] c"...-- \00"
@.str.30 = [7 x i8] c"....- \00"
@.str.31 = [7 x i8] c"..... \00"
@.str.32 = [7 x i8] c"-.... \00"
@.str.33 = [7 x i8] c"--... \00"
@.str.34 = [7 x i8] c"---.. \00"
@.str.35 = [7 x i8] c"----. \00"
@.str.36 = [1 x i8] zeroinitializer
define void @encode_single(i8 signext %0, i8** %1) {
%3 = alloca i8
%4 = alloca i8**
%5 = alloca i8
store i8 %0, i8* %3
store i8** %1, i8*** %4
%6 = load i8, i8* %3
%7 = call signext i8 @up(i8 signext %6)
store i8 %7, i8* %5
%8 = load i8, i8* %5
%9 = sext i8 %8 to i32
switch i32 %9, label %82 [
i32 65, label %10
i32 66, label %12
i32 67, label %14
i32 68, label %16
i32 69, label %18
i32 70, label %20
i32 71, label %22
i32 72, label %24
i32 73, label %26
i32 74, label %28
i32 75, label %30
i32 76, label %32
i32 77, label %34
i32 78, label %36
i32 79, label %38
i32 80, label %40
i32 81, label %42
i32 82, label %44
i32 83, label %46
i32 84, label %48
i32 85, label %50
i32 86, label %52
i32 87, label %54
i32 88, label %56
i32 89, label %58
i32 90, label %60
i32 48, label %62
i32 49, label %64
i32 50, label %66
i32 51, label %68
i32 52, label %70
i32 53, label %72
i32 54, label %74
i32 55, label %76
i32 56, label %78
i32 57, label %80
]
10: ; preds = %2
%11 = load i8**, i8*** %4
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8** %11
br label %84
12: ; preds = %2
%13 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i8** %13
br label %84
14: ; preds = %2
%15 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8** %15
br label %84
16: ; preds = %2
%17 = load i8**, i8*** %4
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8** %17
br label %84
18: ; preds = %2
%19 = load i8**, i8*** %4
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8** %19
br label %84
20: ; preds = %2
%21 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i8** %21
br label %84
22: ; preds = %2
%23 = load i8**, i8*** %4
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i8** %23
br label %84
24: ; preds = %2
%25 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8** %25
br label %84
26: ; preds = %2
%27 = load i8**, i8*** %4
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i8** %27
br label %84
28: ; preds = %2
%29 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), i8** %29
br label %84
30: ; preds = %2
%31 = load i8**, i8*** %4
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8** %31
br label %84
32: ; preds = %2
%33 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.11, i64 0, i64 0), i8** %33
br label %84
34: ; preds = %2
%35 = load i8**, i8*** %4
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), i8** %35
br label %84
36: ; preds = %2
%37 = load i8**, i8*** %4
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0), i8** %37
br label %84
38: ; preds = %2
%39 = load i8**, i8*** %4
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8** %39
br label %84
40: ; preds = %2
%41 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), i8** %41
br label %84
42: ; preds = %2
%43 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0), i8** %43
br label %84
44: ; preds = %2
%45 = load i8**, i8*** %4
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), i8** %45
br label %84
46: ; preds = %2
%47 = load i8**, i8*** %4
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), i8** %47
br label %84
48: ; preds = %2
%49 = load i8**, i8*** %4
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i8** %49
br label %84
50: ; preds = %2
%51 = load i8**, i8*** %4
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0), i8** %51
br label %84
52: ; preds = %2
%53 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i64 0, i64 0), i8** %53
br label %84
54: ; preds = %2
%55 = load i8**, i8*** %4
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), i8** %55
br label %84
56: ; preds = %2
%57 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0), i8** %57
br label %84
58: ; preds = %2
%59 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.24, i64 0, i64 0), i8** %59
br label %84
60: ; preds = %2
%61 = load i8**, i8*** %4
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.25, i64 0, i64 0), i8** %61
br label %84
62: ; preds = %2
%63 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.26, i64 0, i64 0), i8** %63
br label %84
64: ; preds = %2
%65 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.27, i64 0, i64 0), i8** %65
br label %84
66: ; preds = %2
%67 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i8** %67
br label %84
68: ; preds = %2
%69 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i8** %69
br label %84
70: ; preds = %2
%71 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.30, i64 0, i64 0), i8** %71
br label %84
72: ; preds = %2
%73 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.31, i64 0, i64 0), i8** %73
br label %84
74: ; preds = %2
%75 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0), i8** %75
br label %84
76: ; preds = %2
%77 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0), i8** %77
br label %84
78: ; preds = %2
%79 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0), i8** %79
br label %84
80: ; preds = %2
%81 = load i8**, i8*** %4
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.35, i64 0, i64 0), i8** %81
br label %84
82: ; preds = %2
%83 = load i8**, i8*** %4
store i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.36, i64 0, i64 0), i8** %83
br label %84
84: ; preds = %82, %80, %78, %76, %74, %72, %70, %68, %66, %64, %62, %60, %58, %56, %54, %52, %50, %48, %46, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12, %10
ret void
}

LLVM IR (-O2):
@.str = [4 x i8] c".- \00"
@.str.1 = [6 x i8] c"-... \00"
@.str.2 = [6 x i8] c"-.-. \00"
@.str.3 = [5 x i8] c"-.. \00"
@.str.4 = [3 x i8] c". \00"
@.str.5 = [6 x i8] c"..-. \00"
@.str.6 = [5 x i8] c"--. \00"
@.str.7 = [6 x i8] c".... \00"
@.str.8 = [4 x i8] c".. \00"
@.str.9 = [6 x i8] c".--- \00"
@.str.10 = [5 x i8] c"-.- \00"
@.str.11 = [6 x i8] c".-.. \00"
@.str.12 = [4 x i8] c"-- \00"
@.str.13 = [4 x i8] c"-. \00"
@.str.14 = [5 x i8] c"--- \00"
@.str.15 = [6 x i8] c".--. \00"
@.str.16 = [6 x i8] c"--.- \00"
@.str.17 = [5 x i8] c".-. \00"
@.str.18 = [5 x i8] c"... \00"
@.str.19 = [3 x i8] c"- \00"
@.str.20 = [5 x i8] c"..- \00"
@.str.21 = [6 x i8] c"...- \00"
@.str.22 = [5 x i8] c".-- \00"
@.str.23 = [6 x i8] c"-..- \00"
@.str.24 = [6 x i8] c"-.-- \00"
@.str.25 = [6 x i8] c"--.. \00"
@.str.26 = [7 x i8] c"----- \00"
@.str.27 = [7 x i8] c".---- \00"
@.str.28 = [7 x i8] c"..--- \00"
@.str.29 = [7 x i8] c"...-- \00"
@.str.30 = [7 x i8] c"....- \00"
@.str.31 = [7 x i8] c"..... \00"
@.str.32 = [7 x i8] c"-.... \00"
@.str.33 = [7 x i8] c"--... \00"
@.str.34 = [7 x i8] c"---.. \00"
@.str.35 = [7 x i8] c"----. \00"
@.str.36 = [1 x i8] zeroinitializer
@reltable.encode_single = [43 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.26 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.27 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.28 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.29 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.30 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.31 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.32 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.33 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.34 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.35 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str.36 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str.36 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str.36 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str.36 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str.36 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str.36 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str.36 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.1 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.2 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.3 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([3 x i8]* @.str.4 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.5 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.6 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.7 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.8 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.9 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.10 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.11 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.12 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.13 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.14 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.15 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.16 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.17 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.18 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([3 x i8]* @.str.19 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.20 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.21 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.22 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.23 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.24 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.25 to i64), i64 ptrtoint ([43 x i32]* @reltable.encode_single to i64)) to i32)]
define void @encode_single(i8 signext %0, i8** writeonly %1) {
%3 = tail call signext i8 @up(i8 signext %0)
%4 = sext i8 %3 to i32
%5 = add nsw i32 %4, -48
%6 = icmp ult i32 %5, 43
br i1 %6, label %7, label %11
7: ; preds = %2
%8 = sext i32 %5 to i64
%9 = shl i64 %8, 2
%10 = call i8* @llvm.load.relative.i64(i8* bitcast ([43 x i32]* @reltable.encode_single to i8*), i64 %9)
br label %11
11: ; preds = %2, %7
%12 = phi i8* [ %10, %7 ], [ getelementptr inbounds ([1 x i8], [1 x i8]* @.str.36, i64 0, i64 0), %2 ]
store i8* %12, i8** %1
ret void
}