const char *part_type(unsigned char type) {
  switch (type) {
  case 0x06:
    return "FAT16";
  case 0x07:
    return "NTFS";
  case 0x0b:
    return "FAT32";
  case 0x0c:
    return "FAT32";
  case 0x0f:
    return "Extended";
  case 0x82:
    return "Linux Swap/Solaris";
  case 0x83:
    return "EXT2fs/EXT3fs";
  case 0x8e:
    return "Linux LVM";
  case 0x00:
    return "empty";
  case 0x01:
    return "DOS 12-bit FAT";
  case 0x04:
    return "DOS 16-bit FAT";
  case 0x05:
    return "Extended";
  case 0x85:
    return "Linux Extended";
  case 0xfd:
    return "Linux Raid";
  case 0x02:
    return "XENIX root";
  case 0x03:
    return "XENIX /usr";
  case 0x08:
    return "AIX bootable";
  case 0x09:
    return "AIX data";
  case 0x0A:
    return "OS/2 Boot Manager";
  case 0x10:
    return "OPUS";
  case 0x11:
    return "OS/2 Boot Manager hidden 12-bit FAT";
  case 0x12:
    return "Compaq Diagnostics";
  case 0x14:
    return "OS/2 Boot Manager hidden sub-32M 16-bit FAT";
  case 0x16:
    return "OS/2 Boot Manager hidden over-32M 16-bit FAT";
  case 0x17:
    return "OS/2 Boot Manager hidden HPFS";
  case 0x18:
    return "AST special Windows swap";
  case 0x24:
    return "NEC MS-DOS";
  case 0x3C:
    return "PowerQuest PartitionMagic recovery partition";
  case 0x40:
    return "VENIX 80286";
  case 0x42:
    return "SFS (Secure File System)";
  case 0x50:
    return "Disk Manager (ro)";
  case 0x51:
    return "Novell";
  case 0x52:
    return "Microport System V/386";
  case 0x56:
    return "GoldenBow VFeature";
  case 0x61:
    return "SpeedStor";
  case 0x63:
    return "GNU HURD";
  case 0x64:
    return "Novell NetWare";
  case 0x65:
    return "Novell NetWare";
  case 0x70:
    return "DiskSecure Multi-Boot";
  case 0x75:
    return "PC/IX";
  case 0x80:
    return "Minix";
  case 0x81:
    return "Minix";
  case 0x84:
    return "OS/2-hidden";
  case 0x93:
    return "Amoeba";
  case 0x94:
    return "Amoeba bad";
  case 0xA5:
    return "FreeBSD";
  case 0xB7:
    return "BSDI";
  case 0xB8:
    return "BSDI swap ";
  case 0xC1:
    return "DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT";
  case 0xC4:
    return "DR-DOS 6.0 LOGIN.EXE-secured 16-bit";
  case 0xC6:
    return "DR-DOS 6.0 LOGIN.EXE-secured Huge";
  case 0xC7:
    return "Cyrnix Boot";
  case 0xDB:
    return "CP/M";
  case 0xE1:
    return "SpeedStor 12-bit FAT extended";
  case 0xE4:
    return "SpeedStor 16-bit FAT extended";
  case 0xF2:
    return "DOS 3.3+ secondary";
  case 0xF4:
    return "SpeedStor";
  case 0xFE:
    return "LANstep";
  case 0xFF:
    return "bad";
  }
  return "Unknown";
}


x86 assembly (clang, -O0):
<part_type>:
push   %rbp
mov    %rsp,%rbp
mov    %dil,%al
mov    %al,-0x9(%rbp)
movzbl -0x9(%rbp),%eax
mov    %rax,-0x18(%rbp)
xor    %eax,%eax
test   %al,%al
jne    14e0 <part_type+0x3e0>
mov    -0x18(%rbp),%rax
lea    0xed9(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x12c9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12bf(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12b4(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12a4(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12ef(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x128a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x128d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x128b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1285(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x127b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x127a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x127f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1269(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1268(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1263(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x125e(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1259(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1256(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x124f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1251(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1246(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x125a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x125d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1279(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1296(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12a4(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12ad(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12a8(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12c5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12c1(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12ca(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12cc(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12c3(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12ca(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12cd(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12c7(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12c0(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12b0(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12af(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12b5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12ab(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x129b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1291(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x128d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1284(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x127f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1277(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x126c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1267(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x127f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1293(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12a5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12a1(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x1296(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12a4(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12b2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x116d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x12a5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x11ab(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <part_type+0x3eb>
lea    0x128d(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<part_type>:
add    $0x80,%dil
cmp    $0xf5,%dil
ja     116d <part_type+0x6d>
lea    0x12c7(%rip),%rax
movzbl %dil,%ecx
lea    0xee4(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0x150e(%rip),%rax
ret
lea    0x12af(%rip),%rax
ret
lea    0x1302(%rip),%rax
ret
lea    0x14b8(%rip),%rax
ret
lea    0x14c3(%rip),%rax
ret
lea    0x1295(%rip),%rax
ret
lea    0x12a0(%rip),%rax
ret
lea    0x14dc(%rip),%rax
ret
lea    0x12cc(%rip),%rax
ret
lea    0x15d8(%rip),%rax
ret
lea    0x128e(%rip),%rax
ret
lea    0x14c8(%rip),%rax
ret
lea    0x14c7(%rip),%rax
ret
lea    0x14ca(%rip),%rax
ret
lea    0x14ca(%rip),%rax
ret
lea    0x14c7(%rip),%rax
ret
lea    0x14ca(%rip),%rax
ret
lea    0x14ea(%rip),%rax
ret
lea    0x1506(%rip),%rax
ret
lea    0x1520(%rip),%rax
ret
lea    0x1524(%rip),%rax
ret
lea    0x1521(%rip),%rax
ret
lea    0x1537(%rip),%rax
ret
lea    0x154d(%rip),%rax
ret
lea    0x125b(%rip),%rax
ret
lea    0x1550(%rip),%rax
ret
lea    0x145e(%rip),%rax
ret
lea    0x1210(%rip),%rax
ret
lea    0x120e(%rip),%rax
ret
lea    0x123e(%rip),%rax
ret
lea    0x1241(%rip),%rax
ret
lea    0x1205(%rip),%rax
ret
lea    0x11b2(%rip),%rax
ret
lea    0x1234(%rip),%rax
ret
lea    0x1239(%rip),%rax
ret
lea    0x123a(%rip),%rax
ret
lea    0x1244(%rip),%rax
ret
lea    0x1241(%rip),%rax
ret
lea    0x125d(%rip),%rax
ret
lea    0x1268(%rip),%rax
ret
lea    0x128c(%rip),%rax
ret
lea    0x12b1(%rip),%rax
ret
lea    0x12c7(%rip),%rax
ret
lea    0x12d8(%rip),%rax
ret
lea    0x12db(%rip),%rax
ret
lea    0x1300(%rip),%rax
ret
lea    0x1304(%rip),%rax
ret
lea    0x1315(%rip),%rax
ret
lea    0x131f(%rip),%rax
ret
lea    0x131e(%rip),%rax
ret
lea    0x132d(%rip),%rax
ret
lea    0x1342(%rip),%rax
ret
lea    0x1352(%rip),%rax
ret
lea    0x1360(%rip),%rax
ret

LLVM IR (-O0):
@.str = [6 x i8] c"FAT16\00"
@.str.1 = [5 x i8] c"NTFS\00"
@.str.2 = [6 x i8] c"FAT32\00"
@.str.3 = [9 x i8] c"Extended\00"
@.str.4 = [19 x i8] c"Linux Swap/Solaris\00"
@.str.5 = [14 x i8] c"EXT2fs/EXT3fs\00"
@.str.6 = [10 x i8] c"Linux LVM\00"
@.str.7 = [6 x i8] c"empty\00"
@.str.8 = [15 x i8] c"DOS 12-bit FAT\00"
@.str.9 = [15 x i8] c"DOS 16-bit FAT\00"
@.str.10 = [15 x i8] c"Linux Extended\00"
@.str.11 = [11 x i8] c"Linux Raid\00"
@.str.12 = [11 x i8] c"XENIX root\00"
@.str.13 = [11 x i8] c"XENIX /usr\00"
@.str.14 = [13 x i8] c"AIX bootable\00"
@.str.15 = [9 x i8] c"AIX data\00"
@.str.16 = [18 x i8] c"OS/2 Boot Manager\00"
@.str.17 = [5 x i8] c"OPUS\00"
@.str.18 = [36 x i8] c"OS/2 Boot Manager hidden 12-bit FAT\00"
@.str.19 = [19 x i8] c"Compaq Diagnostics\00"
@.str.20 = [44 x i8] c"OS/2 Boot Manager hidden sub-32M 16-bit FAT\00"
@.str.21 = [45 x i8] c"OS/2 Boot Manager hidden over-32M 16-bit FAT\00"
@.str.22 = [30 x i8] c"OS/2 Boot Manager hidden HPFS\00"
@.str.23 = [25 x i8] c"AST special Windows swap\00"
@.str.24 = [11 x i8] c"NEC MS-DOS\00"
@.str.25 = [45 x i8] c"PowerQuest PartitionMagic recovery partition\00"
@.str.26 = [12 x i8] c"VENIX 80286\00"
@.str.27 = [25 x i8] c"SFS (Secure File System)\00"
@.str.28 = [18 x i8] c"Disk Manager (ro)\00"
@.str.29 = [7 x i8] c"Novell\00"
@.str.30 = [23 x i8] c"Microport System V/386\00"
@.str.31 = [19 x i8] c"GoldenBow VFeature\00"
@.str.32 = [10 x i8] c"SpeedStor\00"
@.str.33 = [9 x i8] c"GNU HURD\00"
@.str.34 = [15 x i8] c"Novell NetWare\00"
@.str.35 = [22 x i8] c"DiskSecure Multi-Boot\00"
@.str.36 = [6 x i8] c"PC/IX\00"
@.str.37 = [6 x i8] c"Minix\00"
@.str.38 = [12 x i8] c"OS/2-hidden\00"
@.str.39 = [7 x i8] c"Amoeba\00"
@.str.40 = [11 x i8] c"Amoeba bad\00"
@.str.41 = [8 x i8] c"FreeBSD\00"
@.str.42 = [5 x i8] c"BSDI\00"
@.str.43 = [11 x i8] c"BSDI swap \00"
@.str.44 = [40 x i8] c"DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT\00"
@.str.45 = [36 x i8] c"DR-DOS 6.0 LOGIN.EXE-secured 16-bit\00"
@.str.46 = [34 x i8] c"DR-DOS 6.0 LOGIN.EXE-secured Huge\00"
@.str.47 = [12 x i8] c"Cyrnix Boot\00"
@.str.48 = [5 x i8] c"CP/M\00"
@.str.49 = [30 x i8] c"SpeedStor 12-bit FAT extended\00"
@.str.50 = [30 x i8] c"SpeedStor 16-bit FAT extended\00"
@.str.51 = [19 x i8] c"DOS 3.3+ secondary\00"
@.str.52 = [8 x i8] c"LANstep\00"
@.str.53 = [4 x i8] c"bad\00"
@.str.54 = [8 x i8] c"Unknown\00"
define i8* @part_type(i8 zeroext %0) {
%2 = alloca i8*
%3 = alloca i8
store i8 %0, i8* %3
%4 = load i8, i8* %3
%5 = zext i8 %4 to i32
switch i32 %5, label %65 [
i32 6, label %6
i32 7, label %7
i32 11, label %8
i32 12, label %9
i32 15, label %10
i32 130, label %11
i32 131, label %12
i32 142, label %13
i32 0, label %14
i32 1, label %15
i32 4, label %16
i32 5, label %17
i32 133, label %18
i32 253, label %19
i32 2, label %20
i32 3, label %21
i32 8, label %22
i32 9, label %23
i32 10, label %24
i32 16, label %25
i32 17, label %26
i32 18, label %27
i32 20, label %28
i32 22, label %29
i32 23, label %30
i32 24, label %31
i32 36, label %32
i32 60, label %33
i32 64, label %34
i32 66, label %35
i32 80, label %36
i32 81, label %37
i32 82, label %38
i32 86, label %39
i32 97, label %40
i32 99, label %41
i32 100, label %42
i32 101, label %43
i32 112, label %44
i32 117, label %45
i32 128, label %46
i32 129, label %47
i32 132, label %48
i32 147, label %49
i32 148, label %50
i32 165, label %51
i32 183, label %52
i32 184, label %53
i32 193, label %54
i32 196, label %55
i32 198, label %56
i32 199, label %57
i32 219, label %58
i32 225, label %59
i32 228, label %60
i32 242, label %61
i32 244, label %62
i32 254, label %63
i32 255, label %64
]
6: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i8** %2
br label %66
7: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %66
8: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %66
9: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %66
10: ; preds = %1
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %66
11: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %66
12: ; preds = %1
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %66
13: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %66
14: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %66
15: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %66
16: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %66
17: ; preds = %1
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %66
18: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %66
19: ; preds = %1
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %66
20: ; preds = %1
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %66
21: ; preds = %1
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %66
22: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %66
23: ; preds = %1
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %66
24: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %66
25: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %66
26: ; preds = %1
store i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %66
27: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %66
28: ; preds = %1
store i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %66
29: ; preds = %1
store i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.21, i64 0, i64 0), i8** %2
br label %66
30: ; preds = %1
store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.22, i64 0, i64 0), i8** %2
br label %66
31: ; preds = %1
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.23, i64 0, i64 0), i8** %2
br label %66
32: ; preds = %1
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0), i8** %2
br label %66
33: ; preds = %1
store i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.25, i64 0, i64 0), i8** %2
br label %66
34: ; preds = %1
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.26, i64 0, i64 0), i8** %2
br label %66
35: ; preds = %1
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.27, i64 0, i64 0), i8** %2
br label %66
36: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.28, i64 0, i64 0), i8** %2
br label %66
37: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i8** %2
br label %66
38: ; preds = %1
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.30, i64 0, i64 0), i8** %2
br label %66
39: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.31, i64 0, i64 0), i8** %2
br label %66
40: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0), i8** %2
br label %66
41: ; preds = %1
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.33, i64 0, i64 0), i8** %2
br label %66
42: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0), i8** %2
br label %66
43: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0), i8** %2
br label %66
44: ; preds = %1
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.35, i64 0, i64 0), i8** %2
br label %66
45: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.36, i64 0, i64 0), i8** %2
br label %66
46: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.37, i64 0, i64 0), i8** %2
br label %66
47: ; preds = %1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.37, i64 0, i64 0), i8** %2
br label %66
48: ; preds = %1
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.38, i64 0, i64 0), i8** %2
br label %66
49: ; preds = %1
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.39, i64 0, i64 0), i8** %2
br label %66
50: ; preds = %1
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.40, i64 0, i64 0), i8** %2
br label %66
51: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.41, i64 0, i64 0), i8** %2
br label %66
52: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.42, i64 0, i64 0), i8** %2
br label %66
53: ; preds = %1
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.43, i64 0, i64 0), i8** %2
br label %66
54: ; preds = %1
store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.44, i64 0, i64 0), i8** %2
br label %66
55: ; preds = %1
store i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.45, i64 0, i64 0), i8** %2
br label %66
56: ; preds = %1
store i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.46, i64 0, i64 0), i8** %2
br label %66
57: ; preds = %1
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.47, i64 0, i64 0), i8** %2
br label %66
58: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), i8** %2
br label %66
59: ; preds = %1
store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.49, i64 0, i64 0), i8** %2
br label %66
60: ; preds = %1
store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.50, i64 0, i64 0), i8** %2
br label %66
61: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.51, i64 0, i64 0), i8** %2
br label %66
62: ; preds = %1
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0), i8** %2
br label %66
63: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.52, i64 0, i64 0), i8** %2
br label %66
64: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.53, i64 0, i64 0), i8** %2
br label %66
65: ; preds = %1
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.54, i64 0, i64 0), i8** %2
br label %66
66: ; preds = %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %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
%67 = load i8*, i8** %2
ret i8* %67
}

LLVM IR (-O2):
@.str = [6 x i8] c"FAT16\00"
@.str.1 = [5 x i8] c"NTFS\00"
@.str.2 = [6 x i8] c"FAT32\00"
@.str.3 = [9 x i8] c"Extended\00"
@.str.4 = [19 x i8] c"Linux Swap/Solaris\00"
@.str.5 = [14 x i8] c"EXT2fs/EXT3fs\00"
@.str.6 = [10 x i8] c"Linux LVM\00"
@.str.7 = [6 x i8] c"empty\00"
@.str.8 = [15 x i8] c"DOS 12-bit FAT\00"
@.str.9 = [15 x i8] c"DOS 16-bit FAT\00"
@.str.10 = [15 x i8] c"Linux Extended\00"
@.str.11 = [11 x i8] c"Linux Raid\00"
@.str.12 = [11 x i8] c"XENIX root\00"
@.str.13 = [11 x i8] c"XENIX /usr\00"
@.str.14 = [13 x i8] c"AIX bootable\00"
@.str.15 = [9 x i8] c"AIX data\00"
@.str.16 = [18 x i8] c"OS/2 Boot Manager\00"
@.str.17 = [5 x i8] c"OPUS\00"
@.str.18 = [36 x i8] c"OS/2 Boot Manager hidden 12-bit FAT\00"
@.str.19 = [19 x i8] c"Compaq Diagnostics\00"
@.str.20 = [44 x i8] c"OS/2 Boot Manager hidden sub-32M 16-bit FAT\00"
@.str.21 = [45 x i8] c"OS/2 Boot Manager hidden over-32M 16-bit FAT\00"
@.str.22 = [30 x i8] c"OS/2 Boot Manager hidden HPFS\00"
@.str.23 = [25 x i8] c"AST special Windows swap\00"
@.str.24 = [11 x i8] c"NEC MS-DOS\00"
@.str.25 = [45 x i8] c"PowerQuest PartitionMagic recovery partition\00"
@.str.26 = [12 x i8] c"VENIX 80286\00"
@.str.27 = [25 x i8] c"SFS (Secure File System)\00"
@.str.28 = [18 x i8] c"Disk Manager (ro)\00"
@.str.29 = [7 x i8] c"Novell\00"
@.str.30 = [23 x i8] c"Microport System V/386\00"
@.str.31 = [19 x i8] c"GoldenBow VFeature\00"
@.str.32 = [10 x i8] c"SpeedStor\00"
@.str.33 = [9 x i8] c"GNU HURD\00"
@.str.34 = [15 x i8] c"Novell NetWare\00"
@.str.35 = [22 x i8] c"DiskSecure Multi-Boot\00"
@.str.36 = [6 x i8] c"PC/IX\00"
@.str.37 = [6 x i8] c"Minix\00"
@.str.38 = [12 x i8] c"OS/2-hidden\00"
@.str.39 = [7 x i8] c"Amoeba\00"
@.str.40 = [11 x i8] c"Amoeba bad\00"
@.str.41 = [8 x i8] c"FreeBSD\00"
@.str.42 = [5 x i8] c"BSDI\00"
@.str.43 = [11 x i8] c"BSDI swap \00"
@.str.44 = [40 x i8] c"DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT\00"
@.str.45 = [36 x i8] c"DR-DOS 6.0 LOGIN.EXE-secured 16-bit\00"
@.str.46 = [34 x i8] c"DR-DOS 6.0 LOGIN.EXE-secured Huge\00"
@.str.47 = [12 x i8] c"Cyrnix Boot\00"
@.str.48 = [5 x i8] c"CP/M\00"
@.str.49 = [30 x i8] c"SpeedStor 12-bit FAT extended\00"
@.str.50 = [30 x i8] c"SpeedStor 16-bit FAT extended\00"
@.str.51 = [19 x i8] c"DOS 3.3+ secondary\00"
@.str.52 = [8 x i8] c"LANstep\00"
@.str.53 = [4 x i8] c"bad\00"
@.str.54 = [8 x i8] c"Unknown\00"
define i8* @part_type(i8 zeroext %0) {
switch i8 %0, label %60 [
i8 6, label %61
i8 7, label %2
i8 11, label %3
i8 12, label %4
i8 15, label %5
i8 -126, label %6
i8 -125, label %7
i8 -114, label %8
i8 0, label %9
i8 1, label %10
i8 4, label %11
i8 5, label %12
i8 -123, label %13
i8 -3, label %14
i8 2, label %15
i8 3, label %16
i8 8, label %17
i8 9, label %18
i8 10, label %19
i8 16, label %20
i8 17, label %21
i8 18, label %22
i8 20, label %23
i8 22, label %24
i8 23, label %25
i8 24, label %26
i8 36, label %27
i8 60, label %28
i8 64, label %29
i8 66, label %30
i8 80, label %31
i8 81, label %32
i8 82, label %33
i8 86, label %34
i8 97, label %35
i8 99, label %36
i8 100, label %37
i8 101, label %38
i8 112, label %39
i8 117, label %40
i8 -128, label %41
i8 -127, label %42
i8 -124, label %43
i8 -109, label %44
i8 -108, label %45
i8 -91, label %46
i8 -73, label %47
i8 -72, label %48
i8 -63, label %49
i8 -60, label %50
i8 -58, label %51
i8 -57, label %52
i8 -37, label %53
i8 -31, label %54
i8 -28, label %55
i8 -14, label %56
i8 -12, label %57
i8 -2, label %58
i8 -1, label %59
]
2: ; preds = %1
br label %61
3: ; preds = %1
br label %61
4: ; preds = %1
br label %61
5: ; preds = %1
br label %61
6: ; preds = %1
br label %61
7: ; preds = %1
br label %61
8: ; preds = %1
br label %61
9: ; preds = %1
br label %61
10: ; preds = %1
br label %61
11: ; preds = %1
br label %61
12: ; preds = %1
br label %61
13: ; preds = %1
br label %61
14: ; preds = %1
br label %61
15: ; preds = %1
br label %61
16: ; preds = %1
br label %61
17: ; preds = %1
br label %61
18: ; preds = %1
br label %61
19: ; preds = %1
br label %61
20: ; preds = %1
br label %61
21: ; preds = %1
br label %61
22: ; preds = %1
br label %61
23: ; preds = %1
br label %61
24: ; preds = %1
br label %61
25: ; preds = %1
br label %61
26: ; preds = %1
br label %61
27: ; preds = %1
br label %61
28: ; preds = %1
br label %61
29: ; preds = %1
br label %61
30: ; preds = %1
br label %61
31: ; preds = %1
br label %61
32: ; preds = %1
br label %61
33: ; preds = %1
br label %61
34: ; preds = %1
br label %61
35: ; preds = %1
br label %61
36: ; preds = %1
br label %61
37: ; preds = %1
br label %61
38: ; preds = %1
br label %61
39: ; preds = %1
br label %61
40: ; preds = %1
br label %61
41: ; preds = %1
br label %61
42: ; preds = %1
br label %61
43: ; preds = %1
br label %61
44: ; preds = %1
br label %61
45: ; preds = %1
br label %61
46: ; preds = %1
br label %61
47: ; preds = %1
br label %61
48: ; preds = %1
br label %61
49: ; preds = %1
br label %61
50: ; preds = %1
br label %61
51: ; preds = %1
br label %61
52: ; preds = %1
br label %61
53: ; preds = %1
br label %61
54: ; preds = %1
br label %61
55: ; preds = %1
br label %61
56: ; preds = %1
br label %61
57: ; preds = %1
br label %61
58: ; preds = %1
br label %61
59: ; preds = %1
br label %61
60: ; preds = %1
br label %61
61: ; preds = %1, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %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, %4, %3, %2
%62 = phi i8* [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.54, i64 0, i64 0), %60 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.53, i64 0, i64 0), %59 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.52, i64 0, i64 0), %58 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0), %57 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.51, i64 0, i64 0), %56 ], [ getelementptr inbounds ([30 x i8], [30 x i8]* @.str.50, i64 0, i64 0), %55 ], [ getelementptr inbounds ([30 x i8], [30 x i8]* @.str.49, i64 0, i64 0), %54 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), %53 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.47, i64 0, i64 0), %52 ], [ getelementptr inbounds ([34 x i8], [34 x i8]* @.str.46, i64 0, i64 0), %51 ], [ getelementptr inbounds ([36 x i8], [36 x i8]* @.str.45, i64 0, i64 0), %50 ], [ getelementptr inbounds ([40 x i8], [40 x i8]* @.str.44, i64 0, i64 0), %49 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.43, i64 0, i64 0), %48 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.42, i64 0, i64 0), %47 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.41, i64 0, i64 0), %46 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.40, i64 0, i64 0), %45 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.39, i64 0, i64 0), %44 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.38, i64 0, i64 0), %43 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.37, i64 0, i64 0), %42 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.37, i64 0, i64 0), %41 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.36, i64 0, i64 0), %40 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.35, i64 0, i64 0), %39 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0), %38 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0), %37 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.33, i64 0, i64 0), %36 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0), %35 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.31, i64 0, i64 0), %34 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.30, i64 0, i64 0), %33 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), %32 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.28, i64 0, i64 0), %31 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.27, i64 0, i64 0), %30 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.26, i64 0, i64 0), %29 ], [ getelementptr inbounds ([45 x i8], [45 x i8]* @.str.25, i64 0, i64 0), %28 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0), %27 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.23, i64 0, i64 0), %26 ], [ getelementptr inbounds ([30 x i8], [30 x i8]* @.str.22, i64 0, i64 0), %25 ], [ getelementptr inbounds ([45 x i8], [45 x i8]* @.str.21, i64 0, i64 0), %24 ], [ getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0), %23 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.19, i64 0, i64 0), %22 ], [ getelementptr inbounds ([36 x i8], [36 x i8]* @.str.18, i64 0, i64 0), %21 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), %20 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.16, i64 0, i64 0), %19 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0), %18 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0), %17 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), %16 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.12, i64 0, i64 0), %15 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.11, i64 0, i64 0), %14 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.10, i64 0, i64 0), %13 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, 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 ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), %9 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0), %8 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0), %7 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), %6 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), %5 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), %4 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), %3 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), %2 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), %1 ]
ret i8* %62
}