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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
const char *version_name(unsigned code) {
  switch (code) {
  default:
    return NULL;
    break;
  case 0x0300:
    return "SSL_3_0";
    break;
  case 0x0301:
    return "TLS_1_0";
    break;
  case 0x0302:
    return "TLS_1_1";
    break;
  case 0x0303:
    return "TLS_1_2";
    break;
  case 0x0304:
    return "TLS_1_3";
    break;
  case 0x7f00:
    return "TLS_1_3_DRAFT0";
    break;
  case 0x7f01:
    return "TLS_1_3_DRAFT1";
    break;
  case 0x7f02:
    return "TLS_1_3_DRAFT2";
    break;
  case 0x7f03:
    return "TLS_1_3_DRAFT3";
    break;
  case 0x7f04:
    return "TLS_1_3_DRAFT4";
    break;
  case 0x7f05:
    return "TLS_1_3_DRAFT5";
    break;
  case 0x7f06:
    return "TLS_1_3_DRAFT6";
    break;
  case 0x7f07:
    return "TLS_1_3_DRAFT7";
    break;
  case 0x7f08:
    return "TLS_1_3_DRAFT8";
    break;
  case 0x7f09:
    return "TLS_1_3_DRAFT9";
    break;
  case 0x7f0a:
    return "TLS_1_3_DRAFT10";
    break;
  case 0x7f0b:
    return "TLS_1_3_DRAFT11";
    break;
  case 0x7f0c:
    return "TLS_1_3_DRAFT12";
    break;
  case 0x7f0d:
    return "TLS_1_3_DRAFT13";
    break;
  case 0x7f0e:
    return "TLS_1_3_DRAFT14";
    break;
  case 0x7f0f:
    return "TLS_1_3_DRAFT15";
    break;
  case 0x7f10:
    return "TLS_1_3_DRAFT16";
    break;
  case 0x7f11:
    return "TLS_1_3_DRAFT17";
    break;
  case 0x7f12:
    return "TLS_1_3_DRAFT18";
    break;
  case 0x7f13:
    return "TLS_1_3_DRAFT19";
    break;
  case 0x7f14:
    return "TLS_1_3_DRAFT20";
    break;
  case 0x7f15:
    return "TLS_1_3_DRAFT21";
    break;
  case 0x7f16:
    return "TLS_1_3_DRAFT22";
    break;
  case 0x7f17:
    return "TLS_1_3_DRAFT23";
    break;
  case 0x7f18:
    return "TLS_1_3_DRAFT24";
    break;
  case 0x7f19:
    return "TLS_1_3_DRAFT25";
    break;
  case 0x7f1a:
    return "TLS_1_3_DRAFT26";
    break;
  case 0x7f1b:
    return "TLS_1_3_DRAFT27";
    break;
  case 0x7f1c:
    return "TLS_1_3_DRAFT28";
    break;
  case 0xfb16:
    return "TLS_1_3_FB22";
    break;
  case 0xfb17:
    return "TLS_1_3_FB23";
    break;
  case 0xfb1a:
    return "TLS_1_3_FB26";
    break;
  case 0xfb28:
    return "TLS_1_3_FB40";
    break;
  case 0xfeff:
    return "DTLS_1_0";
    break;
  case 0xfefd:
    return "DTLS_1_1";
    break;
  case 0x7e01:
    return "TLS_1_3_7E01";
    break;
  case 0x7e02:
    return "TLS_1_3_7E02";
    break;
  case 0x0a0a:
  case 0x1a1a:
  case 0x2a2a:
  case 0x3a3a:
  case 0x4a4a:
  case 0x5a5a:
  case 0x6a6a:
  case 0x7a7a:
  case 0x8a8a:
  case 0x9a9a:
  case 0xaaaa:
  case 0xbaba:
  case 0xcaca:
  case 0xdada:
  case 0xeaea:
  case 0xfafa:
    return "GOOGLE_GREASE";
  }
}


x86 assembly (clang, -O0):
<version_name>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
sub    $0x300,%eax
je     1565 <version_name+0x465>
jmp    111d <version_name+0x1d>
mov    -0x10(%rbp),%eax
sub    $0x301,%eax
je     1575 <version_name+0x475>
jmp    1130 <version_name+0x30>
mov    -0x10(%rbp),%eax
sub    $0x302,%eax
je     1585 <version_name+0x485>
jmp    1143 <version_name+0x43>
mov    -0x10(%rbp),%eax
sub    $0x303,%eax
je     1595 <version_name+0x495>
jmp    1156 <version_name+0x56>
mov    -0x10(%rbp),%eax
sub    $0x304,%eax
je     15a5 <version_name+0x4a5>
jmp    1169 <version_name+0x69>
mov    -0x10(%rbp),%eax
sub    $0xa0a,%eax
je     1805 <version_name+0x705>
jmp    117c <version_name+0x7c>
mov    -0x10(%rbp),%eax
sub    $0x1a1a,%eax
je     1805 <version_name+0x705>
jmp    118f <version_name+0x8f>
mov    -0x10(%rbp),%eax
sub    $0x2a2a,%eax
je     1805 <version_name+0x705>
jmp    11a2 <version_name+0xa2>
mov    -0x10(%rbp),%eax
sub    $0x3a3a,%eax
je     1805 <version_name+0x705>
jmp    11b5 <version_name+0xb5>
mov    -0x10(%rbp),%eax
sub    $0x4a4a,%eax
je     1805 <version_name+0x705>
jmp    11c8 <version_name+0xc8>
mov    -0x10(%rbp),%eax
sub    $0x5a5a,%eax
je     1805 <version_name+0x705>
jmp    11db <version_name+0xdb>
mov    -0x10(%rbp),%eax
sub    $0x6a6a,%eax
je     1805 <version_name+0x705>
jmp    11ee <version_name+0xee>
mov    -0x10(%rbp),%eax
sub    $0x7a7a,%eax
je     1805 <version_name+0x705>
jmp    1201 <version_name+0x101>
mov    -0x10(%rbp),%eax
sub    $0x7e01,%eax
je     17e5 <version_name+0x6e5>
jmp    1214 <version_name+0x114>
mov    -0x10(%rbp),%eax
sub    $0x7e02,%eax
je     17f5 <version_name+0x6f5>
jmp    1227 <version_name+0x127>
mov    -0x10(%rbp),%eax
sub    $0x7f00,%eax
je     15b5 <version_name+0x4b5>
jmp    123a <version_name+0x13a>
mov    -0x10(%rbp),%eax
sub    $0x7f01,%eax
je     15c5 <version_name+0x4c5>
jmp    124d <version_name+0x14d>
mov    -0x10(%rbp),%eax
sub    $0x7f02,%eax
je     15d5 <version_name+0x4d5>
jmp    1260 <version_name+0x160>
mov    -0x10(%rbp),%eax
sub    $0x7f03,%eax
je     15e5 <version_name+0x4e5>
jmp    1273 <version_name+0x173>
mov    -0x10(%rbp),%eax
sub    $0x7f04,%eax
je     15f5 <version_name+0x4f5>
jmp    1286 <version_name+0x186>
mov    -0x10(%rbp),%eax
sub    $0x7f05,%eax
je     1605 <version_name+0x505>
jmp    1299 <version_name+0x199>
mov    -0x10(%rbp),%eax
sub    $0x7f06,%eax
je     1615 <version_name+0x515>
jmp    12ac <version_name+0x1ac>
mov    -0x10(%rbp),%eax
sub    $0x7f07,%eax
je     1625 <version_name+0x525>
jmp    12bf <version_name+0x1bf>
mov    -0x10(%rbp),%eax
sub    $0x7f08,%eax
je     1635 <version_name+0x535>
jmp    12d2 <version_name+0x1d2>
mov    -0x10(%rbp),%eax
sub    $0x7f09,%eax
je     1645 <version_name+0x545>
jmp    12e5 <version_name+0x1e5>
mov    -0x10(%rbp),%eax
sub    $0x7f0a,%eax
je     1655 <version_name+0x555>
jmp    12f8 <version_name+0x1f8>
mov    -0x10(%rbp),%eax
sub    $0x7f0b,%eax
je     1665 <version_name+0x565>
jmp    130b <version_name+0x20b>
mov    -0x10(%rbp),%eax
sub    $0x7f0c,%eax
je     1675 <version_name+0x575>
jmp    131e <version_name+0x21e>
mov    -0x10(%rbp),%eax
sub    $0x7f0d,%eax
je     1685 <version_name+0x585>
jmp    1331 <version_name+0x231>
mov    -0x10(%rbp),%eax
sub    $0x7f0e,%eax
je     1695 <version_name+0x595>
jmp    1344 <version_name+0x244>
mov    -0x10(%rbp),%eax
sub    $0x7f0f,%eax
je     16a5 <version_name+0x5a5>
jmp    1357 <version_name+0x257>
mov    -0x10(%rbp),%eax
sub    $0x7f10,%eax
je     16b5 <version_name+0x5b5>
jmp    136a <version_name+0x26a>
mov    -0x10(%rbp),%eax
sub    $0x7f11,%eax
je     16c5 <version_name+0x5c5>
jmp    137d <version_name+0x27d>
mov    -0x10(%rbp),%eax
sub    $0x7f12,%eax
je     16d5 <version_name+0x5d5>
jmp    1390 <version_name+0x290>
mov    -0x10(%rbp),%eax
sub    $0x7f13,%eax
je     16e5 <version_name+0x5e5>
jmp    13a3 <version_name+0x2a3>
mov    -0x10(%rbp),%eax
sub    $0x7f14,%eax
je     16f5 <version_name+0x5f5>
jmp    13b6 <version_name+0x2b6>
mov    -0x10(%rbp),%eax
sub    $0x7f15,%eax
je     1705 <version_name+0x605>
jmp    13c9 <version_name+0x2c9>
mov    -0x10(%rbp),%eax
sub    $0x7f16,%eax
je     1715 <version_name+0x615>
jmp    13dc <version_name+0x2dc>
mov    -0x10(%rbp),%eax
sub    $0x7f17,%eax
je     1725 <version_name+0x625>
jmp    13ef <version_name+0x2ef>
mov    -0x10(%rbp),%eax
sub    $0x7f18,%eax
je     1735 <version_name+0x635>
jmp    1402 <version_name+0x302>
mov    -0x10(%rbp),%eax
sub    $0x7f19,%eax
je     1745 <version_name+0x645>
jmp    1415 <version_name+0x315>
mov    -0x10(%rbp),%eax
sub    $0x7f1a,%eax
je     1755 <version_name+0x655>
jmp    1428 <version_name+0x328>
mov    -0x10(%rbp),%eax
sub    $0x7f1b,%eax
je     1765 <version_name+0x665>
jmp    143b <version_name+0x33b>
mov    -0x10(%rbp),%eax
sub    $0x7f1c,%eax
je     1775 <version_name+0x675>
jmp    144e <version_name+0x34e>
mov    -0x10(%rbp),%eax
sub    $0x8a8a,%eax
je     1805 <version_name+0x705>
jmp    1461 <version_name+0x361>
mov    -0x10(%rbp),%eax
sub    $0x9a9a,%eax
je     1805 <version_name+0x705>
jmp    1474 <version_name+0x374>
mov    -0x10(%rbp),%eax
sub    $0xaaaa,%eax
je     1805 <version_name+0x705>
jmp    1487 <version_name+0x387>
mov    -0x10(%rbp),%eax
sub    $0xbaba,%eax
je     1805 <version_name+0x705>
jmp    149a <version_name+0x39a>
mov    -0x10(%rbp),%eax
sub    $0xcaca,%eax
je     1805 <version_name+0x705>
jmp    14ad <version_name+0x3ad>
mov    -0x10(%rbp),%eax
sub    $0xdada,%eax
je     1805 <version_name+0x705>
jmp    14c0 <version_name+0x3c0>
mov    -0x10(%rbp),%eax
sub    $0xeaea,%eax
je     1805 <version_name+0x705>
jmp    14d3 <version_name+0x3d3>
mov    -0x10(%rbp),%eax
sub    $0xfafa,%eax
je     1805 <version_name+0x705>
jmp    14e6 <version_name+0x3e6>
mov    -0x10(%rbp),%eax
sub    $0xfb16,%eax
je     1785 <version_name+0x685>
jmp    14f9 <version_name+0x3f9>
mov    -0x10(%rbp),%eax
sub    $0xfb17,%eax
je     1795 <version_name+0x695>
jmp    150c <version_name+0x40c>
mov    -0x10(%rbp),%eax
sub    $0xfb1a,%eax
je     17a5 <version_name+0x6a5>
jmp    151f <version_name+0x41f>
mov    -0x10(%rbp),%eax
sub    $0xfb28,%eax
je     17b5 <version_name+0x6b5>
jmp    1532 <version_name+0x432>
mov    -0x10(%rbp),%eax
sub    $0xfefd,%eax
je     17d5 <version_name+0x6d5>
jmp    1545 <version_name+0x445>
mov    -0x10(%rbp),%eax
sub    $0xfeff,%eax
je     17c5 <version_name+0x6c5>
jmp    1558 <version_name+0x458>
movq   $0x0,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa94(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xc97(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xc90(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa6c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa64(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa5c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa5b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa5a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa59(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa58(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa57(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa56(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa55(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa54(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa53(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa4f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa4c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa49(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa46(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa3f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa38(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa35(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1810 <version_name+0x710>
lea    0xa32(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<version_name>:
xor    %eax,%eax
cmp    $0x8a89,%edi
jg     113c <version_name+0x3c>
cmp    $0x6a69,%edi
jle    1179 <version_name+0x79>
lea    -0x7e01(%rdi),%ecx
cmp    $0x11b,%ecx
ja     1261 <version_name+0x161>
lea    0xee9(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0x1629(%rip),%rax
ret
cmp    $0xfaf9,%edi
jg     11b2 <version_name+0xb2>
cmp    $0xbab9,%edi
jle    1219 <version_name+0x119>
cmp    $0xdad9,%edi
jg     124f <version_name+0x14f>
cmp    $0xbaba,%edi
je     1271 <version_name+0x171>
cmp    $0xcaca,%edi
je     1271 <version_name+0x171>
jmp    12a0 <version_name+0x1a0>
cmp    $0xa09,%edi
jle    11d5 <version_name+0xd5>
cmp    $0x3a39,%edi
jg     11fc <version_name+0xfc>
cmp    $0xa0a,%edi
je     1271 <version_name+0x171>
cmp    $0x1a1a,%edi
je     1271 <version_name+0x171>
cmp    $0x2a2a,%edi
je     1271 <version_name+0x171>
jmp    12a0 <version_name+0x1a0>
lea    -0xfafa(%rdi),%ecx
cmp    $0x2e,%ecx
ja     1233 <version_name+0x133>
lea    0x12c0(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0x154a(%rip),%rax
ret
add    $0xfffffd00,%edi
cmp    $0x4,%edi
ja     12a0 <version_name+0x1a0>
lea    0xe15(%rip),%rax
movslq (%rax,%rdi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    0x1345(%rip),%rax
ret
cmp    $0x3a3a,%edi
je     1271 <version_name+0x171>
cmp    $0x4a4a,%edi
je     1271 <version_name+0x171>
cmp    $0x5a5a,%edi
je     1271 <version_name+0x171>
jmp    12a0 <version_name+0x1a0>
cmp    $0x8a8a,%edi
je     1271 <version_name+0x171>
cmp    $0x9a9a,%edi
je     1271 <version_name+0x171>
cmp    $0xaaaa,%edi
je     1271 <version_name+0x171>
jmp    12a0 <version_name+0x1a0>
cmp    $0xfefd,%edi
je     13a1 <version_name+0x2a1>
cmp    $0xfeff,%edi
jne    12a0 <version_name+0x1a0>
lea    0x1504(%rip),%rax
ret
cmp    $0xdada,%edi
je     1271 <version_name+0x171>
cmp    $0xeaea,%edi
je     1271 <version_name+0x171>
jmp    12a0 <version_name+0x1a0>
cmp    $0x6a6a,%edi
je     1271 <version_name+0x171>
cmp    $0x7a7a,%edi
jne    12a0 <version_name+0x1a0>
lea    0x1506(%rip),%rax
ret
lea    0x14d3(%rip),%rax
ret
lea    0x14d4(%rip),%rax
ret
lea    0x12b8(%rip),%rax
ret
lea    0x12b8(%rip),%rax
ret
lea    0x14d1(%rip),%rax
ret
lea    0x12b0(%rip),%rax
ret
lea    0x12b7(%rip),%rax
ret
lea    0x12be(%rip),%rax
ret
lea    0x12c5(%rip),%rax
ret
lea    0x12cc(%rip),%rax
ret
lea    0x12d3(%rip),%rax
ret
lea    0x12da(%rip),%rax
ret
lea    0x12e1(%rip),%rax
ret
lea    0x12e8(%rip),%rax
ret
lea    0x12ef(%rip),%rax
ret
lea    0x12f6(%rip),%rax
ret
lea    0x12fe(%rip),%rax
ret
lea    0x1306(%rip),%rax
ret
lea    0x130e(%rip),%rax
ret
lea    0x1316(%rip),%rax
ret
lea    0x131e(%rip),%rax
ret
lea    0x1326(%rip),%rax
ret
lea    0x132e(%rip),%rax
ret
lea    0x1336(%rip),%rax
ret
lea    0x133e(%rip),%rax
ret
lea    0x1346(%rip),%rax
ret
lea    0x134e(%rip),%rax
ret
lea    0x1356(%rip),%rax
ret
lea    0x135e(%rip),%rax
ret
lea    0x1366(%rip),%rax
ret
lea    0x136e(%rip),%rax
ret
lea    0x1376(%rip),%rax
ret
lea    0x137e(%rip),%rax
ret
lea    0x1386(%rip),%rax
ret
lea    0x139b(%rip),%rax
ret
lea    0x13a0(%rip),%rax
ret
lea    0x13a5(%rip),%rax
ret
lea    0x13b3(%rip),%rax
ret

LLVM IR (-O0):
@.str = [8 x i8] c"SSL_3_0\00"
@.str.1 = [8 x i8] c"TLS_1_0\00"
@.str.2 = [8 x i8] c"TLS_1_1\00"
@.str.3 = [8 x i8] c"TLS_1_2\00"
@.str.4 = [8 x i8] c"TLS_1_3\00"
@.str.5 = [15 x i8] c"TLS_1_3_DRAFT0\00"
@.str.6 = [15 x i8] c"TLS_1_3_DRAFT1\00"
@.str.7 = [15 x i8] c"TLS_1_3_DRAFT2\00"
@.str.8 = [15 x i8] c"TLS_1_3_DRAFT3\00"
@.str.9 = [15 x i8] c"TLS_1_3_DRAFT4\00"
@.str.10 = [15 x i8] c"TLS_1_3_DRAFT5\00"
@.str.11 = [15 x i8] c"TLS_1_3_DRAFT6\00"
@.str.12 = [15 x i8] c"TLS_1_3_DRAFT7\00"
@.str.13 = [15 x i8] c"TLS_1_3_DRAFT8\00"
@.str.14 = [15 x i8] c"TLS_1_3_DRAFT9\00"
@.str.15 = [16 x i8] c"TLS_1_3_DRAFT10\00"
@.str.16 = [16 x i8] c"TLS_1_3_DRAFT11\00"
@.str.17 = [16 x i8] c"TLS_1_3_DRAFT12\00"
@.str.18 = [16 x i8] c"TLS_1_3_DRAFT13\00"
@.str.19 = [16 x i8] c"TLS_1_3_DRAFT14\00"
@.str.20 = [16 x i8] c"TLS_1_3_DRAFT15\00"
@.str.21 = [16 x i8] c"TLS_1_3_DRAFT16\00"
@.str.22 = [16 x i8] c"TLS_1_3_DRAFT17\00"
@.str.23 = [16 x i8] c"TLS_1_3_DRAFT18\00"
@.str.24 = [16 x i8] c"TLS_1_3_DRAFT19\00"
@.str.25 = [16 x i8] c"TLS_1_3_DRAFT20\00"
@.str.26 = [16 x i8] c"TLS_1_3_DRAFT21\00"
@.str.27 = [16 x i8] c"TLS_1_3_DRAFT22\00"
@.str.28 = [16 x i8] c"TLS_1_3_DRAFT23\00"
@.str.29 = [16 x i8] c"TLS_1_3_DRAFT24\00"
@.str.30 = [16 x i8] c"TLS_1_3_DRAFT25\00"
@.str.31 = [16 x i8] c"TLS_1_3_DRAFT26\00"
@.str.32 = [16 x i8] c"TLS_1_3_DRAFT27\00"
@.str.33 = [16 x i8] c"TLS_1_3_DRAFT28\00"
@.str.34 = [13 x i8] c"TLS_1_3_FB22\00"
@.str.35 = [13 x i8] c"TLS_1_3_FB23\00"
@.str.36 = [13 x i8] c"TLS_1_3_FB26\00"
@.str.37 = [13 x i8] c"TLS_1_3_FB40\00"
@.str.38 = [9 x i8] c"DTLS_1_0\00"
@.str.39 = [9 x i8] c"DTLS_1_1\00"
@.str.40 = [13 x i8] c"TLS_1_3_7E01\00"
@.str.41 = [13 x i8] c"TLS_1_3_7E02\00"
@.str.42 = [14 x i8] c"GOOGLE_GREASE\00"
define i8* @version_name(i32 %0) {
%2 = alloca i8*
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %5 [
i32 768, label %6
i32 769, label %7
i32 770, label %8
i32 771, label %9
i32 772, label %10
i32 32512, label %11
i32 32513, label %12
i32 32514, label %13
i32 32515, label %14
i32 32516, label %15
i32 32517, label %16
i32 32518, label %17
i32 32519, label %18
i32 32520, label %19
i32 32521, label %20
i32 32522, label %21
i32 32523, label %22
i32 32524, label %23
i32 32525, label %24
i32 32526, label %25
i32 32527, label %26
i32 32528, label %27
i32 32529, label %28
i32 32530, label %29
i32 32531, label %30
i32 32532, label %31
i32 32533, label %32
i32 32534, label %33
i32 32535, label %34
i32 32536, label %35
i32 32537, label %36
i32 32538, label %37
i32 32539, label %38
i32 32540, label %39
i32 64278, label %40
i32 64279, label %41
i32 64282, label %42
i32 64296, label %43
i32 65279, label %44
i32 65277, label %45
i32 32257, label %46
i32 32258, label %47
i32 2570, label %48
i32 6682, label %48
i32 10794, label %48
i32 14906, label %48
i32 19018, label %48
i32 23130, label %48
i32 27242, label %48
i32 31354, label %48
i32 35466, label %48
i32 39578, label %48
i32 43690, label %48
i32 47802, label %48
i32 51914, label %48
i32 56026, label %48
i32 60138, label %48
i32 64250, label %48
]
5: ; preds = %1
store i8* null, i8** %2
br label %49
6: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i8** %2
br label %49
7: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %49
8: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %49
9: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %49
10: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %49
11: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %49
12: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %49
13: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %49
14: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %49
15: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %49
16: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %49
17: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %49
18: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %49
19: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %49
20: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %49
21: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %49
22: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %49
23: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %49
24: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %49
25: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %49
26: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %49
27: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %2
br label %49
28: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.22, i64 0, i64 0), i8** %2
br label %49
29: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.23, i64 0, i64 0), i8** %2
br label %49
30: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.24, i64 0, i64 0), i8** %2
br label %49
31: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), i8** %2
br label %49
32: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0), i8** %2
br label %49
33: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i64 0, i64 0), i8** %2
br label %49
34: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.28, i64 0, i64 0), i8** %2
br label %49
35: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.29, i64 0, i64 0), i8** %2
br label %49
36: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.30, i64 0, i64 0), i8** %2
br label %49
37: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.31, i64 0, i64 0), i8** %2
br label %49
38: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.32, i64 0, i64 0), i8** %2
br label %49
39: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.33, i64 0, i64 0), i8** %2
br label %49
40: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.34, i64 0, i64 0), i8** %2
br label %49
41: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.35, i64 0, i64 0), i8** %2
br label %49
42: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.36, i64 0, i64 0), i8** %2
br label %49
43: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.37, i64 0, i64 0), i8** %2
br label %49
44: ; preds = %1
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.38, i64 0, i64 0), i8** %2
br label %49
45: ; preds = %1
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.39, i64 0, i64 0), i8** %2
br label %49
46: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.40, i64 0, i64 0), i8** %2
br label %49
47: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.41, i64 0, i64 0), i8** %2
br label %49
48: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.42, i64 0, i64 0), i8** %2
br label %49
49: ; preds = %48, %47, %46, %45, %44, %43, %42, %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, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5
%50 = load i8*, i8** %2
ret i8* %50
}

LLVM IR (-O2):
@.str = [8 x i8] c"SSL_3_0\00"
@.str.1 = [8 x i8] c"TLS_1_0\00"
@.str.2 = [8 x i8] c"TLS_1_1\00"
@.str.3 = [8 x i8] c"TLS_1_2\00"
@.str.4 = [8 x i8] c"TLS_1_3\00"
@.str.5 = [15 x i8] c"TLS_1_3_DRAFT0\00"
@.str.6 = [15 x i8] c"TLS_1_3_DRAFT1\00"
@.str.7 = [15 x i8] c"TLS_1_3_DRAFT2\00"
@.str.8 = [15 x i8] c"TLS_1_3_DRAFT3\00"
@.str.9 = [15 x i8] c"TLS_1_3_DRAFT4\00"
@.str.10 = [15 x i8] c"TLS_1_3_DRAFT5\00"
@.str.11 = [15 x i8] c"TLS_1_3_DRAFT6\00"
@.str.12 = [15 x i8] c"TLS_1_3_DRAFT7\00"
@.str.13 = [15 x i8] c"TLS_1_3_DRAFT8\00"
@.str.14 = [15 x i8] c"TLS_1_3_DRAFT9\00"
@.str.15 = [16 x i8] c"TLS_1_3_DRAFT10\00"
@.str.16 = [16 x i8] c"TLS_1_3_DRAFT11\00"
@.str.17 = [16 x i8] c"TLS_1_3_DRAFT12\00"
@.str.18 = [16 x i8] c"TLS_1_3_DRAFT13\00"
@.str.19 = [16 x i8] c"TLS_1_3_DRAFT14\00"
@.str.20 = [16 x i8] c"TLS_1_3_DRAFT15\00"
@.str.21 = [16 x i8] c"TLS_1_3_DRAFT16\00"
@.str.22 = [16 x i8] c"TLS_1_3_DRAFT17\00"
@.str.23 = [16 x i8] c"TLS_1_3_DRAFT18\00"
@.str.24 = [16 x i8] c"TLS_1_3_DRAFT19\00"
@.str.25 = [16 x i8] c"TLS_1_3_DRAFT20\00"
@.str.26 = [16 x i8] c"TLS_1_3_DRAFT21\00"
@.str.27 = [16 x i8] c"TLS_1_3_DRAFT22\00"
@.str.28 = [16 x i8] c"TLS_1_3_DRAFT23\00"
@.str.29 = [16 x i8] c"TLS_1_3_DRAFT24\00"
@.str.30 = [16 x i8] c"TLS_1_3_DRAFT25\00"
@.str.31 = [16 x i8] c"TLS_1_3_DRAFT26\00"
@.str.32 = [16 x i8] c"TLS_1_3_DRAFT27\00"
@.str.33 = [16 x i8] c"TLS_1_3_DRAFT28\00"
@.str.34 = [13 x i8] c"TLS_1_3_FB22\00"
@.str.35 = [13 x i8] c"TLS_1_3_FB23\00"
@.str.36 = [13 x i8] c"TLS_1_3_FB26\00"
@.str.37 = [13 x i8] c"TLS_1_3_FB40\00"
@.str.38 = [9 x i8] c"DTLS_1_0\00"
@.str.39 = [9 x i8] c"DTLS_1_1\00"
@.str.40 = [13 x i8] c"TLS_1_3_7E01\00"
@.str.41 = [13 x i8] c"TLS_1_3_7E02\00"
@.str.42 = [14 x i8] c"GOOGLE_GREASE\00"
define i8* @version_name(i32 %0) {
switch i32 %0, label %45 [
i32 768, label %2
i32 769, label %3
i32 770, label %4
i32 771, label %5
i32 772, label %6
i32 32512, label %7
i32 32513, label %8
i32 32514, label %9
i32 32515, label %10
i32 32516, label %11
i32 32517, label %12
i32 32518, label %13
i32 32519, label %14
i32 32520, label %15
i32 32521, label %16
i32 32522, label %17
i32 32523, label %18
i32 32524, label %19
i32 32525, label %20
i32 32526, label %21
i32 32527, label %22
i32 32528, label %23
i32 32529, label %24
i32 32530, label %25
i32 32531, label %26
i32 32532, label %27
i32 32533, label %28
i32 32534, label %29
i32 32535, label %30
i32 32536, label %31
i32 32537, label %32
i32 32538, label %33
i32 32539, label %34
i32 32540, label %35
i32 64278, label %36
i32 64279, label %37
i32 64282, label %38
i32 64296, label %39
i32 65279, label %40
i32 65277, label %41
i32 32257, label %42
i32 32258, label %43
i32 2570, label %44
i32 6682, label %44
i32 10794, label %44
i32 14906, label %44
i32 19018, label %44
i32 23130, label %44
i32 27242, label %44
i32 31354, label %44
i32 35466, label %44
i32 39578, label %44
i32 43690, label %44
i32 47802, label %44
i32 51914, label %44
i32 56026, label %44
i32 60138, label %44
i32 64250, label %44
]
2: ; preds = %1
br label %45
3: ; preds = %1
br label %45
4: ; preds = %1
br label %45
5: ; preds = %1
br label %45
6: ; preds = %1
br label %45
7: ; preds = %1
br label %45
8: ; preds = %1
br label %45
9: ; preds = %1
br label %45
10: ; preds = %1
br label %45
11: ; preds = %1
br label %45
12: ; preds = %1
br label %45
13: ; preds = %1
br label %45
14: ; preds = %1
br label %45
15: ; preds = %1
br label %45
16: ; preds = %1
br label %45
17: ; preds = %1
br label %45
18: ; preds = %1
br label %45
19: ; preds = %1
br label %45
20: ; preds = %1
br label %45
21: ; preds = %1
br label %45
22: ; preds = %1
br label %45
23: ; preds = %1
br label %45
24: ; preds = %1
br label %45
25: ; preds = %1
br label %45
26: ; preds = %1
br label %45
27: ; preds = %1
br label %45
28: ; preds = %1
br label %45
29: ; preds = %1
br label %45
30: ; preds = %1
br label %45
31: ; preds = %1
br label %45
32: ; preds = %1
br label %45
33: ; preds = %1
br label %45
34: ; preds = %1
br label %45
35: ; preds = %1
br label %45
36: ; preds = %1
br label %45
37: ; preds = %1
br label %45
38: ; preds = %1
br label %45
39: ; preds = %1
br label %45
40: ; preds = %1
br label %45
41: ; preds = %1
br label %45
42: ; preds = %1
br label %45
43: ; preds = %1
br label %45
44: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
br label %45
45: ; preds = %1, %44, %43, %42, %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, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2
%46 = phi i8* [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.42, i64 0, i64 0), %44 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.41, i64 0, i64 0), %43 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.40, i64 0, i64 0), %42 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.39, i64 0, i64 0), %41 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.38, i64 0, i64 0), %40 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.37, i64 0, i64 0), %39 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.36, i64 0, i64 0), %38 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.35, i64 0, i64 0), %37 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.34, i64 0, i64 0), %36 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.33, i64 0, i64 0), %35 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.32, i64 0, i64 0), %34 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.31, i64 0, i64 0), %33 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.30, i64 0, i64 0), %32 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.29, i64 0, i64 0), %31 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.28, i64 0, i64 0), %30 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i64 0, i64 0), %29 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0), %28 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), %27 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.24, i64 0, i64 0), %26 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.23, i64 0, i64 0), %25 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.22, i64 0, i64 0), %24 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), %23 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0), %22 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.19, i64 0, i64 0), %21 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.18, i64 0, i64 0), %20 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i64 0, i64 0), %19 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0), %18 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.15, i64 0, i64 0), %17 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0), %16 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.13, i64 0, i64 0), %15 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), %14 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.11, i64 0, i64 0), %13 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.10, i64 0, i64 0), %12 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.9, i64 0, i64 0), %11 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i64 0, i64 0), %10 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.7, i64 0, i64 0), %9 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0), %8 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.5, i64 0, i64 0), %7 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), %6 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0), %5 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), %4 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), %3 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), %2 ], [ null, %1 ]
ret i8* %46
}