#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 */
typedef int /*<<< orphan*/ buf;

/* Variables and functions */
int /*<<< orphan*/ assert(int);
int snprintf(char *, int, char *, int);
char *copyexec_strerror(int err) {
  static char buf[64];
  switch (err) {
  case (-1):
    return "COPYEXEC_ERR_LSEEK";
    break;
  case (-2):
    return "COPYEXEC_ERR_READ";
    break;
  case (-3):
    return "COPYEXEC_ERR_CRC32";
    break;
  case (-4):
    return "COPYEXEC_ERR_TYPE";
    break;
  case (-5):
    return "COPYEXEC_ERR_DECRYPT";
    break;
  case (-6):
    return "COPYEXEC_ERR_MALLOC";
    break;
  case (-7):
    return "COPYEXEC_ERR_ALIGN";
    break;
  case (-8):
    return "COPYEXEC_ERR_SIZE";
    break;
  case (-9):
    return "COPYEXEC_ERR_SHA1";
    break;
  case (-10):
    return "COPYEXEC_ERR_MKDIR";
    break;
  case (-11):
    return "COPYEXEC_ERR_OPEN";
    break;
  case (-12):
    return "COPYEXEC_ERR_FSTAT";
    break;
  case (-13):
    return "COPYEXEC_ERR_ST_DEV";
    break;
  case (-14):
    return "COPYEXEC_ERR_ST_INO";
    break;
  case (-15):
    return "COPYEXEC_ERR_READIN";
    break;
  case (-16):
    return "COPYEXEC_ERR_STATUS";
    break;
  case (-17):
    return "COPYEXEC_ERR_FORK";
    break;
  case (-18):
    return "COPYEXEC_ERR_CHDIR";
    break;
  case (-19):
    return "COPYEXEC_ERR_CREAT";
    break;
  case (-20):
    return "COPYEXEC_ERR_STAT";
    break;
  case (-21):
    return "COPYEXEC_ERR_PUBKEY_PERMISSIONS";
    break;
  case (-22):
    return "COPYEXEC_ERR_INVAL";
    break;
  case (-23):
    return "COPYEXEC_ERR_VOLUME_ID_MISMATCHED";
    break;
  case (-24):
    return "COPYEXEC_ERR_HOSTNAME_MISMATCHED";
    break;
  case (-25):
    return "COPYEXEC_ERR_DISCONNECT";
    break;
  case (-26):
    return "COPYEXEC_ERR_OLD_RESULT";
    break;
  case (-999):
    return "COPYEXEC_ERR_UNKNOWN";
    break;
  default:
    assert(snprintf(buf, sizeof(buf), "COPYEXEC_ERR_UNKNOWN (%d)", err) <
           sizeof(buf));
    return buf;
  }
}


x86 assembly (clang, -O0):
<copyexec_strerror>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
sub    $0xfffffc19,%eax
je     149b <copyexec_strerror+0x37b>
jmp    1141 <copyexec_strerror+0x21>
mov    -0x10(%rbp),%eax
sub    $0xffffffe6,%eax
je     148b <copyexec_strerror+0x36b>
jmp    1152 <copyexec_strerror+0x32>
mov    -0x10(%rbp),%eax
sub    $0xffffffe7,%eax
je     147b <copyexec_strerror+0x35b>
jmp    1163 <copyexec_strerror+0x43>
mov    -0x10(%rbp),%eax
sub    $0xffffffe8,%eax
je     146b <copyexec_strerror+0x34b>
jmp    1174 <copyexec_strerror+0x54>
mov    -0x10(%rbp),%eax
sub    $0xffffffe9,%eax
je     145b <copyexec_strerror+0x33b>
jmp    1185 <copyexec_strerror+0x65>
mov    -0x10(%rbp),%eax
sub    $0xffffffea,%eax
je     144b <copyexec_strerror+0x32b>
jmp    1196 <copyexec_strerror+0x76>
mov    -0x10(%rbp),%eax
sub    $0xffffffeb,%eax
je     143b <copyexec_strerror+0x31b>
jmp    11a7 <copyexec_strerror+0x87>
mov    -0x10(%rbp),%eax
sub    $0xffffffec,%eax
je     142b <copyexec_strerror+0x30b>
jmp    11b8 <copyexec_strerror+0x98>
mov    -0x10(%rbp),%eax
sub    $0xffffffed,%eax
je     141b <copyexec_strerror+0x2fb>
jmp    11c9 <copyexec_strerror+0xa9>
mov    -0x10(%rbp),%eax
sub    $0xffffffee,%eax
je     140b <copyexec_strerror+0x2eb>
jmp    11da <copyexec_strerror+0xba>
mov    -0x10(%rbp),%eax
sub    $0xffffffef,%eax
je     13fb <copyexec_strerror+0x2db>
jmp    11eb <copyexec_strerror+0xcb>
mov    -0x10(%rbp),%eax
sub    $0xfffffff0,%eax
je     13eb <copyexec_strerror+0x2cb>
jmp    11fc <copyexec_strerror+0xdc>
mov    -0x10(%rbp),%eax
sub    $0xfffffff1,%eax
je     13db <copyexec_strerror+0x2bb>
jmp    120d <copyexec_strerror+0xed>
mov    -0x10(%rbp),%eax
sub    $0xfffffff2,%eax
je     13cb <copyexec_strerror+0x2ab>
jmp    121e <copyexec_strerror+0xfe>
mov    -0x10(%rbp),%eax
sub    $0xfffffff3,%eax
je     13bb <copyexec_strerror+0x29b>
jmp    122f <copyexec_strerror+0x10f>
mov    -0x10(%rbp),%eax
sub    $0xfffffff4,%eax
je     13ab <copyexec_strerror+0x28b>
jmp    1240 <copyexec_strerror+0x120>
mov    -0x10(%rbp),%eax
sub    $0xfffffff5,%eax
je     139b <copyexec_strerror+0x27b>
jmp    1251 <copyexec_strerror+0x131>
mov    -0x10(%rbp),%eax
sub    $0xfffffff6,%eax
je     138b <copyexec_strerror+0x26b>
jmp    1262 <copyexec_strerror+0x142>
mov    -0x10(%rbp),%eax
sub    $0xfffffff7,%eax
je     137b <copyexec_strerror+0x25b>
jmp    1273 <copyexec_strerror+0x153>
mov    -0x10(%rbp),%eax
sub    $0xfffffff8,%eax
je     136b <copyexec_strerror+0x24b>
jmp    1284 <copyexec_strerror+0x164>
mov    -0x10(%rbp),%eax
sub    $0xfffffff9,%eax
je     135b <copyexec_strerror+0x23b>
jmp    1295 <copyexec_strerror+0x175>
mov    -0x10(%rbp),%eax
sub    $0xfffffffa,%eax
je     134b <copyexec_strerror+0x22b>
jmp    12a6 <copyexec_strerror+0x186>
mov    -0x10(%rbp),%eax
sub    $0xfffffffb,%eax
je     133b <copyexec_strerror+0x21b>
jmp    12b7 <copyexec_strerror+0x197>
mov    -0x10(%rbp),%eax
sub    $0xfffffffc,%eax
je     132b <copyexec_strerror+0x20b>
jmp    12c8 <copyexec_strerror+0x1a8>
mov    -0x10(%rbp),%eax
sub    $0xfffffffd,%eax
je     131b <copyexec_strerror+0x1fb>
jmp    12d9 <copyexec_strerror+0x1b9>
mov    -0x10(%rbp),%eax
sub    $0xfffffffe,%eax
je     130b <copyexec_strerror+0x1eb>
jmp    12ea <copyexec_strerror+0x1ca>
mov    -0x10(%rbp),%eax
sub    $0xffffffff,%eax
jne    14ab <copyexec_strerror+0x38b>
jmp    12fb <copyexec_strerror+0x1db>
lea    0xcfe(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd01(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd03(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd06(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd08(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd0d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd11(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd14(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd16(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd18(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd1b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd1d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd20(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd24(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd28(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd2c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd30(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd32(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd35(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd38(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd3a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd4a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd4d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd5f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd70(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd78(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
lea    0xd80(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    14e4 <copyexec_strerror+0x3c4>
mov    -0xc(%rbp),%ecx
lea    0x2b8b(%rip),%rdi
mov    $0x40,%esi
lea    0xd76(%rip),%rdx
call   1030 <snprintf@plt>
cltq
cmp    $0x40,%rax
setb   %al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
lea    0x2b60(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<copyexec_strerror>:
push   %rbx
mov    %edi,%ecx
lea    0x1a(%rcx),%eax
cmp    $0x19,%eax
ja     114e <copyexec_strerror+0x2e>
lea    0xf36(%rip),%rbx
lea    0xec7(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1129(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
cmp    $0xfffffc19,%ecx
jne    1268 <copyexec_strerror+0x148>
lea    0x1129(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0x10ed(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0x10c0(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0x1092(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0x1073(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0x1047(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0x1029(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0x100a(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xfeb(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xfcd(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xfad(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xf8d(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xf6d(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xf4d(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xf2e(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xf10(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xef4(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xed9(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xebe(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xea2(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xe85(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xe67(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xe4c(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xe30(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0xe15(%rip),%rbx
jmp    1291 <copyexec_strerror+0x171>
lea    0x2dd1(%rip),%rbx
lea    0x1029(%rip),%rdx
mov    %rbx,%rdi
mov    $0x40,%esi
call   1030 <snprintf@plt>
xor    %edi,%edi
cmp    $0x40,%eax
setb   %dil
call   1040 <assert@plt>
mov    %rbx,%rax
pop    %rbx
ret

LLVM IR (-O0):
@copyexec_strerror.buf = internal global [64 x i8] zeroinitializer
@.str = [19 x i8] c"COPYEXEC_ERR_LSEEK\00"
@.str.1 = [18 x i8] c"COPYEXEC_ERR_READ\00"
@.str.2 = [19 x i8] c"COPYEXEC_ERR_CRC32\00"
@.str.3 = [18 x i8] c"COPYEXEC_ERR_TYPE\00"
@.str.4 = [21 x i8] c"COPYEXEC_ERR_DECRYPT\00"
@.str.5 = [20 x i8] c"COPYEXEC_ERR_MALLOC\00"
@.str.6 = [19 x i8] c"COPYEXEC_ERR_ALIGN\00"
@.str.7 = [18 x i8] c"COPYEXEC_ERR_SIZE\00"
@.str.8 = [18 x i8] c"COPYEXEC_ERR_SHA1\00"
@.str.9 = [19 x i8] c"COPYEXEC_ERR_MKDIR\00"
@.str.10 = [18 x i8] c"COPYEXEC_ERR_OPEN\00"
@.str.11 = [19 x i8] c"COPYEXEC_ERR_FSTAT\00"
@.str.12 = [20 x i8] c"COPYEXEC_ERR_ST_DEV\00"
@.str.13 = [20 x i8] c"COPYEXEC_ERR_ST_INO\00"
@.str.14 = [20 x i8] c"COPYEXEC_ERR_READIN\00"
@.str.15 = [20 x i8] c"COPYEXEC_ERR_STATUS\00"
@.str.16 = [18 x i8] c"COPYEXEC_ERR_FORK\00"
@.str.17 = [19 x i8] c"COPYEXEC_ERR_CHDIR\00"
@.str.18 = [19 x i8] c"COPYEXEC_ERR_CREAT\00"
@.str.19 = [18 x i8] c"COPYEXEC_ERR_STAT\00"
@.str.20 = [32 x i8] c"COPYEXEC_ERR_PUBKEY_PERMISSIONS\00"
@.str.21 = [19 x i8] c"COPYEXEC_ERR_INVAL\00"
@.str.22 = [34 x i8] c"COPYEXEC_ERR_VOLUME_ID_MISMATCHED\00"
@.str.23 = [33 x i8] c"COPYEXEC_ERR_HOSTNAME_MISMATCHED\00"
@.str.24 = [24 x i8] c"COPYEXEC_ERR_DISCONNECT\00"
@.str.25 = [24 x i8] c"COPYEXEC_ERR_OLD_RESULT\00"
@.str.26 = [21 x i8] c"COPYEXEC_ERR_UNKNOWN\00"
@.str.27 = [26 x i8] c"COPYEXEC_ERR_UNKNOWN (%d)\00"
define i8* @copyexec_strerror(i32 %0) {
%2 = alloca i8*
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %32 [
i32 -1, label %5
i32 -2, label %6
i32 -3, label %7
i32 -4, label %8
i32 -5, label %9
i32 -6, label %10
i32 -7, label %11
i32 -8, label %12
i32 -9, label %13
i32 -10, label %14
i32 -11, label %15
i32 -12, label %16
i32 -13, label %17
i32 -14, label %18
i32 -15, label %19
i32 -16, label %20
i32 -17, label %21
i32 -18, label %22
i32 -19, label %23
i32 -20, label %24
i32 -21, label %25
i32 -22, label %26
i32 -23, label %27
i32 -24, label %28
i32 -25, label %29
i32 -26, label %30
i32 -999, label %31
]
5: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i8** %2
br label %39
6: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %39
7: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %39
8: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %39
9: ; preds = %1
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %39
10: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %39
11: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %39
12: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %39
13: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %39
14: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %39
15: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %39
16: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %39
17: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %39
18: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %39
19: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %39
20: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %39
21: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %39
22: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %39
23: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %39
24: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %39
25: ; preds = %1
store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %39
26: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.21, i64 0, i64 0), i8** %2
br label %39
27: ; preds = %1
store i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.22, i64 0, i64 0), i8** %2
br label %39
28: ; preds = %1
store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.23, i64 0, i64 0), i8** %2
br label %39
29: ; preds = %1
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.24, i64 0, i64 0), i8** %2
br label %39
30: ; preds = %1
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.25, i64 0, i64 0), i8** %2
br label %39
31: ; preds = %1
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.26, i64 0, i64 0), i8** %2
br label %39
32: ; preds = %1
%33 = load i32, i32* %3
%34 = call i32 @snprintf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @copyexec_strerror.buf, i64 0, i64 0), i32 64, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.27, i64 0, i64 0), i32 %33)
%35 = sext i32 %34 to i64
%36 = icmp ult i64 %35, 64
%37 = zext i1 %36 to i32
%38 = call i32 @assert(i32 %37)
store i8* getelementptr inbounds ([64 x i8], [64 x i8]* @copyexec_strerror.buf, i64 0, i64 0), i8** %2
br label %39
39: ; preds = %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
%40 = load i8*, i8** %2
ret i8* %40
}

LLVM IR (-O2):
@copyexec_strerror.buf = internal global [64 x i8] zeroinitializer
@.str = [19 x i8] c"COPYEXEC_ERR_LSEEK\00"
@.str.1 = [18 x i8] c"COPYEXEC_ERR_READ\00"
@.str.2 = [19 x i8] c"COPYEXEC_ERR_CRC32\00"
@.str.3 = [18 x i8] c"COPYEXEC_ERR_TYPE\00"
@.str.4 = [21 x i8] c"COPYEXEC_ERR_DECRYPT\00"
@.str.5 = [20 x i8] c"COPYEXEC_ERR_MALLOC\00"
@.str.6 = [19 x i8] c"COPYEXEC_ERR_ALIGN\00"
@.str.7 = [18 x i8] c"COPYEXEC_ERR_SIZE\00"
@.str.8 = [18 x i8] c"COPYEXEC_ERR_SHA1\00"
@.str.9 = [19 x i8] c"COPYEXEC_ERR_MKDIR\00"
@.str.10 = [18 x i8] c"COPYEXEC_ERR_OPEN\00"
@.str.11 = [19 x i8] c"COPYEXEC_ERR_FSTAT\00"
@.str.12 = [20 x i8] c"COPYEXEC_ERR_ST_DEV\00"
@.str.13 = [20 x i8] c"COPYEXEC_ERR_ST_INO\00"
@.str.14 = [20 x i8] c"COPYEXEC_ERR_READIN\00"
@.str.15 = [20 x i8] c"COPYEXEC_ERR_STATUS\00"
@.str.16 = [18 x i8] c"COPYEXEC_ERR_FORK\00"
@.str.17 = [19 x i8] c"COPYEXEC_ERR_CHDIR\00"
@.str.18 = [19 x i8] c"COPYEXEC_ERR_CREAT\00"
@.str.19 = [18 x i8] c"COPYEXEC_ERR_STAT\00"
@.str.20 = [32 x i8] c"COPYEXEC_ERR_PUBKEY_PERMISSIONS\00"
@.str.21 = [19 x i8] c"COPYEXEC_ERR_INVAL\00"
@.str.22 = [34 x i8] c"COPYEXEC_ERR_VOLUME_ID_MISMATCHED\00"
@.str.23 = [33 x i8] c"COPYEXEC_ERR_HOSTNAME_MISMATCHED\00"
@.str.24 = [24 x i8] c"COPYEXEC_ERR_DISCONNECT\00"
@.str.25 = [24 x i8] c"COPYEXEC_ERR_OLD_RESULT\00"
@.str.26 = [21 x i8] c"COPYEXEC_ERR_UNKNOWN\00"
@.str.27 = [26 x i8] c"COPYEXEC_ERR_UNKNOWN (%d)\00"
define i8* @copyexec_strerror(i32 %0) {
switch i32 %0, label %28 [
i32 -1, label %33
i32 -2, label %2
i32 -3, label %3
i32 -4, label %4
i32 -5, label %5
i32 -6, label %6
i32 -7, label %7
i32 -8, label %8
i32 -9, label %9
i32 -10, label %10
i32 -11, label %11
i32 -12, label %12
i32 -13, label %13
i32 -14, label %14
i32 -15, label %15
i32 -16, label %16
i32 -17, label %17
i32 -18, label %18
i32 -19, label %19
i32 -20, label %20
i32 -21, label %21
i32 -22, label %22
i32 -23, label %23
i32 -24, label %24
i32 -25, label %25
i32 -26, label %26
i32 -999, label %27
]
2: ; preds = %1
br label %33
3: ; preds = %1
br label %33
4: ; preds = %1
br label %33
5: ; preds = %1
br label %33
6: ; preds = %1
br label %33
7: ; preds = %1
br label %33
8: ; preds = %1
br label %33
9: ; preds = %1
br label %33
10: ; preds = %1
br label %33
11: ; preds = %1
br label %33
12: ; preds = %1
br label %33
13: ; preds = %1
br label %33
14: ; preds = %1
br label %33
15: ; preds = %1
br label %33
16: ; preds = %1
br label %33
17: ; preds = %1
br label %33
18: ; preds = %1
br label %33
19: ; preds = %1
br label %33
20: ; preds = %1
br label %33
21: ; preds = %1
br label %33
22: ; preds = %1
br label %33
23: ; preds = %1
br label %33
24: ; preds = %1
br label %33
25: ; preds = %1
br label %33
26: ; preds = %1
br label %33
27: ; preds = %1
br label %33
28: ; preds = %1
%29 = tail call i32 @snprintf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @copyexec_strerror.buf, i64 0, i64 0), i32 64, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.27, i64 0, i64 0), i32 %0)
%30 = icmp ult i32 %29, 64
%31 = zext i1 %30 to i32
%32 = tail call i32 @assert(i32 %31)
br label %33
33: ; preds = %1, %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
%34 = phi i8* [ getelementptr inbounds ([64 x i8], [64 x i8]* @copyexec_strerror.buf, i64 0, i64 0), %28 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.26, i64 0, i64 0), %27 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.25, i64 0, i64 0), %26 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.24, i64 0, i64 0), %25 ], [ getelementptr inbounds ([33 x i8], [33 x i8]* @.str.23, i64 0, i64 0), %24 ], [ getelementptr inbounds ([34 x i8], [34 x i8]* @.str.22, i64 0, i64 0), %23 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.21, i64 0, i64 0), %22 ], [ getelementptr inbounds ([32 x i8], [32 x i8]* @.str.20, i64 0, i64 0), %21 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0), %20 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.18, i64 0, i64 0), %19 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), %18 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.16, i64 0, i64 0), %17 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.15, i64 0, i64 0), %16 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.14, i64 0, i64 0), %15 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.13, i64 0, i64 0), %14 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.12, i64 0, i64 0), %13 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0), %12 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0), %11 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.9, i64 0, i64 0), %10 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.8, i64 0, i64 0), %9 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), %8 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.6, i64 0, i64 0), %7 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), %6 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), %5 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0), %4 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0), %3 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), %2 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), %1 ]
ret i8* %34
}