#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 */
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ scanf(char *, int *, int *, int *, int *);
int main() {
  int a, b, c, d;
  scanf("%d%d%d%d", &a, &b, &c, &d);
  if (a >= b && a >= c && a >= d && b >= c && b >= d) {
    printf("The second largest number is %d", b);
    return 0;
  }
  if (a >= b && a >= c && a >= d && c >= d && c >= b) {
    printf("The second largest number is %d", c);
    return 0;
  }
  if (a >= b && a >= c && a >= d && d >= b && d >= c) {
    printf("The second largest number is %d", d);
    return 0;
  }
  if (b >= a && b >= c && b >= d && a >= c && a >= d) {
    printf("The second largest number is %d", a);
    return 0;
  }
  if (b >= a && b >= c && b >= d && c >= a && c >= d) {
    printf("The second largest number is %d", c);
    return 0;
  }
  if (b >= a && b >= c && b >= d && d >= c && d >= a) {
    printf("The second largest number is %d", d);
    return 0;
  }
  if (c >= a && c >= b && c >= d && a >= b && a >= d) {
    printf("The second largest number is %d", a);
    return 0;
  }
  if (c >= a && c >= b && c >= d && b >= a && b >= d) {
    printf("The second largest number is %d", b);
    return 0;
  }
  if (c >= a && c >= b && c >= d && d >= a && d >= b) {
    printf("The second largest number is %d", d);
    return 0;
  }
  if (d >= a && d >= b && d >= c && a >= b && a >= c) {
    printf("The second largest number is %d", a);
    return 0;
  }
  if (d >= a && d >= b && d >= c && b >= a && b >= c) {
    printf("The second largest number is %d", b);
    return 0;
  }
  if (d >= a && d >= b && d >= c && c >= a && c >= b) {
    printf("The second largest number is %d", c);
    return 0;
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeca(%rip),%rdi
lea    -0x8(%rbp),%rsi
lea    -0xc(%rbp),%rdx
lea    -0x10(%rbp),%rcx
lea    -0x14(%rbp),%r8
call   1040 <scanf@plt>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     11a2 <main+0x82>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     11a2 <main+0x82>
mov    -0x8(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     11a2 <main+0x82>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     11a2 <main+0x82>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     11a2 <main+0x82>
mov    -0xc(%rbp),%esi
lea    0xe78(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     11f9 <main+0xd9>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     11f9 <main+0xd9>
mov    -0x8(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     11f9 <main+0xd9>
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     11f9 <main+0xd9>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     11f9 <main+0xd9>
mov    -0x10(%rbp),%esi
lea    0xe21(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1250 <main+0x130>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1250 <main+0x130>
mov    -0x8(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1250 <main+0x130>
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1250 <main+0x130>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1250 <main+0x130>
mov    -0x14(%rbp),%esi
lea    0xdca(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0xc(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     12a7 <main+0x187>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     12a7 <main+0x187>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     12a7 <main+0x187>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     12a7 <main+0x187>
mov    -0x8(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     12a7 <main+0x187>
mov    -0x8(%rbp),%esi
lea    0xd73(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0xc(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     12fe <main+0x1de>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     12fe <main+0x1de>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     12fe <main+0x1de>
mov    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     12fe <main+0x1de>
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     12fe <main+0x1de>
mov    -0x10(%rbp),%esi
lea    0xd1c(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0xc(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1355 <main+0x235>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1355 <main+0x235>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1355 <main+0x235>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1355 <main+0x235>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1355 <main+0x235>
mov    -0x14(%rbp),%esi
lea    0xcc5(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     13ac <main+0x28c>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     13ac <main+0x28c>
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     13ac <main+0x28c>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     13ac <main+0x28c>
mov    -0x8(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     13ac <main+0x28c>
mov    -0x8(%rbp),%esi
lea    0xc6e(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1403 <main+0x2e3>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1403 <main+0x2e3>
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1403 <main+0x2e3>
mov    -0xc(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1403 <main+0x2e3>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1403 <main+0x2e3>
mov    -0xc(%rbp),%esi
lea    0xc17(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     145a <main+0x33a>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     145a <main+0x33a>
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     145a <main+0x33a>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     145a <main+0x33a>
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     145a <main+0x33a>
mov    -0x14(%rbp),%esi
lea    0xbc0(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     14b1 <main+0x391>
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     14b1 <main+0x391>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     14b1 <main+0x391>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     14b1 <main+0x391>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     14b1 <main+0x391>
mov    -0x8(%rbp),%esi
lea    0xb69(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1508 <main+0x3e8>
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1508 <main+0x3e8>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1508 <main+0x3e8>
mov    -0xc(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1508 <main+0x3e8>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1508 <main+0x3e8>
mov    -0xc(%rbp),%esi
lea    0xb12(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     155f <main+0x43f>
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     155f <main+0x43f>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     155f <main+0x43f>
mov    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     155f <main+0x43f>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     155f <main+0x43f>
mov    -0x10(%rbp),%esi
lea    0xabb(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1566 <main+0x446>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x18,%rsp
lea    0xed5(%rip),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
lea    0x8(%rsp),%r8
call   1040 <scanf@plt>
mov    0x14(%rsp),%ecx
mov    0x10(%rsp),%eax
cmp    %eax,%ecx
jl     115c <main+0x3c>
mov    0xc(%rsp),%edx
cmp    %edx,%ecx
jge    11f0 <main+0xd0>
mov    0xc(%rsp),%edx
cmp    %ecx,%eax
jl     119c <main+0x7c>
cmp    %edx,%eax
jl     119c <main+0x7c>
mov    0x8(%rsp),%esi
cmp    %esi,%eax
jl     1178 <main+0x58>
cmp    %edx,%ecx
jl     1178 <main+0x58>
cmp    %esi,%ecx
jge    11ec <main+0xcc>
mov    0x8(%rsp),%esi
cmp    %esi,%eax
jl     118c <main+0x6c>
cmp    %ecx,%edx
jl     118c <main+0x6c>
cmp    %esi,%edx
jge    1214 <main+0xf4>
mov    0x8(%rsp),%esi
cmp    %esi,%eax
jl     119c <main+0x7c>
cmp    %edx,%esi
jl     119c <main+0x7c>
cmp    %ecx,%esi
jge    1216 <main+0xf6>
cmp    %ecx,%edx
jl     11d4 <main+0xb4>
cmp    %eax,%edx
jl     11d4 <main+0xb4>
mov    0x8(%rsp),%esi
cmp    %esi,%edx
jl     11b4 <main+0x94>
cmp    %eax,%ecx
jl     11b4 <main+0x94>
cmp    %esi,%ecx
jge    11ec <main+0xcc>
mov    0x8(%rsp),%esi
cmp    %esi,%edx
jl     11c4 <main+0xa4>
cmp    %ecx,%eax
jl     11c4 <main+0xa4>
cmp    %esi,%eax
jge    1200 <main+0xe0>
mov    0x8(%rsp),%esi
cmp    %esi,%edx
jl     11d4 <main+0xb4>
cmp    %ecx,%esi
jl     11d4 <main+0xb4>
cmp    %eax,%esi
jge    1216 <main+0xf6>
mov    0x8(%rsp),%esi
cmp    %ecx,%esi
jl     1222 <main+0x102>
cmp    %eax,%esi
jl     1222 <main+0x102>
cmp    %edx,%esi
jl     1229 <main+0x109>
cmp    %eax,%ecx
jl     1229 <main+0x109>
cmp    %edx,%ecx
jl     1229 <main+0x109>
mov    %ecx,%esi
jmp    1216 <main+0xf6>
mov    0x8(%rsp),%esi
cmp    %esi,%ecx
jl     1204 <main+0xe4>
cmp    %edx,%eax
jl     1204 <main+0xe4>
cmp    %esi,%eax
jl     1204 <main+0xe4>
mov    %eax,%esi
jmp    1216 <main+0xf6>
mov    0x8(%rsp),%esi
cmp    %esi,%ecx
jl     1245 <main+0x125>
cmp    %esi,%edx
jl     1245 <main+0x125>
cmp    %eax,%edx
jl     1245 <main+0x125>
mov    %edx,%esi
lea    0xdec(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x18,%rsp
ret
cmp    %edx,%esi
jl     1235 <main+0x115>
cmp    %ecx,%eax
jl     1235 <main+0x115>
cmp    %edx,%eax
jge    1200 <main+0xe0>
cmp    %edx,%esi
jl     1222 <main+0x102>
cmp    %ecx,%edx
jl     1222 <main+0x102>
mov    %edx,%esi
cmp    %eax,%edx
jge    1216 <main+0xf6>
jmp    1222 <main+0x102>
mov    0x8(%rsp),%esi
cmp    %esi,%ecx
jl     115c <main+0x3c>
cmp    %eax,%esi
jl     115c <main+0x3c>
cmp    %edx,%esi
jge    1216 <main+0xf6>
jmp    115c <main+0x3c>

LLVM IR (-O0):
@.str = [9 x i8] c"%d%d%d%d\00"
@.str.1 = [32 x i8] c"The second largest number is %d\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
store i32 0, i32* %1
%6 = call i32 @scanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i32* %2, i32* %3, i32* %4, i32* %5)
%7 = load i32, i32* %2
%8 = load i32, i32* %3
%9 = icmp sge i32 %7, %8
br i1 %9, label %10, label %29
10: ; preds = %0
%11 = load i32, i32* %2
%12 = load i32, i32* %4
%13 = icmp sge i32 %11, %12
br i1 %13, label %14, label %29
14: ; preds = %10
%15 = load i32, i32* %2
%16 = load i32, i32* %5
%17 = icmp sge i32 %15, %16
br i1 %17, label %18, label %29
18: ; preds = %14
%19 = load i32, i32* %3
%20 = load i32, i32* %4
%21 = icmp sge i32 %19, %20
br i1 %21, label %22, label %29
22: ; preds = %18
%23 = load i32, i32* %3
%24 = load i32, i32* %5
%25 = icmp sge i32 %23, %24
br i1 %25, label %26, label %29
26: ; preds = %22
%27 = load i32, i32* %3
%28 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %27)
store i32 0, i32* %1
br label %283
29: ; preds = %22, %18, %14, %10, %0
%30 = load i32, i32* %2
%31 = load i32, i32* %3
%32 = icmp sge i32 %30, %31
br i1 %32, label %33, label %52
33: ; preds = %29
%34 = load i32, i32* %2
%35 = load i32, i32* %4
%36 = icmp sge i32 %34, %35
br i1 %36, label %37, label %52
37: ; preds = %33
%38 = load i32, i32* %2
%39 = load i32, i32* %5
%40 = icmp sge i32 %38, %39
br i1 %40, label %41, label %52
41: ; preds = %37
%42 = load i32, i32* %4
%43 = load i32, i32* %5
%44 = icmp sge i32 %42, %43
br i1 %44, label %45, label %52
45: ; preds = %41
%46 = load i32, i32* %4
%47 = load i32, i32* %3
%48 = icmp sge i32 %46, %47
br i1 %48, label %49, label %52
49: ; preds = %45
%50 = load i32, i32* %4
%51 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %50)
store i32 0, i32* %1
br label %283
52: ; preds = %45, %41, %37, %33, %29
%53 = load i32, i32* %2
%54 = load i32, i32* %3
%55 = icmp sge i32 %53, %54
br i1 %55, label %56, label %75
56: ; preds = %52
%57 = load i32, i32* %2
%58 = load i32, i32* %4
%59 = icmp sge i32 %57, %58
br i1 %59, label %60, label %75
60: ; preds = %56
%61 = load i32, i32* %2
%62 = load i32, i32* %5
%63 = icmp sge i32 %61, %62
br i1 %63, label %64, label %75
64: ; preds = %60
%65 = load i32, i32* %5
%66 = load i32, i32* %3
%67 = icmp sge i32 %65, %66
br i1 %67, label %68, label %75
68: ; preds = %64
%69 = load i32, i32* %5
%70 = load i32, i32* %4
%71 = icmp sge i32 %69, %70
br i1 %71, label %72, label %75
72: ; preds = %68
%73 = load i32, i32* %5
%74 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %73)
store i32 0, i32* %1
br label %283
75: ; preds = %68, %64, %60, %56, %52
%76 = load i32, i32* %3
%77 = load i32, i32* %2
%78 = icmp sge i32 %76, %77
br i1 %78, label %79, label %98
79: ; preds = %75
%80 = load i32, i32* %3
%81 = load i32, i32* %4
%82 = icmp sge i32 %80, %81
br i1 %82, label %83, label %98
83: ; preds = %79
%84 = load i32, i32* %3
%85 = load i32, i32* %5
%86 = icmp sge i32 %84, %85
br i1 %86, label %87, label %98
87: ; preds = %83
%88 = load i32, i32* %2
%89 = load i32, i32* %4
%90 = icmp sge i32 %88, %89
br i1 %90, label %91, label %98
91: ; preds = %87
%92 = load i32, i32* %2
%93 = load i32, i32* %5
%94 = icmp sge i32 %92, %93
br i1 %94, label %95, label %98
95: ; preds = %91
%96 = load i32, i32* %2
%97 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %96)
store i32 0, i32* %1
br label %283
98: ; preds = %91, %87, %83, %79, %75
%99 = load i32, i32* %3
%100 = load i32, i32* %2
%101 = icmp sge i32 %99, %100
br i1 %101, label %102, label %121
102: ; preds = %98
%103 = load i32, i32* %3
%104 = load i32, i32* %4
%105 = icmp sge i32 %103, %104
br i1 %105, label %106, label %121
106: ; preds = %102
%107 = load i32, i32* %3
%108 = load i32, i32* %5
%109 = icmp sge i32 %107, %108
br i1 %109, label %110, label %121
110: ; preds = %106
%111 = load i32, i32* %4
%112 = load i32, i32* %2
%113 = icmp sge i32 %111, %112
br i1 %113, label %114, label %121
114: ; preds = %110
%115 = load i32, i32* %4
%116 = load i32, i32* %5
%117 = icmp sge i32 %115, %116
br i1 %117, label %118, label %121
118: ; preds = %114
%119 = load i32, i32* %4
%120 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %119)
store i32 0, i32* %1
br label %283
121: ; preds = %114, %110, %106, %102, %98
%122 = load i32, i32* %3
%123 = load i32, i32* %2
%124 = icmp sge i32 %122, %123
br i1 %124, label %125, label %144
125: ; preds = %121
%126 = load i32, i32* %3
%127 = load i32, i32* %4
%128 = icmp sge i32 %126, %127
br i1 %128, label %129, label %144
129: ; preds = %125
%130 = load i32, i32* %3
%131 = load i32, i32* %5
%132 = icmp sge i32 %130, %131
br i1 %132, label %133, label %144
133: ; preds = %129
%134 = load i32, i32* %5
%135 = load i32, i32* %4
%136 = icmp sge i32 %134, %135
br i1 %136, label %137, label %144
137: ; preds = %133
%138 = load i32, i32* %5
%139 = load i32, i32* %2
%140 = icmp sge i32 %138, %139
br i1 %140, label %141, label %144
141: ; preds = %137
%142 = load i32, i32* %5
%143 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %142)
store i32 0, i32* %1
br label %283
144: ; preds = %137, %133, %129, %125, %121
%145 = load i32, i32* %4
%146 = load i32, i32* %2
%147 = icmp sge i32 %145, %146
br i1 %147, label %148, label %167
148: ; preds = %144
%149 = load i32, i32* %4
%150 = load i32, i32* %3
%151 = icmp sge i32 %149, %150
br i1 %151, label %152, label %167
152: ; preds = %148
%153 = load i32, i32* %4
%154 = load i32, i32* %5
%155 = icmp sge i32 %153, %154
br i1 %155, label %156, label %167
156: ; preds = %152
%157 = load i32, i32* %2
%158 = load i32, i32* %3
%159 = icmp sge i32 %157, %158
br i1 %159, label %160, label %167
160: ; preds = %156
%161 = load i32, i32* %2
%162 = load i32, i32* %5
%163 = icmp sge i32 %161, %162
br i1 %163, label %164, label %167
164: ; preds = %160
%165 = load i32, i32* %2
%166 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %165)
store i32 0, i32* %1
br label %283
167: ; preds = %160, %156, %152, %148, %144
%168 = load i32, i32* %4
%169 = load i32, i32* %2
%170 = icmp sge i32 %168, %169
br i1 %170, label %171, label %190
171: ; preds = %167
%172 = load i32, i32* %4
%173 = load i32, i32* %3
%174 = icmp sge i32 %172, %173
br i1 %174, label %175, label %190
175: ; preds = %171
%176 = load i32, i32* %4
%177 = load i32, i32* %5
%178 = icmp sge i32 %176, %177
br i1 %178, label %179, label %190
179: ; preds = %175
%180 = load i32, i32* %3
%181 = load i32, i32* %2
%182 = icmp sge i32 %180, %181
br i1 %182, label %183, label %190
183: ; preds = %179
%184 = load i32, i32* %3
%185 = load i32, i32* %5
%186 = icmp sge i32 %184, %185
br i1 %186, label %187, label %190
187: ; preds = %183
%188 = load i32, i32* %3
%189 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %188)
store i32 0, i32* %1
br label %283
190: ; preds = %183, %179, %175, %171, %167
%191 = load i32, i32* %4
%192 = load i32, i32* %2
%193 = icmp sge i32 %191, %192
br i1 %193, label %194, label %213
194: ; preds = %190
%195 = load i32, i32* %4
%196 = load i32, i32* %3
%197 = icmp sge i32 %195, %196
br i1 %197, label %198, label %213
198: ; preds = %194
%199 = load i32, i32* %4
%200 = load i32, i32* %5
%201 = icmp sge i32 %199, %200
br i1 %201, label %202, label %213
202: ; preds = %198
%203 = load i32, i32* %5
%204 = load i32, i32* %2
%205 = icmp sge i32 %203, %204
br i1 %205, label %206, label %213
206: ; preds = %202
%207 = load i32, i32* %5
%208 = load i32, i32* %3
%209 = icmp sge i32 %207, %208
br i1 %209, label %210, label %213
210: ; preds = %206
%211 = load i32, i32* %5
%212 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %211)
store i32 0, i32* %1
br label %283
213: ; preds = %206, %202, %198, %194, %190
%214 = load i32, i32* %5
%215 = load i32, i32* %2
%216 = icmp sge i32 %214, %215
br i1 %216, label %217, label %236
217: ; preds = %213
%218 = load i32, i32* %5
%219 = load i32, i32* %3
%220 = icmp sge i32 %218, %219
br i1 %220, label %221, label %236
221: ; preds = %217
%222 = load i32, i32* %5
%223 = load i32, i32* %4
%224 = icmp sge i32 %222, %223
br i1 %224, label %225, label %236
225: ; preds = %221
%226 = load i32, i32* %2
%227 = load i32, i32* %3
%228 = icmp sge i32 %226, %227
br i1 %228, label %229, label %236
229: ; preds = %225
%230 = load i32, i32* %2
%231 = load i32, i32* %4
%232 = icmp sge i32 %230, %231
br i1 %232, label %233, label %236
233: ; preds = %229
%234 = load i32, i32* %2
%235 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %234)
store i32 0, i32* %1
br label %283
236: ; preds = %229, %225, %221, %217, %213
%237 = load i32, i32* %5
%238 = load i32, i32* %2
%239 = icmp sge i32 %237, %238
br i1 %239, label %240, label %259
240: ; preds = %236
%241 = load i32, i32* %5
%242 = load i32, i32* %3
%243 = icmp sge i32 %241, %242
br i1 %243, label %244, label %259
244: ; preds = %240
%245 = load i32, i32* %5
%246 = load i32, i32* %4
%247 = icmp sge i32 %245, %246
br i1 %247, label %248, label %259
248: ; preds = %244
%249 = load i32, i32* %3
%250 = load i32, i32* %2
%251 = icmp sge i32 %249, %250
br i1 %251, label %252, label %259
252: ; preds = %248
%253 = load i32, i32* %3
%254 = load i32, i32* %4
%255 = icmp sge i32 %253, %254
br i1 %255, label %256, label %259
256: ; preds = %252
%257 = load i32, i32* %3
%258 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %257)
store i32 0, i32* %1
br label %283
259: ; preds = %252, %248, %244, %240, %236
%260 = load i32, i32* %5
%261 = load i32, i32* %2
%262 = icmp sge i32 %260, %261
br i1 %262, label %263, label %282
263: ; preds = %259
%264 = load i32, i32* %5
%265 = load i32, i32* %3
%266 = icmp sge i32 %264, %265
br i1 %266, label %267, label %282
267: ; preds = %263
%268 = load i32, i32* %5
%269 = load i32, i32* %4
%270 = icmp sge i32 %268, %269
br i1 %270, label %271, label %282
271: ; preds = %267
%272 = load i32, i32* %4
%273 = load i32, i32* %2
%274 = icmp sge i32 %272, %273
br i1 %274, label %275, label %282
275: ; preds = %271
%276 = load i32, i32* %4
%277 = load i32, i32* %3
%278 = icmp sge i32 %276, %277
br i1 %278, label %279, label %282
279: ; preds = %275
%280 = load i32, i32* %4
%281 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %280)
store i32 0, i32* %1
br label %283
282: ; preds = %275, %271, %267, %263, %259
store i32 0, i32* %1
br label %283
283: ; preds = %282, %279, %256, %233, %210, %187, %164, %141, %118, %95, %72, %49, %26
%284 = load i32, i32* %1
ret i32 %284
}

LLVM IR (-O2):
@.str = [9 x i8] c"%d%d%d%d\00"
@.str.1 = [32 x i8] c"The second largest number is %d\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = bitcast i32* %1 to i8*
%6 = bitcast i32* %2 to i8*
%7 = bitcast i32* %3 to i8*
%8 = bitcast i32* %4 to i8*
%9 = call i32 @scanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4)
%10 = load i32, i32* %1
%11 = load i32, i32* %2
%12 = icmp slt i32 %10, %11
br i1 %12, label %37, label %13
13: ; preds = %0
%14 = load i32, i32* %3
%15 = icmp slt i32 %10, %14
br i1 %15, label %37, label %16
16: ; preds = %13
%17 = load i32, i32* %4
%18 = icmp slt i32 %10, %17
%19 = icmp slt i32 %11, %14
%20 = select i1 %18, i1 true, i1 %19
%21 = icmp slt i32 %11, %17
%22 = select i1 %20, i1 true, i1 %21
br i1 %22, label %23, label %106
23: ; preds = %16
%24 = load i32, i32* %4
%25 = icmp slt i32 %10, %24
%26 = icmp slt i32 %14, %24
%27 = select i1 %25, i1 true, i1 %26
%28 = icmp slt i32 %14, %11
%29 = select i1 %27, i1 true, i1 %28
br i1 %29, label %30, label %106
30: ; preds = %23
%31 = load i32, i32* %4
%32 = icmp slt i32 %10, %31
%33 = icmp slt i32 %31, %11
%34 = select i1 %32, i1 true, i1 %33
%35 = icmp slt i32 %31, %14
%36 = select i1 %34, i1 true, i1 %35
br i1 %36, label %37, label %106
37: ; preds = %13, %0, %30
%38 = icmp slt i32 %11, %10
%39 = load i32, i32* %3
%40 = icmp slt i32 %11, %39
%41 = select i1 %38, i1 true, i1 %40
br i1 %41, label %63, label %42
42: ; preds = %37
%43 = load i32, i32* %4
%44 = icmp slt i32 %11, %43
%45 = icmp slt i32 %10, %39
%46 = select i1 %44, i1 true, i1 %45
%47 = icmp slt i32 %10, %43
%48 = select i1 %46, i1 true, i1 %47
br i1 %48, label %49, label %106
49: ; preds = %42
%50 = load i32, i32* %4
%51 = icmp slt i32 %11, %50
%52 = icmp slt i32 %39, %10
%53 = select i1 %51, i1 true, i1 %52
%54 = icmp slt i32 %39, %50
%55 = select i1 %53, i1 true, i1 %54
br i1 %55, label %56, label %106
56: ; preds = %49
%57 = load i32, i32* %4
%58 = icmp slt i32 %11, %57
%59 = icmp slt i32 %57, %39
%60 = select i1 %58, i1 true, i1 %59
%61 = icmp slt i32 %57, %10
%62 = select i1 %60, i1 true, i1 %61
br i1 %62, label %63, label %106
63: ; preds = %37, %56
%64 = icmp slt i32 %39, %10
%65 = icmp slt i32 %39, %11
%66 = select i1 %64, i1 true, i1 %65
br i1 %66, label %86, label %67
67: ; preds = %63
%68 = load i32, i32* %4
%69 = icmp slt i32 %39, %68
%70 = select i1 %69, i1 true, i1 %12
%71 = icmp slt i32 %10, %68
%72 = select i1 %70, i1 true, i1 %71
br i1 %72, label %73, label %106
73: ; preds = %67
%74 = load i32, i32* %4
%75 = icmp slt i32 %39, %74
%76 = select i1 %75, i1 true, i1 %38
%77 = icmp slt i32 %11, %74
%78 = select i1 %76, i1 true, i1 %77
br i1 %78, label %79, label %106
79: ; preds = %73
%80 = load i32, i32* %4
%81 = icmp slt i32 %39, %80
%82 = icmp slt i32 %80, %10
%83 = select i1 %81, i1 true, i1 %82
%84 = icmp slt i32 %80, %11
%85 = select i1 %83, i1 true, i1 %84
br i1 %85, label %86, label %106
86: ; preds = %63, %79
%87 = load i32, i32* %4
%88 = icmp slt i32 %87, %10
%89 = icmp slt i32 %87, %11
%90 = select i1 %88, i1 true, i1 %89
br i1 %90, label %109, label %91
91: ; preds = %86
%92 = icmp slt i32 %87, %39
%93 = select i1 %92, i1 true, i1 %12
%94 = icmp slt i32 %10, %39
%95 = select i1 %93, i1 true, i1 %94
br i1 %95, label %96, label %106
96: ; preds = %91
%97 = icmp slt i32 %87, %39
%98 = select i1 %97, i1 true, i1 %38
%99 = icmp slt i32 %11, %39
%100 = select i1 %98, i1 true, i1 %99
br i1 %100, label %101, label %106
101: ; preds = %96
%102 = icmp slt i32 %87, %39
%103 = select i1 %102, i1 true, i1 %64
%104 = icmp slt i32 %39, %11
%105 = select i1 %103, i1 true, i1 %104
br i1 %105, label %109, label %106
106: ; preds = %101, %96, %91, %79, %73, %67, %56, %49, %42, %30, %23, %16
%107 = phi i32 [ %11, %16 ], [ %14, %23 ], [ %31, %30 ], [ %10, %42 ], [ %39, %49 ], [ %57, %56 ], [ %10, %67 ], [ %11, %73 ], [ %80, %79 ], [ %10, %91 ], [ %11, %96 ], [ %39, %101 ]
%108 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %107)
br label %109
109: ; preds = %106, %86, %101
ret i32 0
}