char *iaad_msg_type_str_get(int msg_type, unsigned char *src, int len) {
  switch (msg_type) {
  case 0:
    return ("Media Data");
  case 1:
    if (*src == 'H')
      return ("Version Request");
    else if (*src == 'A')
      return ("Codec Data");
    else
      return ("1 !");
  case 2:
    return ("Version Response");
  case 3:
    return ("SSL Handshake Data");
  case 4:
    return ("SSL Authentication Complete Notification");
  case 5:
    return ("Service Discovery Request");
  case 6:
    return ("Service Discovery Response");
  case 7:
    return ("Channel Open Request");
  case 8:
    return ("Channel Open Response");
  case 9:
    return ("9 ??");
  case 10:
    return ("10 ??");
  case 11:
    return ("Ping Request");
  case 12:
    return ("Ping Response");
  case 13:
    return ("Navigation Focus Request");
  case 14:
    return ("Navigation Focus Notification");
  case 15:
    return ("Byebye Request");
  case 16:
    return ("Byebye Response");
  case 17:
    return ("Voice Session Notification");
  case 18:
    return ("Audio Focus Request");
  case 19:
    return ("Audio Focus Notification");
  case 32768 + 0:
    return ("Media Setup Request");
  case 32768 + 1:
    if (*src == 'H')
      return ("Touch Notification");
    else if (*src == 'A')
      return ("Sensor/Media Start Request");
    else
      return ("32769 !");
  case 32768 + 2:
    if (*src == 'H')
      return ("Sensor Start Response");
    else if (*src == 'A')
      return ("Touch/Input/Audio Start/Stop Request");
    else
      return ("32770 !");
  case 32768 + 3:
    if (len == 6)
      return ("Media Setup Response");
    else if (len == 2)
      return ("Key Binding Response");
    else
      return ("Sensor Notification");
  case 32768 + 4:
    return ("Codec/Media Data Ack");
  case 32768 + 5:
    return ("Mic Start/Stop Request");
  case 32768 + 6:
    return ("k3 6 ?");
  case 32768 + 7:
    return ("Media Video ? Request");
  case 32768 + 8:
    return ("Video Focus Notification");
  case 65535:
    return ("Framing Error Notification");
  }
  return ("Unknown");
}


x86 assembly (clang, -O0):
<iaad_msg_type_str_get>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0xc(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x20(%rbp)
test   %eax,%eax
je     1322 <iaad_msg_type_str_get+0x222>
jmp    1121 <iaad_msg_type_str_get+0x21>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
je     1332 <iaad_msg_type_str_get+0x232>
jmp    1132 <iaad_msg_type_str_get+0x32>
mov    -0x20(%rbp),%eax
sub    $0x2,%eax
je     1382 <iaad_msg_type_str_get+0x282>
jmp    1143 <iaad_msg_type_str_get+0x43>
mov    -0x20(%rbp),%eax
sub    $0x3,%eax
je     1392 <iaad_msg_type_str_get+0x292>
jmp    1154 <iaad_msg_type_str_get+0x54>
mov    -0x20(%rbp),%eax
sub    $0x4,%eax
je     13a2 <iaad_msg_type_str_get+0x2a2>
jmp    1165 <iaad_msg_type_str_get+0x65>
mov    -0x20(%rbp),%eax
sub    $0x5,%eax
je     13b2 <iaad_msg_type_str_get+0x2b2>
jmp    1176 <iaad_msg_type_str_get+0x76>
mov    -0x20(%rbp),%eax
sub    $0x6,%eax
je     13c2 <iaad_msg_type_str_get+0x2c2>
jmp    1187 <iaad_msg_type_str_get+0x87>
mov    -0x20(%rbp),%eax
sub    $0x7,%eax
je     13d2 <iaad_msg_type_str_get+0x2d2>
jmp    1198 <iaad_msg_type_str_get+0x98>
mov    -0x20(%rbp),%eax
sub    $0x8,%eax
je     13e2 <iaad_msg_type_str_get+0x2e2>
jmp    11a9 <iaad_msg_type_str_get+0xa9>
mov    -0x20(%rbp),%eax
sub    $0x9,%eax
je     13f2 <iaad_msg_type_str_get+0x2f2>
jmp    11ba <iaad_msg_type_str_get+0xba>
mov    -0x20(%rbp),%eax
sub    $0xa,%eax
je     1402 <iaad_msg_type_str_get+0x302>
jmp    11cb <iaad_msg_type_str_get+0xcb>
mov    -0x20(%rbp),%eax
sub    $0xb,%eax
je     1412 <iaad_msg_type_str_get+0x312>
jmp    11dc <iaad_msg_type_str_get+0xdc>
mov    -0x20(%rbp),%eax
sub    $0xc,%eax
je     1422 <iaad_msg_type_str_get+0x322>
jmp    11ed <iaad_msg_type_str_get+0xed>
mov    -0x20(%rbp),%eax
sub    $0xd,%eax
je     1432 <iaad_msg_type_str_get+0x332>
jmp    11fe <iaad_msg_type_str_get+0xfe>
mov    -0x20(%rbp),%eax
sub    $0xe,%eax
je     1442 <iaad_msg_type_str_get+0x342>
jmp    120f <iaad_msg_type_str_get+0x10f>
mov    -0x20(%rbp),%eax
sub    $0xf,%eax
je     1452 <iaad_msg_type_str_get+0x352>
jmp    1220 <iaad_msg_type_str_get+0x120>
mov    -0x20(%rbp),%eax
sub    $0x10,%eax
je     1462 <iaad_msg_type_str_get+0x362>
jmp    1231 <iaad_msg_type_str_get+0x131>
mov    -0x20(%rbp),%eax
sub    $0x11,%eax
je     1472 <iaad_msg_type_str_get+0x372>
jmp    1242 <iaad_msg_type_str_get+0x142>
mov    -0x20(%rbp),%eax
sub    $0x12,%eax
je     1482 <iaad_msg_type_str_get+0x382>
jmp    1253 <iaad_msg_type_str_get+0x153>
mov    -0x20(%rbp),%eax
sub    $0x13,%eax
je     1492 <iaad_msg_type_str_get+0x392>
jmp    1264 <iaad_msg_type_str_get+0x164>
mov    -0x20(%rbp),%eax
sub    $0x8000,%eax
je     14a2 <iaad_msg_type_str_get+0x3a2>
jmp    1277 <iaad_msg_type_str_get+0x177>
mov    -0x20(%rbp),%eax
sub    $0x8001,%eax
je     14b2 <iaad_msg_type_str_get+0x3b2>
jmp    128a <iaad_msg_type_str_get+0x18a>
mov    -0x20(%rbp),%eax
sub    $0x8002,%eax
je     1502 <iaad_msg_type_str_get+0x402>
jmp    129d <iaad_msg_type_str_get+0x19d>
mov    -0x20(%rbp),%eax
sub    $0x8003,%eax
je     1552 <iaad_msg_type_str_get+0x452>
jmp    12b0 <iaad_msg_type_str_get+0x1b0>
mov    -0x20(%rbp),%eax
sub    $0x8004,%eax
je     1596 <iaad_msg_type_str_get+0x496>
jmp    12c3 <iaad_msg_type_str_get+0x1c3>
mov    -0x20(%rbp),%eax
sub    $0x8005,%eax
je     15a6 <iaad_msg_type_str_get+0x4a6>
jmp    12d6 <iaad_msg_type_str_get+0x1d6>
mov    -0x20(%rbp),%eax
sub    $0x8006,%eax
je     15b6 <iaad_msg_type_str_get+0x4b6>
jmp    12e9 <iaad_msg_type_str_get+0x1e9>
mov    -0x20(%rbp),%eax
sub    $0x8007,%eax
je     15c6 <iaad_msg_type_str_get+0x4c6>
jmp    12fc <iaad_msg_type_str_get+0x1fc>
mov    -0x20(%rbp),%eax
sub    $0x8008,%eax
je     15d6 <iaad_msg_type_str_get+0x4d6>
jmp    130f <iaad_msg_type_str_get+0x20f>
mov    -0x20(%rbp),%eax
sub    $0xffff,%eax
je     15e6 <iaad_msg_type_str_get+0x4e6>
jmp    15f6 <iaad_msg_type_str_get+0x4f6>
lea    0xcd7(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
mov    -0x18(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x48,%eax
jne    1352 <iaad_msg_type_str_get+0x252>
lea    0xcc2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
mov    -0x18(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x41,%eax
jne    1372 <iaad_msg_type_str_get+0x272>
lea    0xcb2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcad(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xca1(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xca2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xca5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcbe(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcc8(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcd3(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcd8(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcde(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcd3(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcc9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcc6(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcc4(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xccd(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcdb(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcda(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcda(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xce5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xce9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcf2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
mov    -0x18(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x48,%eax
jne    14d2 <iaad_msg_type_str_get+0x3d2>
lea    0xce6(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
mov    -0x18(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x41,%eax
jne    14f2 <iaad_msg_type_str_get+0x3f2>
lea    0xcd9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xce4(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
mov    -0x18(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x48,%eax
jne    1522 <iaad_msg_type_str_get+0x422>
lea    0xccc(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
mov    -0x18(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x41,%eax
jne    1542 <iaad_msg_type_str_get+0x442>
lea    0xcc2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcd7(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
cmpl   $0x6,-0x1c(%rbp)
jne    156c <iaad_msg_type_str_get+0x46c>
lea    0xcc5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
cmpl   $0x2,-0x1c(%rbp)
jne    1586 <iaad_msg_type_str_get+0x486>
lea    0xcc0(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcc5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcc9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcce(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcd5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xccc(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcd2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xcdb(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1601 <iaad_msg_type_str_get+0x501>
lea    0xce6(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<iaad_msg_type_str_get>:
cmp    $0x13,%edi
ja     1142 <iaad_msg_type_str_get+0x42>
lea    0xf68(%rip),%rax
mov    %edi,%ecx
lea    0xeeb(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    (%rsi),%al
cmp    $0x41,%al
lea    0xf66(%rip),%rcx
lea    0xf6a(%rip),%rdx
cmove  %rcx,%rdx
cmp    $0x48,%al
lea    0xf42(%rip),%rax
cmovne %rdx,%rax
ret
lea    -0x8000(%rdi),%eax
cmp    $0x8,%eax
ja     1165 <iaad_msg_type_str_get+0x65>
lea    0xefc(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x10ab(%rip),%rax
ret
cmp    $0xffff,%edi
jne    129d <iaad_msg_type_str_get+0x19d>
lea    0x11c4(%rip),%rax
ret
lea    0xf1e(%rip),%rax
ret
lea    0xf27(%rip),%rax
ret
lea    0xf32(%rip),%rax
ret
lea    0xf53(%rip),%rax
ret
lea    0xf65(%rip),%rax
ret
lea    0xf78(%rip),%rax
ret
lea    0xf85(%rip),%rax
ret
lea    0xf93(%rip),%rax
ret
lea    0xf90(%rip),%rax
ret
lea    0xf8e(%rip),%rax
ret
lea    0xf93(%rip),%rax
ret
lea    0xf99(%rip),%rax
ret
lea    0xfaa(%rip),%rax
ret
lea    0xfc0(%rip),%rax
ret
lea    0xfc7(%rip),%rax
ret
lea    0xfcf(%rip),%rax
ret
lea    0xfe2(%rip),%rax
ret
lea    0xfee(%rip),%rax
ret
mov    (%rsi),%al
cmp    $0x41,%al
lea    0x1022(%rip),%rcx
lea    0x1036(%rip),%rdx
cmove  %rcx,%rdx
cmp    $0x48,%al
lea    0xffb(%rip),%rax
cmovne %rdx,%rax
ret
mov    (%rsi),%al
cmp    $0x41,%al
lea    0x1037(%rip),%rcx
lea    0x1055(%rip),%rdx
cmove  %rcx,%rdx
cmp    $0x48,%al
lea    0x100d(%rip),%rax
cmovne %rdx,%rax
ret
cmp    $0x2,%edx
lea    0x1056(%rip),%rax
lea    0x1064(%rip),%rcx
cmove  %rax,%rcx
cmp    $0x6,%edx
lea    0x102c(%rip),%rax
cmovne %rcx,%rax
ret
lea    0x105e(%rip),%rax
ret
lea    0x106b(%rip),%rax
ret
lea    0x107a(%rip),%rax
ret
lea    0x1079(%rip),%rax
ret
lea    0x1087(%rip),%rax
ret
lea    0x10b3(%rip),%rax
ret

LLVM IR (-O0):
@.str = [11 x i8] c"Media Data\00"
@.str.1 = [16 x i8] c"Version Request\00"
@.str.2 = [11 x i8] c"Codec Data\00"
@.str.3 = [4 x i8] c"1 !\00"
@.str.4 = [17 x i8] c"Version Response\00"
@.str.5 = [19 x i8] c"SSL Handshake Data\00"
@.str.6 = [41 x i8] c"SSL Authentication Complete Notification\00"
@.str.7 = [26 x i8] c"Service Discovery Request\00"
@.str.8 = [27 x i8] c"Service Discovery Response\00"
@.str.9 = [21 x i8] c"Channel Open Request\00"
@.str.10 = [22 x i8] c"Channel Open Response\00"
@.str.11 = [5 x i8] c"9 ??\00"
@.str.12 = [6 x i8] c"10 ??\00"
@.str.13 = [13 x i8] c"Ping Request\00"
@.str.14 = [14 x i8] c"Ping Response\00"
@.str.15 = [25 x i8] c"Navigation Focus Request\00"
@.str.16 = [30 x i8] c"Navigation Focus Notification\00"
@.str.17 = [15 x i8] c"Byebye Request\00"
@.str.18 = [16 x i8] c"Byebye Response\00"
@.str.19 = [27 x i8] c"Voice Session Notification\00"
@.str.20 = [20 x i8] c"Audio Focus Request\00"
@.str.21 = [25 x i8] c"Audio Focus Notification\00"
@.str.22 = [20 x i8] c"Media Setup Request\00"
@.str.23 = [19 x i8] c"Touch Notification\00"
@.str.24 = [27 x i8] c"Sensor/Media Start Request\00"
@.str.25 = [8 x i8] c"32769 !\00"
@.str.26 = [22 x i8] c"Sensor Start Response\00"
@.str.27 = [37 x i8] c"Touch/Input/Audio Start/Stop Request\00"
@.str.28 = [8 x i8] c"32770 !\00"
@.str.29 = [21 x i8] c"Media Setup Response\00"
@.str.30 = [21 x i8] c"Key Binding Response\00"
@.str.31 = [20 x i8] c"Sensor Notification\00"
@.str.32 = [21 x i8] c"Codec/Media Data Ack\00"
@.str.33 = [23 x i8] c"Mic Start/Stop Request\00"
@.str.34 = [7 x i8] c"k3 6 ?\00"
@.str.35 = [22 x i8] c"Media Video ? Request\00"
@.str.36 = [25 x i8] c"Video Focus Notification\00"
@.str.37 = [27 x i8] c"Framing Error Notification\00"
@.str.38 = [8 x i8] c"Unknown\00"
define i8* @iaad_msg_type_str_get(i32 %0, i8* %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i32
store i32 %0, i32* %5
store i8* %1, i8** %6
store i32 %2, i32* %7
%8 = load i32, i32* %5
switch i32 %8, label %83 [
i32 0, label %9
i32 1, label %10
i32 2, label %23
i32 3, label %24
i32 4, label %25
i32 5, label %26
i32 6, label %27
i32 7, label %28
i32 8, label %29
i32 9, label %30
i32 10, label %31
i32 11, label %32
i32 12, label %33
i32 13, label %34
i32 14, label %35
i32 15, label %36
i32 16, label %37
i32 17, label %38
i32 18, label %39
i32 19, label %40
i32 32768, label %41
i32 32769, label %42
i32 32770, label %55
i32 32771, label %68
i32 32772, label %77
i32 32773, label %78
i32 32774, label %79
i32 32775, label %80
i32 32776, label %81
i32 65535, label %82
]
9: ; preds = %3
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8** %4
br label %84
10: ; preds = %3
%11 = load i8*, i8** %6
%12 = load i8, i8* %11
%13 = zext i8 %12 to i32
%14 = icmp eq i32 %13, 72
br i1 %14, label %15, label %16
15: ; preds = %10
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i8** %4
br label %84
16: ; preds = %10
%17 = load i8*, i8** %6
%18 = load i8, i8* %17
%19 = zext i8 %18 to i32
%20 = icmp eq i32 %19, 65
br i1 %20, label %21, label %22
21: ; preds = %16
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8** %4
br label %84
22: ; preds = %16
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i8** %4
br label %84
23: ; preds = %3
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.4, i64 0, i64 0), i8** %4
br label %84
24: ; preds = %3
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.5, i64 0, i64 0), i8** %4
br label %84
25: ; preds = %3
store i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.6, i64 0, i64 0), i8** %4
br label %84
26: ; preds = %3
store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.7, i64 0, i64 0), i8** %4
br label %84
27: ; preds = %3
store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i8** %4
br label %84
28: ; preds = %3
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.9, i64 0, i64 0), i8** %4
br label %84
29: ; preds = %3
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.10, i64 0, i64 0), i8** %4
br label %84
30: ; preds = %3
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8** %4
br label %84
31: ; preds = %3
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8** %4
br label %84
32: ; preds = %3
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i64 0, i64 0), i8** %4
br label %84
33: ; preds = %3
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.14, i64 0, i64 0), i8** %4
br label %84
34: ; preds = %3
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.15, i64 0, i64 0), i8** %4
br label %84
35: ; preds = %3
store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.16, i64 0, i64 0), i8** %4
br label %84
36: ; preds = %3
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.17, i64 0, i64 0), i8** %4
br label %84
37: ; preds = %3
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.18, i64 0, i64 0), i8** %4
br label %84
38: ; preds = %3
store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), i8** %4
br label %84
39: ; preds = %3
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.20, i64 0, i64 0), i8** %4
br label %84
40: ; preds = %3
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.21, i64 0, i64 0), i8** %4
br label %84
41: ; preds = %3
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0), i8** %4
br label %84
42: ; preds = %3
%43 = load i8*, i8** %6
%44 = load i8, i8* %43
%45 = zext i8 %44 to i32
%46 = icmp eq i32 %45, 72
br i1 %46, label %47, label %48
47: ; preds = %42
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.23, i64 0, i64 0), i8** %4
br label %84
48: ; preds = %42
%49 = load i8*, i8** %6
%50 = load i8, i8* %49
%51 = zext i8 %50 to i32
%52 = icmp eq i32 %51, 65
br i1 %52, label %53, label %54
53: ; preds = %48
store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.24, i64 0, i64 0), i8** %4
br label %84
54: ; preds = %48
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.25, i64 0, i64 0), i8** %4
br label %84
55: ; preds = %3
%56 = load i8*, i8** %6
%57 = load i8, i8* %56
%58 = zext i8 %57 to i32
%59 = icmp eq i32 %58, 72
br i1 %59, label %60, label %61
60: ; preds = %55
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.26, i64 0, i64 0), i8** %4
br label %84
61: ; preds = %55
%62 = load i8*, i8** %6
%63 = load i8, i8* %62
%64 = zext i8 %63 to i32
%65 = icmp eq i32 %64, 65
br i1 %65, label %66, label %67
66: ; preds = %61
store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.27, i64 0, i64 0), i8** %4
br label %84
67: ; preds = %61
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i8** %4
br label %84
68: ; preds = %3
%69 = load i32, i32* %7
%70 = icmp eq i32 %69, 6
br i1 %70, label %71, label %72
71: ; preds = %68
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.29, i64 0, i64 0), i8** %4
br label %84
72: ; preds = %68
%73 = load i32, i32* %7
%74 = icmp eq i32 %73, 2
br i1 %74, label %75, label %76
75: ; preds = %72
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.30, i64 0, i64 0), i8** %4
br label %84
76: ; preds = %72
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.31, i64 0, i64 0), i8** %4
br label %84
77: ; preds = %3
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.32, i64 0, i64 0), i8** %4
br label %84
78: ; preds = %3
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.33, i64 0, i64 0), i8** %4
br label %84
79: ; preds = %3
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0), i8** %4
br label %84
80: ; preds = %3
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.35, i64 0, i64 0), i8** %4
br label %84
81: ; preds = %3
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.36, i64 0, i64 0), i8** %4
br label %84
82: ; preds = %3
store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.37, i64 0, i64 0), i8** %4
br label %84
83: ; preds = %3
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.38, i64 0, i64 0), i8** %4
br label %84
84: ; preds = %83, %82, %81, %80, %79, %78, %77, %76, %75, %71, %67, %66, %60, %54, %53, %47, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %15, %9
%85 = load i8*, i8** %4
ret i8* %85
}

LLVM IR (-O2):
@.str = [11 x i8] c"Media Data\00"
@.str.1 = [16 x i8] c"Version Request\00"
@.str.2 = [11 x i8] c"Codec Data\00"
@.str.3 = [4 x i8] c"1 !\00"
@.str.4 = [17 x i8] c"Version Response\00"
@.str.5 = [19 x i8] c"SSL Handshake Data\00"
@.str.6 = [41 x i8] c"SSL Authentication Complete Notification\00"
@.str.7 = [26 x i8] c"Service Discovery Request\00"
@.str.8 = [27 x i8] c"Service Discovery Response\00"
@.str.9 = [21 x i8] c"Channel Open Request\00"
@.str.10 = [22 x i8] c"Channel Open Response\00"
@.str.11 = [5 x i8] c"9 ??\00"
@.str.12 = [6 x i8] c"10 ??\00"
@.str.13 = [13 x i8] c"Ping Request\00"
@.str.14 = [14 x i8] c"Ping Response\00"
@.str.15 = [25 x i8] c"Navigation Focus Request\00"
@.str.16 = [30 x i8] c"Navigation Focus Notification\00"
@.str.17 = [15 x i8] c"Byebye Request\00"
@.str.18 = [16 x i8] c"Byebye Response\00"
@.str.19 = [27 x i8] c"Voice Session Notification\00"
@.str.20 = [20 x i8] c"Audio Focus Request\00"
@.str.21 = [25 x i8] c"Audio Focus Notification\00"
@.str.22 = [20 x i8] c"Media Setup Request\00"
@.str.23 = [19 x i8] c"Touch Notification\00"
@.str.24 = [27 x i8] c"Sensor/Media Start Request\00"
@.str.25 = [8 x i8] c"32769 !\00"
@.str.26 = [22 x i8] c"Sensor Start Response\00"
@.str.27 = [37 x i8] c"Touch/Input/Audio Start/Stop Request\00"
@.str.28 = [8 x i8] c"32770 !\00"
@.str.29 = [21 x i8] c"Media Setup Response\00"
@.str.30 = [21 x i8] c"Key Binding Response\00"
@.str.31 = [20 x i8] c"Sensor Notification\00"
@.str.32 = [21 x i8] c"Codec/Media Data Ack\00"
@.str.33 = [23 x i8] c"Mic Start/Stop Request\00"
@.str.34 = [7 x i8] c"k3 6 ?\00"
@.str.35 = [22 x i8] c"Media Video ? Request\00"
@.str.36 = [25 x i8] c"Video Focus Notification\00"
@.str.37 = [27 x i8] c"Framing Error Notification\00"
@.str.38 = [8 x i8] c"Unknown\00"
define i8* @iaad_msg_type_str_get(i32 %0, i8* nocapture %1, i32 %2) {
switch i32 %0, label %52 [
i32 0, label %53
i32 1, label %4
i32 2, label %10
i32 3, label %11
i32 4, label %12
i32 5, label %13
i32 6, label %14
i32 7, label %15
i32 8, label %16
i32 9, label %17
i32 10, label %18
i32 11, label %19
i32 12, label %20
i32 13, label %21
i32 14, label %22
i32 15, label %23
i32 16, label %24
i32 17, label %25
i32 18, label %26
i32 19, label %27
i32 32768, label %28
i32 32769, label %29
i32 32770, label %35
i32 32771, label %41
i32 32772, label %46
i32 32773, label %47
i32 32774, label %48
i32 32775, label %49
i32 32776, label %50
i32 65535, label %51
]
4: ; preds = %3
%5 = load i8, i8* %1
%6 = icmp eq i8 %5, 65
%7 = select i1 %6, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0)
%8 = icmp eq i8 %5, 72
%9 = select i1 %8, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i8* %7
br label %53
10: ; preds = %3
br label %53
11: ; preds = %3
br label %53
12: ; preds = %3
br label %53
13: ; preds = %3
br label %53
14: ; preds = %3
br label %53
15: ; preds = %3
br label %53
16: ; preds = %3
br label %53
17: ; preds = %3
br label %53
18: ; preds = %3
br label %53
19: ; preds = %3
br label %53
20: ; preds = %3
br label %53
21: ; preds = %3
br label %53
22: ; preds = %3
br label %53
23: ; preds = %3
br label %53
24: ; preds = %3
br label %53
25: ; preds = %3
br label %53
26: ; preds = %3
br label %53
27: ; preds = %3
br label %53
28: ; preds = %3
br label %53
29: ; preds = %3
%30 = load i8, i8* %1
%31 = icmp eq i8 %30, 65
%32 = select i1 %31, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.24, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.25, i64 0, i64 0)
%33 = icmp eq i8 %30, 72
%34 = select i1 %33, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.23, i64 0, i64 0), i8* %32
br label %53
35: ; preds = %3
%36 = load i8, i8* %1
%37 = icmp eq i8 %36, 65
%38 = select i1 %37, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.27, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0)
%39 = icmp eq i8 %36, 72
%40 = select i1 %39, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.26, i64 0, i64 0), i8* %38
br label %53
41: ; preds = %3
%42 = icmp eq i32 %2, 2
%43 = select i1 %42, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.30, i64 0, i64 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.31, i64 0, i64 0)
%44 = icmp eq i32 %2, 6
%45 = select i1 %44, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.29, i64 0, i64 0), i8* %43
br label %53
46: ; preds = %3
br label %53
47: ; preds = %3
br label %53
48: ; preds = %3
br label %53
49: ; preds = %3
br label %53
50: ; preds = %3
br label %53
51: ; preds = %3
br label %53
52: ; preds = %3
br label %53
53: ; preds = %41, %35, %29, %4, %3, %52, %51, %50, %49, %48, %47, %46, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10
%54 = phi i8* [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.38, i64 0, i64 0), %52 ], [ getelementptr inbounds ([27 x i8], [27 x i8]* @.str.37, i64 0, i64 0), %51 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.36, i64 0, i64 0), %50 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.35, i64 0, i64 0), %49 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0), %48 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.33, i64 0, i64 0), %47 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.32, i64 0, i64 0), %46 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0), %28 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.21, i64 0, i64 0), %27 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.20, i64 0, i64 0), %26 ], [ getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), %25 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.18, i64 0, i64 0), %24 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.17, i64 0, i64 0), %23 ], [ getelementptr inbounds ([30 x i8], [30 x i8]* @.str.16, i64 0, i64 0), %22 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.15, i64 0, i64 0), %21 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.14, i64 0, i64 0), %20 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i64 0, i64 0), %19 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), %18 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), %17 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.10, i64 0, i64 0), %16 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.9, i64 0, i64 0), %15 ], [ getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), %14 ], [ getelementptr inbounds ([26 x i8], [26 x i8]* @.str.7, i64 0, i64 0), %13 ], [ getelementptr inbounds ([41 x i8], [41 x i8]* @.str.6, i64 0, i64 0), %12 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.5, i64 0, i64 0), %11 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.4, i64 0, i64 0), %10 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), %3 ], [ %9, %4 ], [ %34, %29 ], [ %40, %35 ], [ %45, %41 ]
ret i8* %54
}