char *iaad_msg_type_str_get(int msg_type, int type, int len) {
  switch (msg_type) {
  case 0:
    return ("Media Data");
  case 1:
    if (type == 1)
      return ("Version req");
    else if (type == 2)
      return ("Codec Config req");
    else
      return ("1 !");
  case 2:
    return ("Version rsp");
  case 3:
    return ("SSL Handshake req-rsp");
  case 4:
    return ("SSL Auth Complete not");
  case 5:
    return ("Service Disc req");
  case 6:
    return ("Service Disc rsp");
  case 7:
    return ("Channel Open req");
  case 8:
    return ("Channel Open rsp");
  case 9:
    return ("9 ??");
  case 10:
    return ("10 ??");
  case 11:
    return ("Ping req");
  case 12:
    return ("Ping rsp");
  case 13:
    return ("Nav Focus req");
  case 14:
    return ("Nav Focus not");
  case 15:
    return ("Byebye req");
  case 16:
    return ("Byebye rsp");
  case 17:
    return ("Voice Session not");
  case 18:
    return ("Audio Focus req");
  case 19:
    return ("Audio Focus not");
  case 5123:
    return ("SSL Change Cipher Spec");
  case 5379:
    return ("SSL Alert");
  case 5635:
    return ("SSL Handshake");
  case 5891:
    return ("SSL App Data");
  case 32768 + 0:
    return ("Media Setup req");
  case 32768 + 1:
    if (type == 2)
      return ("Sensor/Media Start req");
    else if (type == 1)
      return ("Touch not");
    else
      return ("32769 !");
  case 32768 + 2:
    if (type == 1)
      return ("Sensor Start rsp");
    else if (type == 2)
      return ("Input Start Stop req");
    else
      return ("32770 !");
  case 32768 + 3:
    if (len == 8)
      return ("Media Config rsp");
    else if (len == 4)
      return ("Key Binding rsp");
    else
      return ("Sensor Batch not");
  case 32768 + 4:
    return ("Video Ack rsp");
  case 32768 + 8:
    return ("VideoFocus change not");
  case 65535:
    return ("Framing Error not");
  }
  return ("Unknown");
}


x86 assembly (clang, -O0):
<iaad_msg_type_str_get>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x18(%rbp)
test   %eax,%eax
je     1334 <iaad_msg_type_str_get+0x234>
jmp    1120 <iaad_msg_type_str_get+0x20>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
je     1344 <iaad_msg_type_str_get+0x244>
jmp    1131 <iaad_msg_type_str_get+0x31>
mov    -0x18(%rbp),%eax
sub    $0x2,%eax
je     1388 <iaad_msg_type_str_get+0x288>
jmp    1142 <iaad_msg_type_str_get+0x42>
mov    -0x18(%rbp),%eax
sub    $0x3,%eax
je     1398 <iaad_msg_type_str_get+0x298>
jmp    1153 <iaad_msg_type_str_get+0x53>
mov    -0x18(%rbp),%eax
sub    $0x4,%eax
je     13a8 <iaad_msg_type_str_get+0x2a8>
jmp    1164 <iaad_msg_type_str_get+0x64>
mov    -0x18(%rbp),%eax
sub    $0x5,%eax
je     13b8 <iaad_msg_type_str_get+0x2b8>
jmp    1175 <iaad_msg_type_str_get+0x75>
mov    -0x18(%rbp),%eax
sub    $0x6,%eax
je     13c8 <iaad_msg_type_str_get+0x2c8>
jmp    1186 <iaad_msg_type_str_get+0x86>
mov    -0x18(%rbp),%eax
sub    $0x7,%eax
je     13d8 <iaad_msg_type_str_get+0x2d8>
jmp    1197 <iaad_msg_type_str_get+0x97>
mov    -0x18(%rbp),%eax
sub    $0x8,%eax
je     13e8 <iaad_msg_type_str_get+0x2e8>
jmp    11a8 <iaad_msg_type_str_get+0xa8>
mov    -0x18(%rbp),%eax
sub    $0x9,%eax
je     13f8 <iaad_msg_type_str_get+0x2f8>
jmp    11b9 <iaad_msg_type_str_get+0xb9>
mov    -0x18(%rbp),%eax
sub    $0xa,%eax
je     1408 <iaad_msg_type_str_get+0x308>
jmp    11ca <iaad_msg_type_str_get+0xca>
mov    -0x18(%rbp),%eax
sub    $0xb,%eax
je     1418 <iaad_msg_type_str_get+0x318>
jmp    11db <iaad_msg_type_str_get+0xdb>
mov    -0x18(%rbp),%eax
sub    $0xc,%eax
je     1428 <iaad_msg_type_str_get+0x328>
jmp    11ec <iaad_msg_type_str_get+0xec>
mov    -0x18(%rbp),%eax
sub    $0xd,%eax
je     1438 <iaad_msg_type_str_get+0x338>
jmp    11fd <iaad_msg_type_str_get+0xfd>
mov    -0x18(%rbp),%eax
sub    $0xe,%eax
je     1448 <iaad_msg_type_str_get+0x348>
jmp    120e <iaad_msg_type_str_get+0x10e>
mov    -0x18(%rbp),%eax
sub    $0xf,%eax
je     1458 <iaad_msg_type_str_get+0x358>
jmp    121f <iaad_msg_type_str_get+0x11f>
mov    -0x18(%rbp),%eax
sub    $0x10,%eax
je     1468 <iaad_msg_type_str_get+0x368>
jmp    1230 <iaad_msg_type_str_get+0x130>
mov    -0x18(%rbp),%eax
sub    $0x11,%eax
je     1478 <iaad_msg_type_str_get+0x378>
jmp    1241 <iaad_msg_type_str_get+0x141>
mov    -0x18(%rbp),%eax
sub    $0x12,%eax
je     1488 <iaad_msg_type_str_get+0x388>
jmp    1252 <iaad_msg_type_str_get+0x152>
mov    -0x18(%rbp),%eax
sub    $0x13,%eax
je     1498 <iaad_msg_type_str_get+0x398>
jmp    1263 <iaad_msg_type_str_get+0x163>
mov    -0x18(%rbp),%eax
sub    $0x1403,%eax
je     14a8 <iaad_msg_type_str_get+0x3a8>
jmp    1276 <iaad_msg_type_str_get+0x176>
mov    -0x18(%rbp),%eax
sub    $0x1503,%eax
je     14b8 <iaad_msg_type_str_get+0x3b8>
jmp    1289 <iaad_msg_type_str_get+0x189>
mov    -0x18(%rbp),%eax
sub    $0x1603,%eax
je     14c8 <iaad_msg_type_str_get+0x3c8>
jmp    129c <iaad_msg_type_str_get+0x19c>
mov    -0x18(%rbp),%eax
sub    $0x1703,%eax
je     14d8 <iaad_msg_type_str_get+0x3d8>
jmp    12af <iaad_msg_type_str_get+0x1af>
mov    -0x18(%rbp),%eax
sub    $0x8000,%eax
je     14e8 <iaad_msg_type_str_get+0x3e8>
jmp    12c2 <iaad_msg_type_str_get+0x1c2>
mov    -0x18(%rbp),%eax
sub    $0x8001,%eax
je     14f8 <iaad_msg_type_str_get+0x3f8>
jmp    12d5 <iaad_msg_type_str_get+0x1d5>
mov    -0x18(%rbp),%eax
sub    $0x8002,%eax
je     153c <iaad_msg_type_str_get+0x43c>
jmp    12e8 <iaad_msg_type_str_get+0x1e8>
mov    -0x18(%rbp),%eax
sub    $0x8003,%eax
je     1580 <iaad_msg_type_str_get+0x480>
jmp    12fb <iaad_msg_type_str_get+0x1fb>
mov    -0x18(%rbp),%eax
sub    $0x8004,%eax
je     15c4 <iaad_msg_type_str_get+0x4c4>
jmp    130e <iaad_msg_type_str_get+0x20e>
mov    -0x18(%rbp),%eax
sub    $0x8008,%eax
je     15d4 <iaad_msg_type_str_get+0x4d4>
jmp    1321 <iaad_msg_type_str_get+0x221>
mov    -0x18(%rbp),%eax
sub    $0xffff,%eax
je     15e4 <iaad_msg_type_str_get+0x4e4>
jmp    15f4 <iaad_msg_type_str_get+0x4f4>
lea    0xcc5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
cmpl   $0x1,-0x10(%rbp)
jne    135e <iaad_msg_type_str_get+0x25e>
lea    0xcb6(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
cmpl   $0x2,-0x10(%rbp)
jne    1378 <iaad_msg_type_str_get+0x278>
lea    0xca8(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xca9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc9d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc99(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc9f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xca5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xca6(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xca7(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xca8(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xca9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc9e(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc94(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc8d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc86(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc84(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc82(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc7d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc78(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc7a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc7a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc7a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc81(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc7b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc79(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc76(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
cmpl   $0x2,-0x10(%rbp)
jne    1512 <iaad_msg_type_str_get+0x412>
lea    0xc6c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
cmpl   $0x1,-0x10(%rbp)
jne    152c <iaad_msg_type_str_get+0x42c>
lea    0xc69(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc63(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
cmpl   $0x1,-0x10(%rbp)
jne    1556 <iaad_msg_type_str_get+0x456>
lea    0xc51(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
cmpl   $0x2,-0x10(%rbp)
jne    1570 <iaad_msg_type_str_get+0x470>
lea    0xc48(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc4d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
cmpl   $0x8,-0x14(%rbp)
jne    159a <iaad_msg_type_str_get+0x49a>
lea    0xc3b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
cmpl   $0x4,-0x14(%rbp)
jne    15b4 <iaad_msg_type_str_get+0x4b4>
lea    0xc32(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc32(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc33(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc31(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc37(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    15ff <iaad_msg_type_str_get+0x4ff>
lea    0xc39(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<iaad_msg_type_str_get>:
cmp    $0x1502,%edi
jg     114e <iaad_msg_type_str_get+0x4e>
cmp    $0x13,%edi
ja     11a5 <iaad_msg_type_str_get+0xa5>
lea    0xf5c(%rip),%rax
mov    %edi,%ecx
lea    0xedf(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
cmp    $0x2,%esi
lea    0xf57(%rip),%rax
lea    0xf61(%rip),%rcx
cmove  %rax,%rcx
cmp    $0x1,%esi
lea    0xf36(%rip),%rax
cmovne %rcx,%rax
ret
cmp    $0x7fff,%edi
jle    1179 <iaad_msg_type_str_get+0x79>
lea    -0x8000(%rdi),%eax
cmp    $0x8,%eax
ja     11b9 <iaad_msg_type_str_get+0xb9>
lea    0xee8(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1061(%rip),%rax
ret
cmp    $0x1503,%edi
je     1249 <iaad_msg_type_str_get+0x149>
cmp    $0x1603,%edi
je     1251 <iaad_msg_type_str_get+0x151>
cmp    $0x1703,%edi
jne    12e1 <iaad_msg_type_str_get+0x1e1>
lea    0x1028(%rip),%rax
ret
cmp    $0x1403,%edi
jne    12e1 <iaad_msg_type_str_get+0x1e1>
lea    0xfe5(%rip),%rax
ret
cmp    $0xffff,%edi
jne    12e1 <iaad_msg_type_str_get+0x1e1>
lea    0x10ca(%rip),%rax
ret
cmp    $0x1,%esi
lea    0x1029(%rip),%rax
lea    0x102c(%rip),%rcx
cmove  %rax,%rcx
cmp    $0x2,%esi
lea    0xffd(%rip),%rax
cmovne %rcx,%rax
ret
cmp    $0x2,%esi
lea    0x1028(%rip),%rax
lea    0x1036(%rip),%rcx
cmove  %rax,%rcx
cmp    $0x1,%esi
lea    0x1002(%rip),%rax
cmovne %rcx,%rax
ret
cmp    $0x4,%edx
lea    0x1032(%rip),%rax
lea    0x103b(%rip),%rcx
cmove  %rax,%rcx
cmp    $0x8,%edx
lea    0x100c(%rip),%rax
cmovne %rcx,%rax
ret
lea    0x1032(%rip),%rax
ret
lea    0x1038(%rip),%rax
ret
lea    0xf64(%rip),%rax
ret
lea    0xf66(%rip),%rax
ret
lea    0xe40(%rip),%rax
ret
lea    0xe44(%rip),%rax
ret
lea    0xe52(%rip),%rax
ret
lea    0xe60(%rip),%rax
ret
lea    0xe69(%rip),%rax
ret
lea    0xe72(%rip),%rax
ret
lea    0xe7b(%rip),%rax
ret
lea    0xe84(%rip),%rax
ret
lea    0xe81(%rip),%rax
ret
lea    0xe7f(%rip),%rax
ret
lea    0xe80(%rip),%rax
ret
lea    0xe81(%rip),%rax
ret
lea    0xe87(%rip),%rax
ret
lea    0xe8d(%rip),%rax
ret
lea    0xe90(%rip),%rax
ret
lea    0xe93(%rip),%rax
ret
lea    0xe9d(%rip),%rax
ret
lea    0xfc0(%rip),%rax
ret
lea    0xe9d(%rip),%rax
ret

LLVM IR (-O0):
@.str = [11 x i8] c"Media Data\00"
@.str.1 = [12 x i8] c"Version req\00"
@.str.2 = [17 x i8] c"Codec Config req\00"
@.str.3 = [4 x i8] c"1 !\00"
@.str.4 = [12 x i8] c"Version rsp\00"
@.str.5 = [22 x i8] c"SSL Handshake req-rsp\00"
@.str.6 = [22 x i8] c"SSL Auth Complete not\00"
@.str.7 = [17 x i8] c"Service Disc req\00"
@.str.8 = [17 x i8] c"Service Disc rsp\00"
@.str.9 = [17 x i8] c"Channel Open req\00"
@.str.10 = [17 x i8] c"Channel Open rsp\00"
@.str.11 = [5 x i8] c"9 ??\00"
@.str.12 = [6 x i8] c"10 ??\00"
@.str.13 = [9 x i8] c"Ping req\00"
@.str.14 = [9 x i8] c"Ping rsp\00"
@.str.15 = [14 x i8] c"Nav Focus req\00"
@.str.16 = [14 x i8] c"Nav Focus not\00"
@.str.17 = [11 x i8] c"Byebye req\00"
@.str.18 = [11 x i8] c"Byebye rsp\00"
@.str.19 = [18 x i8] c"Voice Session not\00"
@.str.20 = [16 x i8] c"Audio Focus req\00"
@.str.21 = [16 x i8] c"Audio Focus not\00"
@.str.22 = [23 x i8] c"SSL Change Cipher Spec\00"
@.str.23 = [10 x i8] c"SSL Alert\00"
@.str.24 = [14 x i8] c"SSL Handshake\00"
@.str.25 = [13 x i8] c"SSL App Data\00"
@.str.26 = [16 x i8] c"Media Setup req\00"
@.str.27 = [23 x i8] c"Sensor/Media Start req\00"
@.str.28 = [10 x i8] c"Touch not\00"
@.str.29 = [8 x i8] c"32769 !\00"
@.str.30 = [17 x i8] c"Sensor Start rsp\00"
@.str.31 = [21 x i8] c"Input Start Stop req\00"
@.str.32 = [8 x i8] c"32770 !\00"
@.str.33 = [17 x i8] c"Media Config rsp\00"
@.str.34 = [16 x i8] c"Key Binding rsp\00"
@.str.35 = [17 x i8] c"Sensor Batch not\00"
@.str.36 = [14 x i8] c"Video Ack rsp\00"
@.str.37 = [22 x i8] c"VideoFocus change not\00"
@.str.38 = [18 x i8] c"Framing Error not\00"
@.str.39 = [8 x i8] c"Unknown\00"
define i8* @iaad_msg_type_str_get(i32 %0, i32 %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
store i32 %0, i32* %5
store i32 %1, i32* %6
store i32 %2, i32* %7
%8 = load i32, i32* %5
switch i32 %8, label %72 [
i32 0, label %9
i32 1, label %10
i32 2, label %19
i32 3, label %20
i32 4, label %21
i32 5, label %22
i32 6, label %23
i32 7, label %24
i32 8, label %25
i32 9, label %26
i32 10, label %27
i32 11, label %28
i32 12, label %29
i32 13, label %30
i32 14, label %31
i32 15, label %32
i32 16, label %33
i32 17, label %34
i32 18, label %35
i32 19, label %36
i32 5123, label %37
i32 5379, label %38
i32 5635, label %39
i32 5891, label %40
i32 32768, label %41
i32 32769, label %42
i32 32770, label %51
i32 32771, label %60
i32 32772, label %69
i32 32776, label %70
i32 65535, label %71
]
9: ; preds = %3
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8** %4
br label %73
10: ; preds = %3
%11 = load i32, i32* %6
%12 = icmp eq i32 %11, 1
br i1 %12, label %13, label %14
13: ; preds = %10
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i8** %4
br label %73
14: ; preds = %10
%15 = load i32, i32* %6
%16 = icmp eq i32 %15, 2
br i1 %16, label %17, label %18
17: ; preds = %14
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0), i8** %4
br label %73
18: ; preds = %14
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i8** %4
br label %73
19: ; preds = %3
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0), i8** %4
br label %73
20: ; preds = %3
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0), i8** %4
br label %73
21: ; preds = %3
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.6, i64 0, i64 0), i8** %4
br label %73
22: ; preds = %3
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), i8** %4
br label %73
23: ; preds = %3
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.8, i64 0, i64 0), i8** %4
br label %73
24: ; preds = %3
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), i8** %4
br label %73
25: ; preds = %3
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.10, i64 0, i64 0), i8** %4
br label %73
26: ; preds = %3
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8** %4
br label %73
27: ; preds = %3
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8** %4
br label %73
28: ; preds = %3
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0), i8** %4
br label %73
29: ; preds = %3
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0), i8** %4
br label %73
30: ; preds = %3
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0), i8** %4
br label %73
31: ; preds = %3
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.16, i64 0, i64 0), i8** %4
br label %73
32: ; preds = %3
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.17, i64 0, i64 0), i8** %4
br label %73
33: ; preds = %3
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.18, i64 0, i64 0), i8** %4
br label %73
34: ; preds = %3
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), i8** %4
br label %73
35: ; preds = %3
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0), i8** %4
br label %73
36: ; preds = %3
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %4
br label %73
37: ; preds = %3
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.22, i64 0, i64 0), i8** %4
br label %73
38: ; preds = %3
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.23, i64 0, i64 0), i8** %4
br label %73
39: ; preds = %3
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.24, i64 0, i64 0), i8** %4
br label %73
40: ; preds = %3
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0), i8** %4
br label %73
41: ; preds = %3
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0), i8** %4
br label %73
42: ; preds = %3
%43 = load i32, i32* %6
%44 = icmp eq i32 %43, 2
br i1 %44, label %45, label %46
45: ; preds = %42
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.27, i64 0, i64 0), i8** %4
br label %73
46: ; preds = %42
%47 = load i32, i32* %6
%48 = icmp eq i32 %47, 1
br i1 %48, label %49, label %50
49: ; preds = %46
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.28, i64 0, i64 0), i8** %4
br label %73
50: ; preds = %46
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.29, i64 0, i64 0), i8** %4
br label %73
51: ; preds = %3
%52 = load i32, i32* %6
%53 = icmp eq i32 %52, 1
br i1 %53, label %54, label %55
54: ; preds = %51
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.30, i64 0, i64 0), i8** %4
br label %73
55: ; preds = %51
%56 = load i32, i32* %6
%57 = icmp eq i32 %56, 2
br i1 %57, label %58, label %59
58: ; preds = %55
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.31, i64 0, i64 0), i8** %4
br label %73
59: ; preds = %55
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.32, i64 0, i64 0), i8** %4
br label %73
60: ; preds = %3
%61 = load i32, i32* %7
%62 = icmp eq i32 %61, 8
br i1 %62, label %63, label %64
63: ; preds = %60
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.33, i64 0, i64 0), i8** %4
br label %73
64: ; preds = %60
%65 = load i32, i32* %7
%66 = icmp eq i32 %65, 4
br i1 %66, label %67, label %68
67: ; preds = %64
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0), i8** %4
br label %73
68: ; preds = %64
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.35, i64 0, i64 0), i8** %4
br label %73
69: ; preds = %3
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.36, i64 0, i64 0), i8** %4
br label %73
70: ; preds = %3
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0), i8** %4
br label %73
71: ; preds = %3
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.38, i64 0, i64 0), i8** %4
br label %73
72: ; preds = %3
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.39, i64 0, i64 0), i8** %4
br label %73
73: ; preds = %72, %71, %70, %69, %68, %67, %63, %59, %58, %54, %50, %49, %45, %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, %13, %9
%74 = load i8*, i8** %4
ret i8* %74
}

LLVM IR (-O2):
@.str = [11 x i8] c"Media Data\00"
@.str.1 = [12 x i8] c"Version req\00"
@.str.2 = [17 x i8] c"Codec Config req\00"
@.str.3 = [4 x i8] c"1 !\00"
@.str.4 = [12 x i8] c"Version rsp\00"
@.str.5 = [22 x i8] c"SSL Handshake req-rsp\00"
@.str.6 = [22 x i8] c"SSL Auth Complete not\00"
@.str.7 = [17 x i8] c"Service Disc req\00"
@.str.8 = [17 x i8] c"Service Disc rsp\00"
@.str.9 = [17 x i8] c"Channel Open req\00"
@.str.10 = [17 x i8] c"Channel Open rsp\00"
@.str.11 = [5 x i8] c"9 ??\00"
@.str.12 = [6 x i8] c"10 ??\00"
@.str.13 = [9 x i8] c"Ping req\00"
@.str.14 = [9 x i8] c"Ping rsp\00"
@.str.15 = [14 x i8] c"Nav Focus req\00"
@.str.16 = [14 x i8] c"Nav Focus not\00"
@.str.17 = [11 x i8] c"Byebye req\00"
@.str.18 = [11 x i8] c"Byebye rsp\00"
@.str.19 = [18 x i8] c"Voice Session not\00"
@.str.20 = [16 x i8] c"Audio Focus req\00"
@.str.21 = [16 x i8] c"Audio Focus not\00"
@.str.22 = [23 x i8] c"SSL Change Cipher Spec\00"
@.str.23 = [10 x i8] c"SSL Alert\00"
@.str.24 = [14 x i8] c"SSL Handshake\00"
@.str.25 = [13 x i8] c"SSL App Data\00"
@.str.26 = [16 x i8] c"Media Setup req\00"
@.str.27 = [23 x i8] c"Sensor/Media Start req\00"
@.str.28 = [10 x i8] c"Touch not\00"
@.str.29 = [8 x i8] c"32769 !\00"
@.str.30 = [17 x i8] c"Sensor Start rsp\00"
@.str.31 = [21 x i8] c"Input Start Stop req\00"
@.str.32 = [8 x i8] c"32770 !\00"
@.str.33 = [17 x i8] c"Media Config rsp\00"
@.str.34 = [16 x i8] c"Key Binding rsp\00"
@.str.35 = [17 x i8] c"Sensor Batch not\00"
@.str.36 = [14 x i8] c"Video Ack rsp\00"
@.str.37 = [22 x i8] c"VideoFocus change not\00"
@.str.38 = [18 x i8] c"Framing Error not\00"
@.str.39 = [8 x i8] c"Unknown\00"
define i8* @iaad_msg_type_str_get(i32 %0, i32 %1, i32 %2) {
switch i32 %0, label %50 [
i32 0, label %51
i32 1, label %4
i32 2, label %9
i32 3, label %10
i32 4, label %11
i32 5, label %12
i32 6, label %13
i32 7, label %14
i32 8, label %15
i32 9, label %16
i32 10, label %17
i32 11, label %18
i32 12, label %19
i32 13, label %20
i32 14, label %21
i32 15, label %22
i32 16, label %23
i32 17, label %24
i32 18, label %25
i32 19, label %26
i32 5123, label %27
i32 5379, label %28
i32 5635, label %29
i32 5891, label %30
i32 32768, label %31
i32 32769, label %32
i32 32770, label %37
i32 32771, label %42
i32 32772, label %47
i32 32776, label %48
i32 65535, label %49
]
4: ; preds = %3
%5 = icmp eq i32 %1, 2
%6 = select i1 %5, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0)
%7 = icmp eq i32 %1, 1
%8 = select i1 %7, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i8* %6
br label %51
9: ; preds = %3
br label %51
10: ; preds = %3
br label %51
11: ; preds = %3
br label %51
12: ; preds = %3
br label %51
13: ; preds = %3
br label %51
14: ; preds = %3
br label %51
15: ; preds = %3
br label %51
16: ; preds = %3
br label %51
17: ; preds = %3
br label %51
18: ; preds = %3
br label %51
19: ; preds = %3
br label %51
20: ; preds = %3
br label %51
21: ; preds = %3
br label %51
22: ; preds = %3
br label %51
23: ; preds = %3
br label %51
24: ; preds = %3
br label %51
25: ; preds = %3
br label %51
26: ; preds = %3
br label %51
27: ; preds = %3
br label %51
28: ; preds = %3
br label %51
29: ; preds = %3
br label %51
30: ; preds = %3
br label %51
31: ; preds = %3
br label %51
32: ; preds = %3
%33 = icmp eq i32 %1, 1
%34 = select i1 %33, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.28, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.29, i64 0, i64 0)
%35 = icmp eq i32 %1, 2
%36 = select i1 %35, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.27, i64 0, i64 0), i8* %34
br label %51
37: ; preds = %3
%38 = icmp eq i32 %1, 2
%39 = select i1 %38, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.31, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.32, i64 0, i64 0)
%40 = icmp eq i32 %1, 1
%41 = select i1 %40, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.30, i64 0, i64 0), i8* %39
br label %51
42: ; preds = %3
%43 = icmp eq i32 %2, 4
%44 = select i1 %43, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.35, i64 0, i64 0)
%45 = icmp eq i32 %2, 8
%46 = select i1 %45, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.33, i64 0, i64 0), i8* %44
br label %51
47: ; preds = %3
br label %51
48: ; preds = %3
br label %51
49: ; preds = %3
br label %51
50: ; preds = %3
br label %51
51: ; preds = %42, %37, %32, %4, %3, %50, %49, %48, %47, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9
%52 = phi i8* [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.39, i64 0, i64 0), %50 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.38, i64 0, i64 0), %49 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0), %48 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.36, i64 0, i64 0), %47 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0), %31 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0), %30 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.24, i64 0, i64 0), %29 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.23, i64 0, i64 0), %28 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.22, i64 0, i64 0), %27 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), %26 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0), %25 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), %24 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.18, i64 0, i64 0), %23 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.17, i64 0, i64 0), %22 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.16, i64 0, i64 0), %21 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0), %20 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0), %19 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0), %18 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), %17 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), %16 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.10, i64 0, i64 0), %15 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), %14 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.8, i64 0, i64 0), %13 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), %12 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.6, i64 0, i64 0), %11 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0), %10 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0), %9 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), %3 ], [ %8, %4 ], [ %36, %32 ], [ %41, %37 ], [ %46, %42 ]
ret i8* %52
}