#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 */
#define SIGABRT 155
#define SIGALRM 154
#define SIGBUS 153
#define SIGCHLD 152
#define SIGCONT 151
#define SIGFPE 150
#define SIGHUP 149
#define SIGILL 148
#define SIGINT 147
#define SIGKILL 146
#define SIGPIPE 145
#define SIGPOLL 144
#define SIGPROF 143
#define SIGQUIT 142
#define SIGSEGV 141
#define SIGSTOP 140
#define SIGSYS 139
#define SIGTERM 138
#define SIGTRAP 137
#define SIGTSTP 136
#define SIGTTIN 135
#define SIGTTOU 134
#define SIGURG 133
#define SIGUSR1 132
#define SIGUSR2 131
#define SIGVTALRM 130
#define SIGXCPU 129
#define SIGXFSZ 128
int /*<<< orphan*/ STDOUT_FILENO;
int /*<<< orphan*/ write(int /*<<< orphan*/, char *, int);
void print_sig_desc(int sig) {
  switch (sig) {
  case SIGBUS:
    write(STDOUT_FILENO,
          "\nSIGBUS:  access to undefined portion of a memory object\n", 57);
    break;
  case SIGFPE:
    write(STDOUT_FILENO, "\nSIGFPE:  erroneous arithmetic operation\n", 41);
    break;
  case SIGILL:
    write(STDOUT_FILENO, "\nSIGILL:  illegal instruction\n", 30);
    break;
  case SIGPIPE:
    write(STDOUT_FILENO, "\nSIGPIPE:  write on a pipe with no reader\n", 42);
    break;
  case SIGSEGV:
    write(STDOUT_FILENO, "\nSIGSEGV:  invalid memory reference\n", 36);
    break;
  case SIGSYS:
    write(STDOUT_FILENO, "\nSIGSYS:  bad system call\n", 26);
    break;
  case SIGXCPU:
    write(STDOUT_FILENO, "\nSIGXCPU:  CPU-time limit exceeded\n", 35);
    break;
  case SIGXFSZ:
    write(STDOUT_FILENO, "\nSIGXFSZ:  file-size limit exceeded\n", 36);
    break;
  case SIGABRT:
    write(STDOUT_FILENO, "\nSIGABRT:  call to abort\n", 25);
    break;
  case SIGHUP:
    write(STDOUT_FILENO, "\nSIGHUP:  hangup\n", 17);
    break;
  case SIGINT:
    write(STDOUT_FILENO, "\nSIGINT:  interrupt (from keyboard)\n", 36);
    break;
  case SIGKILL:
    write(STDOUT_FILENO, "\nSIGKILL:  kill; synthetic only\n", 32);
    break;
  case SIGQUIT:
    write(STDOUT_FILENO, "\nSIGQUIT:  quit (from keyboard)\n", 32);
    break;
  case SIGTERM:
    write(STDOUT_FILENO, "\nSIGTERM:  termination; synthetic only\n", 39);
    break;
  case SIGUSR1:
    write(STDOUT_FILENO, "\nSIGUSR1:  user signal 1; synthetic only\n", 41);
    break;
  case SIGUSR2:
    write(STDOUT_FILENO, "\nSIGUSR2:  user signal 2; synthetic only\n", 41);
    break;
  case SIGCHLD:
    write(STDOUT_FILENO, "\nSIGCHLD:  child process terminated or stopped\n",
          47);
    break;
  case SIGCONT:
    write(STDOUT_FILENO, "\nSIGCONT:  continue executing (from keyboard)\n",
          46);
    break;
  case SIGSTOP:
    write(STDOUT_FILENO, "\nSIGSTOP:  stop executing (from keyboard)\n", 42);
    break;
  case SIGTSTP:
    write(STDOUT_FILENO, "\nSIGTSTP:  terminal stop signal (from keyboard)\n",
          48);
    break;
  case SIGTTIN:
    write(STDOUT_FILENO, "\nSIGTTIN:  background process attempting read\n",
          46);
    break;
  case SIGTTOU:
    write(STDOUT_FILENO, "\nSIGTTOU:  background process attemping write\n",
          46);
    break;
  case SIGALRM:
    write(STDOUT_FILENO, "\nSIGALRM:  alarm clock expired\n", 31);
    break;
  case SIGVTALRM:
    write(STDOUT_FILENO, "\nSIGVTALRM:  virtual timer expired\n", 35);
    break;
  case SIGPROF:
    write(STDOUT_FILENO, "\nSIGPROF:  profiling timer expired\n", 35);
    break;
  case SIGPOLL:
    write(STDOUT_FILENO, "\nSIGPOLL:  pollable event\n", 26);
    break;
  case SIGTRAP:
    write(STDOUT_FILENO, "\nSIGTRAP:  trace/breakpoint trap\n", 33);
    break;
  case SIGURG:
    write(STDOUT_FILENO, "\nSIGURG:  out-of-band data available at socket\n",
          47);
    break;
  default:
    write(STDOUT_FILENO, "\nUnknown signal\n", 16);
  }
}


x86 assembly (clang, -O0):
<print_sig_desc>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xffffff80,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0x1b,%eax
ja     14a8 <print_sig_desc+0x398>
mov    -0x10(%rbp),%rax
lea    0xec5(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x2ea5(%rip),%rax
mov    (%rax),%edi
lea    0xf1c(%rip),%rsi
mov    $0x39,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2e86(%rip),%rax
mov    (%rax),%edi
lea    0xf37(%rip),%rsi
mov    $0x29,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2e67(%rip),%rax
mov    (%rax),%edi
lea    0xf42(%rip),%rsi
mov    $0x1e,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2e48(%rip),%rax
mov    (%rax),%edi
lea    0xf42(%rip),%rsi
mov    $0x2a,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2e29(%rip),%rax
mov    (%rax),%edi
lea    0xf4e(%rip),%rsi
mov    $0x24,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2e0a(%rip),%rax
mov    (%rax),%edi
lea    0xf54(%rip),%rsi
mov    $0x1a,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2deb(%rip),%rax
mov    (%rax),%edi
lea    0xf50(%rip),%rsi
mov    $0x23,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2dcc(%rip),%rax
mov    (%rax),%edi
lea    0xf55(%rip),%rsi
mov    $0x24,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2dad(%rip),%rax
mov    (%rax),%edi
lea    0xf5b(%rip),%rsi
mov    $0x19,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2d8e(%rip),%rax
mov    (%rax),%edi
lea    0xf56(%rip),%rsi
mov    $0x11,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2d6f(%rip),%rax
mov    (%rax),%edi
lea    0xf49(%rip),%rsi
mov    $0x24,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2d50(%rip),%rax
mov    (%rax),%edi
lea    0xf4f(%rip),%rsi
mov    $0x20,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2d31(%rip),%rax
mov    (%rax),%edi
lea    0xf51(%rip),%rsi
mov    $0x20,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2d12(%rip),%rax
mov    (%rax),%edi
lea    0xf53(%rip),%rsi
mov    $0x27,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2cf3(%rip),%rax
mov    (%rax),%edi
lea    0xf5c(%rip),%rsi
mov    $0x29,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2cd4(%rip),%rax
mov    (%rax),%edi
lea    0xf67(%rip),%rsi
mov    $0x29,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2cb5(%rip),%rax
mov    (%rax),%edi
lea    0xf72(%rip),%rsi
mov    $0x2f,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2c96(%rip),%rax
mov    (%rax),%edi
lea    0xf83(%rip),%rsi
mov    $0x2e,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2c77(%rip),%rax
mov    (%rax),%edi
lea    0xf93(%rip),%rsi
mov    $0x2a,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2c58(%rip),%rax
mov    (%rax),%edi
lea    0xf9f(%rip),%rsi
mov    $0x30,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2c39(%rip),%rax
mov    (%rax),%edi
lea    0xfb1(%rip),%rsi
mov    $0x2e,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2c1a(%rip),%rax
mov    (%rax),%edi
lea    0xfc1(%rip),%rsi
mov    $0x2e,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2bfb(%rip),%rax
mov    (%rax),%edi
lea    0xfd1(%rip),%rsi
mov    $0x1f,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2bdc(%rip),%rax
mov    (%rax),%edi
lea    0xfd2(%rip),%rsi
mov    $0x23,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2bbd(%rip),%rax
mov    (%rax),%edi
lea    0xfd7(%rip),%rsi
mov    $0x23,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2b9e(%rip),%rax
mov    (%rax),%edi
lea    0xfdc(%rip),%rsi
mov    $0x1a,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2b7f(%rip),%rax
mov    (%rax),%edi
lea    0xfd8(%rip),%rsi
mov    $0x21,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2b60(%rip),%rax
mov    (%rax),%edi
lea    0xfdb(%rip),%rsi
mov    $0x2f,%edx
call   1030 <write@plt>
jmp    14c2 <print_sig_desc+0x3b2>
mov    0x2b41(%rip),%rax
mov    (%rax),%edi
lea    0xfec(%rip),%rsi
mov    $0x10,%edx
call   1030 <write@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_sig_desc>:
add    $0xffffff80,%edi
cmp    $0x1b,%edi
ja     1142 <print_sig_desc+0x32>
lea    0xee1(%rip),%rax
movslq (%rax,%rdi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
mov    0x2ec1(%rip),%rax
mov    (%rax),%edi
lea    0x104a(%rip),%rsi
mov    $0x24,%edx
jmp    1030 <write@plt>
mov    0x2ea7(%rip),%rax
mov    (%rax),%edi
lea    0x1352(%rip),%rsi
mov    $0x10,%edx
jmp    1030 <write@plt>
mov    0x2e8d(%rip),%rax
mov    (%rax),%edi
lea    0xff2(%rip),%rsi
mov    $0x23,%edx
jmp    1030 <write@plt>
mov    0x2e73(%rip),%rax
mov    (%rax),%edi
lea    0x1269(%rip),%rsi
mov    $0x23,%edx
jmp    1030 <write@plt>
mov    0x2e59(%rip),%rax
mov    (%rax),%edi
lea    0x10ec(%rip),%rsi
mov    $0x29,%edx
jmp    1030 <write@plt>
mov    0x2e3f(%rip),%rax
mov    (%rax),%edi
lea    0x10a8(%rip),%rsi
mov    $0x29,%edx
jmp    1030 <write@plt>
mov    0x2e25(%rip),%rax
mov    (%rax),%edi
lea    0x12a0(%rip),%rsi
mov    $0x2f,%edx
jmp    1030 <write@plt>
mov    0x2e0b(%rip),%rax
mov    (%rax),%edi
lea    0x11b2(%rip),%rsi
mov    $0x2e,%edx
jmp    1030 <write@plt>
mov    0x2df1(%rip),%rax
mov    (%rax),%edi
lea    0x1169(%rip),%rsi
mov    $0x2e,%edx
jmp    1030 <write@plt>
mov    0x2dd7(%rip),%rax
mov    (%rax),%edi
lea    0x111e(%rip),%rsi
mov    $0x30,%edx
jmp    1030 <write@plt>
mov    0x2dbd(%rip),%rax
mov    (%rax),%edi
lea    0x1216(%rip),%rsi
mov    $0x21,%edx
jmp    1030 <write@plt>
mov    0x2da3(%rip),%rax
mov    (%rax),%edi
lea    0xfe4(%rip),%rsi
mov    $0x27,%edx
jmp    1030 <write@plt>
mov    0x2d89(%rip),%rax
mov    (%rax),%edi
lea    0xed3(%rip),%rsi
mov    $0x1a,%edx
jmp    1030 <write@plt>
mov    0x2d6f(%rip),%rax
mov    (%rax),%edi
lea    0x108b(%rip),%rsi
mov    $0x2a,%edx
jmp    1030 <write@plt>
mov    0x2d55(%rip),%rax
mov    (%rax),%edi
lea    0xe7a(%rip),%rsi
mov    $0x24,%edx
jmp    1030 <write@plt>
mov    0x2d3b(%rip),%rax
mov    (%rax),%edi
lea    0xf5b(%rip),%rsi
mov    $0x20,%edx
jmp    1030 <write@plt>
mov    0x2d21(%rip),%rax
mov    (%rax),%edi
lea    0x113b(%rip),%rsi
mov    $0x23,%edx
jmp    1030 <write@plt>
mov    0x2d07(%rip),%rax
mov    (%rax),%edi
lea    0x1145(%rip),%rsi
mov    $0x1a,%edx
jmp    1030 <write@plt>
mov    0x2ced(%rip),%rax
mov    (%rax),%edi
lea    0xde7(%rip),%rsi
mov    $0x2a,%edx
jmp    1030 <write@plt>
mov    0x2cd3(%rip),%rax
mov    (%rax),%edi
lea    0xed2(%rip),%rsi
mov    $0x20,%edx
jmp    1030 <write@plt>
mov    0x2cb9(%rip),%rax
mov    (%rax),%edi
lea    0xe93(%rip),%rsi
mov    $0x24,%edx
jmp    1030 <write@plt>
mov    0x2c9f(%rip),%rax
mov    (%rax),%edi
lea    0xd7a(%rip),%rsi
mov    $0x1e,%edx
jmp    1030 <write@plt>
mov    0x2c85(%rip),%rax
mov    (%rax),%edi
lea    0xe4d(%rip),%rsi
mov    $0x11,%edx
jmp    1030 <write@plt>
mov    0x2c6b(%rip),%rax
mov    (%rax),%edi
lea    0xd1c(%rip),%rsi
mov    $0x29,%edx
jmp    1030 <write@plt>
mov    0x2c51(%rip),%rax
mov    (%rax),%edi
lea    0xf3e(%rip),%rsi
mov    $0x2e,%edx
jmp    1030 <write@plt>
mov    0x2c37(%rip),%rax
mov    (%rax),%edi
lea    0xef4(%rip),%rsi
mov    $0x2f,%edx
jmp    1030 <write@plt>
mov    0x2c1d(%rip),%rax
mov    (%rax),%edi
lea    0xc94(%rip),%rsi
mov    $0x39,%edx
jmp    1030 <write@plt>
mov    0x2c03(%rip),%rax
mov    (%rax),%edi
lea    0xfd9(%rip),%rsi
mov    $0x1f,%edx
jmp    1030 <write@plt>
mov    0x2be9(%rip),%rax
mov    (%rax),%edi
lea    0xd97(%rip),%rsi
mov    $0x19,%edx
jmp    1030 <write@plt>

LLVM IR (-O0):
@STDOUT_FILENO = global i32 0
@.str = [58 x i8] c"\0ASIGBUS: access to undefined portion of a memory object\0A\00"
@.str.1 = [42 x i8] c"\0ASIGFPE: erroneous arithmetic operation\0A\00"
@.str.2 = [31 x i8] c"\0ASIGILL: illegal instruction\0A\00"
@.str.3 = [43 x i8] c"\0ASIGPIPE: write on a pipe with no reader\0A\00"
@.str.4 = [37 x i8] c"\0ASIGSEGV: invalid memory reference\0A\00"
@.str.5 = [27 x i8] c"\0ASIGSYS: bad system call\0A\00"
@.str.6 = [36 x i8] c"\0ASIGXCPU: CPU-time limit exceeded\0A\00"
@.str.7 = [37 x i8] c"\0ASIGXFSZ: file-size limit exceeded\0A\00"
@.str.8 = [26 x i8] c"\0ASIGABRT: call to abort\0A\00"
@.str.9 = [18 x i8] c"\0ASIGHUP: hangup\0A\00"
@.str.10 = [37 x i8] c"\0ASIGINT: interrupt (from keyboard)\0A\00"
@.str.11 = [33 x i8] c"\0ASIGKILL: kill; synthetic only\0A\00"
@.str.12 = [33 x i8] c"\0ASIGQUIT: quit (from keyboard)\0A\00"
@.str.13 = [40 x i8] c"\0ASIGTERM: termination; synthetic only\0A\00"
@.str.14 = [42 x i8] c"\0ASIGUSR1: user signal 1; synthetic only\0A\00"
@.str.15 = [42 x i8] c"\0ASIGUSR2: user signal 2; synthetic only\0A\00"
@.str.16 = [48 x i8] c"\0ASIGCHLD: child process terminated or stopped\0A\00"
@.str.17 = [47 x i8] c"\0ASIGCONT: continue executing (from keyboard)\0A\00"
@.str.18 = [43 x i8] c"\0ASIGSTOP: stop executing (from keyboard)\0A\00"
@.str.19 = [49 x i8] c"\0ASIGTSTP: terminal stop signal (from keyboard)\0A\00"
@.str.20 = [47 x i8] c"\0ASIGTTIN: background process attempting read\0A\00"
@.str.21 = [47 x i8] c"\0ASIGTTOU: background process attemping write\0A\00"
@.str.22 = [32 x i8] c"\0ASIGALRM: alarm clock expired\0A\00"
@.str.23 = [36 x i8] c"\0ASIGVTALRM: virtual timer expired\0A\00"
@.str.24 = [36 x i8] c"\0ASIGPROF: profiling timer expired\0A\00"
@.str.25 = [27 x i8] c"\0ASIGPOLL: pollable event\0A\00"
@.str.26 = [34 x i8] c"\0ASIGTRAP: trace/breakpoint trap\0A\00"
@.str.27 = [48 x i8] c"\0ASIGURG: out-of-band data available at socket\0A\00"
@.str.28 = [17 x i8] c"\0AUnknown signal\0A\00"
define void @print_sig_desc(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = load i32, i32* %2
switch i32 %3, label %88 [
i32 153, label %4
i32 150, label %7
i32 148, label %10
i32 145, label %13
i32 141, label %16
i32 139, label %19
i32 129, label %22
i32 128, label %25
i32 155, label %28
i32 149, label %31
i32 147, label %34
i32 146, label %37
i32 142, label %40
i32 138, label %43
i32 132, label %46
i32 131, label %49
i32 152, label %52
i32 151, label %55
i32 140, label %58
i32 136, label %61
i32 135, label %64
i32 134, label %67
i32 154, label %70
i32 130, label %73
i32 143, label %76
i32 144, label %79
i32 137, label %82
i32 133, label %85
]
4: ; preds = %1
%5 = load i32, i32* @STDOUT_FILENO
%6 = call i32 @write(i32 %5, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str, i64 0, i64 0), i32 57)
br label %91
7: ; preds = %1
%8 = load i32, i32* @STDOUT_FILENO
%9 = call i32 @write(i32 %8, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.1, i64 0, i64 0), i32 41)
br label %91
10: ; preds = %1
%11 = load i32, i32* @STDOUT_FILENO
%12 = call i32 @write(i32 %11, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.2, i64 0, i64 0), i32 30)
br label %91
13: ; preds = %1
%14 = load i32, i32* @STDOUT_FILENO
%15 = call i32 @write(i32 %14, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.3, i64 0, i64 0), i32 42)
br label %91
16: ; preds = %1
%17 = load i32, i32* @STDOUT_FILENO
%18 = call i32 @write(i32 %17, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0), i32 36)
br label %91
19: ; preds = %1
%20 = load i32, i32* @STDOUT_FILENO
%21 = call i32 @write(i32 %20, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.5, i64 0, i64 0), i32 26)
br label %91
22: ; preds = %1
%23 = load i32, i32* @STDOUT_FILENO
%24 = call i32 @write(i32 %23, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.6, i64 0, i64 0), i32 35)
br label %91
25: ; preds = %1
%26 = load i32, i32* @STDOUT_FILENO
%27 = call i32 @write(i32 %26, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.7, i64 0, i64 0), i32 36)
br label %91
28: ; preds = %1
%29 = load i32, i32* @STDOUT_FILENO
%30 = call i32 @write(i32 %29, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.8, i64 0, i64 0), i32 25)
br label %91
31: ; preds = %1
%32 = load i32, i32* @STDOUT_FILENO
%33 = call i32 @write(i32 %32, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0), i32 17)
br label %91
34: ; preds = %1
%35 = load i32, i32* @STDOUT_FILENO
%36 = call i32 @write(i32 %35, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), i32 36)
br label %91
37: ; preds = %1
%38 = load i32, i32* @STDOUT_FILENO
%39 = call i32 @write(i32 %38, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.11, i64 0, i64 0), i32 32)
br label %91
40: ; preds = %1
%41 = load i32, i32* @STDOUT_FILENO
%42 = call i32 @write(i32 %41, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.12, i64 0, i64 0), i32 32)
br label %91
43: ; preds = %1
%44 = load i32, i32* @STDOUT_FILENO
%45 = call i32 @write(i32 %44, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.13, i64 0, i64 0), i32 39)
br label %91
46: ; preds = %1
%47 = load i32, i32* @STDOUT_FILENO
%48 = call i32 @write(i32 %47, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.14, i64 0, i64 0), i32 41)
br label %91
49: ; preds = %1
%50 = load i32, i32* @STDOUT_FILENO
%51 = call i32 @write(i32 %50, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.15, i64 0, i64 0), i32 41)
br label %91
52: ; preds = %1
%53 = load i32, i32* @STDOUT_FILENO
%54 = call i32 @write(i32 %53, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.16, i64 0, i64 0), i32 47)
br label %91
55: ; preds = %1
%56 = load i32, i32* @STDOUT_FILENO
%57 = call i32 @write(i32 %56, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.17, i64 0, i64 0), i32 46)
br label %91
58: ; preds = %1
%59 = load i32, i32* @STDOUT_FILENO
%60 = call i32 @write(i32 %59, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0), i32 42)
br label %91
61: ; preds = %1
%62 = load i32, i32* @STDOUT_FILENO
%63 = call i32 @write(i32 %62, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.19, i64 0, i64 0), i32 48)
br label %91
64: ; preds = %1
%65 = load i32, i32* @STDOUT_FILENO
%66 = call i32 @write(i32 %65, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.20, i64 0, i64 0), i32 46)
br label %91
67: ; preds = %1
%68 = load i32, i32* @STDOUT_FILENO
%69 = call i32 @write(i32 %68, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.21, i64 0, i64 0), i32 46)
br label %91
70: ; preds = %1
%71 = load i32, i32* @STDOUT_FILENO
%72 = call i32 @write(i32 %71, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.22, i64 0, i64 0), i32 31)
br label %91
73: ; preds = %1
%74 = load i32, i32* @STDOUT_FILENO
%75 = call i32 @write(i32 %74, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.23, i64 0, i64 0), i32 35)
br label %91
76: ; preds = %1
%77 = load i32, i32* @STDOUT_FILENO
%78 = call i32 @write(i32 %77, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.24, i64 0, i64 0), i32 35)
br label %91
79: ; preds = %1
%80 = load i32, i32* @STDOUT_FILENO
%81 = call i32 @write(i32 %80, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.25, i64 0, i64 0), i32 26)
br label %91
82: ; preds = %1
%83 = load i32, i32* @STDOUT_FILENO
%84 = call i32 @write(i32 %83, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0), i32 33)
br label %91
85: ; preds = %1
%86 = load i32, i32* @STDOUT_FILENO
%87 = call i32 @write(i32 %86, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.27, i64 0, i64 0), i32 47)
br label %91
88: ; preds = %1
%89 = load i32, i32* @STDOUT_FILENO
%90 = call i32 @write(i32 %89, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.28, i64 0, i64 0), i32 16)
br label %91
91: ; preds = %88, %85, %82, %79, %76, %73, %70, %67, %64, %61, %58, %55, %52, %49, %46, %43, %40, %37, %34, %31, %28, %25, %22, %19, %16, %13, %10, %7, %4
ret void
}

LLVM IR (-O2):
@STDOUT_FILENO = global i32 0
@.str = [58 x i8] c"\0ASIGBUS: access to undefined portion of a memory object\0A\00"
@.str.1 = [42 x i8] c"\0ASIGFPE: erroneous arithmetic operation\0A\00"
@.str.2 = [31 x i8] c"\0ASIGILL: illegal instruction\0A\00"
@.str.3 = [43 x i8] c"\0ASIGPIPE: write on a pipe with no reader\0A\00"
@.str.4 = [37 x i8] c"\0ASIGSEGV: invalid memory reference\0A\00"
@.str.5 = [27 x i8] c"\0ASIGSYS: bad system call\0A\00"
@.str.6 = [36 x i8] c"\0ASIGXCPU: CPU-time limit exceeded\0A\00"
@.str.7 = [37 x i8] c"\0ASIGXFSZ: file-size limit exceeded\0A\00"
@.str.8 = [26 x i8] c"\0ASIGABRT: call to abort\0A\00"
@.str.9 = [18 x i8] c"\0ASIGHUP: hangup\0A\00"
@.str.10 = [37 x i8] c"\0ASIGINT: interrupt (from keyboard)\0A\00"
@.str.11 = [33 x i8] c"\0ASIGKILL: kill; synthetic only\0A\00"
@.str.12 = [33 x i8] c"\0ASIGQUIT: quit (from keyboard)\0A\00"
@.str.13 = [40 x i8] c"\0ASIGTERM: termination; synthetic only\0A\00"
@.str.14 = [42 x i8] c"\0ASIGUSR1: user signal 1; synthetic only\0A\00"
@.str.15 = [42 x i8] c"\0ASIGUSR2: user signal 2; synthetic only\0A\00"
@.str.16 = [48 x i8] c"\0ASIGCHLD: child process terminated or stopped\0A\00"
@.str.17 = [47 x i8] c"\0ASIGCONT: continue executing (from keyboard)\0A\00"
@.str.18 = [43 x i8] c"\0ASIGSTOP: stop executing (from keyboard)\0A\00"
@.str.19 = [49 x i8] c"\0ASIGTSTP: terminal stop signal (from keyboard)\0A\00"
@.str.20 = [47 x i8] c"\0ASIGTTIN: background process attempting read\0A\00"
@.str.21 = [47 x i8] c"\0ASIGTTOU: background process attemping write\0A\00"
@.str.22 = [32 x i8] c"\0ASIGALRM: alarm clock expired\0A\00"
@.str.23 = [36 x i8] c"\0ASIGVTALRM: virtual timer expired\0A\00"
@.str.24 = [36 x i8] c"\0ASIGPROF: profiling timer expired\0A\00"
@.str.25 = [27 x i8] c"\0ASIGPOLL: pollable event\0A\00"
@.str.26 = [34 x i8] c"\0ASIGTRAP: trace/breakpoint trap\0A\00"
@.str.27 = [48 x i8] c"\0ASIGURG: out-of-band data available at socket\0A\00"
@.str.28 = [17 x i8] c"\0AUnknown signal\0A\00"
define void @print_sig_desc(i32 %0) {
switch i32 %0, label %86 [
i32 153, label %2
i32 150, label %5
i32 148, label %8
i32 145, label %11
i32 141, label %14
i32 139, label %17
i32 129, label %20
i32 128, label %23
i32 155, label %26
i32 149, label %29
i32 147, label %32
i32 146, label %35
i32 142, label %38
i32 138, label %41
i32 132, label %44
i32 131, label %47
i32 152, label %50
i32 151, label %53
i32 140, label %56
i32 136, label %59
i32 135, label %62
i32 134, label %65
i32 154, label %68
i32 130, label %71
i32 143, label %74
i32 144, label %77
i32 137, label %80
i32 133, label %83
]
2: ; preds = %1
%3 = load i32, i32* @STDOUT_FILENO
%4 = tail call i32 @write(i32 %3, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str, i64 0, i64 0), i32 57)
br label %89
5: ; preds = %1
%6 = load i32, i32* @STDOUT_FILENO
%7 = tail call i32 @write(i32 %6, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.1, i64 0, i64 0), i32 41)
br label %89
8: ; preds = %1
%9 = load i32, i32* @STDOUT_FILENO
%10 = tail call i32 @write(i32 %9, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.2, i64 0, i64 0), i32 30)
br label %89
11: ; preds = %1
%12 = load i32, i32* @STDOUT_FILENO
%13 = tail call i32 @write(i32 %12, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.3, i64 0, i64 0), i32 42)
br label %89
14: ; preds = %1
%15 = load i32, i32* @STDOUT_FILENO
%16 = tail call i32 @write(i32 %15, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0), i32 36)
br label %89
17: ; preds = %1
%18 = load i32, i32* @STDOUT_FILENO
%19 = tail call i32 @write(i32 %18, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.5, i64 0, i64 0), i32 26)
br label %89
20: ; preds = %1
%21 = load i32, i32* @STDOUT_FILENO
%22 = tail call i32 @write(i32 %21, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.6, i64 0, i64 0), i32 35)
br label %89
23: ; preds = %1
%24 = load i32, i32* @STDOUT_FILENO
%25 = tail call i32 @write(i32 %24, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.7, i64 0, i64 0), i32 36)
br label %89
26: ; preds = %1
%27 = load i32, i32* @STDOUT_FILENO
%28 = tail call i32 @write(i32 %27, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.8, i64 0, i64 0), i32 25)
br label %89
29: ; preds = %1
%30 = load i32, i32* @STDOUT_FILENO
%31 = tail call i32 @write(i32 %30, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0), i32 17)
br label %89
32: ; preds = %1
%33 = load i32, i32* @STDOUT_FILENO
%34 = tail call i32 @write(i32 %33, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), i32 36)
br label %89
35: ; preds = %1
%36 = load i32, i32* @STDOUT_FILENO
%37 = tail call i32 @write(i32 %36, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.11, i64 0, i64 0), i32 32)
br label %89
38: ; preds = %1
%39 = load i32, i32* @STDOUT_FILENO
%40 = tail call i32 @write(i32 %39, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.12, i64 0, i64 0), i32 32)
br label %89
41: ; preds = %1
%42 = load i32, i32* @STDOUT_FILENO
%43 = tail call i32 @write(i32 %42, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.13, i64 0, i64 0), i32 39)
br label %89
44: ; preds = %1
%45 = load i32, i32* @STDOUT_FILENO
%46 = tail call i32 @write(i32 %45, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.14, i64 0, i64 0), i32 41)
br label %89
47: ; preds = %1
%48 = load i32, i32* @STDOUT_FILENO
%49 = tail call i32 @write(i32 %48, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.15, i64 0, i64 0), i32 41)
br label %89
50: ; preds = %1
%51 = load i32, i32* @STDOUT_FILENO
%52 = tail call i32 @write(i32 %51, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.16, i64 0, i64 0), i32 47)
br label %89
53: ; preds = %1
%54 = load i32, i32* @STDOUT_FILENO
%55 = tail call i32 @write(i32 %54, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.17, i64 0, i64 0), i32 46)
br label %89
56: ; preds = %1
%57 = load i32, i32* @STDOUT_FILENO
%58 = tail call i32 @write(i32 %57, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0), i32 42)
br label %89
59: ; preds = %1
%60 = load i32, i32* @STDOUT_FILENO
%61 = tail call i32 @write(i32 %60, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.19, i64 0, i64 0), i32 48)
br label %89
62: ; preds = %1
%63 = load i32, i32* @STDOUT_FILENO
%64 = tail call i32 @write(i32 %63, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.20, i64 0, i64 0), i32 46)
br label %89
65: ; preds = %1
%66 = load i32, i32* @STDOUT_FILENO
%67 = tail call i32 @write(i32 %66, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.21, i64 0, i64 0), i32 46)
br label %89
68: ; preds = %1
%69 = load i32, i32* @STDOUT_FILENO
%70 = tail call i32 @write(i32 %69, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.22, i64 0, i64 0), i32 31)
br label %89
71: ; preds = %1
%72 = load i32, i32* @STDOUT_FILENO
%73 = tail call i32 @write(i32 %72, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.23, i64 0, i64 0), i32 35)
br label %89
74: ; preds = %1
%75 = load i32, i32* @STDOUT_FILENO
%76 = tail call i32 @write(i32 %75, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.24, i64 0, i64 0), i32 35)
br label %89
77: ; preds = %1
%78 = load i32, i32* @STDOUT_FILENO
%79 = tail call i32 @write(i32 %78, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.25, i64 0, i64 0), i32 26)
br label %89
80: ; preds = %1
%81 = load i32, i32* @STDOUT_FILENO
%82 = tail call i32 @write(i32 %81, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0), i32 33)
br label %89
83: ; preds = %1
%84 = load i32, i32* @STDOUT_FILENO
%85 = tail call i32 @write(i32 %84, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.27, i64 0, i64 0), i32 47)
br label %89
86: ; preds = %1
%87 = load i32, i32* @STDOUT_FILENO
%88 = tail call i32 @write(i32 %87, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.28, i64 0, i64 0), i32 16)
br label %89
89: ; preds = %86, %83, %80, %77, %74, %71, %68, %65, %62, %59, %56, %53, %50, %47, %44, %41, %38, %35, %32, %29, %26, %23, %20, %17, %14, %11, %8, %5, %2
ret void
}