#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*/ displayTimes(double, double, char *, int, int, int, int,
                                int /*<<< orphan*/, int);
int /*<<< orphan*/ printf(char *);
int main() {
  displayTimes(24.4833, 54.35, "Abu Dhabi", 3, 9, 2014, 4, 0, 7);
  printf("Verified times for Abu Dhabi on 3/ 9/2014\n4:38:32    6:03:14   "
         "12:20:52   15:49:22   18:38:09   20:08:09\n");
  displayTimes(51.500152, -0.126236, "London", 1, 1, 2014, 0, 0, 10);
  printf("Verified times for London on 1/ 1/2014\n6:24:53    8:04:53   "
         "12:07:53   13:44:04   16:04:05   17:38:05\n");
  displayTimes(24.671978, 46.675415, "Riyadh", 3, 9, 2014, 3, 0, 6);
  printf("Verified times for Riyadh on 3/ 9/2014\n4:15:56    5:33:49   "
         "11:51:34   15:20:16   18:08:57   19:38:57\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
movsd  0xee9(%rip),%xmm0
movsd  0xee9(%rip),%xmm1
lea    0xeea(%rip),%rdi
mov    $0x3,%esi
mov    $0x9,%edx
mov    $0x7de,%ecx
mov    $0x4,%r8d
xor    %r9d,%r9d
movl   $0x7,(%rsp)
call   1030 <displayTimes@plt>
lea    0xec9(%rip),%rdi
call   1040 <printf@plt>
movsd  0xe92(%rip),%xmm0
movsd  0xe92(%rip),%xmm1
lea    0xf17(%rip),%rdi
mov    $0x1,%edx
mov    $0x7de,%ecx
xor    %r9d,%r9d
mov    %edx,%esi
mov    %r9d,%r8d
movl   $0xa,(%rsp)
call   1030 <displayTimes@plt>
lea    0xef9(%rip),%rdi
call   1040 <printf@plt>
movsd  0xe41(%rip),%xmm0
movsd  0xe41(%rip),%xmm1
lea    0xf44(%rip),%rdi
mov    $0x3,%r8d
mov    $0x9,%edx
mov    $0x7de,%ecx
xor    %r9d,%r9d
mov    %r8d,%esi
movl   $0x6,(%rsp)
call   1030 <displayTimes@plt>
lea    0xf22(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
movl   $0x7,(%rsp)
lea    0xf01(%rip),%rdi
movsd  0xec9(%rip),%xmm0
movsd  0xec9(%rip),%xmm1
mov    $0x3,%esi
mov    $0x9,%edx
mov    $0x7de,%ecx
mov    $0x4,%r8d
xor    %r9d,%r9d
call   1030 <displayTimes@plt>
lea    0xee5(%rip),%rdi
call   1040 <puts@plt>
movl   $0xa,(%rsp)
lea    0xec4(%rip),%rdi
movsd  0xe92(%rip),%xmm0
movsd  0xe92(%rip),%xmm1
mov    $0x1,%esi
mov    $0x1,%edx
mov    $0x7de,%ecx
xor    %r8d,%r8d
xor    %r9d,%r9d
call   1030 <displayTimes@plt>
lea    0xf0a(%rip),%rdi
call   1040 <puts@plt>
movl   $0x6,(%rsp)
lea    0xe87(%rip),%rdi
movsd  0xe5e(%rip),%xmm0
movsd  0xe5e(%rip),%xmm1
mov    $0x3,%esi
mov    $0x9,%edx
mov    $0x7de,%ecx
mov    $0x3,%r8d
xor    %r9d,%r9d
call   1030 <displayTimes@plt>
lea    0xf29(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [10 x i8] c"Abu Dhabi\00"
@.str.1 = [106 x i8] c"Verified times for Abu Dhabi on 3/ 9/2014\0A4:38:32 6:03:14 12:20:52 15:49:22 18:38:09 20:08:09\0A\00"
@.str.2 = [7 x i8] c"London\00"
@.str.3 = [103 x i8] c"Verified times for London on 1/ 1/2014\0A6:24:53 8:04:53 12:07:53 13:44:04 16:04:05 17:38:05\0A\00"
@.str.4 = [7 x i8] c"Riyadh\00"
@.str.5 = [103 x i8] c"Verified times for Riyadh on 3/ 9/2014\0A4:15:56 5:33:49 11:51:34 15:20:16 18:08:57 19:38:57\0A\00"
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 @displayTimes(double 2.448330e+01, double 5.435000e+01, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32 3, i32 9, i32 2014, i32 4, i32 0, i32 7)
%3 = call i32 @printf(i8* getelementptr inbounds ([106 x i8], [106 x i8]* @.str.1, i64 0, i64 0))
%4 = call i32 @displayTimes(double 0x4049C004FB1183B6, double -1.262360e-01, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i32 1, i32 1, i32 2014, i32 0, i32 0, i32 10)
%5 = call i32 @printf(i8* getelementptr inbounds ([103 x i8], [103 x i8]* @.str.3, i64 0, i64 0))
%6 = call i32 @displayTimes(double 0x4038AC06C00DA1A9, double 0x40475673FFAC1D2A, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i32 3, i32 9, i32 2014, i32 3, i32 0, i32 6)
%7 = call i32 @printf(i8* getelementptr inbounds ([103 x i8], [103 x i8]* @.str.5, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str = [10 x i8] c"Abu Dhabi\00"
@.str.2 = [7 x i8] c"London\00"
@.str.4 = [7 x i8] c"Riyadh\00"
@str = [105 x i8] c"Verified times for Abu Dhabi on 3/ 9/2014\0A4:38:32 6:03:14 12:20:52 15:49:22 18:38:09 20:08:09\00"
@str.6 = [102 x i8] c"Verified times for London on 1/ 1/2014\0A6:24:53 8:04:53 12:07:53 13:44:04 16:04:05 17:38:05\00"
@str.7 = [102 x i8] c"Verified times for Riyadh on 3/ 9/2014\0A4:15:56 5:33:49 11:51:34 15:20:16 18:08:57 19:38:57\00"
define i32 @main() {
%1 = tail call i32 @displayTimes(double 2.448330e+01, double 5.435000e+01, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32 3, i32 9, i32 2014, i32 4, i32 0, i32 7)
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([105 x i8], [105 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @displayTimes(double 0x4049C004FB1183B6, double -1.262360e-01, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i32 1, i32 1, i32 2014, i32 0, i32 0, i32 10)
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([102 x i8], [102 x i8]* @str.6, i64 0, i64 0))
%5 = tail call i32 @displayTimes(double 0x4038AC06C00DA1A9, double 0x40475673FFAC1D2A, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i32 3, i32 9, i32 2014, i32 3, i32 0, i32 6)
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([102 x i8], [102 x i8]* @str.7, i64 0, i64 0))
ret i32 0
}