#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 */
typedef int /*<<< orphan*/ buf;

/* Variables and functions */
int /*<<< orphan*/ snprintf(char *, int, char *, ...);
const char *dtime(double _t) {
  static char buf[sizeof("365d 23:59:59")];
  unsigned long t = (unsigned long)_t;
  if (_t < 0) {
    snprintf(buf, sizeof(buf), "(error)");
    return (buf);
  }
  if (t < 2) {
    unsigned long mt = (unsigned long)(100 * (_t - t));
    snprintf(buf, sizeof(buf), "%lu.%02lus", t, mt);
  } else if (t < 10) {
    unsigned long mt = (unsigned long)(10 * (_t - t));
    snprintf(buf, sizeof(buf), "%lu.%01lus", t, mt);
  } else if (t < 90)
    snprintf(buf, sizeof(buf), "%lus", t);
  else if (t < 60 * 60)
    snprintf(buf, sizeof(buf), "%lum", t / 60);
  else if (t < 24 * 60 * 60)
    snprintf(buf, sizeof(buf), "%lu:%02lum", t / (60 * 60), (t / 60) % 60);
  else if (t < 365 * 24 * 60 * 60)
    snprintf(buf, sizeof(buf), "%lud %lu:%02lum", t / (24 * 60 * 60),
             t / (60 * 60) % 24, t / 60 % 60);
  else
    snprintf(buf, sizeof(buf), "%luy %lud", t / (365 * 24 * 60 * 60),
             t / (24 * 60 * 60) % 365);
  return (buf);
}


x86 assembly (clang, -O0):
<dtime>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  0xed6(%rip),%xmm2
movaps %xmm0,%xmm1
subsd  %xmm2,%xmm1
cvttsd2si %xmm1,%rcx
cvttsd2si %xmm0,%rax
mov    %rax,%rdx
sar    $0x3f,%rdx
and    %rdx,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1184 <dtime+0x74>
lea    0x2ec8(%rip),%rdi
mov    $0xe,%esi
lea    0xed3(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
lea    0x2eae(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    1457 <dtime+0x347>
cmpq   $0x2,-0x18(%rbp)
jae    121c <dtime+0x10c>
movsd  -0x10(%rbp),%xmm0
movaps 0xe85(%rip),%xmm2
movq   -0x18(%rbp),%xmm1
punpckldq %xmm2,%xmm1
movapd 0xe84(%rip),%xmm2
subpd  %xmm2,%xmm1
movaps %xmm1,%xmm2
unpckhpd %xmm1,%xmm1
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  0xe49(%rip),%xmm1
mulsd  %xmm1,%xmm0
movaps %xmm0,%xmm1
cvttsd2si %xmm1,%rax
mov    %rax,%rdx
sar    $0x3f,%rdx
movsd  0xe1e(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rcx
and    %rdx,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
lea    0x2e25(%rip),%rdi
mov    $0xe,%esi
lea    0xe38(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
jmp    144c <dtime+0x33c>
cmpq   $0xa,-0x18(%rbp)
jae    12b4 <dtime+0x1a4>
movsd  -0x10(%rbp),%xmm0
movaps 0xded(%rip),%xmm2
movq   -0x18(%rbp),%xmm1
punpckldq %xmm2,%xmm1
movapd 0xdec(%rip),%xmm2
subpd  %xmm2,%xmm1
movaps %xmm1,%xmm2
unpckhpd %xmm1,%xmm1
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  0xda9(%rip),%xmm1
mulsd  %xmm1,%xmm0
movaps %xmm0,%xmm1
cvttsd2si %xmm1,%rax
mov    %rax,%rdx
sar    $0x3f,%rdx
movsd  0xd86(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rcx
and    %rdx,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rcx
mov    -0x28(%rbp),%r8
lea    0x2d8d(%rip),%rdi
mov    $0xe,%esi
lea    0xdab(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
jmp    1447 <dtime+0x337>
cmpq   $0x5a,-0x18(%rbp)
jae    12e2 <dtime+0x1d2>
mov    -0x18(%rbp),%rcx
lea    0x2d5f(%rip),%rdi
mov    $0xe,%esi
lea    0xd88(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
jmp    1442 <dtime+0x332>
cmpq   $0xe10,-0x18(%rbp)
jae    1320 <dtime+0x210>
mov    -0x18(%rbp),%rax
mov    $0x3c,%ecx
xor    %edx,%edx
div    %rcx
mov    %rax,%rcx
lea    0x2d21(%rip),%rdi
mov    $0xe,%esi
lea    0xd4f(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
jmp    143d <dtime+0x32d>
cmpq   $0x15180,-0x18(%rbp)
jae    1379 <dtime+0x269>
mov    -0x18(%rbp),%rax
mov    $0xe10,%ecx
xor    %edx,%edx
div    %rcx
mov    %rax,%rcx
mov    -0x18(%rbp),%rax
mov    $0x3c,%esi
xor    %edx,%edx
div    %rsi
mov    $0x3c,%esi
xor    %edx,%edx
div    %rsi
mov    %rdx,%r8
lea    0x2cc8(%rip),%rdi
mov    $0xe,%esi
lea    0xd00(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
jmp    1438 <dtime+0x328>
cmpq   $0x1e13380,-0x18(%rbp)
01
jae    13ed <dtime+0x2dd>
mov    -0x18(%rbp),%rax
mov    $0x15180,%ecx
xor    %edx,%edx
div    %rcx
mov    %rax,%rcx
mov    -0x18(%rbp),%rax
mov    $0xe10,%esi
xor    %edx,%edx
div    %rsi
mov    $0x18,%esi
xor    %edx,%edx
div    %rsi
mov    %rdx,%r8
mov    -0x18(%rbp),%rax
mov    $0x3c,%esi
xor    %edx,%edx
div    %rsi
mov    $0x3c,%esi
xor    %edx,%edx
div    %rsi
mov    %rdx,%r9
lea    0x2c54(%rip),%rdi
mov    $0xe,%esi
lea    0xc87(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
jmp    1433 <dtime+0x323>
mov    -0x18(%rbp),%rax
mov    $0x1e13380,%ecx
xor    %edx,%edx
div    %rcx
mov    %rax,%rcx
mov    -0x18(%rbp),%rax
mov    $0x15180,%esi
xor    %edx,%edx
div    %rsi
mov    $0x16d,%esi
xor    %edx,%edx
div    %rsi
mov    %rdx,%r8
lea    0x2c09(%rip),%rdi
mov    $0xe,%esi
lea    0xc4c(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
jmp    1438 <dtime+0x328>
jmp    143d <dtime+0x32d>
jmp    1442 <dtime+0x332>
jmp    1447 <dtime+0x337>
jmp    144c <dtime+0x33c>
lea    0x2bd6(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dtime>:
push   %rax
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jbe    113a <dtime+0x2a>
lea    0x2f07(%rip),%rdi
lea    0xf17(%rip),%rdx
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <snprintf@plt>
jmp    122b <dtime+0x11b>
cvttsd2si %xmm0,%rax
mov    %rax,%rdx
movapd %xmm0,%xmm1
subsd  0xeb2(%rip),%xmm1
cvttsd2si %xmm1,%rcx
sar    $0x3f,%rdx
and    %rdx,%rcx
or     %rax,%rcx
cmp    $0x1,%rcx
ja     11bf <dtime+0xaf>
movq   %rcx,%xmm1
punpckldq 0xeb0(%rip),%xmm1
subpd  0xeb8(%rip),%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
addsd  %xmm1,%xmm2
subsd  %xmm2,%xmm0
mulsd  0xe80(%rip),%xmm0
cvttsd2si %xmm0,%rax
mov    %rax,%rdx
sar    $0x3f,%rdx
subsd  0xe5c(%rip),%xmm0
cvttsd2si %xmm0,%r8
and    %rdx,%r8
or     %rax,%r8
lea    0x2e73(%rip),%rdi
lea    0xe8b(%rip),%rdx
jmp    121f <dtime+0x10f>
cmp    $0x9,%rcx
ja     1234 <dtime+0x124>
movq   %rcx,%xmm1
punpckldq 0xe4e(%rip),%xmm1
subpd  0xe56(%rip),%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
addsd  %xmm1,%xmm2
subsd  %xmm2,%xmm0
mulsd  0xe16(%rip),%xmm0
cvttsd2si %xmm0,%rax
mov    %rax,%rdx
sar    $0x3f,%rdx
subsd  0xdfa(%rip),%xmm0
cvttsd2si %xmm0,%r8
and    %rdx,%r8
or     %rax,%r8
lea    0x2e11(%rip),%rdi
lea    0xe34(%rip),%rdx
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <snprintf@plt>
lea    0x2df7(%rip),%rax
pop    %rcx
ret
cmp    $0x59,%rcx
ja     124a <dtime+0x13a>
lea    0x2de8(%rip),%rdi
lea    0xe16(%rip),%rdx
jmp    126d <dtime+0x15d>
cmp    $0xe0f,%rcx
ja     127b <dtime+0x16b>
movzwl %cx,%eax
imul   $0x8889,%eax,%ecx
shr    $0x15,%ecx
lea    0x2dc3(%rip),%rdi
lea    0xdf6(%rip),%rdx
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <snprintf@plt>
jmp    122b <dtime+0x11b>
cmp    $0x1517f,%rcx
ja     12c8 <dtime+0x1b8>
mov    %ecx,%eax
mov    $0x91a2b3c5,%ecx
imul   %rax,%rcx
shr    $0x2b,%rcx
mov    $0x88888889,%edx
imul   %rax,%rdx
shr    $0x25,%rdx
movzwl %dx,%eax
imul   $0x8889,%eax,%eax
shr    $0x15,%eax
imul   $0x3c,%eax,%eax
sub    %eax,%edx
movzwl %dx,%r8d
lea    0x2d6d(%rip),%rdi
lea    0xdaa(%rip),%rdx
jmp    121f <dtime+0x10f>
cmp    $0x1e1337f,%rcx
ja     1343 <dtime+0x233>
mov    %ecx,%r9d
mov    $0xc22e4507,%ecx
imul   %r9,%rcx
shr    $0x30,%rcx
mov    $0x91a2b3c5,%eax
imul   %r9,%rax
shr    $0x2b,%rax
movzwl %ax,%edx
imul   $0xaaab,%edx,%edx
shr    $0x11,%edx
and    $0xfffffff8,%edx
lea    (%rdx,%rdx,2),%edx
sub    %edx,%eax
movzwl %ax,%r8d
mov    $0x88888889,%eax
imul   %rax,%r9
shr    $0x25,%r9
mov    %r9,%rdx
imul   %rax,%rdx
shr    $0x25,%rdx
imul   $0x3c,%edx,%eax
sub    %eax,%r9d
lea    0x2cfe(%rip),%rdi
lea    0xd36(%rip),%rdx
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <snprintf@plt>
jmp    122b <dtime+0x11b>
mov    %rcx,%rax
shr    $0x7,%rax
movabs $0x220c523d72c49c3,%rdx
c5 20 02
mul    %rdx
mov    %rdx,%r8
shr    $0xb,%r8
movabs $0xc22e450672894ab7,%rdx
45 2e c2
mov    %rcx,%rax
mul    %rdx
mov    %rdx,%r9
shr    $0x10,%r9
movabs $0x6719f36016719f37,%rcx
f3 19 67
mov    %r9,%rax
mul    %rcx
mov    %r9,%rax
sub    %rdx,%rax
shr    %rax
add    %rdx,%rax
shr    $0x8,%rax
imul   $0x16d,%rax,%rax
sub    %rax,%r9
lea    0x2c83(%rip),%rdi
lea    0xccb(%rip),%rdx
mov    $0xe,%esi
mov    %r8,%rcx
mov    %r9,%r8
jmp    1224 <dtime+0x114>

LLVM IR (-O0):
@dtime.buf = internal global [14 x i8] zeroinitializer
@.str = [8 x i8] c"(error)\00"
@.str.1 = [11 x i8] c"%lu.%02lus\00"
@.str.2 = [11 x i8] c"%lu.%01lus\00"
@.str.3 = [5 x i8] c"%lus\00"
@.str.4 = [5 x i8] c"%lum\00"
@.str.5 = [11 x i8] c"%lu:%02lum\00"
@.str.6 = [16 x i8] c"%lud %lu:%02lum\00"
@.str.7 = [10 x i8] c"%luy %lud\00"
define i8* @dtime(double %0) {
%2 = alloca i8*
%3 = alloca double
%4 = alloca i64
%5 = alloca i64
%6 = alloca i64
store double %0, double* %3
%7 = load double, double* %3
%8 = fptoui double %7 to i64
store i64 %8, i64* %4
%9 = load double, double* %3
%10 = fcmp olt double %9, 0.000000e+00
br i1 %10, label %11, label %13
11: ; preds = %1
%12 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i8** %2
br label %88
13: ; preds = %1
%14 = load i64, i64* %4
%15 = icmp ult i64 %14, 2
br i1 %15, label %16, label %26
16: ; preds = %13
%17 = load double, double* %3
%18 = load i64, i64* %4
%19 = uitofp i64 %18 to double
%20 = fsub double %17, %19
%21 = fmul double 1.000000e+02, %20
%22 = fptoui double %21 to i64
store i64 %22, i64* %5
%23 = load i64, i64* %4
%24 = load i64, i64* %5
%25 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i64 %23, i64 %24)
br label %87
26: ; preds = %13
%27 = load i64, i64* %4
%28 = icmp ult i64 %27, 10
br i1 %28, label %29, label %39
29: ; preds = %26
%30 = load double, double* %3
%31 = load i64, i64* %4
%32 = uitofp i64 %31 to double
%33 = fsub double %30, %32
%34 = fmul double 1.000000e+01, %33
%35 = fptoui double %34 to i64
store i64 %35, i64* %6
%36 = load i64, i64* %4
%37 = load i64, i64* %6
%38 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i64 %36, i64 %37)
br label %86
39: ; preds = %26
%40 = load i64, i64* %4
%41 = icmp ult i64 %40, 90
br i1 %41, label %42, label %45
42: ; preds = %39
%43 = load i64, i64* %4
%44 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i64 %43)
br label %85
45: ; preds = %39
%46 = load i64, i64* %4
%47 = icmp ult i64 %46, 3600
br i1 %47, label %48, label %52
48: ; preds = %45
%49 = load i64, i64* %4
%50 = udiv i64 %49, 60
%51 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i64 %50)
br label %84
52: ; preds = %45
%53 = load i64, i64* %4
%54 = icmp ult i64 %53, 86400
br i1 %54, label %55, label %62
55: ; preds = %52
%56 = load i64, i64* %4
%57 = udiv i64 %56, 3600
%58 = load i64, i64* %4
%59 = udiv i64 %58, 60
%60 = urem i64 %59, 60
%61 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i64 0, i64 0), i64 %57, i64 %60)
br label %83
62: ; preds = %52
%63 = load i64, i64* %4
%64 = icmp ult i64 %63, 31536000
br i1 %64, label %65, label %75
65: ; preds = %62
%66 = load i64, i64* %4
%67 = udiv i64 %66, 86400
%68 = load i64, i64* %4
%69 = udiv i64 %68, 3600
%70 = urem i64 %69, 24
%71 = load i64, i64* %4
%72 = udiv i64 %71, 60
%73 = urem i64 %72, 60
%74 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.6, i64 0, i64 0), i64 %67, i64 %70, i64 %73)
br label %82
75: ; preds = %62
%76 = load i64, i64* %4
%77 = udiv i64 %76, 31536000
%78 = load i64, i64* %4
%79 = udiv i64 %78, 86400
%80 = urem i64 %79, 365
%81 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i64 0, i64 0), i64 %77, i64 %80)
br label %82
82: ; preds = %75, %65
br label %83
83: ; preds = %82, %55
br label %84
84: ; preds = %83, %48
br label %85
85: ; preds = %84, %42
br label %86
86: ; preds = %85, %29
br label %87
87: ; preds = %86, %16
store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i8** %2
br label %88
88: ; preds = %87, %11
%89 = load i8*, i8** %2
ret i8* %89
}

LLVM IR (-O2):
@dtime.buf = internal global [14 x i8] zeroinitializer
@.str = [8 x i8] c"(error)\00"
@.str.1 = [11 x i8] c"%lu.%02lus\00"
@.str.2 = [11 x i8] c"%lu.%01lus\00"
@.str.3 = [5 x i8] c"%lus\00"
@.str.4 = [5 x i8] c"%lum\00"
@.str.5 = [11 x i8] c"%lu:%02lum\00"
@.str.6 = [16 x i8] c"%lud %lu:%02lum\00"
@.str.7 = [10 x i8] c"%luy %lud\00"
define i8* @dtime(double %0) {
%2 = fptoui double %0 to i64
%3 = fcmp olt double %0, 0.000000e+00
br i1 %3, label %4, label %6
4: ; preds = %1
%5 = tail call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
br label %63
6: ; preds = %1
%7 = icmp ult i64 %2, 2
br i1 %7, label %8, label %14
8: ; preds = %6
%9 = uitofp i64 %2 to double
%10 = fsub double %0, %9
%11 = fmul double %10, 1.000000e+02
%12 = fptoui double %11 to i64
%13 = tail call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i64 %2, i64 %12)
br label %63
14: ; preds = %6
%15 = icmp ult i64 %2, 10
br i1 %15, label %16, label %22
16: ; preds = %14
%17 = uitofp i64 %2 to double
%18 = fsub double %0, %17
%19 = fmul double %18, 1.000000e+01
%20 = fptoui double %19 to i64
%21 = tail call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i64 %2, i64 %20)
br label %63
22: ; preds = %14
%23 = icmp ult i64 %2, 90
br i1 %23, label %24, label %26
24: ; preds = %22
%25 = tail call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i64 %2)
br label %63
26: ; preds = %22
%27 = icmp ult i64 %2, 3600
br i1 %27, label %28, label %33
28: ; preds = %26
%29 = trunc i64 %2 to i16
%30 = udiv i16 %29, 60
%31 = zext i16 %30 to i64
%32 = tail call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i64 %31)
br label %63
33: ; preds = %26
%34 = icmp ult i64 %2, 86400
br i1 %34, label %35, label %44
35: ; preds = %33
%36 = trunc i64 %2 to i32
%37 = udiv i32 %36, 3600
%38 = zext i32 %37 to i64
%39 = udiv i32 %36, 60
%40 = trunc i32 %39 to i16
%41 = urem i16 %40, 60
%42 = zext i16 %41 to i64
%43 = tail call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i64 0, i64 0), i64 %38, i64 %42)
br label %63
44: ; preds = %33
%45 = icmp ult i64 %2, 31536000
br i1 %45, label %46, label %58
46: ; preds = %44
%47 = trunc i64 %2 to i32
%48 = udiv i32 %47, 86400
%49 = zext i32 %48 to i64
%50 = udiv i32 %47, 3600
%51 = trunc i32 %50 to i16
%52 = urem i16 %51, 24
%53 = zext i16 %52 to i64
%54 = udiv i32 %47, 60
%55 = urem i32 %54, 60
%56 = zext i32 %55 to i64
%57 = tail call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.6, i64 0, i64 0), i64 %49, i64 %53, i64 %56)
br label %63
58: ; preds = %44
%59 = udiv i64 %2, 31536000
%60 = udiv i64 %2, 86400
%61 = urem i64 %60, 365
%62 = tail call i32 (i8*, i32, i8*, ...) @snprintf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0), i32 14, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i64 0, i64 0), i64 %59, i64 %61)
br label %63
63: ; preds = %8, %24, %35, %58, %46, %28, %16, %4
ret i8* getelementptr inbounds ([14 x i8], [14 x i8]* @dtime.buf, i64 0, i64 0)
}