#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 uint16_t;

/* Variables and functions */
int /*<<< orphan*/ strcpy(char *, char *);
void info(uint16_t addr, char *note) {
  switch (addr) {
  case 0xFF00:
    strcpy(note, "; input");
    break;
  case 0xFF01:
    strcpy(note, "; serial data");
    break;
  case 0xFF02:
    strcpy(note, "; serial ctrl");
    break;
  case 0xFF04:
    strcpy(note, "; div");
    break;
  case 0xFF05:
    strcpy(note, "; tima");
    break;
  case 0xFF06:
    strcpy(note, "; tma");
    break;
  case 0xFF07:
    strcpy(note, "; tac");
    break;
  case 0xFF0F:
    strcpy(note, "; if");
    break;
  case 0xFF10:
    strcpy(note, "; ch1 sweep");
    break;
  case 0xFF11:
    strcpy(note, "; ch1 length");
    break;
  case 0xFF12:
    strcpy(note, "; ch1 env");
    break;
  case 0xFF13:
    strcpy(note, "; ch1 lofreq");
    break;
  case 0xFF14:
    strcpy(note, "; ch1 hifreq");
    break;
  case 0xFF15:
    strcpy(note, "; ch2 sweep");
    break;
  case 0xFF16:
    strcpy(note, "; ch2 length");
    break;
  case 0xFF17:
    strcpy(note, "; ch2 env");
    break;
  case 0xFF18:
    strcpy(note, "; ch2 lofreq");
    break;
  case 0xFF19:
    strcpy(note, "; ch2 hifreq");
    break;
  case 0xFF1A:
    strcpy(note, "; ch3 sweep");
    break;
  case 0xFF1B:
    strcpy(note, "; ch3 length");
    break;
  case 0xFF1C:
    strcpy(note, "; ch3 env");
    break;
  case 0xFF1D:
    strcpy(note, "; ch3 lofreq");
    break;
  case 0xFF1E:
    strcpy(note, "; ch3 hifreq");
    break;
  case 0xFF20:
    strcpy(note, "; noise len");
    break;
  case 0xFF21:
    strcpy(note, "; noise env");
    break;
  case 0xFF22:
    strcpy(note, "; noise poly");
    break;
  case 0xFF23:
    strcpy(note, "; noise ctrl");
    break;
  case 0xFF24:
    strcpy(note, "; sound ctrl");
    break;
  case 0xFF25:
    strcpy(note, "; sound out");
    break;
  case 0xFF26:
    strcpy(note, "; sound enable");
    break;
  case 0xFF40:
    strcpy(note, "; lcd ctrl");
    break;
  case 0xFF41:
    strcpy(note, "; lcd stat");
    break;
  case 0xFF42:
    strcpy(note, "; scroll y");
    break;
  case 0xFF43:
    strcpy(note, "; scroll x");
    break;
  case 0xFF44:
    strcpy(note, "; ly");
    break;
  case 0xFF45:
    strcpy(note, "; lyc");
    break;
  case 0xFF46:
    strcpy(note, "; oam dma");
    break;
  case 0xFF47:
    strcpy(note, "; bg pal");
    break;
  case 0xFF48:
    strcpy(note, "; obj1 pal");
    break;
  case 0xFF49:
    strcpy(note, "; obj2 pal");
    break;
  case 0xFF4A:
    strcpy(note, "; window y");
    break;
  case 0xFF4B:
    strcpy(note, "; window x");
    break;
  case 0xFFFF:
    strcpy(note, "; ie");
    break;
  default:
    break;
  }
}


x86 assembly (clang, -O0):
<info>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x4(%rbp),%eax
add    $0xffff0100,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0xff,%eax
ja     14d3 <info+0x3c3>
mov    -0x18(%rbp),%rax
lea    0xebd(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rdi
lea    0x12a9(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x129c(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1295(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x128e(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x127f(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1271(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1262(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1253(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1243(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x123a(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1232(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1227(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x121f(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1217(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x120e(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1206(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11fb(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11f3(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11eb(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11e2(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11da(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11cf(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11c7(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11bf(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11b6(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11ad(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x11a5(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x119d(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1195(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x118c(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1186(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x117c(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1172(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1168(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x115e(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x114e(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x113f(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1134(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1128(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x111e(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1114(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x110a(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
mov    -0x10(%rbp),%rdi
lea    0x1100(%rip),%rsi
call   1030 <strcpy@plt>
jmp    14d8 <info+0x3c8>
jmp    14d8 <info+0x3c8>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<info>:
add    $0xffff0100,%edi
cmp    $0xff,%edi
ja     130d <info+0x1fd>
lea    0x12d7(%rip),%rax
lea    0xed0(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
lea    0x12c8(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12ca(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12cc(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c6(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c1(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12bb(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b5(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12ae(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12ae(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12af(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12ad(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12ae(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12af(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12af(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b0(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12ae(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12af(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b0(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b0(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b1(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12af(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b0(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b1(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b1(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b1(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b2(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b3(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b4(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12b7(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12bd(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12bf(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c1(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c3(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c5(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c1(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12be(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12bf(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12bf(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c1(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c3(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c5(%rip),%rax
jmp    1302 <info+0x1f2>
lea    0x12c7(%rip),%rax
mov    %rsi,%rdi
mov    %rax,%rsi
jmp    1030 <strcpy@plt>
ret

LLVM IR (-O0):
@.str = [8 x i8] c"; input\00"
@.str.1 = [14 x i8] c"; serial data\00"
@.str.2 = [14 x i8] c"; serial ctrl\00"
@.str.3 = [6 x i8] c"; div\00"
@.str.4 = [7 x i8] c"; tima\00"
@.str.5 = [6 x i8] c"; tma\00"
@.str.6 = [6 x i8] c"; tac\00"
@.str.7 = [5 x i8] c"; if\00"
@.str.8 = [12 x i8] c"; ch1 sweep\00"
@.str.9 = [13 x i8] c"; ch1 length\00"
@.str.10 = [10 x i8] c"; ch1 env\00"
@.str.11 = [13 x i8] c"; ch1 lofreq\00"
@.str.12 = [13 x i8] c"; ch1 hifreq\00"
@.str.13 = [12 x i8] c"; ch2 sweep\00"
@.str.14 = [13 x i8] c"; ch2 length\00"
@.str.15 = [10 x i8] c"; ch2 env\00"
@.str.16 = [13 x i8] c"; ch2 lofreq\00"
@.str.17 = [13 x i8] c"; ch2 hifreq\00"
@.str.18 = [12 x i8] c"; ch3 sweep\00"
@.str.19 = [13 x i8] c"; ch3 length\00"
@.str.20 = [10 x i8] c"; ch3 env\00"
@.str.21 = [13 x i8] c"; ch3 lofreq\00"
@.str.22 = [13 x i8] c"; ch3 hifreq\00"
@.str.23 = [12 x i8] c"; noise len\00"
@.str.24 = [12 x i8] c"; noise env\00"
@.str.25 = [13 x i8] c"; noise poly\00"
@.str.26 = [13 x i8] c"; noise ctrl\00"
@.str.27 = [13 x i8] c"; sound ctrl\00"
@.str.28 = [12 x i8] c"; sound out\00"
@.str.29 = [15 x i8] c"; sound enable\00"
@.str.30 = [11 x i8] c"; lcd ctrl\00"
@.str.31 = [11 x i8] c"; lcd stat\00"
@.str.32 = [11 x i8] c"; scroll y\00"
@.str.33 = [11 x i8] c"; scroll x\00"
@.str.34 = [5 x i8] c"; ly\00"
@.str.35 = [6 x i8] c"; lyc\00"
@.str.36 = [10 x i8] c"; oam dma\00"
@.str.37 = [9 x i8] c"; bg pal\00"
@.str.38 = [11 x i8] c"; obj1 pal\00"
@.str.39 = [11 x i8] c"; obj2 pal\00"
@.str.40 = [11 x i8] c"; window y\00"
@.str.41 = [11 x i8] c"; window x\00"
@.str.42 = [5 x i8] c"; ie\00"
define void @info(i32 %0, i8* %1) {
%3 = alloca i32
%4 = alloca i8*
store i32 %0, i32* %3
store i8* %1, i8** %4
%5 = load i32, i32* %3
switch i32 %5, label %135 [
i32 65280, label %6
i32 65281, label %9
i32 65282, label %12
i32 65284, label %15
i32 65285, label %18
i32 65286, label %21
i32 65287, label %24
i32 65295, label %27
i32 65296, label %30
i32 65297, label %33
i32 65298, label %36
i32 65299, label %39
i32 65300, label %42
i32 65301, label %45
i32 65302, label %48
i32 65303, label %51
i32 65304, label %54
i32 65305, label %57
i32 65306, label %60
i32 65307, label %63
i32 65308, label %66
i32 65309, label %69
i32 65310, label %72
i32 65312, label %75
i32 65313, label %78
i32 65314, label %81
i32 65315, label %84
i32 65316, label %87
i32 65317, label %90
i32 65318, label %93
i32 65344, label %96
i32 65345, label %99
i32 65346, label %102
i32 65347, label %105
i32 65348, label %108
i32 65349, label %111
i32 65350, label %114
i32 65351, label %117
i32 65352, label %120
i32 65353, label %123
i32 65354, label %126
i32 65355, label %129
i32 65535, label %132
]
6: ; preds = %2
%7 = load i8*, i8** %4
%8 = call i32 @strcpy(i8* %7, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
br label %136
9: ; preds = %2
%10 = load i8*, i8** %4
%11 = call i32 @strcpy(i8* %10, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i64 0, i64 0))
br label %136
12: ; preds = %2
%13 = load i8*, i8** %4
%14 = call i32 @strcpy(i8* %13, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0))
br label %136
15: ; preds = %2
%16 = load i8*, i8** %4
%17 = call i32 @strcpy(i8* %16, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
br label %136
18: ; preds = %2
%19 = load i8*, i8** %4
%20 = call i32 @strcpy(i8* %19, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0))
br label %136
21: ; preds = %2
%22 = load i8*, i8** %4
%23 = call i32 @strcpy(i8* %22, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
br label %136
24: ; preds = %2
%25 = load i8*, i8** %4
%26 = call i32 @strcpy(i8* %25, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
br label %136
27: ; preds = %2
%28 = load i8*, i8** %4
%29 = call i32 @strcpy(i8* %28, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
br label %136
30: ; preds = %2
%31 = load i8*, i8** %4
%32 = call i32 @strcpy(i8* %31, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
br label %136
33: ; preds = %2
%34 = load i8*, i8** %4
%35 = call i32 @strcpy(i8* %34, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
br label %136
36: ; preds = %2
%37 = load i8*, i8** %4
%38 = call i32 @strcpy(i8* %37, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0))
br label %136
39: ; preds = %2
%40 = load i8*, i8** %4
%41 = call i32 @strcpy(i8* %40, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0))
br label %136
42: ; preds = %2
%43 = load i8*, i8** %4
%44 = call i32 @strcpy(i8* %43, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i64 0, i64 0))
br label %136
45: ; preds = %2
%46 = load i8*, i8** %4
%47 = call i32 @strcpy(i8* %46, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i64 0, i64 0))
br label %136
48: ; preds = %2
%49 = load i8*, i8** %4
%50 = call i32 @strcpy(i8* %49, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0))
br label %136
51: ; preds = %2
%52 = load i8*, i8** %4
%53 = call i32 @strcpy(i8* %52, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.15, i64 0, i64 0))
br label %136
54: ; preds = %2
%55 = load i8*, i8** %4
%56 = call i32 @strcpy(i8* %55, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0))
br label %136
57: ; preds = %2
%58 = load i8*, i8** %4
%59 = call i32 @strcpy(i8* %58, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i64 0, i64 0))
br label %136
60: ; preds = %2
%61 = load i8*, i8** %4
%62 = call i32 @strcpy(i8* %61, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
br label %136
63: ; preds = %2
%64 = load i8*, i8** %4
%65 = call i32 @strcpy(i8* %64, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i64 0, i64 0))
br label %136
66: ; preds = %2
%67 = load i8*, i8** %4
%68 = call i32 @strcpy(i8* %67, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0))
br label %136
69: ; preds = %2
%70 = load i8*, i8** %4
%71 = call i32 @strcpy(i8* %70, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i64 0, i64 0))
br label %136
72: ; preds = %2
%73 = load i8*, i8** %4
%74 = call i32 @strcpy(i8* %73, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.22, i64 0, i64 0))
br label %136
75: ; preds = %2
%76 = load i8*, i8** %4
%77 = call i32 @strcpy(i8* %76, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0))
br label %136
78: ; preds = %2
%79 = load i8*, i8** %4
%80 = call i32 @strcpy(i8* %79, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0))
br label %136
81: ; preds = %2
%82 = load i8*, i8** %4
%83 = call i32 @strcpy(i8* %82, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0))
br label %136
84: ; preds = %2
%85 = load i8*, i8** %4
%86 = call i32 @strcpy(i8* %85, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0))
br label %136
87: ; preds = %2
%88 = load i8*, i8** %4
%89 = call i32 @strcpy(i8* %88, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i64 0, i64 0))
br label %136
90: ; preds = %2
%91 = load i8*, i8** %4
%92 = call i32 @strcpy(i8* %91, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.28, i64 0, i64 0))
br label %136
93: ; preds = %2
%94 = load i8*, i8** %4
%95 = call i32 @strcpy(i8* %94, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.29, i64 0, i64 0))
br label %136
96: ; preds = %2
%97 = load i8*, i8** %4
%98 = call i32 @strcpy(i8* %97, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.30, i64 0, i64 0))
br label %136
99: ; preds = %2
%100 = load i8*, i8** %4
%101 = call i32 @strcpy(i8* %100, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.31, i64 0, i64 0))
br label %136
102: ; preds = %2
%103 = load i8*, i8** %4
%104 = call i32 @strcpy(i8* %103, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.32, i64 0, i64 0))
br label %136
105: ; preds = %2
%106 = load i8*, i8** %4
%107 = call i32 @strcpy(i8* %106, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0))
br label %136
108: ; preds = %2
%109 = load i8*, i8** %4
%110 = call i32 @strcpy(i8* %109, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0))
br label %136
111: ; preds = %2
%112 = load i8*, i8** %4
%113 = call i32 @strcpy(i8* %112, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.35, i64 0, i64 0))
br label %136
114: ; preds = %2
%115 = load i8*, i8** %4
%116 = call i32 @strcpy(i8* %115, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.36, i64 0, i64 0))
br label %136
117: ; preds = %2
%118 = load i8*, i8** %4
%119 = call i32 @strcpy(i8* %118, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.37, i64 0, i64 0))
br label %136
120: ; preds = %2
%121 = load i8*, i8** %4
%122 = call i32 @strcpy(i8* %121, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.38, i64 0, i64 0))
br label %136
123: ; preds = %2
%124 = load i8*, i8** %4
%125 = call i32 @strcpy(i8* %124, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.39, i64 0, i64 0))
br label %136
126: ; preds = %2
%127 = load i8*, i8** %4
%128 = call i32 @strcpy(i8* %127, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.40, i64 0, i64 0))
br label %136
129: ; preds = %2
%130 = load i8*, i8** %4
%131 = call i32 @strcpy(i8* %130, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.41, i64 0, i64 0))
br label %136
132: ; preds = %2
%133 = load i8*, i8** %4
%134 = call i32 @strcpy(i8* %133, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.42, i64 0, i64 0))
br label %136
135: ; preds = %2
br label %136
136: ; preds = %135, %132, %129, %126, %123, %120, %117, %114, %111, %108, %105, %102, %99, %96, %93, %90, %87, %84, %81, %78, %75, %72, %69, %66, %63, %60, %57, %54, %51, %48, %45, %42, %39, %36, %33, %30, %27, %24, %21, %18, %15, %12, %9, %6
ret void
}

LLVM IR (-O2):
@.str = [8 x i8] c"; input\00"
@.str.1 = [14 x i8] c"; serial data\00"
@.str.2 = [14 x i8] c"; serial ctrl\00"
@.str.3 = [6 x i8] c"; div\00"
@.str.4 = [7 x i8] c"; tima\00"
@.str.5 = [6 x i8] c"; tma\00"
@.str.6 = [6 x i8] c"; tac\00"
@.str.7 = [5 x i8] c"; if\00"
@.str.8 = [12 x i8] c"; ch1 sweep\00"
@.str.9 = [13 x i8] c"; ch1 length\00"
@.str.10 = [10 x i8] c"; ch1 env\00"
@.str.11 = [13 x i8] c"; ch1 lofreq\00"
@.str.12 = [13 x i8] c"; ch1 hifreq\00"
@.str.13 = [12 x i8] c"; ch2 sweep\00"
@.str.14 = [13 x i8] c"; ch2 length\00"
@.str.15 = [10 x i8] c"; ch2 env\00"
@.str.16 = [13 x i8] c"; ch2 lofreq\00"
@.str.17 = [13 x i8] c"; ch2 hifreq\00"
@.str.18 = [12 x i8] c"; ch3 sweep\00"
@.str.19 = [13 x i8] c"; ch3 length\00"
@.str.20 = [10 x i8] c"; ch3 env\00"
@.str.21 = [13 x i8] c"; ch3 lofreq\00"
@.str.22 = [13 x i8] c"; ch3 hifreq\00"
@.str.23 = [12 x i8] c"; noise len\00"
@.str.24 = [12 x i8] c"; noise env\00"
@.str.25 = [13 x i8] c"; noise poly\00"
@.str.26 = [13 x i8] c"; noise ctrl\00"
@.str.27 = [13 x i8] c"; sound ctrl\00"
@.str.28 = [12 x i8] c"; sound out\00"
@.str.29 = [15 x i8] c"; sound enable\00"
@.str.30 = [11 x i8] c"; lcd ctrl\00"
@.str.31 = [11 x i8] c"; lcd stat\00"
@.str.32 = [11 x i8] c"; scroll y\00"
@.str.33 = [11 x i8] c"; scroll x\00"
@.str.34 = [5 x i8] c"; ly\00"
@.str.35 = [6 x i8] c"; lyc\00"
@.str.36 = [10 x i8] c"; oam dma\00"
@.str.37 = [9 x i8] c"; bg pal\00"
@.str.38 = [11 x i8] c"; obj1 pal\00"
@.str.39 = [11 x i8] c"; obj2 pal\00"
@.str.40 = [11 x i8] c"; window y\00"
@.str.41 = [11 x i8] c"; window x\00"
@.str.42 = [5 x i8] c"; ie\00"
define void @info(i32 %0, i8* %1) {
switch i32 %0, label %48 [
i32 65280, label %45
i32 65281, label %3
i32 65282, label %4
i32 65284, label %5
i32 65285, label %6
i32 65286, label %7
i32 65287, label %8
i32 65295, label %9
i32 65296, label %10
i32 65297, label %11
i32 65298, label %12
i32 65299, label %13
i32 65300, label %14
i32 65301, label %15
i32 65302, label %16
i32 65303, label %17
i32 65304, label %18
i32 65305, label %19
i32 65306, label %20
i32 65307, label %21
i32 65308, label %22
i32 65309, label %23
i32 65310, label %24
i32 65312, label %25
i32 65313, label %26
i32 65314, label %27
i32 65315, label %28
i32 65316, label %29
i32 65317, label %30
i32 65318, label %31
i32 65344, label %32
i32 65345, label %33
i32 65346, label %34
i32 65347, label %35
i32 65348, label %36
i32 65349, label %37
i32 65350, label %38
i32 65351, label %39
i32 65352, label %40
i32 65353, label %41
i32 65354, label %42
i32 65355, label %43
i32 65535, label %44
]
3: ; preds = %2
br label %45
4: ; preds = %2
br label %45
5: ; preds = %2
br label %45
6: ; preds = %2
br label %45
7: ; preds = %2
br label %45
8: ; preds = %2
br label %45
9: ; preds = %2
br label %45
10: ; preds = %2
br label %45
11: ; preds = %2
br label %45
12: ; preds = %2
br label %45
13: ; preds = %2
br label %45
14: ; preds = %2
br label %45
15: ; preds = %2
br label %45
16: ; preds = %2
br label %45
17: ; preds = %2
br label %45
18: ; preds = %2
br label %45
19: ; preds = %2
br label %45
20: ; preds = %2
br label %45
21: ; preds = %2
br label %45
22: ; preds = %2
br label %45
23: ; preds = %2
br label %45
24: ; preds = %2
br label %45
25: ; preds = %2
br label %45
26: ; preds = %2
br label %45
27: ; preds = %2
br label %45
28: ; preds = %2
br label %45
29: ; preds = %2
br label %45
30: ; preds = %2
br label %45
31: ; preds = %2
br label %45
32: ; preds = %2
br label %45
33: ; preds = %2
br label %45
34: ; preds = %2
br label %45
35: ; preds = %2
br label %45
36: ; preds = %2
br label %45
37: ; preds = %2
br label %45
38: ; preds = %2
br label %45
39: ; preds = %2
br label %45
40: ; preds = %2
br label %45
41: ; preds = %2
br label %45
42: ; preds = %2
br label %45
43: ; preds = %2
br label %45
44: ; preds = %2
br label %45
45: ; preds = %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %41, %42, %43, %44
%46 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.42, i64 0, i64 0), %44 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.41, i64 0, i64 0), %43 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.40, i64 0, i64 0), %42 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.39, i64 0, i64 0), %41 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.38, i64 0, i64 0), %40 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.37, i64 0, i64 0), %39 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.36, i64 0, i64 0), %38 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.35, i64 0, i64 0), %37 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), %36 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0), %35 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.32, i64 0, i64 0), %34 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.31, i64 0, i64 0), %33 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.30, i64 0, i64 0), %32 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.29, i64 0, i64 0), %31 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.28, i64 0, i64 0), %30 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i64 0, i64 0), %29 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0), %28 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0), %27 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), %26 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0), %25 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.22, i64 0, i64 0), %24 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i64 0, i64 0), %23 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0), %22 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i64 0, i64 0), %21 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0), %20 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i64 0, i64 0), %19 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0), %18 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.15, i64 0, i64 0), %17 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0), %16 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i64 0, i64 0), %15 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i64 0, i64 0), %14 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), %13 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0), %12 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0), %11 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0), %10 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0), %9 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), %8 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), %7 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), %6 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0), %5 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), %4 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i64 0, i64 0), %3 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), %2 ]
%47 = tail call i32 @strcpy(i8* %1, i8* %46)
br label %48
48: ; preds = %45, %2
ret void
}