#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 /*<<< orphan*/ scanf(char *, int *, int *);
int main(void) {
  int time1 = 480, time2 = 583, time3 = 679, time4 = 767, time5 = 840,
      time6 = 945, time7 = 1140, time8 = 1305;
  int hour = 0, minute = 0;
  printf("enter a 24-hour time(xx:xx)\n");
  scanf("%d:%d", &hour, &minute);
  int time_now = hour * 60 + minute;
  int m1 = ((time1 >= time_now) ? (time1 - time_now) : (time_now - time1)),
      m2 = ((time2 >= time_now) ? (time2 - time_now) : (time_now - time2)),
      m3 = ((time3 >= time_now) ? (time3 - time_now) : (time_now - time3)),
      m4 = ((time4 >= time_now) ? (time4 - time_now) : (time_now - time4)),
      m5 = ((time5 >= time_now) ? (time5 - time_now) : (time_now - time5)),
      m6 = ((time6 >= time_now) ? (time6 - time_now) : (time_now - time6)),
      m7 = ((time7 >= time_now) ? (time7 - time_now) : (time_now - time7)),
      m8 = ((time8 >= time_now) ? (time8 - time_now) : (time_now - time8));
  int min12 = m1 < m2 ? m1 : m2, min34 = m3 < m4 ? m3 : m4,
      min1234 = min12 < min34 ? min12 : min34, min56 = m5 < m6 ? m5 : m6,
      min78 = m7 < m8 ? m7 : m8, min5678 = min56 < min78 ? min56 : min78,
      min = min1234 < min5678 ? min1234 : min5678;
  if (min == m1) {
    printf("closest departure time is 8:00 a.m., arriving at 10:16 a.m.");
  } else if (min == m2) {
    printf("closest departure time is 9:43 a.m., arriving at 11:52 a.m.");
  } else if (min == m3) {
    printf("closest departure time is 11:19 a.m., arriving at 1:31 p.m.\n");
  } else if (min == m4) {
    printf("closest departure time is 12:47 p.m., arriving at 3:00 p.m.\n");
  } else if (min == m5) {
    printf("closest departure time is 2:00 p.m., arriving at 4:08 p.m.\n");
  } else if (min == m6) {
    printf("closest departure time is 3:45 p.m., arriving at 5:55 p.m.\n");
  } else if (min == m7) {
    printf("closest departure time is 7:00 p.m., arriving at 9:20 p.m.\n");
  } else if (min == m8) {
    printf("closest departure time is 9:45 p.m., arriving at 11:58 p.m.\n");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x1e0,-0x8(%rbp)
movl   $0x247,-0xc(%rbp)
movl   $0x2a7,-0x10(%rbp)
movl   $0x2ff,-0x14(%rbp)
movl   $0x348,-0x18(%rbp)
movl   $0x3b1,-0x1c(%rbp)
movl   $0x474,-0x20(%rbp)
movl   $0x519,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
lea    0xe81(%rip),%rdi
call   1030 <printf@plt>
lea    0xe92(%rip),%rdi
lea    -0x28(%rbp),%rsi
lea    -0x2c(%rbp),%rdx
call   1040 <scanf@plt>
imul   $0x3c,-0x28(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x30(%rbp),%eax
jl     11bc <main+0x9c>
mov    -0x8(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x70(%rbp)
jmp    11c5 <main+0xa5>
mov    -0x30(%rbp),%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x30(%rbp),%eax
jl     11e5 <main+0xc5>
mov    -0xc(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x74(%rbp)
jmp    11ee <main+0xce>
mov    -0x30(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x30(%rbp),%eax
jl     120e <main+0xee>
mov    -0x10(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x78(%rbp)
jmp    1217 <main+0xf7>
mov    -0x30(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x78(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x30(%rbp),%eax
jl     1237 <main+0x117>
mov    -0x14(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x7c(%rbp)
jmp    1240 <main+0x120>
mov    -0x30(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x30(%rbp),%eax
jl     1260 <main+0x140>
mov    -0x18(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x80(%rbp)
jmp    1269 <main+0x149>
mov    -0x30(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x80(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x30(%rbp),%eax
jl     128c <main+0x16c>
mov    -0x1c(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x84(%rbp)
jmp    1298 <main+0x178>
mov    -0x30(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x30(%rbp),%eax
jl     12be <main+0x19e>
mov    -0x20(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x88(%rbp)
jmp    12ca <main+0x1aa>
mov    -0x30(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x88(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x30(%rbp),%eax
jl     12f0 <main+0x1d0>
mov    -0x24(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x8c(%rbp)
jmp    12fc <main+0x1dc>
mov    -0x30(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x8c(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    131f <main+0x1ff>
mov    -0x34(%rbp),%eax
mov    %eax,-0x90(%rbp)
jmp    1328 <main+0x208>
mov    -0x38(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0x90(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    134b <main+0x22b>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x94(%rbp)
jmp    1354 <main+0x234>
mov    -0x40(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x58(%rbp),%eax
jge    1377 <main+0x257>
mov    -0x54(%rbp),%eax
mov    %eax,-0x98(%rbp)
jmp    1380 <main+0x260>
mov    -0x58(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x98(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x48(%rbp),%eax
jge    13a3 <main+0x283>
mov    -0x44(%rbp),%eax
mov    %eax,-0x9c(%rbp)
jmp    13ac <main+0x28c>
mov    -0x48(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x50(%rbp),%eax
jge    13cf <main+0x2af>
mov    -0x4c(%rbp),%eax
mov    %eax,-0xa0(%rbp)
jmp    13d8 <main+0x2b8>
mov    -0x50(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x64(%rbp),%eax
jge    13fb <main+0x2db>
mov    -0x60(%rbp),%eax
mov    %eax,-0xa4(%rbp)
jmp    1404 <main+0x2e4>
mov    -0x64(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0xa4(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x68(%rbp),%eax
jge    1427 <main+0x307>
mov    -0x5c(%rbp),%eax
mov    %eax,-0xa8(%rbp)
jmp    1430 <main+0x310>
mov    -0x68(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x34(%rbp),%eax
jne    1456 <main+0x336>
lea    0xbd7(%rip),%rdi
call   1030 <printf@plt>
jmp    153f <main+0x41f>
mov    -0x6c(%rbp),%eax
cmp    -0x38(%rbp),%eax
jne    1473 <main+0x353>
lea    0xbf6(%rip),%rdi
call   1030 <printf@plt>
jmp    153a <main+0x41a>
mov    -0x6c(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    1490 <main+0x370>
lea    0xc15(%rip),%rdi
call   1030 <printf@plt>
jmp    1535 <main+0x415>
mov    -0x6c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jne    14ad <main+0x38d>
lea    0xc35(%rip),%rdi
call   1030 <printf@plt>
jmp    1530 <main+0x410>
mov    -0x6c(%rbp),%eax
cmp    -0x44(%rbp),%eax
jne    14ca <main+0x3aa>
lea    0xc55(%rip),%rdi
call   1030 <printf@plt>
jmp    152b <main+0x40b>
mov    -0x6c(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    14e7 <main+0x3c7>
lea    0xc74(%rip),%rdi
call   1030 <printf@plt>
jmp    1526 <main+0x406>
mov    -0x6c(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jne    1504 <main+0x3e4>
lea    0xc93(%rip),%rdi
call   1030 <printf@plt>
jmp    1521 <main+0x401>
mov    -0x6c(%rbp),%eax
cmp    -0x50(%rbp),%eax
jne    151c <main+0x3fc>
lea    0xcb2(%rip),%rdi
call   1030 <printf@plt>
jmp    1521 <main+0x401>
jmp    1526 <main+0x406>
jmp    152b <main+0x40b>
jmp    1530 <main+0x410>
jmp    1535 <main+0x415>
jmp    153a <main+0x41a>
jmp    153f <main+0x41f>
xor    %eax,%eax
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
movl   $0x0,0x4(%rsp)
movl   $0x0,(%rsp)
lea    0xff7(%rip),%rdi
call   1030 <puts@plt>
lea    0xf6d(%rip),%rdi
lea    0x4(%rsp),%rsi
mov    %rsp,%rdx
call   1050 <scanf@plt>
imul   $0x3c,0x4(%rsp),%eax
add    (%rsp),%eax
movd   %eax,%xmm0
pshufd $0x50,%xmm0,%xmm4
movdqa 0xe87(%rip),%xmm0
pcmpgtd %xmm4,%xmm0
movdqa 0xe8b(%rip),%xmm1
psubd  %xmm4,%xmm1
movdqa 0xe8f(%rip),%xmm2
paddd  %xmm4,%xmm2
pand   %xmm0,%xmm1
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movd   %xmm0,%eax
movdqa 0xe83(%rip),%xmm1
pcmpgtd %xmm4,%xmm1
movdqa 0xe87(%rip),%xmm2
psubd  %xmm4,%xmm2
movdqa 0xe8b(%rip),%xmm3
paddd  %xmm4,%xmm3
pand   %xmm1,%xmm2
pandn  %xmm3,%xmm1
por    %xmm2,%xmm1
movdqa 0xe83(%rip),%xmm2
pcmpgtd %xmm4,%xmm2
movdqa 0xe87(%rip),%xmm3
psubd  %xmm4,%xmm3
movdqa 0xe8b(%rip),%xmm5
paddd  %xmm4,%xmm5
pand   %xmm2,%xmm3
pandn  %xmm5,%xmm2
por    %xmm3,%xmm2
movdqa 0xe83(%rip),%xmm3
pcmpgtd %xmm4,%xmm3
movdqa 0xe87(%rip),%xmm5
psubd  %xmm4,%xmm5
paddd  0xe8b(%rip),%xmm4
pand   %xmm3,%xmm5
pandn  %xmm4,%xmm3
por    %xmm5,%xmm3
movdqa %xmm1,%xmm4
pcmpgtd %xmm0,%xmm4
movdqa %xmm0,%xmm5
pand   %xmm4,%xmm5
pandn  %xmm1,%xmm4
por    %xmm5,%xmm4
movdqa %xmm3,%xmm5
pcmpgtd %xmm2,%xmm5
movdqa %xmm2,%xmm6
pand   %xmm5,%xmm6
pandn  %xmm3,%xmm5
por    %xmm6,%xmm5
movdqa %xmm5,%xmm6
pcmpgtd %xmm4,%xmm6
pand   %xmm6,%xmm4
pandn  %xmm5,%xmm6
por    %xmm4,%xmm6
movd   %xmm6,%edx
pshufd $0x55,%xmm6,%xmm4
movd   %xmm4,%ecx
cmp    %ecx,%edx
cmovl  %edx,%ecx
cmp    %eax,%ecx
jne    129c <main+0x16c>
lea    0xe34(%rip),%rdi
call   1040 <printf@plt>
jmp    132f <main+0x1ff>
movd   %xmm1,%eax
cmp    %eax,%ecx
jne    12b2 <main+0x182>
lea    0xe57(%rip),%rdi
call   1040 <printf@plt>
jmp    132f <main+0x1ff>
movd   %xmm2,%eax
cmp    %eax,%ecx
jne    12c3 <main+0x193>
lea    0xfc2(%rip),%rdi
jmp    132a <main+0x1fa>
movd   %xmm3,%eax
cmp    %eax,%ecx
jne    12d4 <main+0x1a4>
lea    0xf75(%rip),%rdi
jmp    132a <main+0x1fa>
pshufd $0x55,%xmm0,%xmm0
movd   %xmm0,%eax
cmp    %eax,%ecx
jne    12ea <main+0x1ba>
lea    0xf24(%rip),%rdi
jmp    132a <main+0x1fa>
pshufd $0x55,%xmm1,%xmm0
movd   %xmm0,%eax
cmp    %eax,%ecx
jne    1300 <main+0x1d0>
lea    0xed3(%rip),%rdi
jmp    132a <main+0x1fa>
pshufd $0x55,%xmm2,%xmm0
movd   %xmm0,%eax
cmp    %eax,%ecx
jne    1316 <main+0x1e6>
lea    0xe82(%rip),%rdi
jmp    132a <main+0x1fa>
pshufd $0x55,%xmm3,%xmm0
movd   %xmm0,%eax
cmp    %eax,%ecx
jne    132f <main+0x1ff>
lea    0xe30(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
pop    %rcx
ret

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

LLVM IR (-O2):
@.str.1 = [6 x i8] c"%d:%d\00"
@.str.2 = [60 x i8] c"closest departure time is 8:00 a.m., arriving at 10:16 a.m.\00"
@.str.3 = [60 x i8] c"closest departure time is 9:43 a.m., arriving at 11:52 a.m.\00"
@str = [28 x i8] c"enter a 24-hour time(xx:xx)\00"
@str.10 = [60 x i8] c"closest departure time is 9:45 p.m., arriving at 11:58 p.m.\00"
@str.11 = [59 x i8] c"closest departure time is 7:00 p.m., arriving at 9:20 p.m.\00"
@str.12 = [59 x i8] c"closest departure time is 3:45 p.m., arriving at 5:55 p.m.\00"
@str.13 = [59 x i8] c"closest departure time is 2:00 p.m., arriving at 4:08 p.m.\00"
@str.14 = [60 x i8] c"closest departure time is 12:47 p.m., arriving at 3:00 p.m.\00"
@str.15 = [60 x i8] c"closest departure time is 11:19 a.m., arriving at 1:31 p.m.\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = bitcast i32* %1 to i8*
store i32 0, i32* %1
%4 = bitcast i32* %2 to i8*
store i32 0, i32* %2
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str, i64 0, i64 0))
%6 = call i32 @scanf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32* %1, i32* %2)
%7 = load i32, i32* %1
%8 = mul nsw i32 %7, 60
%9 = load i32, i32* %2
%10 = add nsw i32 %8, %9
%11 = insertelement <2 x i32> poison, i32 %10, i64 0
%12 = shufflevector <2 x i32> %11, <2 x i32> poison, <2 x i32> zeroinitializer
%13 = icmp slt <2 x i32> %12, <i32 481, i32 841>
%14 = sub nsw <2 x i32> <i32 480, i32 840>, %12
%15 = add nsw <2 x i32> %12, <i32 -480, i32 -840>
%16 = select <2 x i1> %13, <2 x i32> %14, <2 x i32> %15
%17 = icmp slt <2 x i32> %12, <i32 584, i32 946>
%18 = sub nsw <2 x i32> <i32 583, i32 945>, %12
%19 = add nsw <2 x i32> %12, <i32 -583, i32 -945>
%20 = select <2 x i1> %17, <2 x i32> %18, <2 x i32> %19
%21 = icmp slt <2 x i32> %12, <i32 680, i32 1141>
%22 = sub nsw <2 x i32> <i32 679, i32 1140>, %12
%23 = add nsw <2 x i32> %12, <i32 -679, i32 -1140>
%24 = select <2 x i1> %21, <2 x i32> %22, <2 x i32> %23
%25 = icmp slt <2 x i32> %12, <i32 768, i32 1306>
%26 = sub nsw <2 x i32> <i32 767, i32 1305>, %12
%27 = add nsw <2 x i32> %12, <i32 -767, i32 -1305>
%28 = select <2 x i1> %25, <2 x i32> %26, <2 x i32> %27
%29 = icmp slt <2 x i32> %16, %20
%30 = select <2 x i1> %29, <2 x i32> %16, <2 x i32> %20
%31 = icmp slt <2 x i32> %24, %28
%32 = select <2 x i1> %31, <2 x i32> %24, <2 x i32> %28
%33 = icmp slt <2 x i32> %30, %32
%34 = select <2 x i1> %33, <2 x i32> %30, <2 x i32> %32
%35 = extractelement <2 x i32> %34, i64 0
%36 = extractelement <2 x i32> %34, i64 1
%37 = icmp slt i32 %35, %36
%38 = select i1 %37, i32 %35, i32 %36
%39 = extractelement <2 x i32> %16, i64 0
%40 = icmp eq i32 %38, %39
br i1 %40, label %41, label %43
41: ; preds = %0
%42 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.2, i64 0, i64 0))
br label %78
43: ; preds = %0
%44 = extractelement <2 x i32> %20, i64 0
%45 = icmp eq i32 %38, %44
br i1 %45, label %46, label %48
46: ; preds = %43
%47 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.3, i64 0, i64 0))
br label %78
48: ; preds = %43
%49 = extractelement <2 x i32> %24, i64 0
%50 = icmp eq i32 %38, %49
br i1 %50, label %51, label %53
51: ; preds = %48
%52 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.15, i64 0, i64 0))
br label %78
53: ; preds = %48
%54 = extractelement <2 x i32> %28, i64 0
%55 = icmp eq i32 %38, %54
br i1 %55, label %56, label %58
56: ; preds = %53
%57 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.14, i64 0, i64 0))
br label %78
58: ; preds = %53
%59 = extractelement <2 x i32> %16, i64 1
%60 = icmp eq i32 %38, %59
br i1 %60, label %61, label %63
61: ; preds = %58
%62 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.13, i64 0, i64 0))
br label %78
63: ; preds = %58
%64 = extractelement <2 x i32> %20, i64 1
%65 = icmp eq i32 %38, %64
br i1 %65, label %66, label %68
66: ; preds = %63
%67 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.12, i64 0, i64 0))
br label %78
68: ; preds = %63
%69 = extractelement <2 x i32> %24, i64 1
%70 = icmp eq i32 %38, %69
br i1 %70, label %71, label %73
71: ; preds = %68
%72 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.11, i64 0, i64 0))
br label %78
73: ; preds = %68
%74 = extractelement <2 x i32> %28, i64 1
%75 = icmp eq i32 %38, %74
br i1 %75, label %76, label %78
76: ; preds = %73
%77 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.10, i64 0, i64 0))
br label %78
78: ; preds = %46, %56, %66, %73, %76, %71, %61, %51, %41
ret i32 0
}