const char *pcsc_error_string(long err) {
  const char *s;
  if (!err)
    return "okay";
  if ((err & 0x80100000) != 0x80100000)
    return "invalid PC/SC error code";
  err &= 0xffff;
  switch (err) {
  case 0x0002:
    s = "cancelled";
    break;
  case 0x000e:
    s = "can't dispose";
    break;
  case 0x0008:
    s = "insufficient buffer";
    break;
  case 0x0015:
    s = "invalid ATR";
    break;
  case 0x0003:
    s = "invalid handle";
    break;
  case 0x0004:
    s = "invalid parameter";
    break;
  case 0x0005:
    s = "invalid target";
    break;
  case 0x0011:
    s = "invalid value";
    break;
  case 0x0006:
    s = "no memory";
    break;
  case 0x0013:
    s = "comm error";
    break;
  case 0x0001:
    s = "internal error";
    break;
  case 0x0014:
    s = "unknown error";
    break;
  case 0x0007:
    s = "waited too long";
    break;
  case 0x0009:
    s = "unknown reader";
    break;
  case 0x000a:
    s = "timeout";
    break;
  case 0x000b:
    s = "sharing violation";
    break;
  case 0x000c:
    s = "no smartcard";
    break;
  case 0x000d:
    s = "unknown card";
    break;
  case 0x000f:
    s = "proto mismatch";
    break;
  case 0x0010:
    s = "not ready";
    break;
  case 0x0012:
    s = "system cancelled";
    break;
  case 0x0016:
    s = "not transacted";
    break;
  case 0x0017:
    s = "reader unavailable";
    break;
  case 0x0065:
    s = "unsupported card";
    break;
  case 0x0066:
    s = "unresponsive card";
    break;
  case 0x0067:
    s = "unpowered card";
    break;
  case 0x0068:
    s = "reset card";
    break;
  case 0x0069:
    s = "removed card";
    break;
  case 0x006a:
    s = "inserted card";
    break;
  case 0x001f:
    s = "unsupported feature";
    break;
  case 0x0019:
    s = "PCI too small";
    break;
  case 0x001a:
    s = "reader unsupported";
    break;
  case 0x001b:
    s = "duplicate reader";
    break;
  case 0x001c:
    s = "card unsupported";
    break;
  case 0x001d:
    s = "no service";
    break;
  case 0x001e:
    s = "service stopped";
    break;
  default:
    s = "unknown PC/SC error code";
    break;
  }
  return s;
}


x86 assembly (clang, -O0):
<pcsc_error_string>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    1123 <pcsc_error_string+0x23>
lea    0x108e(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d4 <pcsc_error_string+0x2d4>
movabs $0x80100000,%rax
and    -0x10(%rbp),%rax
mov    $0x80100000,%ecx
cmp    %rcx,%rax
je     114f <pcsc_error_string+0x4f>
lea    0x1067(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13d4 <pcsc_error_string+0x2d4>
movzwl -0x10(%rbp),%eax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x20(%rbp)
sub    $0x69,%rax
ja     13c1 <pcsc_error_string+0x2c1>
mov    -0x20(%rbp),%rax
lea    0xe88(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x114f(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x102e(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x102c(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1030(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x102c(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x102b(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x102d(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x102c(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x102a(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1024(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x101f(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x101e(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x101c(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x101c(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x101b(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1013(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1015(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1012(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x100f(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x100e(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1008(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1009(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1008(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x100b(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x100c(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x100e(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x100d(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1008(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1005(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1003(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1007(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1005(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1008(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1009(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x100a(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1005(%rip),%rax
mov    %rax,-0x18(%rbp)
jmp    13cc <pcsc_error_string+0x2cc>
lea    0x1005(%rip),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<pcsc_error_string>:
test   %rdi,%rdi
je     113f <pcsc_error_string+0x3f>
mov    %edi,%eax
not    %eax
test   $0x80100000,%eax
jne    1147 <pcsc_error_string+0x47>
add    $0xffffffff,%edi
cmp    $0x69,%di
ja     11f7 <pcsc_error_string+0xf7>
lea    0x11b3(%rip),%rax
movzwl %di,%ecx
lea    0xed2(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0x1109(%rip),%rax
ret
lea    0x1062(%rip),%rax
ret
lea    0x105f(%rip),%rax
ret
lea    0x109e(%rip),%rax
ret
lea    0x10a5(%rip),%rax
ret
lea    0x10af(%rip),%rax
ret
lea    0x10c4(%rip),%rax
ret
lea    0x10ee(%rip),%rax
ret
lea    0x1056(%rip),%rax
ret
lea    0x10ee(%rip),%rax
ret
lea    0x10f5(%rip),%rax
ret
lea    0x10f5(%rip),%rax
ret
lea    0x10ff(%rip),%rax
ret
lea    0x1104(%rip),%rax
ret
lea    0x1018(%rip),%rax
ret
lea    0x1101(%rip),%rax
ret
lea    0x1108(%rip),%rax
ret
lea    0x105e(%rip),%rax
ret
lea    0x1102(%rip),%rax
ret
lea    0x1066(%rip),%rax
ret
lea    0x1078(%rip),%rax
ret
lea    0x1002(%rip),%rax
ret
lea    0x10f3(%rip),%rax
ret
lea    0x10fa(%rip),%rax
ret
lea    0x11cf(%rip),%rax
ret
lea    0x1169(%rip),%rax
ret
lea    0x116f(%rip),%rax
ret
lea    0x117a(%rip),%rax
ret
lea    0x1183(%rip),%rax
ret
lea    0x118c(%rip),%rax
ret
lea    0x118f(%rip),%rax
ret
lea    0x1125(%rip),%rax
ret
lea    0x10c5(%rip),%rax
ret
lea    0x10ce(%rip),%rax
ret
lea    0x10d8(%rip),%rax
ret
lea    0x10df(%rip),%rax
ret
lea    0x10e2(%rip),%rax
ret
lea    0x10e7(%rip),%rax
ret

LLVM IR (-O0):
@.str = [5 x i8] c"okay\00"
@.str.1 = [25 x i8] c"invalid PC/SC error code\00"
@.str.2 = [10 x i8] c"cancelled\00"
@.str.3 = [14 x i8] c"can't dispose\00"
@.str.4 = [20 x i8] c"insufficient buffer\00"
@.str.5 = [12 x i8] c"invalid ATR\00"
@.str.6 = [15 x i8] c"invalid handle\00"
@.str.7 = [18 x i8] c"invalid parameter\00"
@.str.8 = [15 x i8] c"invalid target\00"
@.str.9 = [14 x i8] c"invalid value\00"
@.str.10 = [10 x i8] c"no memory\00"
@.str.11 = [11 x i8] c"comm error\00"
@.str.12 = [15 x i8] c"internal error\00"
@.str.13 = [14 x i8] c"unknown error\00"
@.str.14 = [16 x i8] c"waited too long\00"
@.str.15 = [15 x i8] c"unknown reader\00"
@.str.16 = [8 x i8] c"timeout\00"
@.str.17 = [18 x i8] c"sharing violation\00"
@.str.18 = [13 x i8] c"no smartcard\00"
@.str.19 = [13 x i8] c"unknown card\00"
@.str.20 = [15 x i8] c"proto mismatch\00"
@.str.21 = [10 x i8] c"not ready\00"
@.str.22 = [17 x i8] c"system cancelled\00"
@.str.23 = [15 x i8] c"not transacted\00"
@.str.24 = [19 x i8] c"reader unavailable\00"
@.str.25 = [17 x i8] c"unsupported card\00"
@.str.26 = [18 x i8] c"unresponsive card\00"
@.str.27 = [15 x i8] c"unpowered card\00"
@.str.28 = [11 x i8] c"reset card\00"
@.str.29 = [13 x i8] c"removed card\00"
@.str.30 = [14 x i8] c"inserted card\00"
@.str.31 = [20 x i8] c"unsupported feature\00"
@.str.32 = [14 x i8] c"PCI too small\00"
@.str.33 = [19 x i8] c"reader unsupported\00"
@.str.34 = [17 x i8] c"duplicate reader\00"
@.str.35 = [17 x i8] c"card unsupported\00"
@.str.36 = [11 x i8] c"no service\00"
@.str.37 = [16 x i8] c"service stopped\00"
@.str.38 = [25 x i8] c"unknown PC/SC error code\00"
define i8* @pcsc_error_string(i64 %0) {
%2 = alloca i8*
%3 = alloca i64
%4 = alloca i8*
store i64 %0, i64* %3
%5 = load i64, i64* %3
%6 = icmp ne i64 %5, 0
br i1 %6, label %8, label %7
7: ; preds = %1
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i8** %2
br label %56
8: ; preds = %1
%9 = load i64, i64* %3
%10 = and i64 %9, 2148532224
%11 = icmp ne i64 %10, 2148532224
br i1 %11, label %12, label %13
12: ; preds = %8
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %56
13: ; preds = %8
%14 = load i64, i64* %3
%15 = and i64 %14, 65535
store i64 %15, i64* %3
%16 = load i64, i64* %3
switch i64 %16, label %53 [
i64 2, label %17
i64 14, label %18
i64 8, label %19
i64 21, label %20
i64 3, label %21
i64 4, label %22
i64 5, label %23
i64 17, label %24
i64 6, label %25
i64 19, label %26
i64 1, label %27
i64 20, label %28
i64 7, label %29
i64 9, label %30
i64 10, label %31
i64 11, label %32
i64 12, label %33
i64 13, label %34
i64 15, label %35
i64 16, label %36
i64 18, label %37
i64 22, label %38
i64 23, label %39
i64 101, label %40
i64 102, label %41
i64 103, label %42
i64 104, label %43
i64 105, label %44
i64 106, label %45
i64 31, label %46
i64 25, label %47
i64 26, label %48
i64 27, label %49
i64 28, label %50
i64 29, label %51
i64 30, label %52
]
17: ; preds = %13
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i8** %4
br label %54
18: ; preds = %13
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0), i8** %4
br label %54
19: ; preds = %13
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.4, i64 0, i64 0), i8** %4
br label %54
20: ; preds = %13
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), i8** %4
br label %54
21: ; preds = %13
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0), i8** %4
br label %54
22: ; preds = %13
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i8** %4
br label %54
23: ; preds = %13
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i64 0, i64 0), i8** %4
br label %54
24: ; preds = %13
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0), i8** %4
br label %54
25: ; preds = %13
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0), i8** %4
br label %54
26: ; preds = %13
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.11, i64 0, i64 0), i8** %4
br label %54
27: ; preds = %13
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), i8** %4
br label %54
28: ; preds = %13
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i64 0, i64 0), i8** %4
br label %54
29: ; preds = %13
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.14, i64 0, i64 0), i8** %4
br label %54
30: ; preds = %13
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.15, i64 0, i64 0), i8** %4
br label %54
31: ; preds = %13
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0), i8** %4
br label %54
32: ; preds = %13
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.17, i64 0, i64 0), i8** %4
br label %54
33: ; preds = %13
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i64 0, i64 0), i8** %4
br label %54
34: ; preds = %13
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i64 0, i64 0), i8** %4
br label %54
35: ; preds = %13
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.20, i64 0, i64 0), i8** %4
br label %54
36: ; preds = %13
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.21, i64 0, i64 0), i8** %4
br label %54
37: ; preds = %13
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.22, i64 0, i64 0), i8** %4
br label %54
38: ; preds = %13
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.23, i64 0, i64 0), i8** %4
br label %54
39: ; preds = %13
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.24, i64 0, i64 0), i8** %4
br label %54
40: ; preds = %13
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.25, i64 0, i64 0), i8** %4
br label %54
41: ; preds = %13
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.26, i64 0, i64 0), i8** %4
br label %54
42: ; preds = %13
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.27, i64 0, i64 0), i8** %4
br label %54
43: ; preds = %13
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8** %4
br label %54
44: ; preds = %13
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.29, i64 0, i64 0), i8** %4
br label %54
45: ; preds = %13
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.30, i64 0, i64 0), i8** %4
br label %54
46: ; preds = %13
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.31, i64 0, i64 0), i8** %4
br label %54
47: ; preds = %13
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.32, i64 0, i64 0), i8** %4
br label %54
48: ; preds = %13
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.33, i64 0, i64 0), i8** %4
br label %54
49: ; preds = %13
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.34, i64 0, i64 0), i8** %4
br label %54
50: ; preds = %13
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.35, i64 0, i64 0), i8** %4
br label %54
51: ; preds = %13
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.36, i64 0, i64 0), i8** %4
br label %54
52: ; preds = %13
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.37, i64 0, i64 0), i8** %4
br label %54
53: ; preds = %13
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.38, i64 0, i64 0), i8** %4
br label %54
54: ; preds = %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
%55 = load i8*, i8** %4
store i8* %55, i8** %2
br label %56
56: ; preds = %54, %12, %7
%57 = load i8*, i8** %2
ret i8* %57
}

LLVM IR (-O2):
@.str = [5 x i8] c"okay\00"
@.str.1 = [25 x i8] c"invalid PC/SC error code\00"
@.str.2 = [10 x i8] c"cancelled\00"
@.str.3 = [14 x i8] c"can't dispose\00"
@.str.4 = [20 x i8] c"insufficient buffer\00"
@.str.5 = [12 x i8] c"invalid ATR\00"
@.str.6 = [15 x i8] c"invalid handle\00"
@.str.7 = [18 x i8] c"invalid parameter\00"
@.str.8 = [15 x i8] c"invalid target\00"
@.str.9 = [14 x i8] c"invalid value\00"
@.str.10 = [10 x i8] c"no memory\00"
@.str.11 = [11 x i8] c"comm error\00"
@.str.12 = [15 x i8] c"internal error\00"
@.str.13 = [14 x i8] c"unknown error\00"
@.str.14 = [16 x i8] c"waited too long\00"
@.str.15 = [15 x i8] c"unknown reader\00"
@.str.16 = [8 x i8] c"timeout\00"
@.str.17 = [18 x i8] c"sharing violation\00"
@.str.18 = [13 x i8] c"no smartcard\00"
@.str.19 = [13 x i8] c"unknown card\00"
@.str.20 = [15 x i8] c"proto mismatch\00"
@.str.21 = [10 x i8] c"not ready\00"
@.str.22 = [17 x i8] c"system cancelled\00"
@.str.23 = [15 x i8] c"not transacted\00"
@.str.24 = [19 x i8] c"reader unavailable\00"
@.str.25 = [17 x i8] c"unsupported card\00"
@.str.26 = [18 x i8] c"unresponsive card\00"
@.str.27 = [15 x i8] c"unpowered card\00"
@.str.28 = [11 x i8] c"reset card\00"
@.str.29 = [13 x i8] c"removed card\00"
@.str.30 = [14 x i8] c"inserted card\00"
@.str.31 = [20 x i8] c"unsupported feature\00"
@.str.32 = [14 x i8] c"PCI too small\00"
@.str.33 = [19 x i8] c"reader unsupported\00"
@.str.34 = [17 x i8] c"duplicate reader\00"
@.str.35 = [17 x i8] c"card unsupported\00"
@.str.36 = [11 x i8] c"no service\00"
@.str.37 = [16 x i8] c"service stopped\00"
@.str.38 = [25 x i8] c"unknown PC/SC error code\00"
define i8* @pcsc_error_string(i64 %0) {
%2 = icmp eq i64 %0, 0
br i1 %2, label %44, label %3
3: ; preds = %1
%4 = and i64 %0, 2148532224
%5 = icmp eq i64 %4, 2148532224
br i1 %5, label %6, label %44
6: ; preds = %3
%7 = trunc i64 %0 to i16
switch i16 %7, label %43 [
i16 2, label %44
i16 14, label %8
i16 8, label %9
i16 21, label %10
i16 3, label %11
i16 4, label %12
i16 5, label %13
i16 17, label %14
i16 6, label %15
i16 19, label %16
i16 1, label %17
i16 20, label %18
i16 7, label %19
i16 9, label %20
i16 10, label %21
i16 11, label %22
i16 12, label %23
i16 13, label %24
i16 15, label %25
i16 16, label %26
i16 18, label %27
i16 22, label %28
i16 23, label %29
i16 101, label %30
i16 102, label %31
i16 103, label %32
i16 104, label %33
i16 105, label %34
i16 106, label %35
i16 31, label %36
i16 25, label %37
i16 26, label %38
i16 27, label %39
i16 28, label %40
i16 29, label %41
i16 30, label %42
]
8: ; preds = %6
br label %44
9: ; preds = %6
br label %44
10: ; preds = %6
br label %44
11: ; preds = %6
br label %44
12: ; preds = %6
br label %44
13: ; preds = %6
br label %44
14: ; preds = %6
br label %44
15: ; preds = %6
br label %44
16: ; preds = %6
br label %44
17: ; preds = %6
br label %44
18: ; preds = %6
br label %44
19: ; preds = %6
br label %44
20: ; preds = %6
br label %44
21: ; preds = %6
br label %44
22: ; preds = %6
br label %44
23: ; preds = %6
br label %44
24: ; preds = %6
br label %44
25: ; preds = %6
br label %44
26: ; preds = %6
br label %44
27: ; preds = %6
br label %44
28: ; preds = %6
br label %44
29: ; preds = %6
br label %44
30: ; preds = %6
br label %44
31: ; preds = %6
br label %44
32: ; preds = %6
br label %44
33: ; preds = %6
br label %44
34: ; preds = %6
br label %44
35: ; preds = %6
br label %44
36: ; preds = %6
br label %44
37: ; preds = %6
br label %44
38: ; preds = %6
br label %44
39: ; preds = %6
br label %44
40: ; preds = %6
br label %44
41: ; preds = %6
br label %44
42: ; preds = %6
br label %44
43: ; preds = %6
br label %44
44: ; preds = %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %41, %42, %43, %6, %3, %1
%45 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), %1 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0), %3 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.38, i64 0, i64 0), %43 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.37, i64 0, i64 0), %42 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.36, i64 0, i64 0), %41 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.35, i64 0, i64 0), %40 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.34, i64 0, i64 0), %39 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.33, i64 0, i64 0), %38 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.32, i64 0, i64 0), %37 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.31, i64 0, i64 0), %36 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.30, i64 0, i64 0), %35 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.29, i64 0, i64 0), %34 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), %33 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.27, i64 0, i64 0), %32 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.26, i64 0, i64 0), %31 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.25, i64 0, i64 0), %30 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.24, i64 0, i64 0), %29 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.23, i64 0, i64 0), %28 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.22, i64 0, i64 0), %27 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.21, i64 0, i64 0), %26 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.20, i64 0, i64 0), %25 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i64 0, i64 0), %24 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i64 0, i64 0), %23 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.17, i64 0, i64 0), %22 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0), %21 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.15, i64 0, i64 0), %20 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.14, i64 0, i64 0), %19 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i64 0, i64 0), %18 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0), %17 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.11, i64 0, i64 0), %16 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0), %15 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0), %14 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i64 0, i64 0), %13 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), %12 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0), %11 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), %10 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.4, i64 0, i64 0), %9 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0), %8 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), %6 ]
ret i8* %45
}