#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 */
int /*<<< orphan*/ strcpy(char *, char *);
void get_subvendor_name(short vendor_id, char *str) {
  switch (vendor_id) {
  case 0x147B:
    strcpy(str, "Abit");
    break;
  case 0x1025:
    strcpy(str, "Acer");
    break;
  case 0x14C0:
    strcpy(str, "Ahtec");
    break;
  case 0x161F:
    strcpy(str, "Alienware");
    break;
  case 0x106B:
    strcpy(str, "Apple");
    break;
  case 0x1043:
    strcpy(str, "Asus");
    break;
  case 0x19F1:
    strcpy(str, "Bfg");
    break;
  case 0x270F:
    strcpy(str, "Chaintech");
    break;
  case 0x196D:
    strcpy(str, "Club3D");
    break;
  case 0x7377:
    strcpy(str, "Colorful");
    break;
  case 0x1102:
    strcpy(str, "Creative");
    break;
  case 0x1028:
    strcpy(str, "Dell");
    break;
  case 0x1019:
    strcpy(str, "Ecs");
    break;
  case 0x1048:
    strcpy(str, "Elsa");
    break;
  case 0x3842:
    strcpy(str, "Evga");
    break;
  case 0x105B:
    strcpy(str, "Foxconn");
    break;
  case 0x1509:
    strcpy(str, "Fujitsu");
    break;
  case 0x10B0:
    strcpy(str, "Gainward");
    break;
  case 0x1631:
    strcpy(str, "Gateway");
    break;
  case 0x1458:
    strcpy(str, "Gigabyte");
    break;
  case 0x103C:
    strcpy(str, "Hp");
    break;
  case 0x107D:
    strcpy(str, "Leadtek");
    break;
  case 0x1462:
    strcpy(str, "Msi");
    break;
  case 0x10DE:
  case 0x1558:
    strcpy(str, "Nvidia");
    break;
  case 0x196E:
    strcpy(str, "Pny");
    break;
  case 0x1ACC:
    strcpy(str, "Point of View");
    break;
  case 0x1554:
    strcpy(str, "Prolink");
    break;
  case 0x144d:
    strcpy(str, "Sanyo/Samsung");
    break;
  case 0x104d:
    strcpy(str, "Sony");
    break;
  case 0x1179:
    strcpy(str, "Toshiba");
    break;
  case 0x1682:
    strcpy(str, "Xfx");
    break;
  case 0x1a46:
    strcpy(str, "Zepto");
    break;
  case 0x174B:
  case 0x174D:
  case 0x19DA:
    strcpy(str, "Zotac");
    break;
  case 0x0000:
    strcpy(str, "None");
    break;
  default:
    strcpy(str, "Unknown");
  }
}


x86 assembly (clang, -O0):
<get_subvendor_name>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %di,%ax
mov    %ax,-0x2(%rbp)
mov    %rsi,-0x10(%rbp)
movswl -0x2(%rbp),%eax
mov    %eax,-0x14(%rbp)
test   %eax,%eax
je     1698 <get_subvendor_name+0x588>
jmp    1137 <get_subvendor_name+0x27>
mov    -0x14(%rbp),%eax
sub    $0x1019,%eax
je     14df <get_subvendor_name+0x3cf>
jmp    114a <get_subvendor_name+0x3a>
mov    -0x14(%rbp),%eax
sub    $0x1025,%eax
je     13f8 <get_subvendor_name+0x2e8>
jmp    115d <get_subvendor_name+0x4d>
mov    -0x14(%rbp),%eax
sub    $0x1028,%eax
je     14ca <get_subvendor_name+0x3ba>
jmp    1170 <get_subvendor_name+0x60>
mov    -0x14(%rbp),%eax
sub    $0x103c,%eax
je     1587 <get_subvendor_name+0x477>
jmp    1183 <get_subvendor_name+0x73>
mov    -0x14(%rbp),%eax
sub    $0x1043,%eax
je     144c <get_subvendor_name+0x33c>
jmp    1196 <get_subvendor_name+0x86>
mov    -0x14(%rbp),%eax
sub    $0x1048,%eax
je     14f4 <get_subvendor_name+0x3e4>
jmp    11a9 <get_subvendor_name+0x99>
mov    -0x14(%rbp),%eax
sub    $0x104d,%eax
je     162f <get_subvendor_name+0x51f>
jmp    11bc <get_subvendor_name+0xac>
mov    -0x14(%rbp),%eax
sub    $0x105b,%eax
je     151e <get_subvendor_name+0x40e>
jmp    11cf <get_subvendor_name+0xbf>
mov    -0x14(%rbp),%eax
sub    $0x106b,%eax
je     1437 <get_subvendor_name+0x327>
jmp    11e2 <get_subvendor_name+0xd2>
mov    -0x14(%rbp),%eax
sub    $0x107d,%eax
je     159c <get_subvendor_name+0x48c>
jmp    11f5 <get_subvendor_name+0xe5>
mov    -0x14(%rbp),%eax
sub    $0x10b0,%eax
je     1548 <get_subvendor_name+0x438>
jmp    1208 <get_subvendor_name+0xf8>
mov    -0x14(%rbp),%eax
sub    $0x10de,%eax
je     15c6 <get_subvendor_name+0x4b6>
jmp    121b <get_subvendor_name+0x10b>
mov    -0x14(%rbp),%eax
sub    $0x1102,%eax
je     14b5 <get_subvendor_name+0x3a5>
jmp    122e <get_subvendor_name+0x11e>
mov    -0x14(%rbp),%eax
sub    $0x1179,%eax
je     1644 <get_subvendor_name+0x534>
jmp    1241 <get_subvendor_name+0x131>
mov    -0x14(%rbp),%eax
sub    $0x144d,%eax
je     161a <get_subvendor_name+0x50a>
jmp    1254 <get_subvendor_name+0x144>
mov    -0x14(%rbp),%eax
sub    $0x1458,%eax
je     1572 <get_subvendor_name+0x462>
jmp    1267 <get_subvendor_name+0x157>
mov    -0x14(%rbp),%eax
sub    $0x1462,%eax
je     15b1 <get_subvendor_name+0x4a1>
jmp    127a <get_subvendor_name+0x16a>
mov    -0x14(%rbp),%eax
sub    $0x147b,%eax
je     13e3 <get_subvendor_name+0x2d3>
jmp    128d <get_subvendor_name+0x17d>
mov    -0x14(%rbp),%eax
sub    $0x14c0,%eax
je     140d <get_subvendor_name+0x2fd>
jmp    12a0 <get_subvendor_name+0x190>
mov    -0x14(%rbp),%eax
sub    $0x1509,%eax
je     1533 <get_subvendor_name+0x423>
jmp    12b3 <get_subvendor_name+0x1a3>
mov    -0x14(%rbp),%eax
sub    $0x1554,%eax
je     1605 <get_subvendor_name+0x4f5>
jmp    12c6 <get_subvendor_name+0x1b6>
mov    -0x14(%rbp),%eax
sub    $0x1558,%eax
je     15c6 <get_subvendor_name+0x4b6>
jmp    12d9 <get_subvendor_name+0x1c9>
mov    -0x14(%rbp),%eax
sub    $0x161f,%eax
je     1422 <get_subvendor_name+0x312>
jmp    12ec <get_subvendor_name+0x1dc>
mov    -0x14(%rbp),%eax
sub    $0x1631,%eax
je     155d <get_subvendor_name+0x44d>
jmp    12ff <get_subvendor_name+0x1ef>
mov    -0x14(%rbp),%eax
sub    $0x1682,%eax
je     1659 <get_subvendor_name+0x549>
jmp    1312 <get_subvendor_name+0x202>
mov    -0x14(%rbp),%eax
sub    $0x174b,%eax
je     1683 <get_subvendor_name+0x573>
jmp    1325 <get_subvendor_name+0x215>
mov    -0x14(%rbp),%eax
sub    $0x174d,%eax
je     1683 <get_subvendor_name+0x573>
jmp    1338 <get_subvendor_name+0x228>
mov    -0x14(%rbp),%eax
sub    $0x196d,%eax
je     148b <get_subvendor_name+0x37b>
jmp    134b <get_subvendor_name+0x23b>
mov    -0x14(%rbp),%eax
sub    $0x196e,%eax
je     15db <get_subvendor_name+0x4cb>
jmp    135e <get_subvendor_name+0x24e>
mov    -0x14(%rbp),%eax
sub    $0x19da,%eax
je     1683 <get_subvendor_name+0x573>
jmp    1371 <get_subvendor_name+0x261>
mov    -0x14(%rbp),%eax
sub    $0x19f1,%eax
je     1461 <get_subvendor_name+0x351>
jmp    1384 <get_subvendor_name+0x274>
mov    -0x14(%rbp),%eax
sub    $0x1a46,%eax
je     166e <get_subvendor_name+0x55e>
jmp    1397 <get_subvendor_name+0x287>
mov    -0x14(%rbp),%eax
sub    $0x1acc,%eax
je     15f0 <get_subvendor_name+0x4e0>
jmp    13aa <get_subvendor_name+0x29a>
mov    -0x14(%rbp),%eax
sub    $0x270f,%eax
je     1476 <get_subvendor_name+0x366>
jmp    13bd <get_subvendor_name+0x2ad>
mov    -0x14(%rbp),%eax
sub    $0x3842,%eax
je     1509 <get_subvendor_name+0x3f9>
jmp    13d0 <get_subvendor_name+0x2c0>
mov    -0x14(%rbp),%eax
sub    $0x7377,%eax
je     14a0 <get_subvendor_name+0x390>
jmp    16ad <get_subvendor_name+0x59d>
mov    -0x10(%rbp),%rdi
lea    0xc12(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xc02(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xbf2(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xbe3(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xbd8(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xbc9(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xbb9(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xba8(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb9d(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb8f(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb83(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb77(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb67(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb56(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb46(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb36(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb29(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb1c(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb10(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xb03(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xaf7(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xae5(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xad8(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xac7(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xab9(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xaa8(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xaa1(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xa94(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xa8d(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xa7d(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xa70(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xa5f(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xa50(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xa41(%rip),%rsi
call   1030 <strcpy@plt>
jmp    16bd <get_subvendor_name+0x5ad>
mov    -0x10(%rbp),%rdi
lea    0xa31(%rip),%rsi
call   1030 <strcpy@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_subvendor_name>:
mov    %rsi,%rax
cmp    $0x147a,%edi
jle    1172 <get_subvendor_name+0x62>
cmp    $0x174c,%edi
jle    11a8 <get_subvendor_name+0x98>
cmp    $0x1a45,%edi
jg     1228 <get_subvendor_name+0x118>
cmp    $0x196d,%edi
jle    12f0 <get_subvendor_name+0x1e0>
cmp    $0x196e,%edi
je     13cd <get_subvendor_name+0x2bd>
cmp    $0x19da,%edi
je     1313 <get_subvendor_name+0x203>
cmp    $0x19f1,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0x101f(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x10af,%edi
jg     11e9 <get_subvendor_name+0xd9>
lea    -0x1025(%rdi),%ecx
cmp    $0x58,%ecx
ja     12cd <get_subvendor_name+0x1bd>
lea    0xe70(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0xfc9(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x1557,%edi
jle    1267 <get_subvendor_name+0x157>
cmp    $0x1630,%edi
jle    1322 <get_subvendor_name+0x212>
cmp    $0x1631,%edi
je     1454 <get_subvendor_name+0x344>
cmp    $0x1682,%edi
je     1463 <get_subvendor_name+0x353>
cmp    $0x174b,%edi
je     1313 <get_subvendor_name+0x203>
jmp    14f9 <get_subvendor_name+0x3e9>
cmp    $0x1178,%edi
jle    129a <get_subvendor_name+0x18a>
cmp    $0x1457,%edi
jg     1349 <get_subvendor_name+0x239>
cmp    $0x1179,%edi
je     1472 <get_subvendor_name+0x362>
cmp    $0x144d,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xffd(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x270e,%edi
jle    1370 <get_subvendor_name+0x260>
cmp    $0x270f,%edi
je     1481 <get_subvendor_name+0x371>
cmp    $0x3842,%edi
je     1490 <get_subvendor_name+0x380>
cmp    $0x7377,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xf3f(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x1508,%edi
jg     1397 <get_subvendor_name+0x287>
cmp    $0x147b,%edi
je     149f <get_subvendor_name+0x38f>
cmp    $0x14c0,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xedc(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x10b0,%edi
je     14ae <get_subvendor_name+0x39e>
cmp    $0x10de,%edi
je     13be <get_subvendor_name+0x2ae>
cmp    $0x1102,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xee2(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
test   %edi,%edi
je     14bd <get_subvendor_name+0x3ad>
cmp    $0x1019,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xecd(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x174d,%edi
je     1313 <get_subvendor_name+0x203>
cmp    $0x196d,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xe8c(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xf28(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x1558,%edi
je     13be <get_subvendor_name+0x2ae>
cmp    $0x161f,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xe33(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x1458,%edi
je     14cc <get_subvendor_name+0x3bc>
cmp    $0x1462,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xe90(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x1a46,%edi
je     14db <get_subvendor_name+0x3cb>
cmp    $0x1acc,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xe78(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
cmp    $0x1509,%edi
je     14ea <get_subvendor_name+0x3da>
cmp    $0x1554,%edi
jne    14f9 <get_subvendor_name+0x3e9>
lea    0xe5f(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xe37(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xe2f(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xdcd(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xdfb(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd83(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xda9(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xe0c(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd95(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd41(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xda4(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd81(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xdce(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xdb7(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd05(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd27(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xcbe(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd1e(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd84(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd11(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd5a(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xcda(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>
lea    0xd4d(%rip),%rsi
mov    %rax,%rdi
jmp    1030 <strcpy@plt>

LLVM IR (-O0):
@.str = [5 x i8] c"Abit\00"
@.str.1 = [5 x i8] c"Acer\00"
@.str.2 = [6 x i8] c"Ahtec\00"
@.str.3 = [10 x i8] c"Alienware\00"
@.str.4 = [6 x i8] c"Apple\00"
@.str.5 = [5 x i8] c"Asus\00"
@.str.6 = [4 x i8] c"Bfg\00"
@.str.7 = [10 x i8] c"Chaintech\00"
@.str.8 = [7 x i8] c"Club3D\00"
@.str.9 = [9 x i8] c"Colorful\00"
@.str.10 = [9 x i8] c"Creative\00"
@.str.11 = [5 x i8] c"Dell\00"
@.str.12 = [4 x i8] c"Ecs\00"
@.str.13 = [5 x i8] c"Elsa\00"
@.str.14 = [5 x i8] c"Evga\00"
@.str.15 = [8 x i8] c"Foxconn\00"
@.str.16 = [8 x i8] c"Fujitsu\00"
@.str.17 = [9 x i8] c"Gainward\00"
@.str.18 = [8 x i8] c"Gateway\00"
@.str.19 = [9 x i8] c"Gigabyte\00"
@.str.20 = [3 x i8] c"Hp\00"
@.str.21 = [8 x i8] c"Leadtek\00"
@.str.22 = [4 x i8] c"Msi\00"
@.str.23 = [7 x i8] c"Nvidia\00"
@.str.24 = [4 x i8] c"Pny\00"
@.str.25 = [14 x i8] c"Point of View\00"
@.str.26 = [8 x i8] c"Prolink\00"
@.str.27 = [14 x i8] c"Sanyo/Samsung\00"
@.str.28 = [5 x i8] c"Sony\00"
@.str.29 = [8 x i8] c"Toshiba\00"
@.str.30 = [4 x i8] c"Xfx\00"
@.str.31 = [6 x i8] c"Zepto\00"
@.str.32 = [6 x i8] c"Zotac\00"
@.str.33 = [5 x i8] c"None\00"
@.str.34 = [8 x i8] c"Unknown\00"
define void @get_subvendor_name(i16 signext %0, i8* %1) {
%3 = alloca i16
%4 = alloca i8*
store i16 %0, i16* %3
store i8* %1, i8** %4
%5 = load i16, i16* %3
%6 = sext i16 %5 to i32
switch i32 %6, label %109 [
i32 5243, label %7
i32 4133, label %10
i32 5312, label %13
i32 5663, label %16
i32 4203, label %19
i32 4163, label %22
i32 6641, label %25
i32 9999, label %28
i32 6509, label %31
i32 29559, label %34
i32 4354, label %37
i32 4136, label %40
i32 4121, label %43
i32 4168, label %46
i32 14402, label %49
i32 4187, label %52
i32 5385, label %55
i32 4272, label %58
i32 5681, label %61
i32 5208, label %64
i32 4156, label %67
i32 4221, label %70
i32 5218, label %73
i32 4318, label %76
i32 5464, label %76
i32 6510, label %79
i32 6860, label %82
i32 5460, label %85
i32 5197, label %88
i32 4173, label %91
i32 4473, label %94
i32 5762, label %97
i32 6726, label %100
i32 5963, label %103
i32 5965, label %103
i32 6618, label %103
i32 0, label %106
]
7: ; preds = %2
%8 = load i8*, i8** %4
%9 = call i32 @strcpy(i8* %8, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
br label %112
10: ; preds = %2
%11 = load i8*, i8** %4
%12 = call i32 @strcpy(i8* %11, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
br label %112
13: ; preds = %2
%14 = load i8*, i8** %4
%15 = call i32 @strcpy(i8* %14, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
br label %112
16: ; preds = %2
%17 = load i8*, i8** %4
%18 = call i32 @strcpy(i8* %17, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.3, i64 0, i64 0))
br label %112
19: ; preds = %2
%20 = load i8*, i8** %4
%21 = call i32 @strcpy(i8* %20, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0))
br label %112
22: ; preds = %2
%23 = load i8*, i8** %4
%24 = call i32 @strcpy(i8* %23, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
br label %112
25: ; preds = %2
%26 = load i8*, i8** %4
%27 = call i32 @strcpy(i8* %26, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
br label %112
28: ; preds = %2
%29 = load i8*, i8** %4
%30 = call i32 @strcpy(i8* %29, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i64 0, i64 0))
br label %112
31: ; preds = %2
%32 = load i8*, i8** %4
%33 = call i32 @strcpy(i8* %32, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0))
br label %112
34: ; preds = %2
%35 = load i8*, i8** %4
%36 = call i32 @strcpy(i8* %35, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0))
br label %112
37: ; preds = %2
%38 = load i8*, i8** %4
%39 = call i32 @strcpy(i8* %38, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0))
br label %112
40: ; preds = %2
%41 = load i8*, i8** %4
%42 = call i32 @strcpy(i8* %41, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
br label %112
43: ; preds = %2
%44 = load i8*, i8** %4
%45 = call i32 @strcpy(i8* %44, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0))
br label %112
46: ; preds = %2
%47 = load i8*, i8** %4
%48 = call i32 @strcpy(i8* %47, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0))
br label %112
49: ; preds = %2
%50 = load i8*, i8** %4
%51 = call i32 @strcpy(i8* %50, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0))
br label %112
52: ; preds = %2
%53 = load i8*, i8** %4
%54 = call i32 @strcpy(i8* %53, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
br label %112
55: ; preds = %2
%56 = load i8*, i8** %4
%57 = call i32 @strcpy(i8* %56, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0))
br label %112
58: ; preds = %2
%59 = load i8*, i8** %4
%60 = call i32 @strcpy(i8* %59, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.17, i64 0, i64 0))
br label %112
61: ; preds = %2
%62 = load i8*, i8** %4
%63 = call i32 @strcpy(i8* %62, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.18, i64 0, i64 0))
br label %112
64: ; preds = %2
%65 = load i8*, i8** %4
%66 = call i32 @strcpy(i8* %65, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0))
br label %112
67: ; preds = %2
%68 = load i8*, i8** %4
%69 = call i32 @strcpy(i8* %68, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0))
br label %112
70: ; preds = %2
%71 = load i8*, i8** %4
%72 = call i32 @strcpy(i8* %71, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.21, i64 0, i64 0))
br label %112
73: ; preds = %2
%74 = load i8*, i8** %4
%75 = call i32 @strcpy(i8* %74, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
br label %112
76: ; preds = %2, %2
%77 = load i8*, i8** %4
%78 = call i32 @strcpy(i8* %77, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.23, i64 0, i64 0))
br label %112
79: ; preds = %2
%80 = load i8*, i8** %4
%81 = call i32 @strcpy(i8* %80, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
br label %112
82: ; preds = %2
%83 = load i8*, i8** %4
%84 = call i32 @strcpy(i8* %83, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.25, i64 0, i64 0))
br label %112
85: ; preds = %2
%86 = load i8*, i8** %4
%87 = call i32 @strcpy(i8* %86, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.26, i64 0, i64 0))
br label %112
88: ; preds = %2
%89 = load i8*, i8** %4
%90 = call i32 @strcpy(i8* %89, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.27, i64 0, i64 0))
br label %112
91: ; preds = %2
%92 = load i8*, i8** %4
%93 = call i32 @strcpy(i8* %92, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0))
br label %112
94: ; preds = %2
%95 = load i8*, i8** %4
%96 = call i32 @strcpy(i8* %95, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.29, i64 0, i64 0))
br label %112
97: ; preds = %2
%98 = load i8*, i8** %4
%99 = call i32 @strcpy(i8* %98, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0))
br label %112
100: ; preds = %2
%101 = load i8*, i8** %4
%102 = call i32 @strcpy(i8* %101, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0))
br label %112
103: ; preds = %2, %2, %2
%104 = load i8*, i8** %4
%105 = call i32 @strcpy(i8* %104, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.32, i64 0, i64 0))
br label %112
106: ; preds = %2
%107 = load i8*, i8** %4
%108 = call i32 @strcpy(i8* %107, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.33, i64 0, i64 0))
br label %112
109: ; preds = %2
%110 = load i8*, i8** %4
%111 = call i32 @strcpy(i8* %110, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.34, i64 0, i64 0))
br label %112
112: ; preds = %109, %106, %103, %100, %97, %94, %91, %88, %85, %82, %79, %76, %73, %70, %67, %64, %61, %58, %55, %52, %49, %46, %43, %40, %37, %34, %31, %28, %25, %22, %19, %16, %13, %10, %7
ret void
}

LLVM IR (-O2):
@.str = [5 x i8] c"Abit\00"
@.str.1 = [5 x i8] c"Acer\00"
@.str.2 = [6 x i8] c"Ahtec\00"
@.str.3 = [10 x i8] c"Alienware\00"
@.str.4 = [6 x i8] c"Apple\00"
@.str.5 = [5 x i8] c"Asus\00"
@.str.6 = [4 x i8] c"Bfg\00"
@.str.7 = [10 x i8] c"Chaintech\00"
@.str.8 = [7 x i8] c"Club3D\00"
@.str.9 = [9 x i8] c"Colorful\00"
@.str.10 = [9 x i8] c"Creative\00"
@.str.11 = [5 x i8] c"Dell\00"
@.str.12 = [4 x i8] c"Ecs\00"
@.str.13 = [5 x i8] c"Elsa\00"
@.str.14 = [5 x i8] c"Evga\00"
@.str.15 = [8 x i8] c"Foxconn\00"
@.str.16 = [8 x i8] c"Fujitsu\00"
@.str.17 = [9 x i8] c"Gainward\00"
@.str.18 = [8 x i8] c"Gateway\00"
@.str.19 = [9 x i8] c"Gigabyte\00"
@.str.20 = [3 x i8] c"Hp\00"
@.str.21 = [8 x i8] c"Leadtek\00"
@.str.22 = [4 x i8] c"Msi\00"
@.str.23 = [7 x i8] c"Nvidia\00"
@.str.24 = [4 x i8] c"Pny\00"
@.str.25 = [14 x i8] c"Point of View\00"
@.str.26 = [8 x i8] c"Prolink\00"
@.str.27 = [14 x i8] c"Sanyo/Samsung\00"
@.str.28 = [5 x i8] c"Sony\00"
@.str.29 = [8 x i8] c"Toshiba\00"
@.str.30 = [4 x i8] c"Xfx\00"
@.str.31 = [6 x i8] c"Zepto\00"
@.str.32 = [6 x i8] c"Zotac\00"
@.str.33 = [5 x i8] c"None\00"
@.str.34 = [8 x i8] c"Unknown\00"
define void @get_subvendor_name(i16 signext %0, i8* %1) {
%3 = sext i16 %0 to i32
switch i32 %3, label %37 [
i32 5243, label %38
i32 4133, label %4
i32 5312, label %5
i32 5663, label %6
i32 4203, label %7
i32 4163, label %8
i32 6641, label %9
i32 9999, label %10
i32 6509, label %11
i32 29559, label %12
i32 4354, label %13
i32 4136, label %14
i32 4121, label %15
i32 4168, label %16
i32 14402, label %17
i32 4187, label %18
i32 5385, label %19
i32 4272, label %20
i32 5681, label %21
i32 5208, label %22
i32 4156, label %23
i32 4221, label %24
i32 5218, label %25
i32 4318, label %26
i32 5464, label %26
i32 6510, label %27
i32 6860, label %28
i32 5460, label %29
i32 5197, label %30
i32 4173, label %31
i32 4473, label %32
i32 5762, label %33
i32 6726, label %34
i32 5963, label %35
i32 5965, label %35
i32 6618, label %35
i32 0, label %36
]
4: ; preds = %2
br label %38
5: ; preds = %2
br label %38
6: ; preds = %2
br label %38
7: ; preds = %2
br label %38
8: ; preds = %2
br label %38
9: ; preds = %2
br label %38
10: ; preds = %2
br label %38
11: ; preds = %2
br label %38
12: ; preds = %2
br label %38
13: ; preds = %2
br label %38
14: ; preds = %2
br label %38
15: ; preds = %2
br label %38
16: ; preds = %2
br label %38
17: ; preds = %2
br label %38
18: ; preds = %2
br label %38
19: ; preds = %2
br label %38
20: ; preds = %2
br label %38
21: ; preds = %2
br label %38
22: ; preds = %2
br label %38
23: ; preds = %2
br label %38
24: ; preds = %2
br label %38
25: ; preds = %2
br label %38
26: ; preds = %2, %2
br label %38
27: ; preds = %2
br label %38
28: ; preds = %2
br label %38
29: ; preds = %2
br label %38
30: ; preds = %2
br label %38
31: ; preds = %2
br label %38
32: ; preds = %2
br label %38
33: ; preds = %2
br label %38
34: ; preds = %2
br label %38
35: ; preds = %2, %2, %2
br label %38
36: ; preds = %2
br label %38
37: ; preds = %2
br label %38
38: ; preds = %2, %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
%39 = phi i8* [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.34, i64 0, i64 0), %37 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.33, i64 0, i64 0), %36 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.32, i64 0, i64 0), %35 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0), %34 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0), %33 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.29, i64 0, i64 0), %32 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0), %31 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.27, i64 0, i64 0), %30 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.26, i64 0, i64 0), %29 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.25, i64 0, i64 0), %28 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), %27 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.23, i64 0, i64 0), %26 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), %25 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.21, i64 0, i64 0), %24 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), %23 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0), %22 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.18, i64 0, i64 0), %21 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.17, i64 0, i64 0), %20 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0), %19 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0), %18 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), %17 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), %16 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), %15 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), %14 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), %13 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0), %12 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), %11 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i64 0, i64 0), %10 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), %9 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), %8 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), %7 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.3, i64 0, i64 0), %6 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), %5 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), %4 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), %2 ]
%40 = tail call i32 @strcpy(i8* %1, i8* %39)
ret void
}