#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 uint32_t;

/* Variables and functions */
int /*<<< orphan*/ printf(char *, int, int, int, int, int);
void statsdump_print_date(uint32_t ts) {
  uint32_t day, dsec, h, m, s, wd, y, yd, yp, mon;
  day = ts / 86400;
  dsec = ts % 86400;
  h = dsec / 3600;
  m = (dsec % 3600) / 60;
  s = dsec % 60;
  wd = (day + 3) % 7;
  y = (day / 1461) * 4 + 1970;
  yd = day % 1461;
  yp = 0;
  if (yd >= 730) {
    if (yd >= 1096) {
      y += 3;
      yd -= 1096;
    } else {
      y += 2;
      yd -= 730;
      yp = 1;
    }
  } else if (yd >= 365) {
    y++;
    yd -= 365;
  }
  if (yd >= 181 + yp) {
    if (yd >= 273 + yp) {
      if (yd >= 334 + yp) {
        mon = 11;
        yd -= (334 + yp);
      } else if (yd >= 304 + yp) {
        mon = 10;
        yd -= (304 + yp);
      } else {
        mon = 9;
        yd -= (273 + yp);
      }
    } else {
      if (yd >= 243 + yp) {
        mon = 8;
        yd -= (243 + yp);
      } else if (yd >= 212 + yp) {
        mon = 7;
        yd -= (212 + yp);
      } else {
        mon = 6;
        yd -= (181 + yp);
      }
    }
  } else {
    if (yd >= 90 + yp) {
      if (yd >= 151 + yp) {
        mon = 5;
        yd -= (151 + yp);
      } else if (yd >= 120 + yp) {
        mon = 4;
        yd -= (120 + yp);
      } else {
        mon = 3;
        yd -= (90 + yp);
      }
    } else {
      if (yd >= 59 + yp) {
        mon = 2;
        yd -= (59 + yp);
      } else if (yd >= 31) {
        mon = 1;
        yd -= 31;
      } else {
        mon = 0;
      }
    }
  }
  (void)wd;
  (void)s;
  printf("%04u-%02u-%02u %02u:%02u", y, mon + 1, yd + 1, h, m);
}


x86 assembly (clang, -O0):
<statsdump_print_date>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x15180,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x15180,%ecx
cltd
idiv   %ecx
mov    %edx,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    $0xe10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
mov    $0xe10,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    $0x3c,%ecx
cltd
idiv   %ecx
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x3c,%ecx
cltd
idiv   %ecx
mov    %edx,-0x18(%rbp)
mov    -0x8(%rbp),%eax
add    $0x3,%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
mov    %edx,-0x1c(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x5b5,%ecx
cltd
idiv   %ecx
shl    $0x2,%eax
add    $0x7b2,%eax
mov    %eax,-0x20(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x5b5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x2da,-0x24(%rbp)
jl     11fa <statsdump_print_date+0xea>
cmpl   $0x448,-0x24(%rbp)
jl     11da <statsdump_print_date+0xca>
mov    -0x20(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x448,%eax
mov    %eax,-0x24(%rbp)
jmp    11f5 <statsdump_print_date+0xe5>
mov    -0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x2da,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x28(%rbp)
jmp    1220 <statsdump_print_date+0x110>
cmpl   $0x16d,-0x24(%rbp)
jl     121b <statsdump_print_date+0x10b>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x16d,%eax
mov    %eax,-0x24(%rbp)
jmp    1220 <statsdump_print_date+0x110>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0xb5,%ecx
cmp    %ecx,%eax
jl     1355 <statsdump_print_date+0x245>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0x111,%ecx
cmp    %ecx,%eax
jl     12cc <statsdump_print_date+0x1bc>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0x14e,%ecx
cmp    %ecx,%eax
jl     1279 <statsdump_print_date+0x169>
movl   $0xb,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0x14e,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    12c7 <statsdump_print_date+0x1b7>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0x130,%ecx
cmp    %ecx,%eax
jl     12aa <statsdump_print_date+0x19a>
movl   $0xa,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0x130,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    12c2 <statsdump_print_date+0x1b2>
movl   $0x9,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0x111,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    12c7 <statsdump_print_date+0x1b7>
jmp    1350 <statsdump_print_date+0x240>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0xf3,%ecx
cmp    %ecx,%eax
jl     12fd <statsdump_print_date+0x1ed>
movl   $0x8,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0xf3,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    134b <statsdump_print_date+0x23b>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0xd4,%ecx
cmp    %ecx,%eax
jl     132e <statsdump_print_date+0x21e>
movl   $0x7,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0xd4,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    1346 <statsdump_print_date+0x236>
movl   $0x6,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0xb5,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    134b <statsdump_print_date+0x23b>
jmp    1350 <statsdump_print_date+0x240>
jmp    1441 <statsdump_print_date+0x331>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0x5a,%ecx
cmp    %ecx,%eax
jl     13e1 <statsdump_print_date+0x2d1>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0x97,%ecx
cmp    %ecx,%eax
jl     1397 <statsdump_print_date+0x287>
movl   $0x5,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0x97,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    13dc <statsdump_print_date+0x2cc>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0x78,%ecx
cmp    %ecx,%eax
jl     13c2 <statsdump_print_date+0x2b2>
movl   $0x4,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0x78,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    13d7 <statsdump_print_date+0x2c7>
movl   $0x3,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0x5a,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    13dc <statsdump_print_date+0x2cc>
jmp    143c <statsdump_print_date+0x32c>
mov    -0x24(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    $0x3b,%ecx
cmp    %ecx,%eax
jl     140c <statsdump_print_date+0x2fc>
movl   $0x2,-0x2c(%rbp)
mov    -0x28(%rbp),%ecx
add    $0x3b,%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    1437 <statsdump_print_date+0x327>
cmpl   $0x1f,-0x24(%rbp)
jl     142b <statsdump_print_date+0x31b>
movl   $0x1,-0x2c(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x1f,%eax
mov    %eax,-0x24(%rbp)
jmp    1432 <statsdump_print_date+0x322>
movl   $0x0,-0x2c(%rbp)
jmp    1437 <statsdump_print_date+0x327>
jmp    143c <statsdump_print_date+0x32c>
jmp    1441 <statsdump_print_date+0x331>
mov    -0x20(%rbp),%esi
mov    -0x2c(%rbp),%edx
add    $0x1,%edx
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
mov    -0x10(%rbp),%r8d
mov    -0x14(%rbp),%r9d
lea    0xba1(%rip),%rdi
call   1030 <printf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<statsdump_print_date>:
movslq %edi,%rax
imul   $0xffffffffc22e4507,%rax,%rdx
shr    $0x20,%rdx
add    %edi,%edx
mov    %edx,%ecx
shr    $0x1f,%ecx
sar    $0x10,%edx
add    %ecx,%edx
imul   $0x15180,%edx,%r9d
imul   $0x11032d79,%rax,%rsi
mov    %rsi,%rax
shr    $0x3f,%rax
sar    $0x37,%rsi
add    %eax,%esi
shl    $0x2,%esi
movswl %dx,%eax
imul   $0x59b7,%eax,%eax
mov    %eax,%ecx
shr    $0x1f,%ecx
sar    $0x19,%eax
add    %ecx,%eax
imul   $0x5b5,%eax,%eax
sub    %eax,%edx
movswl %dx,%r8d
cmp    $0x2da,%r8d
jl     118b <statsdump_print_date+0x7b>
movzwl %dx,%eax
cmp    $0x448,%eax
jb     11a5 <statsdump_print_date+0x95>
add    $0x7b5,%esi
add    $0xfffffbb8,%r8d
xor    %edx,%edx
jmp    11bf <statsdump_print_date+0xaf>
xor    %edx,%edx
cmp    $0x16d,%r8d
jl     11b9 <statsdump_print_date+0xa9>
add    $0x7b3,%esi
add    $0xfffffe93,%r8d
jmp    11bf <statsdump_print_date+0xaf>
add    $0x7b4,%esi
add    $0xfffffd26,%r8d
mov    $0x1,%edx
jmp    11bf <statsdump_print_date+0xaf>
add    $0x7b2,%esi
sub    %r9d,%edi
lea    0xb5(%rdx),%ecx
mov    %r8d,%eax
sub    %ecx,%eax
jge    1200 <statsdump_print_date+0xf0>
lea    0x5a(%rdx),%ecx
mov    %r8d,%eax
sub    %ecx,%eax
jge    1231 <statsdump_print_date+0x121>
add    $0x3b,%edx
mov    %r8d,%ecx
sub    %edx,%ecx
jge    1273 <statsdump_print_date+0x163>
lea    -0x1f(%r8),%ecx
xor    %edx,%edx
cmp    $0x1f,%r8d
setge  %dl
cmovl  %r8d,%ecx
add    $0x1,%edx
jmp    12a5 <statsdump_print_date+0x195>
lea    0x111(%rdx),%ecx
mov    %r8d,%r9d
sub    %ecx,%r9d
jge    1251 <statsdump_print_date+0x141>
lea    0xf3(%rdx),%r9d
mov    %r8d,%ecx
sub    %r9d,%ecx
jge    127a <statsdump_print_date+0x16a>
or     $0xd4,%edx
sub    %edx,%r8d
jge    128f <statsdump_print_date+0x17f>
mov    $0x7,%edx
mov    %eax,%ecx
jmp    12a5 <statsdump_print_date+0x195>
lea    0x97(%rdx),%r9d
mov    %r8d,%ecx
sub    %r9d,%ecx
jge    1281 <statsdump_print_date+0x171>
or     $0x78,%edx
sub    %edx,%r8d
jge    1296 <statsdump_print_date+0x186>
mov    $0x4,%edx
mov    %eax,%ecx
jmp    12a5 <statsdump_print_date+0x195>
lea    0x14e(%rdx),%eax
mov    %r8d,%ecx
sub    %eax,%ecx
jge    1288 <statsdump_print_date+0x178>
or     $0x130,%edx
sub    %edx,%r8d
jge    129d <statsdump_print_date+0x18d>
mov    $0xa,%edx
mov    %r9d,%ecx
jmp    12a5 <statsdump_print_date+0x195>
mov    $0x3,%edx
jmp    12a5 <statsdump_print_date+0x195>
mov    $0x9,%edx
jmp    12a5 <statsdump_print_date+0x195>
mov    $0x6,%edx
jmp    12a5 <statsdump_print_date+0x195>
mov    $0xc,%edx
jmp    12a5 <statsdump_print_date+0x195>
mov    $0x8,%edx
jmp    12a2 <statsdump_print_date+0x192>
mov    $0x5,%edx
jmp    12a2 <statsdump_print_date+0x192>
mov    $0xb,%edx
mov    %r8d,%ecx
movslq %edi,%rax
imul   $0xffffffff91a2b3c5,%rax,%r8
shr    $0x20,%r8
add    %eax,%r8d
mov    %r8d,%edi
shr    $0x1f,%edi
sar    $0xb,%r8d
add    %edi,%r8d
imul   $0xe10,%r8d,%edi
sub    %edi,%eax
movswl %ax,%edi
imul   $0xffff8889,%edi,%edi
shr    $0x10,%edi
add    %eax,%edi
movzwl %di,%eax
movswl %ax,%edi
shr    $0xf,%eax
sar    $0x5,%edi
add    %eax,%edi
movswl %di,%r9d
add    $0x1,%ecx
lea    0xd0a(%rip),%rdi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [25 x i8] c"%04u-%02u-%02u %02u:%02u\00"
define void @statsdump_print_date(i32 %0) {
%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
store i32 %0, i32* %2
%13 = load i32, i32* %2
%14 = sdiv i32 %13, 86400
store i32 %14, i32* %3
%15 = load i32, i32* %2
%16 = srem i32 %15, 86400
store i32 %16, i32* %4
%17 = load i32, i32* %4
%18 = sdiv i32 %17, 3600
store i32 %18, i32* %5
%19 = load i32, i32* %4
%20 = srem i32 %19, 3600
%21 = sdiv i32 %20, 60
store i32 %21, i32* %6
%22 = load i32, i32* %4
%23 = srem i32 %22, 60
store i32 %23, i32* %7
%24 = load i32, i32* %3
%25 = add nsw i32 %24, 3
%26 = srem i32 %25, 7
store i32 %26, i32* %8
%27 = load i32, i32* %3
%28 = sdiv i32 %27, 1461
%29 = mul nsw i32 %28, 4
%30 = add nsw i32 %29, 1970
store i32 %30, i32* %9
%31 = load i32, i32* %3
%32 = srem i32 %31, 1461
store i32 %32, i32* %10
store i32 0, i32* %11
%33 = load i32, i32* %10
%34 = icmp sge i32 %33, 730
br i1 %34, label %35, label %49
35: ; preds = %1
%36 = load i32, i32* %10
%37 = icmp sge i32 %36, 1096
br i1 %37, label %38, label %43
38: ; preds = %35
%39 = load i32, i32* %9
%40 = add nsw i32 %39, 3
store i32 %40, i32* %9
%41 = load i32, i32* %10
%42 = sub nsw i32 %41, 1096
store i32 %42, i32* %10
br label %48
43: ; preds = %35
%44 = load i32, i32* %9
%45 = add nsw i32 %44, 2
store i32 %45, i32* %9
%46 = load i32, i32* %10
%47 = sub nsw i32 %46, 730
store i32 %47, i32* %10
store i32 1, i32* %11
br label %48
48: ; preds = %43, %38
br label %58
49: ; preds = %1
%50 = load i32, i32* %10
%51 = icmp sge i32 %50, 365
br i1 %51, label %52, label %57
52: ; preds = %49
%53 = load i32, i32* %9
%54 = add nsw i32 %53, 1
store i32 %54, i32* %9
%55 = load i32, i32* %10
%56 = sub nsw i32 %55, 365
store i32 %56, i32* %10
br label %57
57: ; preds = %52, %49
br label %58
58: ; preds = %57, %48
%59 = load i32, i32* %10
%60 = load i32, i32* %11
%61 = add nsw i32 181, %60
%62 = icmp sge i32 %59, %61
br i1 %62, label %63, label %123
63: ; preds = %58
%64 = load i32, i32* %10
%65 = load i32, i32* %11
%66 = add nsw i32 273, %65
%67 = icmp sge i32 %64, %66
br i1 %67, label %68, label %95
68: ; preds = %63
%69 = load i32, i32* %10
%70 = load i32, i32* %11
%71 = add nsw i32 334, %70
%72 = icmp sge i32 %69, %71
br i1 %72, label %73, label %78
73: ; preds = %68
store i32 11, i32* %12
%74 = load i32, i32* %11
%75 = add nsw i32 334, %74
%76 = load i32, i32* %10
%77 = sub nsw i32 %76, %75
store i32 %77, i32* %10
br label %94
78: ; preds = %68
%79 = load i32, i32* %10
%80 = load i32, i32* %11
%81 = add nsw i32 304, %80
%82 = icmp sge i32 %79, %81
br i1 %82, label %83, label %88
83: ; preds = %78
store i32 10, i32* %12
%84 = load i32, i32* %11
%85 = add nsw i32 304, %84
%86 = load i32, i32* %10
%87 = sub nsw i32 %86, %85
store i32 %87, i32* %10
br label %93
88: ; preds = %78
store i32 9, i32* %12
%89 = load i32, i32* %11
%90 = add nsw i32 273, %89
%91 = load i32, i32* %10
%92 = sub nsw i32 %91, %90
store i32 %92, i32* %10
br label %93
93: ; preds = %88, %83
br label %94
94: ; preds = %93, %73
br label %122
95: ; preds = %63
%96 = load i32, i32* %10
%97 = load i32, i32* %11
%98 = add nsw i32 243, %97
%99 = icmp sge i32 %96, %98
br i1 %99, label %100, label %105
100: ; preds = %95
store i32 8, i32* %12
%101 = load i32, i32* %11
%102 = add nsw i32 243, %101
%103 = load i32, i32* %10
%104 = sub nsw i32 %103, %102
store i32 %104, i32* %10
br label %121
105: ; preds = %95
%106 = load i32, i32* %10
%107 = load i32, i32* %11
%108 = add nsw i32 212, %107
%109 = icmp sge i32 %106, %108
br i1 %109, label %110, label %115
110: ; preds = %105
store i32 7, i32* %12
%111 = load i32, i32* %11
%112 = add nsw i32 212, %111
%113 = load i32, i32* %10
%114 = sub nsw i32 %113, %112
store i32 %114, i32* %10
br label %120
115: ; preds = %105
store i32 6, i32* %12
%116 = load i32, i32* %11
%117 = add nsw i32 181, %116
%118 = load i32, i32* %10
%119 = sub nsw i32 %118, %117
store i32 %119, i32* %10
br label %120
120: ; preds = %115, %110
br label %121
121: ; preds = %120, %100
br label %122
122: ; preds = %121, %94
br label %175
123: ; preds = %58
%124 = load i32, i32* %10
%125 = load i32, i32* %11
%126 = add nsw i32 90, %125
%127 = icmp sge i32 %124, %126
br i1 %127, label %128, label %155
128: ; preds = %123
%129 = load i32, i32* %10
%130 = load i32, i32* %11
%131 = add nsw i32 151, %130
%132 = icmp sge i32 %129, %131
br i1 %132, label %133, label %138
133: ; preds = %128
store i32 5, i32* %12
%134 = load i32, i32* %11
%135 = add nsw i32 151, %134
%136 = load i32, i32* %10
%137 = sub nsw i32 %136, %135
store i32 %137, i32* %10
br label %154
138: ; preds = %128
%139 = load i32, i32* %10
%140 = load i32, i32* %11
%141 = add nsw i32 120, %140
%142 = icmp sge i32 %139, %141
br i1 %142, label %143, label %148
143: ; preds = %138
store i32 4, i32* %12
%144 = load i32, i32* %11
%145 = add nsw i32 120, %144
%146 = load i32, i32* %10
%147 = sub nsw i32 %146, %145
store i32 %147, i32* %10
br label %153
148: ; preds = %138
store i32 3, i32* %12
%149 = load i32, i32* %11
%150 = add nsw i32 90, %149
%151 = load i32, i32* %10
%152 = sub nsw i32 %151, %150
store i32 %152, i32* %10
br label %153
153: ; preds = %148, %143
br label %154
154: ; preds = %153, %133
br label %174
155: ; preds = %123
%156 = load i32, i32* %10
%157 = load i32, i32* %11
%158 = add nsw i32 59, %157
%159 = icmp sge i32 %156, %158
br i1 %159, label %160, label %165
160: ; preds = %155
store i32 2, i32* %12
%161 = load i32, i32* %11
%162 = add nsw i32 59, %161
%163 = load i32, i32* %10
%164 = sub nsw i32 %163, %162
store i32 %164, i32* %10
br label %173
165: ; preds = %155
%166 = load i32, i32* %10
%167 = icmp sge i32 %166, 31
br i1 %167, label %168, label %171
168: ; preds = %165
store i32 1, i32* %12
%169 = load i32, i32* %10
%170 = sub nsw i32 %169, 31
store i32 %170, i32* %10
br label %172
171: ; preds = %165
store i32 0, i32* %12
br label %172
172: ; preds = %171, %168
br label %173
173: ; preds = %172, %160
br label %174
174: ; preds = %173, %154
br label %175
175: ; preds = %174, %122
%176 = load i32, i32* %8
%177 = load i32, i32* %7
%178 = load i32, i32* %9
%179 = load i32, i32* %12
%180 = add nsw i32 %179, 1
%181 = load i32, i32* %10
%182 = add nsw i32 %181, 1
%183 = load i32, i32* %5
%184 = load i32, i32* %6
%185 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i32 %178, i32 %180, i32 %182, i32 %183, i32 %184)
ret void
}

LLVM IR (-O2):
@.str = [25 x i8] c"%04u-%02u-%02u %02u:%02u\00"
define void @statsdump_print_date(i32 %0) {
%2 = sdiv i32 %0, 86400
%3 = srem i32 %0, 86400
%4 = sdiv i32 %0, 126230400
%5 = shl nsw i32 %4, 2
%6 = trunc i32 %2 to i16
%7 = srem i16 %6, 1461
%8 = sext i16 %7 to i32
%9 = icmp sgt i16 %7, 729
br i1 %9, label %10, label %18
10: ; preds = %1
%11 = icmp ugt i16 %7, 1095
br i1 %11, label %12, label %15
12: ; preds = %10
%13 = add nsw i32 %5, 1973
%14 = add nsw i32 %8, -1096
br label %24
15: ; preds = %10
%16 = add nsw i32 %5, 1972
%17 = add nsw i32 %8, -730
br label %24
18: ; preds = %1
%19 = add nsw i32 %5, 1970
%20 = icmp sgt i16 %7, 364
br i1 %20, label %21, label %24
21: ; preds = %18
%22 = add nsw i32 %5, 1971
%23 = add nsw i32 %8, -365
br label %24
24: ; preds = %18, %21, %12, %15
%25 = phi i32 [ %13, %12 ], [ %16, %15 ], [ %22, %21 ], [ %19, %18 ]
%26 = phi i32 [ %14, %12 ], [ %17, %15 ], [ %23, %21 ], [ %8, %18 ]
%27 = phi i32 [ 0, %12 ], [ 1, %15 ], [ 0, %21 ], [ 0, %18 ]
%28 = add nuw nsw i32 %27, 181
%29 = icmp slt i32 %26, %28
br i1 %29, label %57, label %30
30: ; preds = %24
%31 = add nuw nsw i32 %27, 273
%32 = icmp slt i32 %26, %31
br i1 %32, label %45, label %33
33: ; preds = %30
%34 = or i32 %27, 334
%35 = icmp slt i32 %26, %34
br i1 %35, label %38, label %36
36: ; preds = %33
%37 = sub nsw i32 %26, %34
br label %82
38: ; preds = %33
%39 = or i32 %27, 304
%40 = icmp slt i32 %26, %39
br i1 %40, label %43, label %41
41: ; preds = %38
%42 = sub nsw i32 %26, %39
br label %82
43: ; preds = %38
%44 = sub nsw i32 %26, %31
br label %82
45: ; preds = %30
%46 = add nuw nsw i32 %27, 243
%47 = icmp slt i32 %26, %46
br i1 %47, label %50, label %48
48: ; preds = %45
%49 = sub nsw i32 %26, %46
br label %82
50: ; preds = %45
%51 = or i32 %27, 212
%52 = icmp slt i32 %26, %51
br i1 %52, label %55, label %53
53: ; preds = %50
%54 = sub nsw i32 %26, %51
br label %82
55: ; preds = %50
%56 = sub nsw i32 %26, %28
br label %82
57: ; preds = %24
%58 = or i32 %27, 90
%59 = icmp slt i32 %26, %58
br i1 %59, label %72, label %60
60: ; preds = %57
%61 = add nuw nsw i32 %27, 151
%62 = icmp slt i32 %26, %61
br i1 %62, label %65, label %63
63: ; preds = %60
%64 = sub nsw i32 %26, %61
br label %82
65: ; preds = %60
%66 = or i32 %27, 120
%67 = icmp slt i32 %26, %66
br i1 %67, label %70, label %68
68: ; preds = %65
%69 = sub nsw i32 %26, %66
br label %82
70: ; preds = %65
%71 = sub nsw i32 %26, %58
br label %82
72: ; preds = %57
%73 = add nuw nsw i32 %27, 59
%74 = icmp slt i32 %26, %73
br i1 %74, label %77, label %75
75: ; preds = %72
%76 = sub nsw i32 %26, %73
br label %82
77: ; preds = %72
%78 = icmp sgt i32 %26, 30
%79 = add nsw i32 %26, -31
%80 = select i1 %78, i32 %79, i32 %26
%81 = select i1 %78, i32 2, i32 1
br label %82
82: ; preds = %77, %68, %70, %63, %75, %41, %43, %36, %53, %55, %48
%83 = phi i32 [ %37, %36 ], [ %42, %41 ], [ %44, %43 ], [ %49, %48 ], [ %54, %53 ], [ %56, %55 ], [ %64, %63 ], [ %69, %68 ], [ %71, %70 ], [ %76, %75 ], [ %80, %77 ]
%84 = phi i32 [ 12, %36 ], [ 11, %41 ], [ 10, %43 ], [ 9, %48 ], [ 8, %53 ], [ 7, %55 ], [ 6, %63 ], [ 5, %68 ], [ 4, %70 ], [ 3, %75 ], [ %81, %77 ]
%85 = srem i32 %3, 3600
%86 = trunc i32 %85 to i16
%87 = sdiv i16 %86, 60
%88 = sext i16 %87 to i32
%89 = sdiv i32 %3, 3600
%90 = add nsw i32 %83, 1
%91 = tail call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i32 %25, i32 %84, i32 %90, i32 %89, i32 %88)
ret void
}