#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 */
long LONG_MAX;
long LONG_MIN;
short SHRT_MAX;
short SHRT_MIN;
unsigned long ULONG_MAX;
unsigned short USHRT_MAX;
int /*<<< orphan*/ printf(char *);
extern short Green13(short s1, short s2, unsigned short us1, long l1, long l2,
                     unsigned long ul1, short s3, short s4, unsigned short us2,
                     long l3, long l4, unsigned long ul2) {
  printf(" Green13: ");
  if (s1 == SHRT_MIN && s2 == SHRT_MAX && us1 == USHRT_MAX && l1 == LONG_MIN &&
      l2 == LONG_MAX && ul1 == ULONG_MAX && s3 == SHRT_MIN && s4 == SHRT_MAX &&
      us2 == USHRT_MAX && l3 == LONG_MIN && l4 == LONG_MAX &&
      ul2 == ULONG_MAX) {
    printf(" Test passed\n");
    return 1;
  } else {
    printf(" Test failed\n");
    if (s1 != SHRT_MIN)
      printf(" s1 != SHRT_MIN\n");
    if (s2 != SHRT_MAX)
      printf(" s2 != SHRT_MIN\n");
    if (us1 != USHRT_MAX)
      printf("  us1 != USHRT_MAX\n");
    if (l1 != LONG_MIN)
      printf(" l1 != LONG_MIN\n");
    if (l2 != LONG_MAX)
      printf(" l2 != LONG_MAX\n");
    if (ul1 != ULONG_MAX)
      printf(" ul1 == ULONG_MAX\n");
    if (s3 != SHRT_MIN)
      printf(" s3 != SHRT_MIN\n");
    if (s4 != SHRT_MAX)
      printf(" s4 != SHRT_MAX\n");
    if (us2 != USHRT_MAX)
      printf(" us2 != USHRT_MAX\n");
    if (l3 != LONG_MIN)
      printf(" l3 != LONG_MIN\n");
    if (l4 != LONG_MAX)
      printf(" l4 != LONG_MAX\n");
    if (ul2 != ULONG_MAX)
      printf(" ul2 != LONG_MAX\n");
  }
  return 1;
}


x86 assembly (clang, -O0):
<Green13>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %dx,%ax
mov    %si,%dx
mov    %di,%si
mov    0x38(%rbp),%rdi
mov    0x30(%rbp),%rdi
mov    0x28(%rbp),%rdi
mov    0x20(%rbp),%di
mov    0x18(%rbp),%di
mov    0x10(%rbp),%di
mov    %si,-0x4(%rbp)
mov    %dx,-0x6(%rbp)
mov    %ax,-0x8(%rbp)
mov    %rcx,-0x10(%rbp)
mov    %r8,-0x18(%rbp)
mov    %r9,-0x20(%rbp)
lea    0xea8(%rip),%rdi
call   1030 <printf@plt>
movswl -0x4(%rbp),%eax
mov    0x2e60(%rip),%rcx
movswl (%rcx),%ecx
cmp    %ecx,%eax
jne    1270 <Green13+0x160>
movswl -0x6(%rbp),%eax
mov    0x2e42(%rip),%rcx
movswl (%rcx),%ecx
cmp    %ecx,%eax
jne    1270 <Green13+0x160>
movzwl -0x8(%rbp),%eax
mov    0x2e54(%rip),%rcx
movzwl (%rcx),%ecx
cmp    %ecx,%eax
jne    1270 <Green13+0x160>
mov    -0x10(%rbp),%rax
mov    0x2e36(%rip),%rcx
cmp    (%rcx),%rax
jne    1270 <Green13+0x160>
mov    -0x18(%rbp),%rax
mov    0x2e12(%rip),%rcx
cmp    (%rcx),%rax
jne    1270 <Green13+0x160>
mov    -0x20(%rbp),%rax
mov    0x2dde(%rip),%rcx
cmp    (%rcx),%rax
jne    1270 <Green13+0x160>
movswl 0x10(%rbp),%eax
mov    0x2de2(%rip),%rcx
movswl (%rcx),%ecx
cmp    %ecx,%eax
jne    1270 <Green13+0x160>
movswl 0x18(%rbp),%eax
mov    0x2dc4(%rip),%rcx
movswl (%rcx),%ecx
cmp    %ecx,%eax
jne    1270 <Green13+0x160>
movzwl 0x20(%rbp),%eax
mov    0x2dd6(%rip),%rcx
movzwl (%rcx),%ecx
cmp    %ecx,%eax
jne    1270 <Green13+0x160>
mov    0x28(%rbp),%rax
mov    0x2db8(%rip),%rcx
cmp    (%rcx),%rax
jne    1270 <Green13+0x160>
mov    0x30(%rbp),%rax
mov    0x2d94(%rip),%rcx
cmp    (%rcx),%rax
jne    1270 <Green13+0x160>
mov    0x38(%rbp),%rax
mov    0x2d60(%rip),%rcx
cmp    (%rcx),%rax
jne    1270 <Green13+0x160>
lea    0xdab(%rip),%rdi
call   1030 <printf@plt>
movw   $0x1,-0x2(%rbp)
jmp    1413 <Green13+0x303>
lea    0xda2(%rip),%rdi
call   1030 <printf@plt>
movswl -0x4(%rbp),%eax
mov    0x2d41(%rip),%rcx
movswl (%rcx),%ecx
cmp    %ecx,%eax
je     129e <Green13+0x18e>
lea    0xd8e(%rip),%rdi
call   1030 <printf@plt>
movswl -0x6(%rbp),%eax
mov    0x2d17(%rip),%rcx
movswl (%rcx),%ecx
cmp    %ecx,%eax
je     12c0 <Green13+0x1b0>
lea    0xd7d(%rip),%rdi
call   1030 <printf@plt>
movzwl -0x8(%rbp),%eax
mov    0x2d1d(%rip),%rcx
movzwl (%rcx),%ecx
cmp    %ecx,%eax
je     12e2 <Green13+0x1d2>
lea    0xd6c(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%rax
mov    0x2cf3(%rip),%rcx
cmp    (%rcx),%rax
je     1302 <Green13+0x1f2>
lea    0xd60(%rip),%rdi
call   1030 <printf@plt>
mov    -0x18(%rbp),%rax
mov    0x2cc3(%rip),%rcx
cmp    (%rcx),%rax
je     1322 <Green13+0x212>
lea    0xd51(%rip),%rdi
call   1030 <printf@plt>
mov    -0x20(%rbp),%rax
mov    0x2c83(%rip),%rcx
cmp    (%rcx),%rax
je     1342 <Green13+0x232>
lea    0xd42(%rip),%rdi
call   1030 <printf@plt>
movswl 0x10(%rbp),%eax
mov    0x2c7b(%rip),%rcx
movswl (%rcx),%ecx
cmp    %ecx,%eax
je     1364 <Green13+0x254>
lea    0xd33(%rip),%rdi
call   1030 <printf@plt>
movswl 0x18(%rbp),%eax
mov    0x2c51(%rip),%rcx
movswl (%rcx),%ecx
cmp    %ecx,%eax
je     1386 <Green13+0x276>
lea    0xd22(%rip),%rdi
call   1030 <printf@plt>
movzwl 0x20(%rbp),%eax
mov    0x2c57(%rip),%rcx
movzwl (%rcx),%ecx
cmp    %ecx,%eax
je     13a8 <Green13+0x298>
lea    0xd11(%rip),%rdi
call   1030 <printf@plt>
mov    0x28(%rbp),%rax
mov    0x2c2d(%rip),%rcx
cmp    (%rcx),%rax
je     13c8 <Green13+0x2b8>
lea    0xd04(%rip),%rdi
call   1030 <printf@plt>
mov    0x30(%rbp),%rax
mov    0x2bfd(%rip),%rcx
cmp    (%rcx),%rax
je     13e8 <Green13+0x2d8>
lea    0xcf5(%rip),%rdi
call   1030 <printf@plt>
mov    0x38(%rbp),%rax
mov    0x2bbd(%rip),%rcx
cmp    (%rcx),%rax
je     1408 <Green13+0x2f8>
lea    0xce6(%rip),%rdi
call   1030 <printf@plt>
jmp    140d <Green13+0x2fd>
movw   $0x1,-0x2(%rbp)
movswl -0x2(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Green13>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %r9,%r14
mov    %r8,%r15
mov    %rcx,%r12
mov    %edx,%r13d
mov    %esi,%ebx
mov    %edi,%ebp
lea    0xebe(%rip),%rdi
call   1040 <printf@plt>
mov    0x2e7a(%rip),%rax
cmp    %bp,(%rax)
jne    11ca <Green13+0xaa>
mov    0x2e66(%rip),%rax
cmp    %bx,(%rax)
jne    11ca <Green13+0xaa>
mov    0x2e82(%rip),%rax
cmp    %r13w,(%rax)
jne    11ca <Green13+0xaa>
mov    0x2e6d(%rip),%rax
cmp    %r12,(%rax)
jne    11ca <Green13+0xaa>
mov    0x2e51(%rip),%rax
cmp    %r15,(%rax)
jne    11ca <Green13+0xaa>
mov    0x2e25(%rip),%rax
mov    (%rax),%rax
cmp    %r14,%rax
jne    11ca <Green13+0xaa>
cmp    0x40(%rsp),%bp
jne    11ca <Green13+0xaa>
cmp    0x48(%rsp),%bx
jne    11ca <Green13+0xaa>
cmp    0x50(%rsp),%r13w
jne    11ca <Green13+0xaa>
cmp    0x58(%rsp),%r12
jne    11ca <Green13+0xaa>
cmp    0x60(%rsp),%r15
jne    11ca <Green13+0xaa>
cmp    0x68(%rsp),%rax
jne    11ca <Green13+0xaa>
lea    0xf1b(%rip),%rdi
jmp    1306 <Green13+0x1e6>
lea    0xe3a(%rip),%rdi
call   1030 <puts@plt>
mov    0x2deb(%rip),%rax
cmp    %bp,(%rax)
mov    %rax,%rbp
je     11f1 <Green13+0xd1>
lea    0xee4(%rip),%rdi
call   1030 <puts@plt>
mov    0x2dc8(%rip),%rax
cmp    %bx,(%rax)
je     1209 <Green13+0xe9>
lea    0xebc(%rip),%rdi
call   1030 <puts@plt>
mov    0x2dd8(%rip),%rax
cmp    %r13w,(%rax)
je     1222 <Green13+0x102>
lea    0xe90(%rip),%rdi
call   1030 <puts@plt>
mov    0x2db7(%rip),%rax
cmp    %r12,(%rax)
je     123a <Green13+0x11a>
lea    0xe68(%rip),%rdi
call   1030 <puts@plt>
mov    0x2d8f(%rip),%rax
cmp    %r15,(%rax)
je     1252 <Green13+0x132>
lea    0xe40(%rip),%rdi
call   1030 <puts@plt>
mov    0x2d57(%rip),%rbx
cmp    %r14,(%rbx)
je     126a <Green13+0x14a>
lea    0xe16(%rip),%rdi
call   1030 <puts@plt>
movzwl 0x40(%rsp),%eax
cmp    %ax,0x0(%rbp)
je     1281 <Green13+0x161>
lea    0xdef(%rip),%rdi
call   1030 <puts@plt>
movzwl 0x48(%rsp),%eax
mov    0x2d33(%rip),%rcx
cmp    %ax,(%rcx)
je     129e <Green13+0x17e>
lea    0xdc2(%rip),%rdi
call   1030 <puts@plt>
movzwl 0x50(%rsp),%eax
mov    0x2d3e(%rip),%rcx
cmp    %ax,(%rcx)
je     12bb <Green13+0x19b>
lea    0xd93(%rip),%rdi
call   1030 <puts@plt>
mov    0x58(%rsp),%rax
mov    0x2d19(%rip),%rcx
cmp    %rax,(%rcx)
je     12d8 <Green13+0x1b8>
lea    0xd66(%rip),%rdi
call   1030 <puts@plt>
mov    0x60(%rsp),%rax
mov    0x2cec(%rip),%rcx
cmp    %rax,(%rcx)
je     12f5 <Green13+0x1d5>
lea    0xd39(%rip),%rdi
call   1030 <puts@plt>
mov    0x68(%rsp),%rax
cmp    %rax,(%rbx)
je     130b <Green13+0x1eb>
lea    0xd12(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%ax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [11 x i8] c" Green13: \00"
@SHRT_MIN = global i16 0
@SHRT_MAX = global i16 0
@USHRT_MAX = global i16 0
@LONG_MIN = global i64 0
@LONG_MAX = global i64 0
@ULONG_MAX = global i64 0
@.str.1 = [14 x i8] c" Test passed\0A\00"
@.str.2 = [14 x i8] c" Test failed\0A\00"
@.str.3 = [17 x i8] c" s1 != SHRT_MIN\0A\00"
@.str.4 = [17 x i8] c" s2 != SHRT_MIN\0A\00"
@.str.5 = [20 x i8] c" us1 != USHRT_MAX\0A\00"
@.str.6 = [17 x i8] c" l1 != LONG_MIN\0A\00"
@.str.7 = [17 x i8] c" l2 != LONG_MAX\0A\00"
@.str.8 = [19 x i8] c" ul1 == ULONG_MAX\0A\00"
@.str.9 = [17 x i8] c" s3 != SHRT_MIN\0A\00"
@.str.10 = [17 x i8] c" s4 != SHRT_MAX\0A\00"
@.str.11 = [19 x i8] c" us2 != USHRT_MAX\0A\00"
@.str.12 = [17 x i8] c" l3 != LONG_MIN\0A\00"
@.str.13 = [17 x i8] c" l4 != LONG_MAX\0A\00"
@.str.14 = [18 x i8] c" ul2 != LONG_MAX\0A\00"
define signext i16 @Green13(i16 signext %0, i16 signext %1, i16 zeroext %2, i64 %3, i64 %4, i64 %5, i16 signext %6, i16 signext %7, i16 zeroext %8, i64 %9, i64 %10, i64 %11) {
%13 = alloca i16
%14 = alloca i16
%15 = alloca i16
%16 = alloca i16
%17 = alloca i64
%18 = alloca i64
%19 = alloca i64
%20 = alloca i16
%21 = alloca i16
%22 = alloca i16
%23 = alloca i64
%24 = alloca i64
%25 = alloca i64
store i16 %0, i16* %14
store i16 %1, i16* %15
store i16 %2, i16* %16
store i64 %3, i64* %17
store i64 %4, i64* %18
store i64 %5, i64* %19
store i16 %6, i16* %20
store i16 %7, i16* %21
store i16 %8, i16* %22
store i64 %9, i64* %23
store i64 %10, i64* %24
store i64 %11, i64* %25
%26 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0))
%27 = load i16, i16* %14
%28 = sext i16 %27 to i32
%29 = load i16, i16* @SHRT_MIN
%30 = sext i16 %29 to i32
%31 = icmp eq i32 %28, %30
br i1 %31, label %32, label %88
32: ; preds = %12
%33 = load i16, i16* %15
%34 = sext i16 %33 to i32
%35 = load i16, i16* @SHRT_MAX
%36 = sext i16 %35 to i32
%37 = icmp eq i32 %34, %36
br i1 %37, label %38, label %88
38: ; preds = %32
%39 = load i16, i16* %16
%40 = zext i16 %39 to i32
%41 = load i16, i16* @USHRT_MAX
%42 = zext i16 %41 to i32
%43 = icmp eq i32 %40, %42
br i1 %43, label %44, label %88
44: ; preds = %38
%45 = load i64, i64* %17
%46 = load i64, i64* @LONG_MIN
%47 = icmp eq i64 %45, %46
br i1 %47, label %48, label %88
48: ; preds = %44
%49 = load i64, i64* %18
%50 = load i64, i64* @LONG_MAX
%51 = icmp eq i64 %49, %50
br i1 %51, label %52, label %88
52: ; preds = %48
%53 = load i64, i64* %19
%54 = load i64, i64* @ULONG_MAX
%55 = icmp eq i64 %53, %54
br i1 %55, label %56, label %88
56: ; preds = %52
%57 = load i16, i16* %20
%58 = sext i16 %57 to i32
%59 = load i16, i16* @SHRT_MIN
%60 = sext i16 %59 to i32
%61 = icmp eq i32 %58, %60
br i1 %61, label %62, label %88
62: ; preds = %56
%63 = load i16, i16* %21
%64 = sext i16 %63 to i32
%65 = load i16, i16* @SHRT_MAX
%66 = sext i16 %65 to i32
%67 = icmp eq i32 %64, %66
br i1 %67, label %68, label %88
68: ; preds = %62
%69 = load i16, i16* %22
%70 = zext i16 %69 to i32
%71 = load i16, i16* @USHRT_MAX
%72 = zext i16 %71 to i32
%73 = icmp eq i32 %70, %72
br i1 %73, label %74, label %88
74: ; preds = %68
%75 = load i64, i64* %23
%76 = load i64, i64* @LONG_MIN
%77 = icmp eq i64 %75, %76
br i1 %77, label %78, label %88
78: ; preds = %74
%79 = load i64, i64* %24
%80 = load i64, i64* @LONG_MAX
%81 = icmp eq i64 %79, %80
br i1 %81, label %82, label %88
82: ; preds = %78
%83 = load i64, i64* %25
%84 = load i64, i64* @ULONG_MAX
%85 = icmp eq i64 %83, %84
br i1 %85, label %86, label %88
86: ; preds = %82
%87 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i64 0, i64 0))
store i16 1, i16* %13
br label %175
88: ; preds = %82, %78, %74, %68, %62, %56, %52, %48, %44, %38, %32, %12
%89 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0))
%90 = load i16, i16* %14
%91 = sext i16 %90 to i32
%92 = load i16, i16* @SHRT_MIN
%93 = sext i16 %92 to i32
%94 = icmp ne i32 %91, %93
br i1 %94, label %95, label %97
95: ; preds = %88
%96 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.3, i64 0, i64 0))
br label %97
97: ; preds = %95, %88
%98 = load i16, i16* %15
%99 = sext i16 %98 to i32
%100 = load i16, i16* @SHRT_MAX
%101 = sext i16 %100 to i32
%102 = icmp ne i32 %99, %101
br i1 %102, label %103, label %105
103: ; preds = %97
%104 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.4, i64 0, i64 0))
br label %105
105: ; preds = %103, %97
%106 = load i16, i16* %16
%107 = zext i16 %106 to i32
%108 = load i16, i16* @USHRT_MAX
%109 = zext i16 %108 to i32
%110 = icmp ne i32 %107, %109
br i1 %110, label %111, label %113
111: ; preds = %105
%112 = call i32 @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0))
br label %113
113: ; preds = %111, %105
%114 = load i64, i64* %17
%115 = load i64, i64* @LONG_MIN
%116 = icmp ne i64 %114, %115
br i1 %116, label %117, label %119
117: ; preds = %113
%118 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.6, i64 0, i64 0))
br label %119
119: ; preds = %117, %113
%120 = load i64, i64* %18
%121 = load i64, i64* @LONG_MAX
%122 = icmp ne i64 %120, %121
br i1 %122, label %123, label %125
123: ; preds = %119
%124 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0))
br label %125
125: ; preds = %123, %119
%126 = load i64, i64* %19
%127 = load i64, i64* @ULONG_MAX
%128 = icmp ne i64 %126, %127
br i1 %128, label %129, label %131
129: ; preds = %125
%130 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.8, i64 0, i64 0))
br label %131
131: ; preds = %129, %125
%132 = load i16, i16* %20
%133 = sext i16 %132 to i32
%134 = load i16, i16* @SHRT_MIN
%135 = sext i16 %134 to i32
%136 = icmp ne i32 %133, %135
br i1 %136, label %137, label %139
137: ; preds = %131
%138 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0))
br label %139
139: ; preds = %137, %131
%140 = load i16, i16* %21
%141 = sext i16 %140 to i32
%142 = load i16, i16* @SHRT_MAX
%143 = sext i16 %142 to i32
%144 = icmp ne i32 %141, %143
br i1 %144, label %145, label %147
145: ; preds = %139
%146 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.10, i64 0, i64 0))
br label %147
147: ; preds = %145, %139
%148 = load i16, i16* %22
%149 = zext i16 %148 to i32
%150 = load i16, i16* @USHRT_MAX
%151 = zext i16 %150 to i32
%152 = icmp ne i32 %149, %151
br i1 %152, label %153, label %155
153: ; preds = %147
%154 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0))
br label %155
155: ; preds = %153, %147
%156 = load i64, i64* %23
%157 = load i64, i64* @LONG_MIN
%158 = icmp ne i64 %156, %157
br i1 %158, label %159, label %161
159: ; preds = %155
%160 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0))
br label %161
161: ; preds = %159, %155
%162 = load i64, i64* %24
%163 = load i64, i64* @LONG_MAX
%164 = icmp ne i64 %162, %163
br i1 %164, label %165, label %167
165: ; preds = %161
%166 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.13, i64 0, i64 0))
br label %167
167: ; preds = %165, %161
%168 = load i64, i64* %25
%169 = load i64, i64* @ULONG_MAX
%170 = icmp ne i64 %168, %169
br i1 %170, label %171, label %173
171: ; preds = %167
%172 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.14, i64 0, i64 0))
br label %173
173: ; preds = %171, %167
br label %174
174: ; preds = %173
store i16 1, i16* %13
br label %175
175: ; preds = %174, %86
%176 = load i16, i16* %13
ret i16 %176
}

LLVM IR (-O2):
@.str = [11 x i8] c" Green13: \00"
@SHRT_MIN = global i16 0
@SHRT_MAX = global i16 0
@USHRT_MAX = global i16 0
@LONG_MIN = global i64 0
@LONG_MAX = global i64 0
@ULONG_MAX = global i64 0
@str = [13 x i8] c" Test failed\00"
@str.15 = [17 x i8] c" ul2 != LONG_MAX\00"
@str.16 = [16 x i8] c" l4 != LONG_MAX\00"
@str.17 = [16 x i8] c" l3 != LONG_MIN\00"
@str.18 = [18 x i8] c" us2 != USHRT_MAX\00"
@str.19 = [16 x i8] c" s4 != SHRT_MAX\00"
@str.20 = [16 x i8] c" s3 != SHRT_MIN\00"
@str.21 = [18 x i8] c" ul1 == ULONG_MAX\00"
@str.22 = [16 x i8] c" l2 != LONG_MAX\00"
@str.23 = [16 x i8] c" l1 != LONG_MIN\00"
@str.24 = [19 x i8] c" us1 != USHRT_MAX\00"
@str.25 = [16 x i8] c" s2 != SHRT_MIN\00"
@str.26 = [16 x i8] c" s1 != SHRT_MIN\00"
@str.27 = [13 x i8] c" Test passed\00"
define signext i16 @Green13(i16 signext %0, i16 signext %1, i16 zeroext %2, i64 %3, i64 %4, i64 %5, i16 signext %6, i16 signext %7, i16 zeroext %8, i64 %9, i64 %10, i64 %11) {
%13 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0))
%14 = load i16, i16* @SHRT_MIN
%15 = icmp eq i16 %14, %0
%16 = load i16, i16* @SHRT_MAX
%17 = icmp eq i16 %16, %1
%18 = select i1 %15, i1 %17, i1 false
%19 = load i16, i16* @USHRT_MAX
%20 = icmp eq i16 %19, %2
%21 = select i1 %18, i1 %20, i1 false
%22 = load i64, i64* @LONG_MIN
%23 = icmp eq i64 %22, %3
%24 = select i1 %21, i1 %23, i1 false
%25 = load i64, i64* @LONG_MAX
%26 = icmp eq i64 %25, %4
%27 = select i1 %24, i1 %26, i1 false
br i1 %27, label %28, label %43
28: ; preds = %12
%29 = load i64, i64* @ULONG_MAX
%30 = icmp eq i64 %29, %5
%31 = icmp eq i16 %0, %6
%32 = and i1 %30, %31
%33 = icmp eq i16 %1, %7
%34 = and i1 %32, %33
%35 = icmp eq i16 %2, %8
%36 = and i1 %34, %35
%37 = icmp eq i64 %3, %9
%38 = and i1 %36, %37
%39 = icmp eq i64 %4, %10
%40 = and i1 %38, %39
%41 = icmp eq i64 %29, %11
%42 = select i1 %40, i1 %41, i1 false
br i1 %42, label %102, label %43
43: ; preds = %28, %12
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str, i64 0, i64 0))
%45 = load i16, i16* @SHRT_MIN
%46 = icmp eq i16 %45, %0
br i1 %46, label %49, label %47
47: ; preds = %43
%48 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.26, i64 0, i64 0))
br label %49
49: ; preds = %47, %43
%50 = load i16, i16* @SHRT_MAX
%51 = icmp eq i16 %50, %1
br i1 %51, label %54, label %52
52: ; preds = %49
%53 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.25, i64 0, i64 0))
br label %54
54: ; preds = %52, %49
%55 = load i16, i16* @USHRT_MAX
%56 = icmp eq i16 %55, %2
br i1 %56, label %59, label %57
57: ; preds = %54
%58 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.24, i64 0, i64 0))
br label %59
59: ; preds = %57, %54
%60 = load i64, i64* @LONG_MIN
%61 = icmp eq i64 %60, %3
br i1 %61, label %64, label %62
62: ; preds = %59
%63 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.23, i64 0, i64 0))
br label %64
64: ; preds = %62, %59
%65 = load i64, i64* @LONG_MAX
%66 = icmp eq i64 %65, %4
br i1 %66, label %69, label %67
67: ; preds = %64
%68 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.22, i64 0, i64 0))
br label %69
69: ; preds = %67, %64
%70 = load i64, i64* @ULONG_MAX
%71 = icmp eq i64 %70, %5
br i1 %71, label %74, label %72
72: ; preds = %69
%73 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.21, i64 0, i64 0))
br label %74
74: ; preds = %72, %69
%75 = load i16, i16* @SHRT_MIN
%76 = icmp eq i16 %75, %6
br i1 %76, label %79, label %77
77: ; preds = %74
%78 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.20, i64 0, i64 0))
br label %79
79: ; preds = %77, %74
%80 = load i16, i16* @SHRT_MAX
%81 = icmp eq i16 %80, %7
br i1 %81, label %84, label %82
82: ; preds = %79
%83 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.19, i64 0, i64 0))
br label %84
84: ; preds = %82, %79
%85 = load i16, i16* @USHRT_MAX
%86 = icmp eq i16 %85, %8
br i1 %86, label %89, label %87
87: ; preds = %84
%88 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.18, i64 0, i64 0))
br label %89
89: ; preds = %87, %84
%90 = load i64, i64* @LONG_MIN
%91 = icmp eq i64 %90, %9
br i1 %91, label %94, label %92
92: ; preds = %89
%93 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.17, i64 0, i64 0))
br label %94
94: ; preds = %92, %89
%95 = load i64, i64* @LONG_MAX
%96 = icmp eq i64 %95, %10
br i1 %96, label %99, label %97
97: ; preds = %94
%98 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.16, i64 0, i64 0))
br label %99
99: ; preds = %97, %94
%100 = load i64, i64* @ULONG_MAX
%101 = icmp eq i64 %100, %11
br i1 %101, label %105, label %102
102: ; preds = %99, %28
%103 = phi i8* [ getelementptr inbounds ([13 x i8], [13 x i8]* @str.27, i64 0, i64 0), %28 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @str.15, i64 0, i64 0), %99 ]
%104 = tail call i32 @puts(i8* dereferenceable(1) %103)
br label %105
105: ; preds = %102, %99
ret i16 1
}