#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 */
char *strerror(int);
char *redis_strerror(int code) {
  switch (code) {
  case 10004:
    return "Interrupted system call";
  case 10009:
    return "Bad file number";
  case 10013:
    return "Permission denied";
  case 10014:
    return "Bad address";
  case 10022:
    return "Invalid argument (not bind)";
  case 10024:
    return "Too many open files";
  case 10035:
    return "Operation would block";
  case 10036:
    return "Operation now in progress";
  case 10037:
    return "Operation already in progress";
  case 10038:
    return "Socket operation on non-socket";
  case 10039:
    return "Destination address required";
  case 10040:
    return "Message too long";
  case 10041:
    return "Protocol wrong type for socket";
  case 10042:
    return "Bad protocol option";
  case 10043:
    return "Protocol not supported";
  case 10044:
    return "Socket type not supported";
  case 10045:
    return "Operation not supported on socket";
  case 10046:
    return "Protocol family not supported";
  case 10047:
    return "Address family not supported by protocol family";
  case 10048:
    return "Address already in use";
  case 10049:
    return "Can't assign requested address";
  case 10050:
    return "Network is down";
  case 10051:
    return "Network is unreachable";
  case 10052:
    return "Net dropped connection or reset";
  case 10053:
    return "Software caused connection abort";
  case 10054:
    return "Connection reset by peer";
  case 10055:
    return "No buffer space available";
  case 10056:
    return "Socket is already connected";
  case 10057:
    return "Socket is not connected";
  case 10058:
    return "Can't send after socket shutdown";
  case 10059:
    return "Too many references, can't splice";
  case 10060:
    return "Connection timed out";
  case 10061:
    return "Connection refused";
  case 10062:
    return "Too many levels of symbolic links";
  case 10063:
    return "File name too long";
  case 10064:
    return "Host is down";
  case 10065:
    return "No Route to Host";
  case 10066:
    return "Directory not empty";
  case 10067:
    return "Too many processes";
  case 10068:
    return "Too many users";
  case 10069:
    return "Disc Quota Exceeded";
  case 10070:
    return "Stale NFS file handle";
  case 10091:
    return "Network SubSystem is unavailable";
  case 10092:
    return "WINSOCK DLL Version out of range";
  case 10093:
    return "Successful WSASTARTUP not yet performed";
  case 10071:
    return "Too many levels of remote in path";
  case 11001:
    return "Host not found";
  case 11002:
    return "Non-Authoritative Host not found";
  case 11003:
    return "Non-Recoverable errors: FORMERR, REFUSED, NOTIMP";
  case 11004:
    return "Valid name, no data record of requested type";
  default:
    return strerror(code);
  }
}


x86 assembly (clang, -O0):
<redis_strerror>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
sub    $0x2714,%eax
je     14d4 <redis_strerror+0x3c4>
jmp    1131 <redis_strerror+0x21>
mov    -0x10(%rbp),%eax
sub    $0x2719,%eax
je     14e4 <redis_strerror+0x3d4>
jmp    1144 <redis_strerror+0x34>
mov    -0x10(%rbp),%eax
sub    $0x271d,%eax
je     14f4 <redis_strerror+0x3e4>
jmp    1157 <redis_strerror+0x47>
mov    -0x10(%rbp),%eax
sub    $0x271e,%eax
je     1504 <redis_strerror+0x3f4>
jmp    116a <redis_strerror+0x5a>
mov    -0x10(%rbp),%eax
sub    $0x2726,%eax
je     1514 <redis_strerror+0x404>
jmp    117d <redis_strerror+0x6d>
mov    -0x10(%rbp),%eax
sub    $0x2728,%eax
je     1524 <redis_strerror+0x414>
jmp    1190 <redis_strerror+0x80>
mov    -0x10(%rbp),%eax
sub    $0x2733,%eax
je     1534 <redis_strerror+0x424>
jmp    11a3 <redis_strerror+0x93>
mov    -0x10(%rbp),%eax
sub    $0x2734,%eax
je     1544 <redis_strerror+0x434>
jmp    11b6 <redis_strerror+0xa6>
mov    -0x10(%rbp),%eax
sub    $0x2735,%eax
je     1554 <redis_strerror+0x444>
jmp    11c9 <redis_strerror+0xb9>
mov    -0x10(%rbp),%eax
sub    $0x2736,%eax
je     1564 <redis_strerror+0x454>
jmp    11dc <redis_strerror+0xcc>
mov    -0x10(%rbp),%eax
sub    $0x2737,%eax
je     1574 <redis_strerror+0x464>
jmp    11ef <redis_strerror+0xdf>
mov    -0x10(%rbp),%eax
sub    $0x2738,%eax
je     1584 <redis_strerror+0x474>
jmp    1202 <redis_strerror+0xf2>
mov    -0x10(%rbp),%eax
sub    $0x2739,%eax
je     1594 <redis_strerror+0x484>
jmp    1215 <redis_strerror+0x105>
mov    -0x10(%rbp),%eax
sub    $0x273a,%eax
je     15a4 <redis_strerror+0x494>
jmp    1228 <redis_strerror+0x118>
mov    -0x10(%rbp),%eax
sub    $0x273b,%eax
je     15b4 <redis_strerror+0x4a4>
jmp    123b <redis_strerror+0x12b>
mov    -0x10(%rbp),%eax
sub    $0x273c,%eax
je     15c4 <redis_strerror+0x4b4>
jmp    124e <redis_strerror+0x13e>
mov    -0x10(%rbp),%eax
sub    $0x273d,%eax
je     15d4 <redis_strerror+0x4c4>
jmp    1261 <redis_strerror+0x151>
mov    -0x10(%rbp),%eax
sub    $0x273e,%eax
je     15e4 <redis_strerror+0x4d4>
jmp    1274 <redis_strerror+0x164>
mov    -0x10(%rbp),%eax
sub    $0x273f,%eax
je     15f4 <redis_strerror+0x4e4>
jmp    1287 <redis_strerror+0x177>
mov    -0x10(%rbp),%eax
sub    $0x2740,%eax
je     1604 <redis_strerror+0x4f4>
jmp    129a <redis_strerror+0x18a>
mov    -0x10(%rbp),%eax
sub    $0x2741,%eax
je     1614 <redis_strerror+0x504>
jmp    12ad <redis_strerror+0x19d>
mov    -0x10(%rbp),%eax
sub    $0x2742,%eax
je     1624 <redis_strerror+0x514>
jmp    12c0 <redis_strerror+0x1b0>
mov    -0x10(%rbp),%eax
sub    $0x2743,%eax
je     1634 <redis_strerror+0x524>
jmp    12d3 <redis_strerror+0x1c3>
mov    -0x10(%rbp),%eax
sub    $0x2744,%eax
je     1644 <redis_strerror+0x534>
jmp    12e6 <redis_strerror+0x1d6>
mov    -0x10(%rbp),%eax
sub    $0x2745,%eax
je     1654 <redis_strerror+0x544>
jmp    12f9 <redis_strerror+0x1e9>
mov    -0x10(%rbp),%eax
sub    $0x2746,%eax
je     1664 <redis_strerror+0x554>
jmp    130c <redis_strerror+0x1fc>
mov    -0x10(%rbp),%eax
sub    $0x2747,%eax
je     1674 <redis_strerror+0x564>
jmp    131f <redis_strerror+0x20f>
mov    -0x10(%rbp),%eax
sub    $0x2748,%eax
je     1684 <redis_strerror+0x574>
jmp    1332 <redis_strerror+0x222>
mov    -0x10(%rbp),%eax
sub    $0x2749,%eax
je     1694 <redis_strerror+0x584>
jmp    1345 <redis_strerror+0x235>
mov    -0x10(%rbp),%eax
sub    $0x274a,%eax
je     16a4 <redis_strerror+0x594>
jmp    1358 <redis_strerror+0x248>
mov    -0x10(%rbp),%eax
sub    $0x274b,%eax
je     16b4 <redis_strerror+0x5a4>
jmp    136b <redis_strerror+0x25b>
mov    -0x10(%rbp),%eax
sub    $0x274c,%eax
je     16c4 <redis_strerror+0x5b4>
jmp    137e <redis_strerror+0x26e>
mov    -0x10(%rbp),%eax
sub    $0x274d,%eax
je     16d4 <redis_strerror+0x5c4>
jmp    1391 <redis_strerror+0x281>
mov    -0x10(%rbp),%eax
sub    $0x274e,%eax
je     16e4 <redis_strerror+0x5d4>
jmp    13a4 <redis_strerror+0x294>
mov    -0x10(%rbp),%eax
sub    $0x274f,%eax
je     16f4 <redis_strerror+0x5e4>
jmp    13b7 <redis_strerror+0x2a7>
mov    -0x10(%rbp),%eax
sub    $0x2750,%eax
je     1704 <redis_strerror+0x5f4>
jmp    13ca <redis_strerror+0x2ba>
mov    -0x10(%rbp),%eax
sub    $0x2751,%eax
je     1714 <redis_strerror+0x604>
jmp    13dd <redis_strerror+0x2cd>
mov    -0x10(%rbp),%eax
sub    $0x2752,%eax
je     1724 <redis_strerror+0x614>
jmp    13f0 <redis_strerror+0x2e0>
mov    -0x10(%rbp),%eax
sub    $0x2753,%eax
je     1734 <redis_strerror+0x624>
jmp    1403 <redis_strerror+0x2f3>
mov    -0x10(%rbp),%eax
sub    $0x2754,%eax
je     1744 <redis_strerror+0x634>
jmp    1416 <redis_strerror+0x306>
mov    -0x10(%rbp),%eax
sub    $0x2755,%eax
je     1754 <redis_strerror+0x644>
jmp    1429 <redis_strerror+0x319>
mov    -0x10(%rbp),%eax
sub    $0x2756,%eax
je     1764 <redis_strerror+0x654>
jmp    143c <redis_strerror+0x32c>
mov    -0x10(%rbp),%eax
sub    $0x2757,%eax
je     17a4 <redis_strerror+0x694>
jmp    144f <redis_strerror+0x33f>
mov    -0x10(%rbp),%eax
sub    $0x276b,%eax
je     1774 <redis_strerror+0x664>
jmp    1462 <redis_strerror+0x352>
mov    -0x10(%rbp),%eax
sub    $0x276c,%eax
je     1784 <redis_strerror+0x674>
jmp    1475 <redis_strerror+0x365>
mov    -0x10(%rbp),%eax
sub    $0x276d,%eax
je     1794 <redis_strerror+0x684>
jmp    1488 <redis_strerror+0x378>
mov    -0x10(%rbp),%eax
sub    $0x2af9,%eax
je     17b4 <redis_strerror+0x6a4>
jmp    149b <redis_strerror+0x38b>
mov    -0x10(%rbp),%eax
sub    $0x2afa,%eax
je     17c4 <redis_strerror+0x6b4>
jmp    14ae <redis_strerror+0x39e>
mov    -0x10(%rbp),%eax
sub    $0x2afb,%eax
je     17d4 <redis_strerror+0x6c4>
jmp    14c1 <redis_strerror+0x3b1>
mov    -0x10(%rbp),%eax
sub    $0x2afc,%eax
je     17e4 <redis_strerror+0x6d4>
jmp    17f4 <redis_strerror+0x6e4>
lea    0xb25(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb2d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb2d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb2f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb2b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb37(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb3b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb41(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb4b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb59(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb68(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb75(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb76(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb85(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb89(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb90(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xb9a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xbac(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xbba(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xbda(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xbe1(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xbf0(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xbf0(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xbf7(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc07(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc18(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc21(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc2b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc37(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc3f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc50(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc62(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc67(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc6a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc7c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc7f(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc7c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc7d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc81(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc84(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc83(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc87(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc8d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xc9e(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xcaf(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xcc7(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xceb(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xcc9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xcda(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
lea    0xcfb(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1800 <redis_strerror+0x6f0>
mov    -0xc(%rbp),%edi
call   1030 <strerror@plt>
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<redis_strerror>:
lea    -0x2714(%rdi),%ecx
cmp    $0x59,%ecx
ja     113a <redis_strerror+0x2a>
lea    0x1056(%rip),%rax
lea    0xed7(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    0x1057(%rip),%rax
ret
lea    -0x2af9(%rdi),%eax
cmp    $0x3,%eax
ja     115d <redis_strerror+0x4d>
lea    0x101c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x14c2(%rip),%rax
ret
jmp    1030 <strerror@plt>
lea    0x1037(%rip),%rax
ret
lea    0x1041(%rip),%rax
ret
lea    0x1045(%rip),%rax
ret
lea    0x1059(%rip),%rax
ret
lea    0x1065(%rip),%rax
ret
lea    0x1073(%rip),%rax
ret
lea    0x1085(%rip),%rax
ret
lea    0x109b(%rip),%rax
ret
lea    0x10b2(%rip),%rax
ret
lea    0x10c7(%rip),%rax
ret
lea    0x10d0(%rip),%rax
ret
lea    0x10e7(%rip),%rax
ret
lea    0x10f3(%rip),%rax
ret
lea    0x1102(%rip),%rax
ret
lea    0x1114(%rip),%rax
ret
lea    0x112e(%rip),%rax
ret
lea    0x1144(%rip),%rax
ret
lea    0x116c(%rip),%rax
ret
lea    0x117b(%rip),%rax
ret
lea    0x1192(%rip),%rax
ret
lea    0x119a(%rip),%rax
ret
lea    0x11a9(%rip),%rax
ret
lea    0x11c1(%rip),%rax
ret
lea    0x11da(%rip),%rax
ret
lea    0x11eb(%rip),%rax
ret
lea    0x11fd(%rip),%rax
ret
lea    0x1211(%rip),%rax
ret
lea    0x1221(%rip),%rax
ret
lea    0x123a(%rip),%rax
ret
lea    0x1254(%rip),%rax
ret
lea    0x1261(%rip),%rax
ret
lea    0x126c(%rip),%rax
ret
lea    0x1286(%rip),%rax
ret
lea    0x1291(%rip),%rax
ret
lea    0x1296(%rip),%rax
ret
lea    0x129f(%rip),%rax
ret
lea    0x12ab(%rip),%rax
ret
lea    0x12b6(%rip),%rax
ret
lea    0x12bd(%rip),%rax
ret
lea    0x12c9(%rip),%rax
ret
lea    0x1341(%rip),%rax
ret
lea    0x12cf(%rip),%rax
ret
lea    0x12e8(%rip),%rax
ret
lea    0x1301(%rip),%rax
ret
lea    0x1343(%rip),%rax
ret
lea    0x135c(%rip),%rax
ret
lea    0x1385(%rip),%rax
ret

LLVM IR (-O0):
@.str = [24 x i8] c"Interrupted system call\00"
@.str.1 = [16 x i8] c"Bad file number\00"
@.str.2 = [18 x i8] c"Permission denied\00"
@.str.3 = [12 x i8] c"Bad address\00"
@.str.4 = [28 x i8] c"Invalid argument (not bind)\00"
@.str.5 = [20 x i8] c"Too many open files\00"
@.str.6 = [22 x i8] c"Operation would block\00"
@.str.7 = [26 x i8] c"Operation now in progress\00"
@.str.8 = [30 x i8] c"Operation already in progress\00"
@.str.9 = [31 x i8] c"Socket operation on non-socket\00"
@.str.10 = [29 x i8] c"Destination address required\00"
@.str.11 = [17 x i8] c"Message too long\00"
@.str.12 = [31 x i8] c"Protocol wrong type for socket\00"
@.str.13 = [20 x i8] c"Bad protocol option\00"
@.str.14 = [23 x i8] c"Protocol not supported\00"
@.str.15 = [26 x i8] c"Socket type not supported\00"
@.str.16 = [34 x i8] c"Operation not supported on socket\00"
@.str.17 = [30 x i8] c"Protocol family not supported\00"
@.str.18 = [48 x i8] c"Address family not supported by protocol family\00"
@.str.19 = [23 x i8] c"Address already in use\00"
@.str.20 = [31 x i8] c"Can't assign requested address\00"
@.str.21 = [16 x i8] c"Network is down\00"
@.str.22 = [23 x i8] c"Network is unreachable\00"
@.str.23 = [32 x i8] c"Net dropped connection or reset\00"
@.str.24 = [33 x i8] c"Software caused connection abort\00"
@.str.25 = [25 x i8] c"Connection reset by peer\00"
@.str.26 = [26 x i8] c"No buffer space available\00"
@.str.27 = [28 x i8] c"Socket is already connected\00"
@.str.28 = [24 x i8] c"Socket is not connected\00"
@.str.29 = [33 x i8] c"Can't send after socket shutdown\00"
@.str.30 = [34 x i8] c"Too many references, can't splice\00"
@.str.31 = [21 x i8] c"Connection timed out\00"
@.str.32 = [19 x i8] c"Connection refused\00"
@.str.33 = [34 x i8] c"Too many levels of symbolic links\00"
@.str.34 = [19 x i8] c"File name too long\00"
@.str.35 = [13 x i8] c"Host is down\00"
@.str.36 = [17 x i8] c"No Route to Host\00"
@.str.37 = [20 x i8] c"Directory not empty\00"
@.str.38 = [19 x i8] c"Too many processes\00"
@.str.39 = [15 x i8] c"Too many users\00"
@.str.40 = [20 x i8] c"Disc Quota Exceeded\00"
@.str.41 = [22 x i8] c"Stale NFS file handle\00"
@.str.42 = [33 x i8] c"Network SubSystem is unavailable\00"
@.str.43 = [33 x i8] c"WINSOCK DLL Version out of range\00"
@.str.44 = [40 x i8] c"Successful WSASTARTUP not yet performed\00"
@.str.45 = [34 x i8] c"Too many levels of remote in path\00"
@.str.46 = [15 x i8] c"Host not found\00"
@.str.47 = [33 x i8] c"Non-Authoritative Host not found\00"
@.str.48 = [49 x i8] c"Non-Recoverable errors: FORMERR, REFUSED, NOTIMP\00"
@.str.49 = [45 x i8] c"Valid name, no data record of requested type\00"
define i8* @redis_strerror(i32 %0) {
%2 = alloca i8*
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %55 [
i32 10004, label %5
i32 10009, label %6
i32 10013, label %7
i32 10014, label %8
i32 10022, label %9
i32 10024, label %10
i32 10035, label %11
i32 10036, label %12
i32 10037, label %13
i32 10038, label %14
i32 10039, label %15
i32 10040, label %16
i32 10041, label %17
i32 10042, label %18
i32 10043, label %19
i32 10044, label %20
i32 10045, label %21
i32 10046, label %22
i32 10047, label %23
i32 10048, label %24
i32 10049, label %25
i32 10050, label %26
i32 10051, label %27
i32 10052, label %28
i32 10053, label %29
i32 10054, label %30
i32 10055, label %31
i32 10056, label %32
i32 10057, label %33
i32 10058, label %34
i32 10059, label %35
i32 10060, label %36
i32 10061, label %37
i32 10062, label %38
i32 10063, label %39
i32 10064, label %40
i32 10065, label %41
i32 10066, label %42
i32 10067, label %43
i32 10068, label %44
i32 10069, label %45
i32 10070, label %46
i32 10091, label %47
i32 10092, label %48
i32 10093, label %49
i32 10071, label %50
i32 11001, label %51
i32 11002, label %52
i32 11003, label %53
i32 11004, label %54
]
5: ; preds = %1
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0), i8** %2
br label %58
6: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %58
7: ; preds = %1
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %58
8: ; preds = %1
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %58
9: ; preds = %1
store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %58
10: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %58
11: ; preds = %1
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %58
12: ; preds = %1
store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %58
13: ; preds = %1
store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %58
14: ; preds = %1
store i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %58
15: ; preds = %1
store i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %58
16: ; preds = %1
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %58
17: ; preds = %1
store i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %58
18: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %58
19: ; preds = %1
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %58
20: ; preds = %1
store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %58
21: ; preds = %1
store i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %58
22: ; preds = %1
store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %58
23: ; preds = %1
store i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %58
24: ; preds = %1
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %58
25: ; preds = %1
store i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %58
26: ; preds = %1
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %2
br label %58
27: ; preds = %1
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.22, i64 0, i64 0), i8** %2
br label %58
28: ; preds = %1
store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.23, i64 0, i64 0), i8** %2
br label %58
29: ; preds = %1
store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.24, i64 0, i64 0), i8** %2
br label %58
30: ; preds = %1
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.25, i64 0, i64 0), i8** %2
br label %58
31: ; preds = %1
store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.26, i64 0, i64 0), i8** %2
br label %58
32: ; preds = %1
store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.27, i64 0, i64 0), i8** %2
br label %58
33: ; preds = %1
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.28, i64 0, i64 0), i8** %2
br label %58
34: ; preds = %1
store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.29, i64 0, i64 0), i8** %2
br label %58
35: ; preds = %1
store i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.30, i64 0, i64 0), i8** %2
br label %58
36: ; preds = %1
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.31, i64 0, i64 0), i8** %2
br label %58
37: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.32, i64 0, i64 0), i8** %2
br label %58
38: ; preds = %1
store i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.33, i64 0, i64 0), i8** %2
br label %58
39: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.34, i64 0, i64 0), i8** %2
br label %58
40: ; preds = %1
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.35, i64 0, i64 0), i8** %2
br label %58
41: ; preds = %1
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.36, i64 0, i64 0), i8** %2
br label %58
42: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.37, i64 0, i64 0), i8** %2
br label %58
43: ; preds = %1
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0), i8** %2
br label %58
44: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.39, i64 0, i64 0), i8** %2
br label %58
45: ; preds = %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.40, i64 0, i64 0), i8** %2
br label %58
46: ; preds = %1
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.41, i64 0, i64 0), i8** %2
br label %58
47: ; preds = %1
store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.42, i64 0, i64 0), i8** %2
br label %58
48: ; preds = %1
store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.43, i64 0, i64 0), i8** %2
br label %58
49: ; preds = %1
store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.44, i64 0, i64 0), i8** %2
br label %58
50: ; preds = %1
store i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.45, i64 0, i64 0), i8** %2
br label %58
51: ; preds = %1
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.46, i64 0, i64 0), i8** %2
br label %58
52: ; preds = %1
store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.47, i64 0, i64 0), i8** %2
br label %58
53: ; preds = %1
store i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.48, i64 0, i64 0), i8** %2
br label %58
54: ; preds = %1
store i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.49, i64 0, i64 0), i8** %2
br label %58
55: ; preds = %1
%56 = load i32, i32* %3
%57 = call i8* @strerror(i32 %56)
store i8* %57, i8** %2
br label %58
58: ; preds = %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
%59 = load i8*, i8** %2
ret i8* %59
}

LLVM IR (-O2):
@.str = [24 x i8] c"Interrupted system call\00"
@.str.1 = [16 x i8] c"Bad file number\00"
@.str.2 = [18 x i8] c"Permission denied\00"
@.str.3 = [12 x i8] c"Bad address\00"
@.str.4 = [28 x i8] c"Invalid argument (not bind)\00"
@.str.5 = [20 x i8] c"Too many open files\00"
@.str.6 = [22 x i8] c"Operation would block\00"
@.str.7 = [26 x i8] c"Operation now in progress\00"
@.str.8 = [30 x i8] c"Operation already in progress\00"
@.str.9 = [31 x i8] c"Socket operation on non-socket\00"
@.str.10 = [29 x i8] c"Destination address required\00"
@.str.11 = [17 x i8] c"Message too long\00"
@.str.12 = [31 x i8] c"Protocol wrong type for socket\00"
@.str.13 = [20 x i8] c"Bad protocol option\00"
@.str.14 = [23 x i8] c"Protocol not supported\00"
@.str.15 = [26 x i8] c"Socket type not supported\00"
@.str.16 = [34 x i8] c"Operation not supported on socket\00"
@.str.17 = [30 x i8] c"Protocol family not supported\00"
@.str.18 = [48 x i8] c"Address family not supported by protocol family\00"
@.str.19 = [23 x i8] c"Address already in use\00"
@.str.20 = [31 x i8] c"Can't assign requested address\00"
@.str.21 = [16 x i8] c"Network is down\00"
@.str.22 = [23 x i8] c"Network is unreachable\00"
@.str.23 = [32 x i8] c"Net dropped connection or reset\00"
@.str.24 = [33 x i8] c"Software caused connection abort\00"
@.str.25 = [25 x i8] c"Connection reset by peer\00"
@.str.26 = [26 x i8] c"No buffer space available\00"
@.str.27 = [28 x i8] c"Socket is already connected\00"
@.str.28 = [24 x i8] c"Socket is not connected\00"
@.str.29 = [33 x i8] c"Can't send after socket shutdown\00"
@.str.30 = [34 x i8] c"Too many references, can't splice\00"
@.str.31 = [21 x i8] c"Connection timed out\00"
@.str.32 = [19 x i8] c"Connection refused\00"
@.str.33 = [34 x i8] c"Too many levels of symbolic links\00"
@.str.34 = [19 x i8] c"File name too long\00"
@.str.35 = [13 x i8] c"Host is down\00"
@.str.36 = [17 x i8] c"No Route to Host\00"
@.str.37 = [20 x i8] c"Directory not empty\00"
@.str.38 = [19 x i8] c"Too many processes\00"
@.str.39 = [15 x i8] c"Too many users\00"
@.str.40 = [20 x i8] c"Disc Quota Exceeded\00"
@.str.41 = [22 x i8] c"Stale NFS file handle\00"
@.str.42 = [33 x i8] c"Network SubSystem is unavailable\00"
@.str.43 = [33 x i8] c"WINSOCK DLL Version out of range\00"
@.str.44 = [40 x i8] c"Successful WSASTARTUP not yet performed\00"
@.str.45 = [34 x i8] c"Too many levels of remote in path\00"
@.str.46 = [15 x i8] c"Host not found\00"
@.str.47 = [33 x i8] c"Non-Authoritative Host not found\00"
@.str.48 = [49 x i8] c"Non-Recoverable errors: FORMERR, REFUSED, NOTIMP\00"
@.str.49 = [45 x i8] c"Valid name, no data record of requested type\00"
define i8* @redis_strerror(i32 %0) {
switch i32 %0, label %51 [
i32 10004, label %53
i32 10009, label %2
i32 10013, label %3
i32 10014, label %4
i32 10022, label %5
i32 10024, label %6
i32 10035, label %7
i32 10036, label %8
i32 10037, label %9
i32 10038, label %10
i32 10039, label %11
i32 10040, label %12
i32 10041, label %13
i32 10042, label %14
i32 10043, label %15
i32 10044, label %16
i32 10045, label %17
i32 10046, label %18
i32 10047, label %19
i32 10048, label %20
i32 10049, label %21
i32 10050, label %22
i32 10051, label %23
i32 10052, label %24
i32 10053, label %25
i32 10054, label %26
i32 10055, label %27
i32 10056, label %28
i32 10057, label %29
i32 10058, label %30
i32 10059, label %31
i32 10060, label %32
i32 10061, label %33
i32 10062, label %34
i32 10063, label %35
i32 10064, label %36
i32 10065, label %37
i32 10066, label %38
i32 10067, label %39
i32 10068, label %40
i32 10069, label %41
i32 10070, label %42
i32 10091, label %43
i32 10092, label %44
i32 10093, label %45
i32 10071, label %46
i32 11001, label %47
i32 11002, label %48
i32 11003, label %49
i32 11004, label %50
]
2: ; preds = %1
br label %53
3: ; preds = %1
br label %53
4: ; preds = %1
br label %53
5: ; preds = %1
br label %53
6: ; preds = %1
br label %53
7: ; preds = %1
br label %53
8: ; preds = %1
br label %53
9: ; preds = %1
br label %53
10: ; preds = %1
br label %53
11: ; preds = %1
br label %53
12: ; preds = %1
br label %53
13: ; preds = %1
br label %53
14: ; preds = %1
br label %53
15: ; preds = %1
br label %53
16: ; preds = %1
br label %53
17: ; preds = %1
br label %53
18: ; preds = %1
br label %53
19: ; preds = %1
br label %53
20: ; preds = %1
br label %53
21: ; preds = %1
br label %53
22: ; preds = %1
br label %53
23: ; preds = %1
br label %53
24: ; preds = %1
br label %53
25: ; preds = %1
br label %53
26: ; preds = %1
br label %53
27: ; preds = %1
br label %53
28: ; preds = %1
br label %53
29: ; preds = %1
br label %53
30: ; preds = %1
br label %53
31: ; preds = %1
br label %53
32: ; preds = %1
br label %53
33: ; preds = %1
br label %53
34: ; preds = %1
br label %53
35: ; preds = %1
br label %53
36: ; preds = %1
br label %53
37: ; preds = %1
br label %53
38: ; preds = %1
br label %53
39: ; preds = %1
br label %53
40: ; preds = %1
br label %53
41: ; preds = %1
br label %53
42: ; preds = %1
br label %53
43: ; preds = %1
br label %53
44: ; preds = %1
br label %53
45: ; preds = %1
br label %53
46: ; preds = %1
br label %53
47: ; preds = %1
br label %53
48: ; preds = %1
br label %53
49: ; preds = %1
br label %53
50: ; preds = %1
br label %53
51: ; preds = %1
%52 = tail call i8* @strerror(i32 %0)
br label %53
53: ; preds = %1, %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
%54 = phi i8* [ %52, %51 ], [ getelementptr inbounds ([45 x i8], [45 x i8]* @.str.49, i64 0, i64 0), %50 ], [ getelementptr inbounds ([49 x i8], [49 x i8]* @.str.48, i64 0, i64 0), %49 ], [ getelementptr inbounds ([33 x i8], [33 x i8]* @.str.47, i64 0, i64 0), %48 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.46, i64 0, i64 0), %47 ], [ getelementptr inbounds ([34 x i8], [34 x i8]* @.str.45, i64 0, i64 0), %46 ], [ getelementptr inbounds ([40 x i8], [40 x i8]* @.str.44, i64 0, i64 0), %45 ], [ getelementptr inbounds ([33 x i8], [33 x i8]* @.str.43, i64 0, i64 0), %44 ], [ getelementptr inbounds ([33 x i8], [33 x i8]* @.str.42, i64 0, i64 0), %43 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.41, i64 0, i64 0), %42 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.40, i64 0, i64 0), %41 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.39, i64 0, i64 0), %40 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0), %39 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.37, i64 0, i64 0), %38 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.36, i64 0, i64 0), %37 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.35, i64 0, i64 0), %36 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.34, i64 0, i64 0), %35 ], [ getelementptr inbounds ([34 x i8], [34 x i8]* @.str.33, i64 0, i64 0), %34 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.32, i64 0, i64 0), %33 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.31, i64 0, i64 0), %32 ], [ getelementptr inbounds ([34 x i8], [34 x i8]* @.str.30, i64 0, i64 0), %31 ], [ getelementptr inbounds ([33 x i8], [33 x i8]* @.str.29, i64 0, i64 0), %30 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.28, i64 0, i64 0), %29 ], [ getelementptr inbounds ([28 x i8], [28 x i8]* @.str.27, i64 0, i64 0), %28 ], [ getelementptr inbounds ([26 x i8], [26 x i8]* @.str.26, i64 0, i64 0), %27 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.25, i64 0, i64 0), %26 ], [ getelementptr inbounds ([33 x i8], [33 x i8]* @.str.24, i64 0, i64 0), %25 ], [ getelementptr inbounds ([32 x i8], [32 x i8]* @.str.23, i64 0, i64 0), %24 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.22, i64 0, i64 0), %23 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), %22 ], [ getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0), %21 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.19, i64 0, i64 0), %20 ], [ getelementptr inbounds ([48 x i8], [48 x i8]* @.str.18, i64 0, i64 0), %19 ], [ getelementptr inbounds ([30 x i8], [30 x i8]* @.str.17, i64 0, i64 0), %18 ], [ getelementptr inbounds ([34 x i8], [34 x i8]* @.str.16, i64 0, i64 0), %17 ], [ getelementptr inbounds ([26 x i8], [26 x i8]* @.str.15, i64 0, i64 0), %16 ], [ getelementptr inbounds ([23 x i8], [23 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 ([31 x i8], [31 x i8]* @.str.12, i64 0, i64 0), %13 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.11, i64 0, i64 0), %12 ], [ getelementptr inbounds ([29 x i8], [29 x i8]* @.str.10, i64 0, i64 0), %11 ], [ getelementptr inbounds ([31 x i8], [31 x i8]* @.str.9, i64 0, i64 0), %10 ], [ getelementptr inbounds ([30 x i8], [30 x i8]* @.str.8, i64 0, i64 0), %9 ], [ getelementptr inbounds ([26 x i8], [26 x i8]* @.str.7, i64 0, i64 0), %8 ], [ getelementptr inbounds ([22 x i8], [22 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 ([28 x i8], [28 x i8]* @.str.4, i64 0, i64 0), %5 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0), %4 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.2, i64 0, i64 0), %3 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), %2 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0), %1 ]
ret i8* %54
}