#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 *decode_cc(unsigned short, int);
int /*<<< orphan*/ sprintf(char *, char *, int);
char *decode_rv(int rv) {
  char *msg;
  static char msgbuf[80];
  if (rv == 0x6F)
    msg = "License not supported";
  else if (rv > 0)
    msg = decode_cc((unsigned short)0, rv);
  else
    switch (rv) {
    case 0:
      msg = "completed successfully";
      break;
    case -1:
      msg = "error -1";
      break;
    case -2:
      msg = "send to BMC failed";
      break;
    case -3:
      msg = "receive from BMC failed";
      break;
    case -4:
      msg = "cannot connect to BMC";
      break;
    case -5:
      msg = "abort signal caught";
      break;
    case -6:
      msg = "timeout occurred";
      break;
    case -7:
      msg = "length greater than max";
      break;
    case -8:
      msg = "invalid lan parameter";
      break;
    case -9:
      msg = "request not supported";
      break;
    case -10:
      msg = "receive too short";
      break;
    case -11:
      msg = "error resolving hostname";
      break;
    case -12:
      msg = "error during ping";
      break;
    case -14:
      msg = "BMC only supports lan v1";
      break;
    case -15:
      msg = "BMC only supports lan v2";
      break;
    case -13:
      msg = "other error";
      break;
    case -16:
      msg = "cannot open IPMI driver";
      break;
    case -17:
      msg = "invalid parameter";
      break;
    case -18:
      msg = "access not allowed";
      break;
    case -22:
      msg = "usage or help requested";
      break;
    case -19:
      msg = "session dropped by BMC";
      break;
    case -20:
      msg = "cannot open file";
      break;
    case -21:
      msg = "item not found";
      break;
    case -504:
      msg = "error getting msg from BMC";
      break;
    case -23:
      msg = "bad format";
      break;
    case -24:
      msg = "length less than min";
      break;
    default:
      sprintf(msgbuf, "error %d", rv);
      msg = msgbuf;
      break;
    }
  return (msg);
}


x86 assembly (clang, -O0):
<decode_rv>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
cmpl   $0x6f,-0x4(%rbp)
jne    1145 <decode_rv+0x25>
lea    0xec4(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14eb <decode_rv+0x3cb>
cmpl   $0x0,-0x4(%rbp)
jle    1162 <decode_rv+0x42>
mov    -0x4(%rbp),%esi
xor    %edi,%edi
call   1030 <decode_cc@plt>
mov    %rax,-0x10(%rbp)
jmp    14e6 <decode_rv+0x3c6>
mov    -0x4(%rbp),%eax
mov    %eax,-0x14(%rbp)
sub    $0xfffffe08,%eax
je     1490 <decode_rv+0x370>
jmp    1178 <decode_rv+0x58>
mov    -0x14(%rbp),%eax
sub    $0xffffffe8,%eax
je     14b0 <decode_rv+0x390>
jmp    1189 <decode_rv+0x69>
mov    -0x14(%rbp),%eax
sub    $0xffffffe9,%eax
je     14a0 <decode_rv+0x380>
jmp    119a <decode_rv+0x7a>
mov    -0x14(%rbp),%eax
sub    $0xffffffea,%eax
je     1450 <decode_rv+0x330>
jmp    11ab <decode_rv+0x8b>
mov    -0x14(%rbp),%eax
sub    $0xffffffeb,%eax
je     1480 <decode_rv+0x360>
jmp    11bc <decode_rv+0x9c>
mov    -0x14(%rbp),%eax
sub    $0xffffffec,%eax
je     1470 <decode_rv+0x350>
jmp    11cd <decode_rv+0xad>
mov    -0x14(%rbp),%eax
sub    $0xffffffed,%eax
je     1460 <decode_rv+0x340>
jmp    11de <decode_rv+0xbe>
mov    -0x14(%rbp),%eax
sub    $0xffffffee,%eax
je     1440 <decode_rv+0x320>
jmp    11ef <decode_rv+0xcf>
mov    -0x14(%rbp),%eax
sub    $0xffffffef,%eax
je     1430 <decode_rv+0x310>
jmp    1200 <decode_rv+0xe0>
mov    -0x14(%rbp),%eax
sub    $0xfffffff0,%eax
je     1420 <decode_rv+0x300>
jmp    1211 <decode_rv+0xf1>
mov    -0x14(%rbp),%eax
sub    $0xfffffff1,%eax
je     1400 <decode_rv+0x2e0>
jmp    1222 <decode_rv+0x102>
mov    -0x14(%rbp),%eax
sub    $0xfffffff2,%eax
je     13f0 <decode_rv+0x2d0>
jmp    1233 <decode_rv+0x113>
mov    -0x14(%rbp),%eax
sub    $0xfffffff3,%eax
je     1410 <decode_rv+0x2f0>
jmp    1244 <decode_rv+0x124>
mov    -0x14(%rbp),%eax
sub    $0xfffffff4,%eax
je     13e0 <decode_rv+0x2c0>
jmp    1255 <decode_rv+0x135>
mov    -0x14(%rbp),%eax
sub    $0xfffffff5,%eax
je     13d0 <decode_rv+0x2b0>
jmp    1266 <decode_rv+0x146>
mov    -0x14(%rbp),%eax
sub    $0xfffffff6,%eax
je     13c0 <decode_rv+0x2a0>
jmp    1277 <decode_rv+0x157>
mov    -0x14(%rbp),%eax
sub    $0xfffffff7,%eax
je     13b0 <decode_rv+0x290>
jmp    1288 <decode_rv+0x168>
mov    -0x14(%rbp),%eax
sub    $0xfffffff8,%eax
je     13a0 <decode_rv+0x280>
jmp    1299 <decode_rv+0x179>
mov    -0x14(%rbp),%eax
sub    $0xfffffff9,%eax
je     1390 <decode_rv+0x270>
jmp    12aa <decode_rv+0x18a>
mov    -0x14(%rbp),%eax
sub    $0xfffffffa,%eax
je     1380 <decode_rv+0x260>
jmp    12bb <decode_rv+0x19b>
mov    -0x14(%rbp),%eax
sub    $0xfffffffb,%eax
je     1370 <decode_rv+0x250>
jmp    12cc <decode_rv+0x1ac>
mov    -0x14(%rbp),%eax
sub    $0xfffffffc,%eax
je     1360 <decode_rv+0x240>
jmp    12dd <decode_rv+0x1bd>
mov    -0x14(%rbp),%eax
sub    $0xfffffffd,%eax
je     1350 <decode_rv+0x230>
jmp    12ee <decode_rv+0x1ce>
mov    -0x14(%rbp),%eax
sub    $0xfffffffe,%eax
je     1340 <decode_rv+0x220>
jmp    12ff <decode_rv+0x1df>
mov    -0x14(%rbp),%eax
sub    $0xffffffff,%eax
je     1330 <decode_rv+0x210>
jmp    1310 <decode_rv+0x1f0>
mov    -0x14(%rbp),%eax
test   %eax,%eax
jne    14c0 <decode_rv+0x3a0>
jmp    1320 <decode_rv+0x200>
lea    0xcef(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xcf6(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xcef(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xcf2(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xcfa(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd00(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd04(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd05(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd0d(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd13(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd19(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd1b(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd24(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd26(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd2f(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd38(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd34(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd3c(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd3e(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd41(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd49(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd50(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd51(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd50(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd5b(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
lea    0xd56(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e1 <decode_rv+0x3c1>
mov    -0x4(%rbp),%edx
lea    0x2b76(%rip),%rdi
lea    0xd51(%rip),%rsi
call   1040 <sprintf@plt>
lea    0x2b63(%rip),%rax
mov    %rax,-0x10(%rbp)
jmp    14e6 <decode_rv+0x3c6>
jmp    14eb <decode_rv+0x3cb>
mov    -0x10(%rbp),%rax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<decode_rv>:
push   %rbx
cmp    $0x6f,%edi
jne    1132 <decode_rv+0x12>
lea    0xf37(%rip),%rbx
mov    %rbx,%rax
pop    %rbx
ret
mov    %edi,%edx
test   %edi,%edi
jle    1142 <decode_rv+0x22>
xor    %edi,%edi
mov    %edx,%esi
pop    %rbx
jmp    1030 <decode_cc@plt>
lea    0x18(%rdx),%eax
cmp    $0x18,%eax
ja     116a <decode_rv+0x4a>
lea    0xf29(%rip),%rbx
lea    0xea8(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1109(%rip),%rbx
jmp    112d <decode_rv+0xd>
cmp    $0xfffffe08,%edx
jne    1278 <decode_rv+0x158>
lea    0x10ce(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0x10e0(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0x106d(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0x10a4(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0x108a(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0x106a(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0x1036(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0x1018(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xff4(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xfc3(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xf9e(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xfc4(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xf74(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xf4f(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xf31(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xf0f(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xeed(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xec9(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xeac(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xe8c(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xe6a(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xe46(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0xe1e(%rip),%rbx
jmp    112d <decode_rv+0xd>
lea    0x2dc1(%rip),%rbx
lea    0x1000(%rip),%rsi
mov    %rbx,%rdi
call   1040 <sprintf@plt>
jmp    112d <decode_rv+0xd>
lea    0xe00(%rip),%rbx
jmp    112d <decode_rv+0xd>

LLVM IR (-O0):
@decode_rv.msgbuf = internal global [80 x i8] zeroinitializer
@.str = [22 x i8] c"License not supported\00"
@.str.1 = [23 x i8] c"completed successfully\00"
@.str.2 = [9 x i8] c"error -1\00"
@.str.3 = [19 x i8] c"send to BMC failed\00"
@.str.4 = [24 x i8] c"receive from BMC failed\00"
@.str.5 = [22 x i8] c"cannot connect to BMC\00"
@.str.6 = [20 x i8] c"abort signal caught\00"
@.str.7 = [17 x i8] c"timeout occurred\00"
@.str.8 = [24 x i8] c"length greater than max\00"
@.str.9 = [22 x i8] c"invalid lan parameter\00"
@.str.10 = [22 x i8] c"request not supported\00"
@.str.11 = [18 x i8] c"receive too short\00"
@.str.12 = [25 x i8] c"error resolving hostname\00"
@.str.13 = [18 x i8] c"error during ping\00"
@.str.14 = [25 x i8] c"BMC only supports lan v1\00"
@.str.15 = [25 x i8] c"BMC only supports lan v2\00"
@.str.16 = [12 x i8] c"other error\00"
@.str.17 = [24 x i8] c"cannot open IPMI driver\00"
@.str.18 = [18 x i8] c"invalid parameter\00"
@.str.19 = [19 x i8] c"access not allowed\00"
@.str.20 = [24 x i8] c"usage or help requested\00"
@.str.21 = [23 x i8] c"session dropped by BMC\00"
@.str.22 = [17 x i8] c"cannot open file\00"
@.str.23 = [15 x i8] c"item not found\00"
@.str.24 = [27 x i8] c"error getting msg from BMC\00"
@.str.25 = [11 x i8] c"bad format\00"
@.str.26 = [21 x i8] c"length less than min\00"
@.str.27 = [9 x i8] c"error %d\00"
define i8* @decode_rv(i32 %0) {
%2 = alloca i32
%3 = alloca i8*
store i32 %0, i32* %2
%4 = load i32, i32* %2
%5 = icmp eq i32 %4, 111
br i1 %5, label %6, label %7
6: ; preds = %1
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i8** %3
br label %46
7: ; preds = %1
%8 = load i32, i32* %2
%9 = icmp sgt i32 %8, 0
br i1 %9, label %10, label %13
10: ; preds = %7
%11 = load i32, i32* %2
%12 = call i8* @decode_cc(i16 zeroext 0, i32 %11)
store i8* %12, i8** %3
br label %45
13: ; preds = %7
%14 = load i32, i32* %2
switch i32 %14, label %41 [
i32 0, label %15
i32 -1, label %16
i32 -2, label %17
i32 -3, label %18
i32 -4, label %19
i32 -5, label %20
i32 -6, label %21
i32 -7, label %22
i32 -8, label %23
i32 -9, label %24
i32 -10, label %25
i32 -11, label %26
i32 -12, label %27
i32 -14, label %28
i32 -15, label %29
i32 -13, label %30
i32 -16, label %31
i32 -17, label %32
i32 -18, label %33
i32 -22, label %34
i32 -19, label %35
i32 -20, label %36
i32 -21, label %37
i32 -504, label %38
i32 -23, label %39
i32 -24, label %40
]
15: ; preds = %13
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), i8** %3
br label %44
16: ; preds = %13
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), i8** %3
br label %44
17: ; preds = %13
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0), i8** %3
br label %44
18: ; preds = %13
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.4, i64 0, i64 0), i8** %3
br label %44
19: ; preds = %13
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0), i8** %3
br label %44
20: ; preds = %13
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.6, i64 0, i64 0), i8** %3
br label %44
21: ; preds = %13
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), i8** %3
br label %44
22: ; preds = %13
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.8, i64 0, i64 0), i8** %3
br label %44
23: ; preds = %13
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.9, i64 0, i64 0), i8** %3
br label %44
24: ; preds = %13
store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.10, i64 0, i64 0), i8** %3
br label %44
25: ; preds = %13
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), i8** %3
br label %44
26: ; preds = %13
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.12, i64 0, i64 0), i8** %3
br label %44
27: ; preds = %13
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.13, i64 0, i64 0), i8** %3
br label %44
28: ; preds = %13
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.14, i64 0, i64 0), i8** %3
br label %44
29: ; preds = %13
store i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.15, i64 0, i64 0), i8** %3
br label %44
30: ; preds = %13
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0), i8** %3
br label %44
31: ; preds = %13
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.17, i64 0, i64 0), i8** %3
br label %44
32: ; preds = %13
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.18, i64 0, i64 0), i8** %3
br label %44
33: ; preds = %13
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.19, i64 0, i64 0), i8** %3
br label %44
34: ; preds = %13
store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.20, i64 0, i64 0), i8** %3
br label %44
35: ; preds = %13
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.21, i64 0, i64 0), i8** %3
br label %44
36: ; preds = %13
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.22, i64 0, i64 0), i8** %3
br label %44
37: ; preds = %13
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.23, i64 0, i64 0), i8** %3
br label %44
38: ; preds = %13
store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.24, i64 0, i64 0), i8** %3
br label %44
39: ; preds = %13
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.25, i64 0, i64 0), i8** %3
br label %44
40: ; preds = %13
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.26, i64 0, i64 0), i8** %3
br label %44
41: ; preds = %13
%42 = load i32, i32* %2
%43 = call i32 @sprintf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @decode_rv.msgbuf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.27, i64 0, i64 0), i32 %42)
store i8* getelementptr inbounds ([80 x i8], [80 x i8]* @decode_rv.msgbuf, i64 0, i64 0), i8** %3
br label %44
44: ; preds = %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
br label %45
45: ; preds = %44, %10
br label %46
46: ; preds = %45, %6
%47 = load i8*, i8** %3
ret i8* %47
}

LLVM IR (-O2):
@decode_rv.msgbuf = internal global [80 x i8] zeroinitializer
@.str = [22 x i8] c"License not supported\00"
@.str.1 = [23 x i8] c"completed successfully\00"
@.str.2 = [9 x i8] c"error -1\00"
@.str.3 = [19 x i8] c"send to BMC failed\00"
@.str.4 = [24 x i8] c"receive from BMC failed\00"
@.str.5 = [22 x i8] c"cannot connect to BMC\00"
@.str.6 = [20 x i8] c"abort signal caught\00"
@.str.7 = [17 x i8] c"timeout occurred\00"
@.str.8 = [24 x i8] c"length greater than max\00"
@.str.9 = [22 x i8] c"invalid lan parameter\00"
@.str.10 = [22 x i8] c"request not supported\00"
@.str.11 = [18 x i8] c"receive too short\00"
@.str.12 = [25 x i8] c"error resolving hostname\00"
@.str.13 = [18 x i8] c"error during ping\00"
@.str.14 = [25 x i8] c"BMC only supports lan v1\00"
@.str.15 = [25 x i8] c"BMC only supports lan v2\00"
@.str.16 = [12 x i8] c"other error\00"
@.str.17 = [24 x i8] c"cannot open IPMI driver\00"
@.str.18 = [18 x i8] c"invalid parameter\00"
@.str.19 = [19 x i8] c"access not allowed\00"
@.str.20 = [24 x i8] c"usage or help requested\00"
@.str.21 = [23 x i8] c"session dropped by BMC\00"
@.str.22 = [17 x i8] c"cannot open file\00"
@.str.23 = [15 x i8] c"item not found\00"
@.str.24 = [27 x i8] c"error getting msg from BMC\00"
@.str.25 = [11 x i8] c"bad format\00"
@.str.26 = [21 x i8] c"length less than min\00"
@.str.27 = [9 x i8] c"error %d\00"
define i8* @decode_rv(i32 %0) {
%2 = icmp eq i32 %0, 111
br i1 %2, label %35, label %3
3: ; preds = %1
%4 = icmp sgt i32 %0, 0
br i1 %4, label %5, label %7
5: ; preds = %3
%6 = tail call i8* @decode_cc(i16 zeroext 0, i32 %0)
br label %35
7: ; preds = %3
switch i32 %0, label %33 [
i32 0, label %35
i32 -1, label %8
i32 -2, label %9
i32 -3, label %10
i32 -4, label %11
i32 -5, label %12
i32 -6, label %13
i32 -7, label %14
i32 -8, label %15
i32 -9, label %16
i32 -10, label %17
i32 -11, label %18
i32 -12, label %19
i32 -14, label %20
i32 -15, label %21
i32 -13, label %22
i32 -16, label %23
i32 -17, label %24
i32 -18, label %25
i32 -22, label %26
i32 -19, label %27
i32 -20, label %28
i32 -21, label %29
i32 -504, label %30
i32 -23, label %31
i32 -24, label %32
]
8: ; preds = %7
br label %35
9: ; preds = %7
br label %35
10: ; preds = %7
br label %35
11: ; preds = %7
br label %35
12: ; preds = %7
br label %35
13: ; preds = %7
br label %35
14: ; preds = %7
br label %35
15: ; preds = %7
br label %35
16: ; preds = %7
br label %35
17: ; preds = %7
br label %35
18: ; preds = %7
br label %35
19: ; preds = %7
br label %35
20: ; preds = %7
br label %35
21: ; preds = %7
br label %35
22: ; preds = %7
br label %35
23: ; preds = %7
br label %35
24: ; preds = %7
br label %35
25: ; preds = %7
br label %35
26: ; preds = %7
br label %35
27: ; preds = %7
br label %35
28: ; preds = %7
br label %35
29: ; preds = %7
br label %35
30: ; preds = %7
br label %35
31: ; preds = %7
br label %35
32: ; preds = %7
br label %35
33: ; preds = %7
%34 = tail call i32 @sprintf(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @decode_rv.msgbuf, i64 0, i64 0), i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.27, i64 0, i64 0), i32 %0)
br label %35
35: ; preds = %7, %1, %5, %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
%36 = phi i8* [ %6, %5 ], [ getelementptr inbounds ([80 x i8], [80 x i8]* @decode_rv.msgbuf, i64 0, i64 0), %33 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.26, i64 0, i64 0), %32 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.25, i64 0, i64 0), %31 ], [ getelementptr inbounds ([27 x i8], [27 x i8]* @.str.24, i64 0, i64 0), %30 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.23, i64 0, i64 0), %29 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.22, i64 0, i64 0), %28 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.21, i64 0, i64 0), %27 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.20, i64 0, i64 0), %26 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.19, i64 0, i64 0), %25 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.18, i64 0, i64 0), %24 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.17, i64 0, i64 0), %23 ], [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0), %22 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.15, i64 0, i64 0), %21 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.14, i64 0, i64 0), %20 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.13, i64 0, i64 0), %19 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.12, i64 0, i64 0), %18 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), %17 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.10, i64 0, i64 0), %16 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.9, i64 0, i64 0), %15 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.8, i64 0, i64 0), %14 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), %13 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @.str.6, i64 0, i64 0), %12 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0), %11 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.4, i64 0, i64 0), %10 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0), %9 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), %8 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), %1 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), %7 ]
ret i8* %36
}