#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 */
typedef int /*<<< orphan*/ uint8_t;

/* Variables and functions */
int /*<<< orphan*/ blank(int /*<<< orphan*/ *, int);
int /*<<< orphan*/ dah(int /*<<< orphan*/ *);
int /*<<< orphan*/ dit(int /*<<< orphan*/ *);
void morse_encode_char(uint8_t *buffer, char letter) {
  switch (letter) {
  case 'A':
    dit(buffer);
    dah(buffer);
    break;
  case 'B':
    dah(buffer);
    dit(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case 'C':
    dah(buffer);
    dit(buffer);
    dah(buffer);
    dit(buffer);
    break;
  case 'D':
    dah(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case 'E':
    dit(buffer);
    break;
  case 'F':
    dit(buffer);
    dit(buffer);
    dah(buffer);
    dit(buffer);
    break;
  case 'G':
    dah(buffer);
    dah(buffer);
    dit(buffer);
    break;
  case 'H':
    dit(buffer);
    dit(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case 'I':
    dit(buffer);
    dit(buffer);
    break;
  case 'J':
    dit(buffer);
    dah(buffer);
    dah(buffer);
    dah(buffer);
    break;
  case 'K':
    dah(buffer);
    dit(buffer);
    dah(buffer);
    break;
  case 'L':
    dit(buffer);
    dah(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case 'M':
    dah(buffer);
    dah(buffer);
    break;
  case 'N':
    dah(buffer);
    dit(buffer);
    break;
  case 'O':
    dah(buffer);
    dah(buffer);
    dah(buffer);
    break;
  case 'P':
    dit(buffer);
    dah(buffer);
    dah(buffer);
    dit(buffer);
    break;
  case 'Q':
    dah(buffer);
    dah(buffer);
    dit(buffer);
    dah(buffer);
    break;
  case 'R':
    dit(buffer);
    dah(buffer);
    dit(buffer);
    break;
  case 'S':
    dit(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case 'T':
    dah(buffer);
    break;
  case 'U':
    dit(buffer);
    dit(buffer);
    dah(buffer);
    break;
  case 'V':
    dit(buffer);
    dit(buffer);
    dit(buffer);
    dah(buffer);
    break;
  case 'W':
    dit(buffer);
    dah(buffer);
    dah(buffer);
    break;
  case 'X':
    dah(buffer);
    dit(buffer);
    dit(buffer);
    dah(buffer);
    break;
  case 'Y':
    dah(buffer);
    dit(buffer);
    dah(buffer);
    dah(buffer);
    break;
  case 'Z':
    dah(buffer);
    dah(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case '1':
    dit(buffer);
    dah(buffer);
    dah(buffer);
    dah(buffer);
    dah(buffer);
    break;
  case '2':
    dit(buffer);
    dit(buffer);
    dah(buffer);
    dah(buffer);
    dah(buffer);
    break;
  case '3':
    dit(buffer);
    dit(buffer);
    dit(buffer);
    dah(buffer);
    dah(buffer);
    break;
  case '4':
    dit(buffer);
    dit(buffer);
    dit(buffer);
    dit(buffer);
    dah(buffer);
    break;
  case '5':
    dit(buffer);
    dit(buffer);
    dit(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case '6':
    dah(buffer);
    dit(buffer);
    dit(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case '7':
    dah(buffer);
    dah(buffer);
    dit(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case '8':
    dah(buffer);
    dah(buffer);
    dah(buffer);
    dit(buffer);
    dit(buffer);
    break;
  case '9':
    dah(buffer);
    dah(buffer);
    dah(buffer);
    dah(buffer);
    dit(buffer);
    break;
  case '0':
    dah(buffer);
    dah(buffer);
    dah(buffer);
    dah(buffer);
    dah(buffer);
    break;
  case ' ':
    blank(buffer, 3);
    break;
  case '.':
    dit(buffer);
    dah(buffer);
    dit(buffer);
    dah(buffer);
    dit(buffer);
    dah(buffer);
    break;
  }
  blank(buffer, 4);
}


x86 assembly (clang, -O0):
<morse_encode_char>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %sil,%al
mov    %rdi,-0x8(%rbp)
mov    %al,-0x9(%rbp)
movsbl -0x9(%rbp),%eax
add    $0xffffffe0,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x3a,%eax
ja     170d <morse_encode_char+0x5dd>
mov    -0x18(%rbp),%rax
lea    0xe9d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
mov    $0x3,%esi
call   1050 <blank@plt>
jmp    170d <morse_encode_char+0x5dd>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
call   1030 <dit@plt>
mov    -0x8(%rbp),%rdi
call   1040 <dah@plt>
mov    -0x8(%rbp),%rdi
mov    $0x4,%esi
call   1050 <blank@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<morse_encode_char>:
push   %rbx
mov    %rdi,%rbx
add    $0xffffffe0,%esi
cmp    $0x3a,%esi
ja     12e0 <morse_encode_char+0x1b0>
lea    0xeb9(%rip),%rax
movslq (%rax,%rsi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
mov    %rbx,%rdi
mov    $0x3,%esi
call   1050 <blank@plt>
jmp    12e0 <morse_encode_char+0x1b0>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    129c <morse_encode_char+0x16c>
mov    %rbx,%rdi
call   1040 <dah@plt>
jmp    1191 <morse_encode_char+0x61>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
jmp    11ab <morse_encode_char+0x7b>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
jmp    12d0 <morse_encode_char+0x1a0>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    12c8 <morse_encode_char+0x198>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    12ae <morse_encode_char+0x17e>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    11f4 <morse_encode_char+0xc4>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    120e <morse_encode_char+0xde>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    1268 <morse_encode_char+0x138>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
jmp    1260 <morse_encode_char+0x130>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
jmp    127a <morse_encode_char+0x14a>
mov    %rbx,%rdi
call   1040 <dah@plt>
jmp    124e <morse_encode_char+0x11e>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    1282 <morse_encode_char+0x152>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    128a <morse_encode_char+0x15a>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    12e0 <morse_encode_char+0x1b0>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
jmp    12b6 <morse_encode_char+0x186>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
jmp    12d8 <morse_encode_char+0x1a8>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1030 <dit@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
call   1040 <dah@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
pop    %rbx
jmp    1050 <blank@plt>

LLVM IR (-O0):
define void @morse_encode_char(i32* %0, i8 signext %1) {
%3 = alloca i32*
%4 = alloca i8
store i32* %0, i32** %3
store i8 %1, i8* %4
%5 = load i8, i8* %4
%6 = sext i8 %5 to i32
switch i32 %6, label %323 [
i32 65, label %7
i32 66, label %12
i32 67, label %21
i32 68, label %30
i32 69, label %37
i32 70, label %40
i32 71, label %49
i32 72, label %56
i32 73, label %65
i32 74, label %70
i32 75, label %79
i32 76, label %86
i32 77, label %95
i32 78, label %100
i32 79, label %105
i32 80, label %112
i32 81, label %121
i32 82, label %130
i32 83, label %137
i32 84, label %144
i32 85, label %147
i32 86, label %154
i32 87, label %163
i32 88, label %170
i32 89, label %179
i32 90, label %188
i32 49, label %197
i32 50, label %208
i32 51, label %219
i32 52, label %230
i32 53, label %241
i32 54, label %252
i32 55, label %263
i32 56, label %274
i32 57, label %285
i32 48, label %296
i32 32, label %307
i32 46, label %310
]
7: ; preds = %2
%8 = load i32*, i32** %3
%9 = call i32 @dit(i32* %8)
%10 = load i32*, i32** %3
%11 = call i32 @dah(i32* %10)
br label %323
12: ; preds = %2
%13 = load i32*, i32** %3
%14 = call i32 @dah(i32* %13)
%15 = load i32*, i32** %3
%16 = call i32 @dit(i32* %15)
%17 = load i32*, i32** %3
%18 = call i32 @dit(i32* %17)
%19 = load i32*, i32** %3
%20 = call i32 @dit(i32* %19)
br label %323
21: ; preds = %2
%22 = load i32*, i32** %3
%23 = call i32 @dah(i32* %22)
%24 = load i32*, i32** %3
%25 = call i32 @dit(i32* %24)
%26 = load i32*, i32** %3
%27 = call i32 @dah(i32* %26)
%28 = load i32*, i32** %3
%29 = call i32 @dit(i32* %28)
br label %323
30: ; preds = %2
%31 = load i32*, i32** %3
%32 = call i32 @dah(i32* %31)
%33 = load i32*, i32** %3
%34 = call i32 @dit(i32* %33)
%35 = load i32*, i32** %3
%36 = call i32 @dit(i32* %35)
br label %323
37: ; preds = %2
%38 = load i32*, i32** %3
%39 = call i32 @dit(i32* %38)
br label %323
40: ; preds = %2
%41 = load i32*, i32** %3
%42 = call i32 @dit(i32* %41)
%43 = load i32*, i32** %3
%44 = call i32 @dit(i32* %43)
%45 = load i32*, i32** %3
%46 = call i32 @dah(i32* %45)
%47 = load i32*, i32** %3
%48 = call i32 @dit(i32* %47)
br label %323
49: ; preds = %2
%50 = load i32*, i32** %3
%51 = call i32 @dah(i32* %50)
%52 = load i32*, i32** %3
%53 = call i32 @dah(i32* %52)
%54 = load i32*, i32** %3
%55 = call i32 @dit(i32* %54)
br label %323
56: ; preds = %2
%57 = load i32*, i32** %3
%58 = call i32 @dit(i32* %57)
%59 = load i32*, i32** %3
%60 = call i32 @dit(i32* %59)
%61 = load i32*, i32** %3
%62 = call i32 @dit(i32* %61)
%63 = load i32*, i32** %3
%64 = call i32 @dit(i32* %63)
br label %323
65: ; preds = %2
%66 = load i32*, i32** %3
%67 = call i32 @dit(i32* %66)
%68 = load i32*, i32** %3
%69 = call i32 @dit(i32* %68)
br label %323
70: ; preds = %2
%71 = load i32*, i32** %3
%72 = call i32 @dit(i32* %71)
%73 = load i32*, i32** %3
%74 = call i32 @dah(i32* %73)
%75 = load i32*, i32** %3
%76 = call i32 @dah(i32* %75)
%77 = load i32*, i32** %3
%78 = call i32 @dah(i32* %77)
br label %323
79: ; preds = %2
%80 = load i32*, i32** %3
%81 = call i32 @dah(i32* %80)
%82 = load i32*, i32** %3
%83 = call i32 @dit(i32* %82)
%84 = load i32*, i32** %3
%85 = call i32 @dah(i32* %84)
br label %323
86: ; preds = %2
%87 = load i32*, i32** %3
%88 = call i32 @dit(i32* %87)
%89 = load i32*, i32** %3
%90 = call i32 @dah(i32* %89)
%91 = load i32*, i32** %3
%92 = call i32 @dit(i32* %91)
%93 = load i32*, i32** %3
%94 = call i32 @dit(i32* %93)
br label %323
95: ; preds = %2
%96 = load i32*, i32** %3
%97 = call i32 @dah(i32* %96)
%98 = load i32*, i32** %3
%99 = call i32 @dah(i32* %98)
br label %323
100: ; preds = %2
%101 = load i32*, i32** %3
%102 = call i32 @dah(i32* %101)
%103 = load i32*, i32** %3
%104 = call i32 @dit(i32* %103)
br label %323
105: ; preds = %2
%106 = load i32*, i32** %3
%107 = call i32 @dah(i32* %106)
%108 = load i32*, i32** %3
%109 = call i32 @dah(i32* %108)
%110 = load i32*, i32** %3
%111 = call i32 @dah(i32* %110)
br label %323
112: ; preds = %2
%113 = load i32*, i32** %3
%114 = call i32 @dit(i32* %113)
%115 = load i32*, i32** %3
%116 = call i32 @dah(i32* %115)
%117 = load i32*, i32** %3
%118 = call i32 @dah(i32* %117)
%119 = load i32*, i32** %3
%120 = call i32 @dit(i32* %119)
br label %323
121: ; preds = %2
%122 = load i32*, i32** %3
%123 = call i32 @dah(i32* %122)
%124 = load i32*, i32** %3
%125 = call i32 @dah(i32* %124)
%126 = load i32*, i32** %3
%127 = call i32 @dit(i32* %126)
%128 = load i32*, i32** %3
%129 = call i32 @dah(i32* %128)
br label %323
130: ; preds = %2
%131 = load i32*, i32** %3
%132 = call i32 @dit(i32* %131)
%133 = load i32*, i32** %3
%134 = call i32 @dah(i32* %133)
%135 = load i32*, i32** %3
%136 = call i32 @dit(i32* %135)
br label %323
137: ; preds = %2
%138 = load i32*, i32** %3
%139 = call i32 @dit(i32* %138)
%140 = load i32*, i32** %3
%141 = call i32 @dit(i32* %140)
%142 = load i32*, i32** %3
%143 = call i32 @dit(i32* %142)
br label %323
144: ; preds = %2
%145 = load i32*, i32** %3
%146 = call i32 @dah(i32* %145)
br label %323
147: ; preds = %2
%148 = load i32*, i32** %3
%149 = call i32 @dit(i32* %148)
%150 = load i32*, i32** %3
%151 = call i32 @dit(i32* %150)
%152 = load i32*, i32** %3
%153 = call i32 @dah(i32* %152)
br label %323
154: ; preds = %2
%155 = load i32*, i32** %3
%156 = call i32 @dit(i32* %155)
%157 = load i32*, i32** %3
%158 = call i32 @dit(i32* %157)
%159 = load i32*, i32** %3
%160 = call i32 @dit(i32* %159)
%161 = load i32*, i32** %3
%162 = call i32 @dah(i32* %161)
br label %323
163: ; preds = %2
%164 = load i32*, i32** %3
%165 = call i32 @dit(i32* %164)
%166 = load i32*, i32** %3
%167 = call i32 @dah(i32* %166)
%168 = load i32*, i32** %3
%169 = call i32 @dah(i32* %168)
br label %323
170: ; preds = %2
%171 = load i32*, i32** %3
%172 = call i32 @dah(i32* %171)
%173 = load i32*, i32** %3
%174 = call i32 @dit(i32* %173)
%175 = load i32*, i32** %3
%176 = call i32 @dit(i32* %175)
%177 = load i32*, i32** %3
%178 = call i32 @dah(i32* %177)
br label %323
179: ; preds = %2
%180 = load i32*, i32** %3
%181 = call i32 @dah(i32* %180)
%182 = load i32*, i32** %3
%183 = call i32 @dit(i32* %182)
%184 = load i32*, i32** %3
%185 = call i32 @dah(i32* %184)
%186 = load i32*, i32** %3
%187 = call i32 @dah(i32* %186)
br label %323
188: ; preds = %2
%189 = load i32*, i32** %3
%190 = call i32 @dah(i32* %189)
%191 = load i32*, i32** %3
%192 = call i32 @dah(i32* %191)
%193 = load i32*, i32** %3
%194 = call i32 @dit(i32* %193)
%195 = load i32*, i32** %3
%196 = call i32 @dit(i32* %195)
br label %323
197: ; preds = %2
%198 = load i32*, i32** %3
%199 = call i32 @dit(i32* %198)
%200 = load i32*, i32** %3
%201 = call i32 @dah(i32* %200)
%202 = load i32*, i32** %3
%203 = call i32 @dah(i32* %202)
%204 = load i32*, i32** %3
%205 = call i32 @dah(i32* %204)
%206 = load i32*, i32** %3
%207 = call i32 @dah(i32* %206)
br label %323
208: ; preds = %2
%209 = load i32*, i32** %3
%210 = call i32 @dit(i32* %209)
%211 = load i32*, i32** %3
%212 = call i32 @dit(i32* %211)
%213 = load i32*, i32** %3
%214 = call i32 @dah(i32* %213)
%215 = load i32*, i32** %3
%216 = call i32 @dah(i32* %215)
%217 = load i32*, i32** %3
%218 = call i32 @dah(i32* %217)
br label %323
219: ; preds = %2
%220 = load i32*, i32** %3
%221 = call i32 @dit(i32* %220)
%222 = load i32*, i32** %3
%223 = call i32 @dit(i32* %222)
%224 = load i32*, i32** %3
%225 = call i32 @dit(i32* %224)
%226 = load i32*, i32** %3
%227 = call i32 @dah(i32* %226)
%228 = load i32*, i32** %3
%229 = call i32 @dah(i32* %228)
br label %323
230: ; preds = %2
%231 = load i32*, i32** %3
%232 = call i32 @dit(i32* %231)
%233 = load i32*, i32** %3
%234 = call i32 @dit(i32* %233)
%235 = load i32*, i32** %3
%236 = call i32 @dit(i32* %235)
%237 = load i32*, i32** %3
%238 = call i32 @dit(i32* %237)
%239 = load i32*, i32** %3
%240 = call i32 @dah(i32* %239)
br label %323
241: ; preds = %2
%242 = load i32*, i32** %3
%243 = call i32 @dit(i32* %242)
%244 = load i32*, i32** %3
%245 = call i32 @dit(i32* %244)
%246 = load i32*, i32** %3
%247 = call i32 @dit(i32* %246)
%248 = load i32*, i32** %3
%249 = call i32 @dit(i32* %248)
%250 = load i32*, i32** %3
%251 = call i32 @dit(i32* %250)
br label %323
252: ; preds = %2
%253 = load i32*, i32** %3
%254 = call i32 @dah(i32* %253)
%255 = load i32*, i32** %3
%256 = call i32 @dit(i32* %255)
%257 = load i32*, i32** %3
%258 = call i32 @dit(i32* %257)
%259 = load i32*, i32** %3
%260 = call i32 @dit(i32* %259)
%261 = load i32*, i32** %3
%262 = call i32 @dit(i32* %261)
br label %323
263: ; preds = %2
%264 = load i32*, i32** %3
%265 = call i32 @dah(i32* %264)
%266 = load i32*, i32** %3
%267 = call i32 @dah(i32* %266)
%268 = load i32*, i32** %3
%269 = call i32 @dit(i32* %268)
%270 = load i32*, i32** %3
%271 = call i32 @dit(i32* %270)
%272 = load i32*, i32** %3
%273 = call i32 @dit(i32* %272)
br label %323
274: ; preds = %2
%275 = load i32*, i32** %3
%276 = call i32 @dah(i32* %275)
%277 = load i32*, i32** %3
%278 = call i32 @dah(i32* %277)
%279 = load i32*, i32** %3
%280 = call i32 @dah(i32* %279)
%281 = load i32*, i32** %3
%282 = call i32 @dit(i32* %281)
%283 = load i32*, i32** %3
%284 = call i32 @dit(i32* %283)
br label %323
285: ; preds = %2
%286 = load i32*, i32** %3
%287 = call i32 @dah(i32* %286)
%288 = load i32*, i32** %3
%289 = call i32 @dah(i32* %288)
%290 = load i32*, i32** %3
%291 = call i32 @dah(i32* %290)
%292 = load i32*, i32** %3
%293 = call i32 @dah(i32* %292)
%294 = load i32*, i32** %3
%295 = call i32 @dit(i32* %294)
br label %323
296: ; preds = %2
%297 = load i32*, i32** %3
%298 = call i32 @dah(i32* %297)
%299 = load i32*, i32** %3
%300 = call i32 @dah(i32* %299)
%301 = load i32*, i32** %3
%302 = call i32 @dah(i32* %301)
%303 = load i32*, i32** %3
%304 = call i32 @dah(i32* %303)
%305 = load i32*, i32** %3
%306 = call i32 @dah(i32* %305)
br label %323
307: ; preds = %2
%308 = load i32*, i32** %3
%309 = call i32 @blank(i32* %308, i32 3)
br label %323
310: ; preds = %2
%311 = load i32*, i32** %3
%312 = call i32 @dit(i32* %311)
%313 = load i32*, i32** %3
%314 = call i32 @dah(i32* %313)
%315 = load i32*, i32** %3
%316 = call i32 @dit(i32* %315)
%317 = load i32*, i32** %3
%318 = call i32 @dah(i32* %317)
%319 = load i32*, i32** %3
%320 = call i32 @dit(i32* %319)
%321 = load i32*, i32** %3
%322 = call i32 @dah(i32* %321)
br label %323
323: ; preds = %2, %310, %307, %296, %285, %274, %263, %252, %241, %230, %219, %208, %197, %188, %179, %170, %163, %154, %147, %144, %137, %130, %121, %112, %105, %100, %95, %86, %79, %70, %65, %56, %49, %40, %37, %30, %21, %12, %7
%324 = load i32*, i32** %3
%325 = call i32 @blank(i32* %324, i32 4)
ret void
}

LLVM IR (-O2):
define void @morse_encode_char(i32* %0, i8 signext %1) {
%3 = sext i8 %1 to i32
switch i32 %3, label %181 [
i32 65, label %4
i32 66, label %7
i32 67, label %12
i32 68, label %17
i32 69, label %21
i32 70, label %23
i32 71, label %28
i32 72, label %32
i32 73, label %37
i32 74, label %40
i32 75, label %45
i32 76, label %49
i32 77, label %54
i32 78, label %57
i32 79, label %60
i32 80, label %64
i32 81, label %69
i32 82, label %74
i32 83, label %78
i32 84, label %82
i32 85, label %84
i32 86, label %88
i32 87, label %93
i32 88, label %97
i32 89, label %102
i32 90, label %107
i32 49, label %112
i32 50, label %118
i32 51, label %124
i32 52, label %130
i32 53, label %136
i32 54, label %142
i32 55, label %148
i32 56, label %154
i32 57, label %160
i32 48, label %166
i32 32, label %172
i32 46, label %174
]
4: ; preds = %2
%5 = tail call i32 @dit(i32* %0)
%6 = tail call i32 @dah(i32* %0)
br label %181
7: ; preds = %2
%8 = tail call i32 @dah(i32* %0)
%9 = tail call i32 @dit(i32* %0)
%10 = tail call i32 @dit(i32* %0)
%11 = tail call i32 @dit(i32* %0)
br label %181
12: ; preds = %2
%13 = tail call i32 @dah(i32* %0)
%14 = tail call i32 @dit(i32* %0)
%15 = tail call i32 @dah(i32* %0)
%16 = tail call i32 @dit(i32* %0)
br label %181
17: ; preds = %2
%18 = tail call i32 @dah(i32* %0)
%19 = tail call i32 @dit(i32* %0)
%20 = tail call i32 @dit(i32* %0)
br label %181
21: ; preds = %2
%22 = tail call i32 @dit(i32* %0)
br label %181
23: ; preds = %2
%24 = tail call i32 @dit(i32* %0)
%25 = tail call i32 @dit(i32* %0)
%26 = tail call i32 @dah(i32* %0)
%27 = tail call i32 @dit(i32* %0)
br label %181
28: ; preds = %2
%29 = tail call i32 @dah(i32* %0)
%30 = tail call i32 @dah(i32* %0)
%31 = tail call i32 @dit(i32* %0)
br label %181
32: ; preds = %2
%33 = tail call i32 @dit(i32* %0)
%34 = tail call i32 @dit(i32* %0)
%35 = tail call i32 @dit(i32* %0)
%36 = tail call i32 @dit(i32* %0)
br label %181
37: ; preds = %2
%38 = tail call i32 @dit(i32* %0)
%39 = tail call i32 @dit(i32* %0)
br label %181
40: ; preds = %2
%41 = tail call i32 @dit(i32* %0)
%42 = tail call i32 @dah(i32* %0)
%43 = tail call i32 @dah(i32* %0)
%44 = tail call i32 @dah(i32* %0)
br label %181
45: ; preds = %2
%46 = tail call i32 @dah(i32* %0)
%47 = tail call i32 @dit(i32* %0)
%48 = tail call i32 @dah(i32* %0)
br label %181
49: ; preds = %2
%50 = tail call i32 @dit(i32* %0)
%51 = tail call i32 @dah(i32* %0)
%52 = tail call i32 @dit(i32* %0)
%53 = tail call i32 @dit(i32* %0)
br label %181
54: ; preds = %2
%55 = tail call i32 @dah(i32* %0)
%56 = tail call i32 @dah(i32* %0)
br label %181
57: ; preds = %2
%58 = tail call i32 @dah(i32* %0)
%59 = tail call i32 @dit(i32* %0)
br label %181
60: ; preds = %2
%61 = tail call i32 @dah(i32* %0)
%62 = tail call i32 @dah(i32* %0)
%63 = tail call i32 @dah(i32* %0)
br label %181
64: ; preds = %2
%65 = tail call i32 @dit(i32* %0)
%66 = tail call i32 @dah(i32* %0)
%67 = tail call i32 @dah(i32* %0)
%68 = tail call i32 @dit(i32* %0)
br label %181
69: ; preds = %2
%70 = tail call i32 @dah(i32* %0)
%71 = tail call i32 @dah(i32* %0)
%72 = tail call i32 @dit(i32* %0)
%73 = tail call i32 @dah(i32* %0)
br label %181
74: ; preds = %2
%75 = tail call i32 @dit(i32* %0)
%76 = tail call i32 @dah(i32* %0)
%77 = tail call i32 @dit(i32* %0)
br label %181
78: ; preds = %2
%79 = tail call i32 @dit(i32* %0)
%80 = tail call i32 @dit(i32* %0)
%81 = tail call i32 @dit(i32* %0)
br label %181
82: ; preds = %2
%83 = tail call i32 @dah(i32* %0)
br label %181
84: ; preds = %2
%85 = tail call i32 @dit(i32* %0)
%86 = tail call i32 @dit(i32* %0)
%87 = tail call i32 @dah(i32* %0)
br label %181
88: ; preds = %2
%89 = tail call i32 @dit(i32* %0)
%90 = tail call i32 @dit(i32* %0)
%91 = tail call i32 @dit(i32* %0)
%92 = tail call i32 @dah(i32* %0)
br label %181
93: ; preds = %2
%94 = tail call i32 @dit(i32* %0)
%95 = tail call i32 @dah(i32* %0)
%96 = tail call i32 @dah(i32* %0)
br label %181
97: ; preds = %2
%98 = tail call i32 @dah(i32* %0)
%99 = tail call i32 @dit(i32* %0)
%100 = tail call i32 @dit(i32* %0)
%101 = tail call i32 @dah(i32* %0)
br label %181
102: ; preds = %2
%103 = tail call i32 @dah(i32* %0)
%104 = tail call i32 @dit(i32* %0)
%105 = tail call i32 @dah(i32* %0)
%106 = tail call i32 @dah(i32* %0)
br label %181
107: ; preds = %2
%108 = tail call i32 @dah(i32* %0)
%109 = tail call i32 @dah(i32* %0)
%110 = tail call i32 @dit(i32* %0)
%111 = tail call i32 @dit(i32* %0)
br label %181
112: ; preds = %2
%113 = tail call i32 @dit(i32* %0)
%114 = tail call i32 @dah(i32* %0)
%115 = tail call i32 @dah(i32* %0)
%116 = tail call i32 @dah(i32* %0)
%117 = tail call i32 @dah(i32* %0)
br label %181
118: ; preds = %2
%119 = tail call i32 @dit(i32* %0)
%120 = tail call i32 @dit(i32* %0)
%121 = tail call i32 @dah(i32* %0)
%122 = tail call i32 @dah(i32* %0)
%123 = tail call i32 @dah(i32* %0)
br label %181
124: ; preds = %2
%125 = tail call i32 @dit(i32* %0)
%126 = tail call i32 @dit(i32* %0)
%127 = tail call i32 @dit(i32* %0)
%128 = tail call i32 @dah(i32* %0)
%129 = tail call i32 @dah(i32* %0)
br label %181
130: ; preds = %2
%131 = tail call i32 @dit(i32* %0)
%132 = tail call i32 @dit(i32* %0)
%133 = tail call i32 @dit(i32* %0)
%134 = tail call i32 @dit(i32* %0)
%135 = tail call i32 @dah(i32* %0)
br label %181
136: ; preds = %2
%137 = tail call i32 @dit(i32* %0)
%138 = tail call i32 @dit(i32* %0)
%139 = tail call i32 @dit(i32* %0)
%140 = tail call i32 @dit(i32* %0)
%141 = tail call i32 @dit(i32* %0)
br label %181
142: ; preds = %2
%143 = tail call i32 @dah(i32* %0)
%144 = tail call i32 @dit(i32* %0)
%145 = tail call i32 @dit(i32* %0)
%146 = tail call i32 @dit(i32* %0)
%147 = tail call i32 @dit(i32* %0)
br label %181
148: ; preds = %2
%149 = tail call i32 @dah(i32* %0)
%150 = tail call i32 @dah(i32* %0)
%151 = tail call i32 @dit(i32* %0)
%152 = tail call i32 @dit(i32* %0)
%153 = tail call i32 @dit(i32* %0)
br label %181
154: ; preds = %2
%155 = tail call i32 @dah(i32* %0)
%156 = tail call i32 @dah(i32* %0)
%157 = tail call i32 @dah(i32* %0)
%158 = tail call i32 @dit(i32* %0)
%159 = tail call i32 @dit(i32* %0)
br label %181
160: ; preds = %2
%161 = tail call i32 @dah(i32* %0)
%162 = tail call i32 @dah(i32* %0)
%163 = tail call i32 @dah(i32* %0)
%164 = tail call i32 @dah(i32* %0)
%165 = tail call i32 @dit(i32* %0)
br label %181
166: ; preds = %2
%167 = tail call i32 @dah(i32* %0)
%168 = tail call i32 @dah(i32* %0)
%169 = tail call i32 @dah(i32* %0)
%170 = tail call i32 @dah(i32* %0)
%171 = tail call i32 @dah(i32* %0)
br label %181
172: ; preds = %2
%173 = tail call i32 @blank(i32* %0, i32 3)
br label %181
174: ; preds = %2
%175 = tail call i32 @dit(i32* %0)
%176 = tail call i32 @dah(i32* %0)
%177 = tail call i32 @dit(i32* %0)
%178 = tail call i32 @dah(i32* %0)
%179 = tail call i32 @dit(i32* %0)
%180 = tail call i32 @dah(i32* %0)
br label %181
181: ; preds = %2, %174, %172, %166, %160, %154, %148, %142, %136, %130, %124, %118, %112, %107, %102, %97, %93, %88, %84, %82, %78, %74, %69, %64, %60, %57, %54, %49, %45, %40, %37, %32, %28, %23, %21, %17, %12, %7, %4
%182 = tail call i32 @blank(i32* %0, i32 4)
ret void
}