#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 long time_t;
struct tm {
  int tm_year;
  int tm_mon;
  int tm_mday;
  scalar_t__ tm_sec;
  scalar_t__ tm_min;
  scalar_t__ tm_hour;
};

/* Variables and functions */
int convert_date(struct tm *);
struct tm *localtime(long *);
long mktime(struct tm *);
int official_hdays(int hdays[], int c_year) {
  int sizetab = 11;
  int n = 0;
  int a = 0;
  int b = 0;
  int c = 0;
  int d = 0;
  int e = 0;
  int p = 0;
  char year[4];
  struct tm date_tm;
  struct tm *date_tmp_p;
  time_t tps;
  long date_tmp_l = 0;
  char year_tmp[5], month_tmp[3], day_tmp[3];
  int buffer_i = 0;
  char buffer_c[2] = "";
  int test = 0;
  hdays[0] = (c_year * 10000) + 101;
  n = c_year - 1900;
  a = n % 19;
  b = ((a * 7) + 1) / 19;
  c = ((11 * a) - b + 4) % 29;
  d = n / 4;
  e = (n - c + d + 31) % 7;
  p = 25 - c - e;
  date_tm.tm_year = c_year - 1900;
  date_tm.tm_mon = 3 - 1;
  date_tm.tm_mday = 31;
  date_tm.tm_hour = date_tm.tm_min = date_tm.tm_sec = 0;
  tps = mktime(&date_tm);
  date_tmp_l = tps;
  date_tmp_l = date_tmp_l + ((p + 1) * 86400);
  if (c_year == 2008)
    date_tmp_l = date_tmp_l + 86400;
  tps = date_tmp_l;
  date_tmp_p = localtime(&tps);
  hdays[1] = convert_date(date_tmp_p);
  test = 0;
  hdays[2] = (c_year * 10000) + 501;
  date_tmp_l = tps;
  date_tmp_l = date_tmp_l + ((40 - 2) * 86400);
  tps = date_tmp_l;
  date_tmp_p = localtime(&tps);
  if (c_year == 2008)
    hdays[3] = 20080501;
  else
    hdays[3] = convert_date(date_tmp_p);
  test = 0;
  date_tmp_l = tps;
  date_tmp_l = date_tmp_l + ((10 + 1) * 86400);
  tps = date_tmp_l;
  date_tmp_p = localtime(&tps);
  if (c_year == 2008)
    hdays[4] = 20080512;
  else
    hdays[4] = convert_date(date_tmp_p);
  test = 0;
  hdays[5] = (c_year * 10000) + 721;
  hdays[6] = (c_year * 10000) + 815;
  hdays[7] = (c_year * 10000) + 1101;
  hdays[8] = (c_year * 10000) + 1111;
  hdays[9] = (c_year * 10000) + 1225;
  return 0;
}


x86 assembly (clang, -O0):
<official_hdays>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0xb,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
movq   $0x0,-0x70(%rbp)
movl   $0x0,-0x80(%rbp)
lea    -0x82(%rbp),%rdi
xor    %esi,%esi
mov    $0x2,%edx
call   1040 <memset@plt>
movl   $0x0,-0x88(%rbp)
imul   $0x2710,-0xc(%rbp),%ecx
add    $0x65,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0xc(%rbp),%eax
sub    $0x76c,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    $0x13,%ecx
cltd
idiv   %ecx
mov    %edx,-0x18(%rbp)
imul   $0x7,-0x18(%rbp),%eax
add    $0x1,%eax
mov    $0x13,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
imul   $0xb,-0x18(%rbp),%eax
sub    -0x1c(%rbp),%eax
add    $0x4,%eax
mov    $0x1d,%ecx
cltd
idiv   %ecx
mov    %edx,-0x20(%rbp)
mov    -0x14(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x24(%rbp)
mov    -0x14(%rbp),%eax
sub    -0x20(%rbp),%eax
add    -0x24(%rbp),%eax
add    $0x1f,%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
mov    %edx,-0x28(%rbp)
mov    $0x19,%eax
sub    -0x20(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x76c,%eax
mov    %eax,-0x58(%rbp)
movl   $0x2,-0x54(%rbp)
movl   $0x1f,-0x50(%rbp)
movq   $0x0,-0x48(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x38(%rbp)
lea    -0x58(%rbp),%rdi
call   1050 <mktime@plt>
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
imul   $0x15180,%ecx,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x70(%rbp)
cmpl   $0x7d8,-0xc(%rbp)
jne    12b4 <official_hdays+0x174>
mov    -0x70(%rbp),%rax
add    $0x15180,%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x68(%rbp)
lea    -0x68(%rbp),%rdi
call   1030 <localtime@plt>
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rdi
call   1060 <convert_date@plt>
mov    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
movl   $0x0,-0x88(%rbp)
imul   $0x2710,-0xc(%rbp),%ecx
add    $0x1f5,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x68(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
add    $0x321900,%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x68(%rbp)
lea    -0x68(%rbp),%rdi
call   1030 <localtime@plt>
mov    %rax,-0x60(%rbp)
cmpl   $0x7d8,-0xc(%rbp)
jne    1341 <official_hdays+0x201>
mov    -0x8(%rbp),%rax
movl   $0x1326775,0xc(%rax)
jmp    1353 <official_hdays+0x213>
mov    -0x60(%rbp),%rdi
call   1060 <convert_date@plt>
mov    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0xc(%rax)
movl   $0x0,-0x88(%rbp)
mov    -0x68(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
add    $0xe8080,%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x68(%rbp)
lea    -0x68(%rbp),%rdi
call   1030 <localtime@plt>
mov    %rax,-0x60(%rbp)
cmpl   $0x7d8,-0xc(%rbp)
jne    13a5 <official_hdays+0x265>
mov    -0x8(%rbp),%rax
movl   $0x1326780,0x10(%rax)
jmp    13b7 <official_hdays+0x277>
mov    -0x60(%rbp),%rdi
call   1060 <convert_date@plt>
mov    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x10(%rax)
movl   $0x0,-0x88(%rbp)
imul   $0x2710,-0xc(%rbp),%ecx
add    $0x2d1,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x14(%rax)
imul   $0x2710,-0xc(%rbp),%ecx
add    $0x32f,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x18(%rax)
imul   $0x2710,-0xc(%rbp),%ecx
add    $0x44d,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x1c(%rax)
imul   $0x2710,-0xc(%rbp),%ecx
add    $0x457,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x20(%rax)
imul   $0x2710,-0xc(%rbp),%ecx
add    $0x4c9,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x24(%rax)
xor    %eax,%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<official_hdays>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x30,%rsp
mov    %esi,%ebx
mov    %rdi,%r14
imul   $0x2710,%esi,%r12d
lea    0x65(%r12),%eax
mov    %eax,(%rdi)
lea    -0x76c(%rbx),%eax
cltq
imul   $0x6bca1af3,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
shr    $0x20,%rcx
sar    $0x3,%ecx
add    %edx,%ecx
lea    (%rcx,%rcx,8),%edx
lea    (%rcx,%rdx,2),%ecx
neg    %ecx
add    %ebx,%ecx
add    $0xfffff894,%ecx
lea    0x0(,%rcx,8),%edx
sub    %ecx,%edx
add    $0x1,%dl
movsbl %dl,%edx
imul   $0xffffffe5,%edx,%edx
movzwl %dx,%esi
shr    $0x9,%edx
shr    $0xf,%esi
add    %dl,%sil
movsbl %sil,%edx
lea    (%rcx,%rcx,4),%esi
lea    (%rcx,%rsi,2),%ecx
add    %edx,%ecx
add    $0x4,%ecx
movswl %cx,%edx
imul   $0x469f,%edx,%edx
mov    %edx,%esi
shr    $0x1f,%esi
sar    $0x13,%edx
add    %esi,%edx
lea    (%rdx,%rdx,8),%esi
lea    (%rsi,%rsi,2),%esi
add    %edx,%esi
add    %edx,%esi
sub    %ecx,%esi
movswl %si,%ecx
lea    -0x769(%rbx),%edx
test   %eax,%eax
cmovns %eax,%edx
sar    $0x2,%edx
lea    (%rbx,%rdx,1),%esi
add    %ebx,%edx
add    $0xfffff8b3,%edx
add    %esi,%ecx
add    $0xfffff8b3,%ecx
movslq %ecx,%rcx
imul   $0xffffffff92492493,%rcx,%rsi
shr    $0x20,%rsi
add    %esi,%ecx
mov    %ecx,%esi
shr    $0x1f,%esi
sar    $0x2,%ecx
add    %esi,%ecx
lea    0x0(,%rcx,8),%ebp
sub    %ecx,%ebp
sub    %edx,%ebp
mov    %eax,0x8(%rsp)
movabs $0x1f00000002,%rax
mov    %rax,0xc(%rsp)
xorps  %xmm0,%xmm0
movups %xmm0,0x18(%rsp)
movq   $0x0,0x28(%rsp)
lea    0x8(%rsp),%rdi
call   1040 <mktime@plt>
imul   $0x15180,%ebp,%ecx
add    $0x224700,%ecx
movslq %ecx,%rcx
lea    (%rax,%rcx,1),%rdx
cmp    $0x7d8,%ebx
lea    0x15180(%rax,%rcx,1),%rax
cmovne %rdx,%rax
mov    %rax,(%rsp)
mov    %rsp,%r15
mov    %r15,%rdi
call   1030 <localtime@plt>
mov    %rax,%rdi
call   1050 <convert_date@plt>
mov    %eax,0x4(%r14)
lea    0x1f5(%r12),%eax
mov    %eax,0x8(%r14)
addq   $0x321900,(%rsp)
mov    %r15,%rdi
call   1030 <localtime@plt>
mov    $0x1326775,%ecx
cmp    $0x7d8,%ebx
je     12b4 <official_hdays+0x184>
mov    %rax,%rdi
call   1050 <convert_date@plt>
mov    %eax,%ecx
mov    %ecx,0xc(%r14)
addq   $0xe8080,(%rsp)
mov    %rsp,%rdi
call   1030 <localtime@plt>
mov    $0x1326780,%ecx
cmp    $0x7d8,%ebx
je     12df <official_hdays+0x1af>
mov    %rax,%rdi
call   1050 <convert_date@plt>
mov    %eax,%ecx
mov    %ecx,0x10(%r14)
movd   %r12d,%xmm0
pshufd $0x0,%xmm0,%xmm0
paddd  0xd0b(%rip),%xmm0
movdqu %xmm0,0x14(%r14)
add    $0x4c9,%r12d
mov    %r12d,0x24(%r14)
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.tm = type { i32, i32, i32, i64, i64, i64 }
define i32 @official_hdays(i32* %0, i32 %1) {
%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 [4 x i8]
%14 = alloca %struct.tm
%15 = alloca %struct.tm*
%16 = alloca i64
%17 = alloca i64
%18 = alloca [5 x i8]
%19 = alloca [3 x i8]
%20 = alloca [3 x i8]
%21 = alloca i32
%22 = alloca [2 x i8]
%23 = alloca i32
store i32* %0, i32** %3
store i32 %1, i32* %4
store i32 11, i32* %5
store i32 0, i32* %6
store i32 0, i32* %7
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %10
store i32 0, i32* %11
store i32 0, i32* %12
store i64 0, i64* %17
store i32 0, i32* %21
%24 = bitcast [2 x i8]* %22 to i8*
store i32 0, i32* %23
%25 = load i32, i32* %4
%26 = mul nsw i32 %25, 10000
%27 = add nsw i32 %26, 101
%28 = load i32*, i32** %3
%29 = getelementptr inbounds i32, i32* %28, i64 0
store i32 %27, i32* %29
%30 = load i32, i32* %4
%31 = sub nsw i32 %30, 1900
store i32 %31, i32* %6
%32 = load i32, i32* %6
%33 = srem i32 %32, 19
store i32 %33, i32* %7
%34 = load i32, i32* %7
%35 = mul nsw i32 %34, 7
%36 = add nsw i32 %35, 1
%37 = sdiv i32 %36, 19
store i32 %37, i32* %8
%38 = load i32, i32* %7
%39 = mul nsw i32 11, %38
%40 = load i32, i32* %8
%41 = sub nsw i32 %39, %40
%42 = add nsw i32 %41, 4
%43 = srem i32 %42, 29
store i32 %43, i32* %9
%44 = load i32, i32* %6
%45 = sdiv i32 %44, 4
store i32 %45, i32* %10
%46 = load i32, i32* %6
%47 = load i32, i32* %9
%48 = sub nsw i32 %46, %47
%49 = load i32, i32* %10
%50 = add nsw i32 %48, %49
%51 = add nsw i32 %50, 31
%52 = srem i32 %51, 7
store i32 %52, i32* %11
%53 = load i32, i32* %9
%54 = sub nsw i32 25, %53
%55 = load i32, i32* %11
%56 = sub nsw i32 %54, %55
store i32 %56, i32* %12
%57 = load i32, i32* %4
%58 = sub nsw i32 %57, 1900
%59 = getelementptr inbounds %struct.tm, %struct.tm* %14, i32 0, i32 0
store i32 %58, i32* %59
%60 = getelementptr inbounds %struct.tm, %struct.tm* %14, i32 0, i32 1
store i32 2, i32* %60
%61 = getelementptr inbounds %struct.tm, %struct.tm* %14, i32 0, i32 2
store i32 31, i32* %61
%62 = getelementptr inbounds %struct.tm, %struct.tm* %14, i32 0, i32 3
store i64 0, i64* %62
%63 = getelementptr inbounds %struct.tm, %struct.tm* %14, i32 0, i32 4
store i64 0, i64* %63
%64 = getelementptr inbounds %struct.tm, %struct.tm* %14, i32 0, i32 5
store i64 0, i64* %64
%65 = call i64 @mktime(%struct.tm* %14)
store i64 %65, i64* %16
%66 = load i64, i64* %16
store i64 %66, i64* %17
%67 = load i64, i64* %17
%68 = load i32, i32* %12
%69 = add nsw i32 %68, 1
%70 = mul nsw i32 %69, 86400
%71 = sext i32 %70 to i64
%72 = add nsw i64 %67, %71
store i64 %72, i64* %17
%73 = load i32, i32* %4
%74 = icmp eq i32 %73, 2008
br i1 %74, label %75, label %78
75: ; preds = %2
%76 = load i64, i64* %17
%77 = add nsw i64 %76, 86400
store i64 %77, i64* %17
br label %78
78: ; preds = %75, %2
%79 = load i64, i64* %17
store i64 %79, i64* %16
%80 = call %struct.tm* @localtime(i64* %16)
store %struct.tm* %80, %struct.tm** %15
%81 = load %struct.tm*, %struct.tm** %15
%82 = call i32 @convert_date(%struct.tm* %81)
%83 = load i32*, i32** %3
%84 = getelementptr inbounds i32, i32* %83, i64 1
store i32 %82, i32* %84
store i32 0, i32* %23
%85 = load i32, i32* %4
%86 = mul nsw i32 %85, 10000
%87 = add nsw i32 %86, 501
%88 = load i32*, i32** %3
%89 = getelementptr inbounds i32, i32* %88, i64 2
store i32 %87, i32* %89
%90 = load i64, i64* %16
store i64 %90, i64* %17
%91 = load i64, i64* %17
%92 = add nsw i64 %91, 3283200
store i64 %92, i64* %17
%93 = load i64, i64* %17
store i64 %93, i64* %16
%94 = call %struct.tm* @localtime(i64* %16)
store %struct.tm* %94, %struct.tm** %15
%95 = load i32, i32* %4
%96 = icmp eq i32 %95, 2008
br i1 %96, label %97, label %100
97: ; preds = %78
%98 = load i32*, i32** %3
%99 = getelementptr inbounds i32, i32* %98, i64 3
store i32 20080501, i32* %99
br label %105
100: ; preds = %78
%101 = load %struct.tm*, %struct.tm** %15
%102 = call i32 @convert_date(%struct.tm* %101)
%103 = load i32*, i32** %3
%104 = getelementptr inbounds i32, i32* %103, i64 3
store i32 %102, i32* %104
br label %105
105: ; preds = %100, %97
store i32 0, i32* %23
%106 = load i64, i64* %16
store i64 %106, i64* %17
%107 = load i64, i64* %17
%108 = add nsw i64 %107, 950400
store i64 %108, i64* %17
%109 = load i64, i64* %17
store i64 %109, i64* %16
%110 = call %struct.tm* @localtime(i64* %16)
store %struct.tm* %110, %struct.tm** %15
%111 = load i32, i32* %4
%112 = icmp eq i32 %111, 2008
br i1 %112, label %113, label %116
113: ; preds = %105
%114 = load i32*, i32** %3
%115 = getelementptr inbounds i32, i32* %114, i64 4
store i32 20080512, i32* %115
br label %121
116: ; preds = %105
%117 = load %struct.tm*, %struct.tm** %15
%118 = call i32 @convert_date(%struct.tm* %117)
%119 = load i32*, i32** %3
%120 = getelementptr inbounds i32, i32* %119, i64 4
store i32 %118, i32* %120
br label %121
121: ; preds = %116, %113
store i32 0, i32* %23
%122 = load i32, i32* %4
%123 = mul nsw i32 %122, 10000
%124 = add nsw i32 %123, 721
%125 = load i32*, i32** %3
%126 = getelementptr inbounds i32, i32* %125, i64 5
store i32 %124, i32* %126
%127 = load i32, i32* %4
%128 = mul nsw i32 %127, 10000
%129 = add nsw i32 %128, 815
%130 = load i32*, i32** %3
%131 = getelementptr inbounds i32, i32* %130, i64 6
store i32 %129, i32* %131
%132 = load i32, i32* %4
%133 = mul nsw i32 %132, 10000
%134 = add nsw i32 %133, 1101
%135 = load i32*, i32** %3
%136 = getelementptr inbounds i32, i32* %135, i64 7
store i32 %134, i32* %136
%137 = load i32, i32* %4
%138 = mul nsw i32 %137, 10000
%139 = add nsw i32 %138, 1111
%140 = load i32*, i32** %3
%141 = getelementptr inbounds i32, i32* %140, i64 8
store i32 %139, i32* %141
%142 = load i32, i32* %4
%143 = mul nsw i32 %142, 10000
%144 = add nsw i32 %143, 1225
%145 = load i32*, i32** %3
%146 = getelementptr inbounds i32, i32* %145, i64 9
store i32 %144, i32* %146
ret i32 0
}

LLVM IR (-O2):
%struct.tm = type { i32, i32, i32, i64, i64, i64 }
define i32 @official_hdays(i32* nocapture writeonly %0, i32 %1) {
%3 = alloca %struct.tm
%4 = alloca i64
%5 = bitcast %struct.tm* %3 to i8*
%6 = bitcast i64* %4 to i8*
%7 = mul nsw i32 %1, 10000
%8 = add nsw i32 %7, 101
store i32 %8, i32* %0
%9 = add nsw i32 %1, -1900
%10 = srem i32 %9, 19
%11 = trunc i32 %10 to i8
%12 = mul nsw i8 %11, 7
%13 = add nsw i8 %12, 1
%14 = sdiv i8 %13, -19
%15 = sext i8 %14 to i32
%16 = mul nsw i32 %10, 11
%17 = add nsw i32 %16, %15
%18 = trunc i32 %17 to i16
%19 = add nsw i16 %18, 4
%20 = srem i16 %19, 29
%21 = sub nsw i16 0, %20
%22 = sext i16 %21 to i32
%23 = sdiv i32 %9, 4
%24 = add i32 %1, -1869
%25 = add i32 %24, %23
%26 = add i32 %25, %22
%27 = srem i32 %26, 7
%28 = getelementptr inbounds %struct.tm, %struct.tm* %3, i64 0, i32 0
store i32 %9, i32* %28
%29 = getelementptr inbounds %struct.tm, %struct.tm* %3, i64 0, i32 1
store i32 2, i32* %29
%30 = getelementptr inbounds %struct.tm, %struct.tm* %3, i64 0, i32 2
store i32 31, i32* %30
%31 = getelementptr inbounds %struct.tm, %struct.tm* %3, i64 0, i32 3
%32 = bitcast i64* %31 to i8*
%33 = call i64 @mktime(%struct.tm* %3)
%34 = add nsw i32 %22, 26
%35 = sub nsw i32 %34, %27
%36 = mul nsw i32 %35, 86400
%37 = sext i32 %36 to i64
%38 = add nsw i64 %33, %37
%39 = icmp eq i32 %1, 2008
%40 = add nsw i64 %38, 86400
%41 = select i1 %39, i64 %40, i64 %38
store i64 %41, i64* %4
%42 = call %struct.tm* @localtime(i64* %4)
%43 = call i32 @convert_date(%struct.tm* %42)
%44 = getelementptr inbounds i32, i32* %0, i64 1
store i32 %43, i32* %44
%45 = add nsw i32 %7, 501
%46 = getelementptr inbounds i32, i32* %0, i64 2
store i32 %45, i32* %46
%47 = load i64, i64* %4
%48 = add nsw i64 %47, 3283200
store i64 %48, i64* %4
%49 = call %struct.tm* @localtime(i64* %4)
br i1 %39, label %52, label %50
50: ; preds = %2
%51 = call i32 @convert_date(%struct.tm* %49)
br label %52
52: ; preds = %2, %50
%53 = phi i32 [ %51, %50 ], [ 20080501, %2 ]
%54 = getelementptr inbounds i32, i32* %0, i64 3
store i32 %53, i32* %54
%55 = load i64, i64* %4
%56 = add nsw i64 %55, 950400
store i64 %56, i64* %4
%57 = call %struct.tm* @localtime(i64* %4)
br i1 %39, label %60, label %58
58: ; preds = %52
%59 = call i32 @convert_date(%struct.tm* %57)
br label %60
60: ; preds = %52, %58
%61 = phi i32 [ %59, %58 ], [ 20080512, %52 ]
%62 = getelementptr inbounds i32, i32* %0, i64 4
store i32 %61, i32* %62
%63 = getelementptr inbounds i32, i32* %0, i64 5
%64 = insertelement <4 x i32> poison, i32 %7, i64 0
%65 = shufflevector <4 x i32> %64, <4 x i32> poison, <4 x i32> zeroinitializer
%66 = add nsw <4 x i32> %65, <i32 721, i32 815, i32 1101, i32 1111>
%67 = bitcast i32* %63 to <4 x i32>*
store <4 x i32> %66, <4 x i32>* %67
%68 = add nsw i32 %7, 1225
%69 = getelementptr inbounds i32, i32* %0, i64 9
store i32 %68, i32* %69
ret i32 0
}