#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 {
  unsigned long tm_wday;
  unsigned long tm_yday;
  unsigned long tm_sec;
  unsigned long tm_min;
  unsigned long tm_hour;
  unsigned long tm_mday;
  unsigned long tm_mon;
  unsigned long tm_year;
};

/* Variables and functions */
struct tm *_gmtime(const time_t *timer, struct tm *tmbuf) {
  unsigned long t, days, secs, year, mon;
  static unsigned char mdays[2][12] = {
      {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
      {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
  days = *timer / (60L * 60L * 24L);
  secs = *timer % (60L * 60L * 24L);
  tmbuf->tm_wday = (days + 4) % 7;
  for (year = 0;; year++) {
    t = 365 + (((year + 2) % 4) == 0);
    if (t > days)
      break;
    days -= t;
  }
  tmbuf->tm_yday = days;
  for (mon = 0; mon < 12; mon++) {
    t = mdays[((year + 2) % 4) == 0][mon];
    if (t > days)
      break;
    days -= t;
  }
  tmbuf->tm_sec = secs % 60;
  tmbuf->tm_min = (secs / 60) % 60;
  tmbuf->tm_hour = secs / 60 / 60;
  tmbuf->tm_mday = days + 1;
  tmbuf->tm_mon = mon;
  tmbuf->tm_year = year + 70;
  return tmbuf;
}


x86 assembly (clang, -O0):
<_gmtime>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    $0x15180,%ecx
cqto
idiv   %rcx
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    $0x15180,%ecx
cqto
idiv   %rcx
mov    %rdx,-0x28(%rbp)
mov    -0x20(%rbp),%rax
add    $0x4,%rax
mov    $0x7,%ecx
xor    %edx,%edx
div    %rcx
mov    -0x10(%rbp),%rax
mov    %rdx,(%rax)
movq   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%rax
add    $0x2,%rax
and    $0x3,%rax
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
add    $0x16d,%eax
cltq
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
jbe    118d <_gmtime+0x8d>
jmp    11ad <_gmtime+0xad>
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    1157 <_gmtime+0x57>
mov    -0x20(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x8(%rax)
movq   $0x0,-0x38(%rbp)
cmpq   $0xc,-0x38(%rbp)
jae    1234 <_gmtime+0x134>
mov    -0x30(%rbp),%rax
add    $0x2,%rax
and    $0x3,%rax
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rcx
lea    0x2e42(%rip),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
jbe    1214 <_gmtime+0x114>
jmp    1234 <_gmtime+0x134>
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    11c1 <_gmtime+0xc1>
mov    -0x28(%rbp),%rax
mov    $0x3c,%ecx
xor    %edx,%edx
div    %rcx
mov    -0x10(%rbp),%rax
mov    %rdx,0x10(%rax)
mov    -0x28(%rbp),%rax
mov    $0x3c,%ecx
xor    %edx,%edx
div    %rcx
mov    $0x3c,%ecx
xor    %edx,%edx
div    %rcx
mov    -0x10(%rbp),%rax
mov    %rdx,0x18(%rax)
mov    -0x28(%rbp),%rax
mov    $0x3c,%ecx
xor    %edx,%edx
div    %rcx
mov    $0x3c,%ecx
xor    %edx,%edx
div    %rcx
mov    %rax,%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x20(%rax)
mov    -0x20(%rbp),%rcx
add    $0x1,%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x28(%rax)
mov    -0x38(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x30(%rax)
mov    -0x30(%rbp),%rcx
add    $0x46,%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x38(%rax)
mov    -0x10(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<_gmtime>:
push   %rbx
mov    %rsi,%r10
mov    (%rdi),%r8
movabs $0x1845c8a0ce512957,%rcx
c8 45 18
mov    %r8,%rax
imul   %rcx
mov    %rdx,%rax
shr    $0x3f,%rax
sar    $0xd,%rdx
lea    (%rdx,%rax,1),%rsi
imul   $0x15180,%rsi,%r9
lea    (%rdx,%rax,1),%rdi
add    $0x4,%rdi
movabs $0x2492492492492493,%rcx
49 92 24
mov    %rdi,%rax
mul    %rcx
mov    %rdi,%rax
sub    %rdx,%rax
shr    %rax
add    %rdx,%rax
shr    $0x2,%rax
lea    0x0(,%rax,8),%rcx
sub    %rcx,%rax
add    %rdi,%rax
mov    %rax,(%r10)
cmp    $0x16d,%rsi
jae    1178 <_gmtime+0x78>
mov    $0x46,%ecx
xor    %eax,%eax
jmp    11ba <_gmtime+0xba>
mov    $0x16d,%eax
mov    $0x46,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
sub    %rax,%rsi
lea    -0x43(%rcx),%rdx
mov    %edx,%eax
and    $0x3,%eax
cmp    $0x1,%rax
mov    $0x16d,%eax
adc    $0x0,%rax
add    $0x1,%rcx
cmp    %rax,%rsi
jae    1190 <_gmtime+0x90>
xor    %eax,%eax
test   $0x3,%dl
sete   %al
sub    %r9,%r8
mov    %rsi,0x8(%r10)
lea    (%rax,%rax,2),%rax
lea    0xe34(%rip),%rdx
movzbl (%rdx,%rax,4),%edi
mov    %rsi,%r11
sub    %rdi,%r11
jae    11e3 <_gmtime+0xe3>
xor    %r9d,%r9d
mov    %rsi,%r11
jmp    12cc <_gmtime+0x1cc>
movzbl 0x1(%rdx,%rax,4),%edi
mov    $0x1,%r9d
mov    %r11,%rsi
sub    %rdi,%rsi
jb     12cc <_gmtime+0x1cc>
movzbl 0x2(%rdx,%rax,4),%ebx
mov    $0x2,%r9d
mov    %rsi,%rdi
mov    %rsi,%r11
sub    %rbx,%rdi
jb     12cc <_gmtime+0x1cc>
movzbl 0x3(%rdx,%rax,4),%ebx
mov    $0x3,%r9d
mov    %rdi,%rsi
mov    %rdi,%r11
sub    %rbx,%rsi
jb     12cc <_gmtime+0x1cc>
movzbl 0x4(%rdx,%rax,4),%ebx
mov    $0x4,%r9d
mov    %rsi,%rdi
mov    %rsi,%r11
sub    %rbx,%rdi
jb     12cc <_gmtime+0x1cc>
movzbl 0x5(%rdx,%rax,4),%ebx
mov    $0x5,%r9d
mov    %rdi,%rsi
mov    %rdi,%r11
sub    %rbx,%rsi
jb     12cc <_gmtime+0x1cc>
movzbl 0x6(%rdx,%rax,4),%ebx
mov    $0x6,%r9d
mov    %rsi,%rdi
mov    %rsi,%r11
sub    %rbx,%rdi
jb     12cc <_gmtime+0x1cc>
movzbl 0x7(%rdx,%rax,4),%ebx
mov    $0x7,%r9d
mov    %rdi,%rsi
mov    %rdi,%r11
sub    %rbx,%rsi
jb     12cc <_gmtime+0x1cc>
movzbl 0x8(%rdx,%rax,4),%ebx
mov    $0x8,%r9d
mov    %rsi,%rdi
mov    %rsi,%r11
sub    %rbx,%rdi
jb     12cc <_gmtime+0x1cc>
movzbl 0x9(%rdx,%rax,4),%esi
mov    $0x9,%r9d
mov    %rdi,%rbx
mov    %rdi,%r11
sub    %rsi,%rbx
jb     12cc <_gmtime+0x1cc>
movzbl 0xa(%rdx,%rax,4),%edi
mov    $0xa,%r9d
mov    %rbx,%rsi
mov    %rbx,%r11
sub    %rdi,%rsi
jae    1337 <_gmtime+0x237>
movabs $0x8888888888888889,%rsi
88 88 88
mov    %r8,%rax
mul    %rsi
mov    %rdx,%rdi
shr    $0x5,%rdi
imul   $0x3c,%rdi,%rax
mov    %r8,%rdx
sub    %rax,%rdx
mov    %rdx,0x10(%r10)
mov    %rdi,%rax
mul    %rsi
shr    $0x5,%rdx
imul   $0x3c,%rdx,%rax
sub    %rax,%rdi
mov    %rdi,0x18(%r10)
shr    $0x4,%r8
movabs $0x91a2b3c4d5e6f81,%rdx
2b 1a 09
mov    %r8,%rax
mul    %rdx
shr    $0x3,%rdx
mov    %rdx,0x20(%r10)
add    $0x1,%r11
mov    %r11,0x28(%r10)
mov    %r9,0x30(%r10)
mov    %rcx,0x38(%r10)
mov    %r10,%rax
pop    %rbx
ret
movzbl 0xb(%rdx,%rax,4),%eax
xor    %edx,%edx
cmp    %rax,%rsi
cmovae %rax,%rdx
mov    $0xc,%r9d
sbb    $0x0,%r9
sub    %rdx,%rsi
jmp    11db <_gmtime+0xdb>

LLVM IR (-O0):
%struct.tm = type { i64, i64, i64, i64, i64, i64, i64, i64 }
@_gmtime.mdays = internal global [2 x [12 x i8]] [[12 x i8] c"\1F\1C\1F\1E\1F\1E\1F\1F\1E\1F\1E\1F", [12 x i8] c"\1F\1D\1F\1E\1F\1E\1F\1F\1E\1F\1E\1F"]
define %struct.tm* @_gmtime(i64* %0, %struct.tm* %1) {
%3 = alloca i64*
%4 = alloca %struct.tm*
%5 = alloca i64
%6 = alloca i64
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
store i64* %0, i64** %3
store %struct.tm* %1, %struct.tm** %4
%10 = load i64*, i64** %3
%11 = load i64, i64* %10
%12 = sdiv i64 %11, 86400
store i64 %12, i64* %6
%13 = load i64*, i64** %3
%14 = load i64, i64* %13
%15 = srem i64 %14, 86400
store i64 %15, i64* %7
%16 = load i64, i64* %6
%17 = add i64 %16, 4
%18 = urem i64 %17, 7
%19 = load %struct.tm*, %struct.tm** %4
%20 = getelementptr inbounds %struct.tm, %struct.tm* %19, i32 0, i32 0
store i64 %18, i64* %20
store i64 0, i64* %8
br label %21
21: ; preds = %37, %2
%22 = load i64, i64* %8
%23 = add i64 %22, 2
%24 = urem i64 %23, 4
%25 = icmp eq i64 %24, 0
%26 = zext i1 %25 to i32
%27 = add nsw i32 365, %26
%28 = sext i32 %27 to i64
store i64 %28, i64* %5
%29 = load i64, i64* %5
%30 = load i64, i64* %6
%31 = icmp ugt i64 %29, %30
br i1 %31, label %32, label %33
32: ; preds = %21
br label %40
33: ; preds = %21
%34 = load i64, i64* %5
%35 = load i64, i64* %6
%36 = sub i64 %35, %34
store i64 %36, i64* %6
br label %37
37: ; preds = %33
%38 = load i64, i64* %8
%39 = add i64 %38, 1
store i64 %39, i64* %8
br label %21
40: ; preds = %32
%41 = load i64, i64* %6
%42 = load %struct.tm*, %struct.tm** %4
%43 = getelementptr inbounds %struct.tm, %struct.tm* %42, i32 0, i32 1
store i64 %41, i64* %43
store i64 0, i64* %9
br label %44
44: ; preds = %67, %40
%45 = load i64, i64* %9
%46 = icmp ult i64 %45, 12
br i1 %46, label %47, label %70
47: ; preds = %44
%48 = load i64, i64* %8
%49 = add i64 %48, 2
%50 = urem i64 %49, 4
%51 = icmp eq i64 %50, 0
%52 = zext i1 %51 to i32
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %53
%55 = load i64, i64* %9
%56 = getelementptr inbounds [12 x i8], [12 x i8]* %54, i64 0, i64 %55
%57 = load i8, i8* %56
%58 = zext i8 %57 to i64
store i64 %58, i64* %5
%59 = load i64, i64* %5
%60 = load i64, i64* %6
%61 = icmp ugt i64 %59, %60
br i1 %61, label %62, label %63
62: ; preds = %47
br label %70
63: ; preds = %47
%64 = load i64, i64* %5
%65 = load i64, i64* %6
%66 = sub i64 %65, %64
store i64 %66, i64* %6
br label %67
67: ; preds = %63
%68 = load i64, i64* %9
%69 = add i64 %68, 1
store i64 %69, i64* %9
br label %44
70: ; preds = %62, %44
%71 = load i64, i64* %7
%72 = urem i64 %71, 60
%73 = load %struct.tm*, %struct.tm** %4
%74 = getelementptr inbounds %struct.tm, %struct.tm* %73, i32 0, i32 2
store i64 %72, i64* %74
%75 = load i64, i64* %7
%76 = udiv i64 %75, 60
%77 = urem i64 %76, 60
%78 = load %struct.tm*, %struct.tm** %4
%79 = getelementptr inbounds %struct.tm, %struct.tm* %78, i32 0, i32 3
store i64 %77, i64* %79
%80 = load i64, i64* %7
%81 = udiv i64 %80, 60
%82 = udiv i64 %81, 60
%83 = load %struct.tm*, %struct.tm** %4
%84 = getelementptr inbounds %struct.tm, %struct.tm* %83, i32 0, i32 4
store i64 %82, i64* %84
%85 = load i64, i64* %6
%86 = add i64 %85, 1
%87 = load %struct.tm*, %struct.tm** %4
%88 = getelementptr inbounds %struct.tm, %struct.tm* %87, i32 0, i32 5
store i64 %86, i64* %88
%89 = load i64, i64* %9
%90 = load %struct.tm*, %struct.tm** %4
%91 = getelementptr inbounds %struct.tm, %struct.tm* %90, i32 0, i32 6
store i64 %89, i64* %91
%92 = load i64, i64* %8
%93 = add i64 %92, 70
%94 = load %struct.tm*, %struct.tm** %4
%95 = getelementptr inbounds %struct.tm, %struct.tm* %94, i32 0, i32 7
store i64 %93, i64* %95
%96 = load %struct.tm*, %struct.tm** %4
ret %struct.tm* %96
}

LLVM IR (-O2):
%struct.tm = type { i64, i64, i64, i64, i64, i64, i64, i64 }
@_gmtime.mdays = internal unnamed_addr constant [2 x [12 x i8]] [[12 x i8] c"\1F\1C\1F\1E\1F\1E\1F\1F\1E\1F\1E\1F", [12 x i8] c"\1F\1D\1F\1E\1F\1E\1F\1F\1E\1F\1E\1F"]
define %struct.tm* @_gmtime(i64* nocapture %0, %struct.tm* returned writeonly %1) {
%3 = load i64, i64* %0
%4 = sdiv i64 %3, 86400
%5 = srem i64 %3, 86400
%6 = add nsw i64 %4, 4
%7 = urem i64 %6, 7
%8 = getelementptr inbounds %struct.tm, %struct.tm* %1, i64 0, i32 0
store i64 %7, i64* %8
%9 = icmp ult i64 %4, 365
br i1 %9, label %24, label %10
10: ; preds = %2, %10
%11 = phi i64 [ %19, %10 ], [ 365, %2 ]
%12 = phi i64 [ %15, %10 ], [ 0, %2 ]
%13 = phi i64 [ %14, %10 ], [ %4, %2 ]
%14 = sub i64 %13, %11
%15 = add i64 %12, 1
%16 = add i64 %12, 3
%17 = and i64 %16, 3
%18 = icmp eq i64 %17, 0
%19 = select i1 %18, i64 366, i64 365
%20 = icmp ult i64 %14, %19
br i1 %20, label %21, label %10
21: ; preds = %10
%22 = zext i1 %18 to i64
%23 = add i64 %12, 71
br label %24
24: ; preds = %21, %2
%25 = phi i64 [ %4, %2 ], [ %14, %21 ]
%26 = phi i64 [ 70, %2 ], [ %23, %21 ]
%27 = phi i64 [ 0, %2 ], [ %22, %21 ]
%28 = getelementptr inbounds %struct.tm, %struct.tm* %1, i64 0, i32 1
store i64 %25, i64* %28
%29 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 0
%30 = load i8, i8* %29
%31 = zext i8 %30 to i64
%32 = icmp ult i64 %25, %31
br i1 %32, label %102, label %33
33: ; preds = %24
%34 = sub i64 %25, %31
%35 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 1
%36 = load i8, i8* %35
%37 = zext i8 %36 to i64
%38 = icmp ult i64 %34, %37
br i1 %38, label %102, label %39
39: ; preds = %33
%40 = sub i64 %34, %37
%41 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 2
%42 = load i8, i8* %41
%43 = zext i8 %42 to i64
%44 = icmp ult i64 %40, %43
br i1 %44, label %102, label %45
45: ; preds = %39
%46 = sub i64 %40, %43
%47 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 3
%48 = load i8, i8* %47
%49 = zext i8 %48 to i64
%50 = icmp ult i64 %46, %49
br i1 %50, label %102, label %51
51: ; preds = %45
%52 = sub i64 %46, %49
%53 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 4
%54 = load i8, i8* %53
%55 = zext i8 %54 to i64
%56 = icmp ult i64 %52, %55
br i1 %56, label %102, label %57
57: ; preds = %51
%58 = sub i64 %52, %55
%59 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 5
%60 = load i8, i8* %59
%61 = zext i8 %60 to i64
%62 = icmp ult i64 %58, %61
br i1 %62, label %102, label %63
63: ; preds = %57
%64 = sub i64 %58, %61
%65 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 6
%66 = load i8, i8* %65
%67 = zext i8 %66 to i64
%68 = icmp ult i64 %64, %67
br i1 %68, label %102, label %69
69: ; preds = %63
%70 = sub i64 %64, %67
%71 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 7
%72 = load i8, i8* %71
%73 = zext i8 %72 to i64
%74 = icmp ult i64 %70, %73
br i1 %74, label %102, label %75
75: ; preds = %69
%76 = sub i64 %70, %73
%77 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 8
%78 = load i8, i8* %77
%79 = zext i8 %78 to i64
%80 = icmp ult i64 %76, %79
br i1 %80, label %102, label %81
81: ; preds = %75
%82 = sub i64 %76, %79
%83 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 9
%84 = load i8, i8* %83
%85 = zext i8 %84 to i64
%86 = icmp ult i64 %82, %85
br i1 %86, label %102, label %87
87: ; preds = %81
%88 = sub i64 %82, %85
%89 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 10
%90 = load i8, i8* %89
%91 = zext i8 %90 to i64
%92 = icmp ult i64 %88, %91
br i1 %92, label %102, label %93
93: ; preds = %87
%94 = sub i64 %88, %91
%95 = getelementptr inbounds [2 x [12 x i8]], [2 x [12 x i8]]* @_gmtime.mdays, i64 0, i64 %27, i64 11
%96 = load i8, i8* %95
%97 = zext i8 %96 to i64
%98 = icmp ult i64 %94, %97
%99 = select i1 %98, i64 0, i64 %97
%100 = sub i64 %94, %99
%101 = select i1 %98, i64 11, i64 12
br label %102
102: ; preds = %93, %87, %81, %75, %69, %63, %57, %51, %45, %39, %33, %24
%103 = phi i64 [ %25, %24 ], [ %34, %33 ], [ %40, %39 ], [ %46, %45 ], [ %52, %51 ], [ %58, %57 ], [ %64, %63 ], [ %70, %69 ], [ %76, %75 ], [ %82, %81 ], [ %88, %87 ], [ %100, %93 ]
%104 = phi i64 [ 0, %24 ], [ 1, %33 ], [ 2, %39 ], [ 3, %45 ], [ 4, %51 ], [ 5, %57 ], [ 6, %63 ], [ 7, %69 ], [ 8, %75 ], [ 9, %81 ], [ 10, %87 ], [ %101, %93 ]
%105 = urem i64 %5, 60
%106 = getelementptr inbounds %struct.tm, %struct.tm* %1, i64 0, i32 2
store i64 %105, i64* %106
%107 = udiv i64 %5, 60
%108 = urem i64 %107, 60
%109 = getelementptr inbounds %struct.tm, %struct.tm* %1, i64 0, i32 3
store i64 %108, i64* %109
%110 = udiv i64 %5, 3600
%111 = getelementptr inbounds %struct.tm, %struct.tm* %1, i64 0, i32 4
store i64 %110, i64* %111
%112 = add i64 %103, 1
%113 = getelementptr inbounds %struct.tm, %struct.tm* %1, i64 0, i32 5
store i64 %112, i64* %113
%114 = getelementptr inbounds %struct.tm, %struct.tm* %1, i64 0, i32 6
store i64 %104, i64* %114
%115 = getelementptr inbounds %struct.tm, %struct.tm* %1, i64 0, i32 7
store i64 %26, i64* %115
ret %struct.tm* %1
}