; LLVM IR from jingweizhanghuai/Morn :: src/util (morn_time)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, ptr }

@.str = external hidden unnamed_addr constant [76 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [29 x i8], align 1
@__const.m_StringTime.amonth = external hidden unnamed_addr constant [12 x ptr], align 16
@__FUNCTION__.m_StringTime = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @m_Exception(i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ...) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind
declare i64 @time(ptr noundef) #3

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @CHNNum(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @CHNYear(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @_CString(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
define dso_local i64 @m_StringTime(ptr noundef %0, ptr noundef %1) #4 {
  %3 = alloca i64, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca [128 x i8], align 16
  %11 = alloca [128 x i8], align 16
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca [32 x i8], align 16
  %20 = alloca [32 x i8], align 16
  %21 = alloca [32 x i8], align 16
  %22 = alloca [32 x i8], align 16
  %23 = alloca [32 x i8], align 16
  %24 = alloca [32 x i8], align 16
  %25 = alloca [32 x i8], align 16
  %26 = alloca [16 x i8], align 16
  %27 = alloca [16 x i8], align 16
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca [12 x ptr], align 16
  %36 = alloca [16 x ptr], align 16
  %37 = alloca [128 x i8], align 16
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i64, align 8
  %42 = alloca %struct.tm, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = icmp eq ptr %43, null
  br i1 %44, label %45, label %47

45:                                               ; preds = %2
  %46 = call i64 @time(ptr noundef null) #7
  store i64 %46, ptr %3, align 8
  br label %546

47:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 128, ptr %10) #7
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  call void @_CString(ptr noundef %48, ptr noundef %49)
  call void @llvm.lifetime.start.p0(i64 128, ptr %11) #7
  %50 = load ptr, ptr %5, align 8, !tbaa !5
  %51 = icmp eq ptr %50, null
  br i1 %51, label %52, label %55

52:                                               ; preds = %47
  %53 = getelementptr inbounds [128 x i8], ptr %11, i64 0, i64 0
  %54 = call ptr @strcpy(ptr noundef %53, ptr noundef @.str.48) #7
  br label %58

55:                                               ; preds = %47
  %56 = load ptr, ptr %5, align 8, !tbaa !5
  %57 = getelementptr inbounds [128 x i8], ptr %11, i64 0, i64 0
  call void @_CString(ptr noundef %56, ptr noundef %57)
  br label %58

58:                                               ; preds = %55, %52
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 -1, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  store i32 -1, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  store i32 -1, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 -1, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  store i32 0, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr %35) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %35, ptr align 16 @__const.m_StringTime.amonth, i64 96, i1 false)
  call void @llvm.lifetime.start.p0(i64 128, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr %37) #7
  %59 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %59, i8 0, i64 128, i1 false)
  store i32 0, ptr %8, align 4, !tbaa !9
  store i32 0, ptr %9, align 4, !tbaa !9
  %60 = getelementptr inbounds [128 x i8], ptr %11, i64 0, i64 0
  store ptr %60, ptr %6, align 8, !tbaa !5
  br label %61

61:                                               ; preds = %395, %58
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  %63 = load i8, ptr %62, align 1, !tbaa !11
  %64 = sext i8 %63 to i32
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %398

66:                                               ; preds = %61
  %67 = load i32, ptr %8, align 4, !tbaa !9
  %68 = icmp sge i32 %67, 16
  br i1 %68, label %72, label %69

69:                                               ; preds = %66
  %70 = load i32, ptr %9, align 4, !tbaa !9
  %71 = icmp sge i32 %70, 128
  br i1 %71, label %72, label %73

72:                                               ; preds = %69, %66
  br label %398

73:                                               ; preds = %69
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = load i8, ptr %74, align 1, !tbaa !11
  %76 = load i32, ptr %9, align 4, !tbaa !9
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %77
  store i8 %75, ptr %78, align 1, !tbaa !11
  %79 = load i32, ptr %9, align 4, !tbaa !9
  %80 = add nsw i32 %79, 1
  store i32 %80, ptr %9, align 4, !tbaa !9
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = load i8, ptr %81, align 1, !tbaa !11
  %83 = sext i8 %82 to i32
  %84 = icmp eq i32 %83, 47
  br i1 %84, label %85, label %88

85:                                               ; preds = %73
  %86 = load ptr, ptr %6, align 8, !tbaa !5
  %87 = getelementptr inbounds i8, ptr %86, i32 1
  store ptr %87, ptr %6, align 8, !tbaa !5
  br label %395

88:                                               ; preds = %73
  %89 = load ptr, ptr %6, align 8, !tbaa !5
  %90 = load i8, ptr %89, align 1, !tbaa !11
  %91 = sext i8 %90 to i32
  %92 = icmp eq i32 %91, 37
  br i1 %92, label %93, label %394

93:                                               ; preds = %88
  %94 = load ptr, ptr %6, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %94, i64 1
  store ptr %95, ptr %7, align 8, !tbaa !5
  br label %96

96:                                               ; preds = %389, %93
  %97 = load ptr, ptr %7, align 8, !tbaa !5
  %98 = load i8, ptr %97, align 1, !tbaa !11
  %99 = sext i8 %98 to i32
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %101, label %392

101:                                              ; preds = %96
  %102 = load ptr, ptr %7, align 8, !tbaa !5
  %103 = load i8, ptr %102, align 1, !tbaa !11
  %104 = sext i8 %103 to i32
  %105 = icmp sge i32 %104, 48
  br i1 %105, label %106, label %112

106:                                              ; preds = %101
  %107 = load ptr, ptr %7, align 8, !tbaa !5
  %108 = load i8, ptr %107, align 1, !tbaa !11
  %109 = sext i8 %108 to i32
  %110 = icmp sle i32 %109, 57
  br i1 %110, label %111, label %112

111:                                              ; preds = %106
  br label %389

112:                                              ; preds = %106, %101
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = load i8, ptr %113, align 1, !tbaa !11
  %115 = sext i8 %114 to i32
  %116 = icmp eq i32 %115, 89
  br i1 %116, label %117, label %126

117:                                              ; preds = %112
  %118 = load i32, ptr %8, align 4, !tbaa !9
  %119 = add nsw i32 %118, 1
  store i32 %119, ptr %8, align 4, !tbaa !9
  %120 = sext i32 %118 to i64
  %121 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %120
  store ptr %14, ptr %121, align 8, !tbaa !5
  %122 = load i32, ptr %9, align 4, !tbaa !9
  %123 = add nsw i32 %122, 1
  store i32 %123, ptr %9, align 4, !tbaa !9
  %124 = sext i32 %122 to i64
  %125 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %124
  store i8 100, ptr %125, align 1, !tbaa !11
  br label %388

126:                                              ; preds = %112
  %127 = load ptr, ptr %7, align 8, !tbaa !5
  %128 = load i8, ptr %127, align 1, !tbaa !11
  %129 = sext i8 %128 to i32
  %130 = icmp eq i32 %129, 77
  br i1 %130, label %131, label %140

131:                                              ; preds = %126
  %132 = load i32, ptr %8, align 4, !tbaa !9
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %8, align 4, !tbaa !9
  %134 = sext i32 %132 to i64
  %135 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %134
  store ptr %13, ptr %135, align 8, !tbaa !5
  %136 = load i32, ptr %9, align 4, !tbaa !9
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr %9, align 4, !tbaa !9
  %138 = sext i32 %136 to i64
  %139 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %138
  store i8 100, ptr %139, align 1, !tbaa !11
  br label %387

140:                                              ; preds = %126
  %141 = load ptr, ptr %7, align 8, !tbaa !5
  %142 = load i8, ptr %141, align 1, !tbaa !11
  %143 = sext i8 %142 to i32
  %144 = icmp eq i32 %143, 87
  br i1 %144, label %145, label %154

145:                                              ; preds = %140
  %146 = load i32, ptr %8, align 4, !tbaa !9
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %8, align 4, !tbaa !9
  %148 = sext i32 %146 to i64
  %149 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %148
  store ptr %15, ptr %149, align 8, !tbaa !5
  %150 = load i32, ptr %9, align 4, !tbaa !9
  %151 = add nsw i32 %150, 1
  store i32 %151, ptr %9, align 4, !tbaa !9
  %152 = sext i32 %150 to i64
  %153 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %152
  store i8 100, ptr %153, align 1, !tbaa !11
  br label %386

154:                                              ; preds = %140
  %155 = load ptr, ptr %7, align 8, !tbaa !5
  %156 = load i8, ptr %155, align 1, !tbaa !11
  %157 = sext i8 %156 to i32
  %158 = icmp eq i32 %157, 68
  br i1 %158, label %159, label %168

159:                                              ; preds = %154
  %160 = load i32, ptr %8, align 4, !tbaa !9
  %161 = add nsw i32 %160, 1
  store i32 %161, ptr %8, align 4, !tbaa !9
  %162 = sext i32 %160 to i64
  %163 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %162
  store ptr %12, ptr %163, align 8, !tbaa !5
  %164 = load i32, ptr %9, align 4, !tbaa !9
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %9, align 4, !tbaa !9
  %166 = sext i32 %164 to i64
  %167 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %166
  store i8 100, ptr %167, align 1, !tbaa !11
  br label %385

168:                                              ; preds = %154
  %169 = load ptr, ptr %7, align 8, !tbaa !5
  %170 = load i8, ptr %169, align 1, !tbaa !11
  %171 = sext i8 %170 to i32
  %172 = icmp eq i32 %171, 72
  br i1 %172, label %173, label %182

173:                                              ; preds = %168
  %174 = load i32, ptr %8, align 4, !tbaa !9
  %175 = add nsw i32 %174, 1
  store i32 %175, ptr %8, align 4, !tbaa !9
  %176 = sext i32 %174 to i64
  %177 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %176
  store ptr %16, ptr %177, align 8, !tbaa !5
  %178 = load i32, ptr %9, align 4, !tbaa !9
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr %9, align 4, !tbaa !9
  %180 = sext i32 %178 to i64
  %181 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %180
  store i8 100, ptr %181, align 1, !tbaa !11
  br label %384

182:                                              ; preds = %168
  %183 = load ptr, ptr %7, align 8, !tbaa !5
  %184 = load i8, ptr %183, align 1, !tbaa !11
  %185 = sext i8 %184 to i32
  %186 = icmp eq i32 %185, 109
  br i1 %186, label %187, label %196

187:                                              ; preds = %182
  %188 = load i32, ptr %8, align 4, !tbaa !9
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %8, align 4, !tbaa !9
  %190 = sext i32 %188 to i64
  %191 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %190
  store ptr %17, ptr %191, align 8, !tbaa !5
  %192 = load i32, ptr %9, align 4, !tbaa !9
  %193 = add nsw i32 %192, 1
  store i32 %193, ptr %9, align 4, !tbaa !9
  %194 = sext i32 %192 to i64
  %195 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %194
  store i8 100, ptr %195, align 1, !tbaa !11
  br label %383

196:                                              ; preds = %182
  %197 = load ptr, ptr %7, align 8, !tbaa !5
  %198 = load i8, ptr %197, align 1, !tbaa !11
  %199 = sext i8 %198 to i32
  %200 = icmp eq i32 %199, 83
  br i1 %200, label %201, label %210

201:                                              ; preds = %196
  %202 = load i32, ptr %8, align 4, !tbaa !9
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %8, align 4, !tbaa !9
  %204 = sext i32 %202 to i64
  %205 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %204
  store ptr %18, ptr %205, align 8, !tbaa !5
  %206 = load i32, ptr %9, align 4, !tbaa !9
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %9, align 4, !tbaa !9
  %208 = sext i32 %206 to i64
  %209 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %208
  store i8 100, ptr %209, align 1, !tbaa !11
  br label %382

210:                                              ; preds = %196
  %211 = load ptr, ptr %7, align 8, !tbaa !5
  %212 = getelementptr inbounds i8, ptr %211, i64 0
  %213 = load i8, ptr %212, align 1, !tbaa !11
  %214 = sext i8 %213 to i32
  %215 = icmp eq i32 %214, 115
  br i1 %215, label %228, label %216

216:                                              ; preds = %210
  %217 = load ptr, ptr %7, align 8, !tbaa !5
  %218 = getelementptr inbounds i8, ptr %217, i64 0
  %219 = load i8, ptr %218, align 1, !tbaa !11
  %220 = sext i8 %219 to i32
  %221 = icmp eq i32 %220, 97
  br i1 %221, label %228, label %222

222:                                              ; preds = %216
  %223 = load ptr, ptr %7, align 8, !tbaa !5
  %224 = getelementptr inbounds i8, ptr %223, i64 0
  %225 = load i8, ptr %224, align 1, !tbaa !11
  %226 = sext i8 %225 to i32
  %227 = icmp eq i32 %226, 67
  br i1 %227, label %228, label %372

228:                                              ; preds = %222, %216, %210
  %229 = load ptr, ptr %7, align 8, !tbaa !5
  %230 = getelementptr inbounds i8, ptr %229, i64 0
  %231 = load i8, ptr %230, align 1, !tbaa !11
  %232 = sext i8 %231 to i32
  %233 = icmp eq i32 %232, 115
  br i1 %233, label %240, label %234

234:                                              ; preds = %228
  %235 = load ptr, ptr %7, align 8, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %235, i64 0
  %237 = load i8, ptr %236, align 1, !tbaa !11
  %238 = sext i8 %237 to i32
  %239 = icmp eq i32 %238, 97
  br i1 %239, label %240, label %259

240:                                              ; preds = %234, %228
  %241 = load ptr, ptr %7, align 8, !tbaa !5
  %242 = getelementptr inbounds i8, ptr %241, i64 1
  %243 = load i8, ptr %242, align 1, !tbaa !11
  %244 = sext i8 %243 to i32
  %245 = icmp eq i32 %244, 77
  br i1 %245, label %246, label %252

246:                                              ; preds = %240
  %247 = getelementptr inbounds [16 x i8], ptr %27, i64 0, i64 0
  %248 = load i32, ptr %8, align 4, !tbaa !9
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %8, align 4, !tbaa !9
  %250 = sext i32 %248 to i64
  %251 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %250
  store ptr %247, ptr %251, align 8, !tbaa !5
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %258

252:                                              ; preds = %240
  %253 = getelementptr inbounds [16 x i8], ptr %26, i64 0, i64 0
  %254 = load i32, ptr %8, align 4, !tbaa !9
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr %8, align 4, !tbaa !9
  %256 = sext i32 %254 to i64
  %257 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %256
  store ptr %253, ptr %257, align 8, !tbaa !5
  br label %258

258:                                              ; preds = %252, %246
  br label %350

259:                                              ; preds = %234
  %260 = load ptr, ptr %7, align 8, !tbaa !5
  %261 = getelementptr inbounds i8, ptr %260, i64 0
  %262 = load i8, ptr %261, align 1, !tbaa !11
  %263 = sext i8 %262 to i32
  %264 = icmp eq i32 %263, 67
  br i1 %264, label %265, label %349

265:                                              ; preds = %259
  %266 = load ptr, ptr %7, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i64 1
  %268 = load i8, ptr %267, align 1, !tbaa !11
  %269 = sext i8 %268 to i32
  %270 = icmp eq i32 %269, 89
  br i1 %270, label %271, label %277

271:                                              ; preds = %265
  %272 = getelementptr inbounds [32 x i8], ptr %19, i64 0, i64 0
  %273 = load i32, ptr %8, align 4, !tbaa !9
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %8, align 4, !tbaa !9
  %275 = sext i32 %273 to i64
  %276 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %275
  store ptr %272, ptr %276, align 8, !tbaa !5
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %348

277:                                              ; preds = %265
  %278 = load ptr, ptr %7, align 8, !tbaa !5
  %279 = getelementptr inbounds i8, ptr %278, i64 1
  %280 = load i8, ptr %279, align 1, !tbaa !11
  %281 = sext i8 %280 to i32
  %282 = icmp eq i32 %281, 77
  br i1 %282, label %283, label %289

283:                                              ; preds = %277
  %284 = getelementptr inbounds [32 x i8], ptr %21, i64 0, i64 0
  %285 = load i32, ptr %8, align 4, !tbaa !9
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %8, align 4, !tbaa !9
  %287 = sext i32 %285 to i64
  %288 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %287
  store ptr %284, ptr %288, align 8, !tbaa !5
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %347

289:                                              ; preds = %277
  %290 = load ptr, ptr %7, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %290, i64 1
  %292 = load i8, ptr %291, align 1, !tbaa !11
  %293 = sext i8 %292 to i32
  %294 = icmp eq i32 %293, 68
  br i1 %294, label %295, label %301

295:                                              ; preds = %289
  %296 = getelementptr inbounds [32 x i8], ptr %22, i64 0, i64 0
  %297 = load i32, ptr %8, align 4, !tbaa !9
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr %8, align 4, !tbaa !9
  %299 = sext i32 %297 to i64
  %300 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %299
  store ptr %296, ptr %300, align 8, !tbaa !5
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %346

301:                                              ; preds = %289
  %302 = load ptr, ptr %7, align 8, !tbaa !5
  %303 = getelementptr inbounds i8, ptr %302, i64 1
  %304 = load i8, ptr %303, align 1, !tbaa !11
  %305 = sext i8 %304 to i32
  %306 = icmp eq i32 %305, 72
  br i1 %306, label %307, label %313

307:                                              ; preds = %301
  %308 = getelementptr inbounds [32 x i8], ptr %23, i64 0, i64 0
  %309 = load i32, ptr %8, align 4, !tbaa !9
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %8, align 4, !tbaa !9
  %311 = sext i32 %309 to i64
  %312 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %311
  store ptr %308, ptr %312, align 8, !tbaa !5
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %345

313:                                              ; preds = %301
  %314 = load ptr, ptr %7, align 8, !tbaa !5
  %315 = getelementptr inbounds i8, ptr %314, i64 1
  %316 = load i8, ptr %315, align 1, !tbaa !11
  %317 = sext i8 %316 to i32
  %318 = icmp eq i32 %317, 109
  br i1 %318, label %319, label %325

319:                                              ; preds = %313
  %320 = getelementptr inbounds [32 x i8], ptr %24, i64 0, i64 0
  %321 = load i32, ptr %8, align 4, !tbaa !9
  %322 = add nsw i32 %321, 1
  store i32 %322, ptr %8, align 4, !tbaa !9
  %323 = sext i32 %321 to i64
  %324 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %323
  store ptr %320, ptr %324, align 8, !tbaa !5
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %344

325:                                              ; preds = %313
  %326 = load ptr, ptr %7, align 8, !tbaa !5
  %327 = getelementptr inbounds i8, ptr %326, i64 1
  %328 = load i8, ptr %327, align 1, !tbaa !11
  %329 = sext i8 %328 to i32
  %330 = icmp eq i32 %329, 83
  br i1 %330, label %331, label %337

331:                                              ; preds = %325
  %332 = getelementptr inbounds [32 x i8], ptr %25, i64 0, i64 0
  %333 = load i32, ptr %8, align 4, !tbaa !9
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %8, align 4, !tbaa !9
  %335 = sext i32 %333 to i64
  %336 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %335
  store ptr %332, ptr %336, align 8, !tbaa !5
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %343

337:                                              ; preds = %325
  %338 = getelementptr inbounds [32 x i8], ptr %20, i64 0, i64 0
  %339 = load i32, ptr %8, align 4, !tbaa !9
  %340 = add nsw i32 %339, 1
  store i32 %340, ptr %8, align 4, !tbaa !9
  %341 = sext i32 %339 to i64
  %342 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 %341
  store ptr %338, ptr %342, align 8, !tbaa !5
  br label %343

343:                                              ; preds = %337, %331
  br label %344

344:                                              ; preds = %343, %319
  br label %345

345:                                              ; preds = %344, %307
  br label %346

346:                                              ; preds = %345, %295
  br label %347

347:                                              ; preds = %346, %283
  br label %348

348:                                              ; preds = %347, %271
  br label %349

349:                                              ; preds = %348, %259
  br label %350

350:                                              ; preds = %349, %258
  %351 = load i32, ptr %9, align 4, !tbaa !9
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %9, align 4, !tbaa !9
  %353 = sext i32 %351 to i64
  %354 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %353
  store i8 91, ptr %354, align 1, !tbaa !11
  %355 = load i32, ptr %9, align 4, !tbaa !9
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr %9, align 4, !tbaa !9
  %357 = sext i32 %355 to i64
  %358 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %357
  store i8 94, ptr %358, align 1, !tbaa !11
  %359 = load ptr, ptr %7, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i64 2
  %361 = load i8, ptr %360, align 1, !tbaa !11
  %362 = load i32, ptr %9, align 4, !tbaa !9
  %363 = add nsw i32 %362, 1
  store i32 %363, ptr %9, align 4, !tbaa !9
  %364 = sext i32 %362 to i64
  %365 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %364
  store i8 %361, ptr %365, align 1, !tbaa !11
  %366 = load i32, ptr %9, align 4, !tbaa !9
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr %9, align 4, !tbaa !9
  %368 = sext i32 %366 to i64
  %369 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 %368
  store i8 93, ptr %369, align 1, !tbaa !11
  %370 = load ptr, ptr %7, align 8, !tbaa !5
  %371 = getelementptr inbounds i8, ptr %370, i32 1
  store ptr %371, ptr %7, align 8, !tbaa !5
  br label %381

372:                                              ; preds = %222
  br label %373

373:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  store i32 1, ptr %38, align 4, !tbaa !9
  %374 = load i32, ptr %38, align 4, !tbaa !9
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %378

376:                                              ; preds = %373
  %377 = load i32, ptr %38, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %377, i32 noundef -1, ptr noundef @.str, i32 noundef 574, ptr noundef @__FUNCTION__.m_StringTime, ptr noundef @.str.47)
  br label %378

378:                                              ; preds = %376, %373
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %379

379:                                              ; preds = %378
  br label %380

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380, %350
  br label %382

382:                                              ; preds = %381, %201
  br label %383

383:                                              ; preds = %382, %187
  br label %384

384:                                              ; preds = %383, %173
  br label %385

385:                                              ; preds = %384, %159
  br label %386

386:                                              ; preds = %385, %145
  br label %387

387:                                              ; preds = %386, %131
  br label %388

388:                                              ; preds = %387, %117
  br label %392

389:                                              ; preds = %111
  %390 = load ptr, ptr %7, align 8, !tbaa !5
  %391 = getelementptr inbounds i8, ptr %390, i32 1
  store ptr %391, ptr %7, align 8, !tbaa !5
  br label %96, !llvm.loop !12

392:                                              ; preds = %388, %96
  %393 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %393, ptr %6, align 8, !tbaa !5
  br label %394

394:                                              ; preds = %392, %88
  br label %395

395:                                              ; preds = %394, %85
  %396 = load ptr, ptr %6, align 8, !tbaa !5
  %397 = getelementptr inbounds i8, ptr %396, i32 1
  store ptr %397, ptr %6, align 8, !tbaa !5
  br label %61, !llvm.loop !14

398:                                              ; preds = %72, %61
  %399 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %400 = getelementptr inbounds [128 x i8], ptr %37, i64 0, i64 0
  %401 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 0
  %402 = load ptr, ptr %401, align 16, !tbaa !5
  %403 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 1
  %404 = load ptr, ptr %403, align 8, !tbaa !5
  %405 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 2
  %406 = load ptr, ptr %405, align 16, !tbaa !5
  %407 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 3
  %408 = load ptr, ptr %407, align 8, !tbaa !5
  %409 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 4
  %410 = load ptr, ptr %409, align 16, !tbaa !5
  %411 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 5
  %412 = load ptr, ptr %411, align 8, !tbaa !5
  %413 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 6
  %414 = load ptr, ptr %413, align 16, !tbaa !5
  %415 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 7
  %416 = load ptr, ptr %415, align 8, !tbaa !5
  %417 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 8
  %418 = load ptr, ptr %417, align 16, !tbaa !5
  %419 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 9
  %420 = load ptr, ptr %419, align 8, !tbaa !5
  %421 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 10
  %422 = load ptr, ptr %421, align 16, !tbaa !5
  %423 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 11
  %424 = load ptr, ptr %423, align 8, !tbaa !5
  %425 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 12
  %426 = load ptr, ptr %425, align 16, !tbaa !5
  %427 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 13
  %428 = load ptr, ptr %427, align 8, !tbaa !5
  %429 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 14
  %430 = load ptr, ptr %429, align 16, !tbaa !5
  %431 = getelementptr inbounds [16 x ptr], ptr %36, i64 0, i64 15
  %432 = load ptr, ptr %431, align 8, !tbaa !5
  %433 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %399, ptr noundef %400, ptr noundef %402, ptr noundef %404, ptr noundef %406, ptr noundef %408, ptr noundef %410, ptr noundef %412, ptr noundef %414, ptr noundef %416, ptr noundef %418, ptr noundef %420, ptr noundef %422, ptr noundef %424, ptr noundef %426, ptr noundef %428, ptr noundef %430, ptr noundef %432) #7
  %434 = load i32, ptr %34, align 4, !tbaa !9
  %435 = icmp ne i32 %434, 0
  br i1 %435, label %436, label %459

436:                                              ; preds = %398
  %437 = getelementptr inbounds [16 x i8], ptr %27, i64 0, i64 3
  store i8 0, ptr %437, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %438

438:                                              ; preds = %454, %436
  %439 = load i32, ptr %39, align 4, !tbaa !9
  %440 = icmp slt i32 %439, 12
  br i1 %440, label %442, label %441

441:                                              ; preds = %438
  store i32 10, ptr %40, align 4
  br label %457

442:                                              ; preds = %438
  %443 = getelementptr inbounds [16 x i8], ptr %27, i64 0, i64 0
  %444 = load i32, ptr %39, align 4, !tbaa !9
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds [12 x ptr], ptr %35, i64 0, i64 %445
  %447 = load ptr, ptr %446, align 8, !tbaa !5
  %448 = call i32 @strcasecmp(ptr noundef %443, ptr noundef %447) #8
  %449 = icmp eq i32 %448, 0
  br i1 %449, label %450, label %453

450:                                              ; preds = %442
  %451 = load i32, ptr %39, align 4, !tbaa !9
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %13, align 4, !tbaa !9
  store i32 10, ptr %40, align 4
  br label %457

453:                                              ; preds = %442
  br label %454

454:                                              ; preds = %453
  %455 = load i32, ptr %39, align 4, !tbaa !9
  %456 = add nsw i32 %455, 1
  store i32 %456, ptr %39, align 4, !tbaa !9
  br label %438, !llvm.loop !15

457:                                              ; preds = %450, %441
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %458

458:                                              ; preds = %457
  br label %459

459:                                              ; preds = %458, %398
  %460 = load i32, ptr %28, align 4, !tbaa !9
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %465

462:                                              ; preds = %459
  %463 = getelementptr inbounds [32 x i8], ptr %19, i64 0, i64 0
  %464 = call i32 @CHNYear(ptr noundef %463)
  store i32 %464, ptr %14, align 4, !tbaa !9
  br label %465

465:                                              ; preds = %462, %459
  %466 = load i32, ptr %29, align 4, !tbaa !9
  %467 = icmp ne i32 %466, 0
  br i1 %467, label %468, label %471

468:                                              ; preds = %465
  %469 = getelementptr inbounds [32 x i8], ptr %21, i64 0, i64 0
  %470 = call i32 @CHNNum(ptr noundef %469)
  store i32 %470, ptr %13, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %468, %465
  %472 = load i32, ptr %30, align 4, !tbaa !9
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %474, label %477

474:                                              ; preds = %471
  %475 = getelementptr inbounds [32 x i8], ptr %22, i64 0, i64 0
  %476 = call i32 @CHNNum(ptr noundef %475)
  store i32 %476, ptr %12, align 4, !tbaa !9
  br label %477

477:                                              ; preds = %474, %471
  %478 = load i32, ptr %31, align 4, !tbaa !9
  %479 = icmp ne i32 %478, 0
  br i1 %479, label %480, label %483

480:                                              ; preds = %477
  %481 = getelementptr inbounds [32 x i8], ptr %23, i64 0, i64 0
  %482 = call i32 @CHNNum(ptr noundef %481)
  store i32 %482, ptr %16, align 4, !tbaa !9
  br label %483

483:                                              ; preds = %480, %477
  %484 = load i32, ptr %32, align 4, !tbaa !9
  %485 = icmp ne i32 %484, 0
  br i1 %485, label %486, label %489

486:                                              ; preds = %483
  %487 = getelementptr inbounds [32 x i8], ptr %24, i64 0, i64 0
  %488 = call i32 @CHNNum(ptr noundef %487)
  store i32 %488, ptr %17, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %486, %483
  %490 = load i32, ptr %33, align 4, !tbaa !9
  %491 = icmp ne i32 %490, 0
  br i1 %491, label %492, label %495

492:                                              ; preds = %489
  %493 = getelementptr inbounds [32 x i8], ptr %25, i64 0, i64 0
  %494 = call i32 @CHNNum(ptr noundef %493)
  store i32 %494, ptr %18, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %492, %489
  %496 = load i32, ptr %13, align 4, !tbaa !9
  %497 = icmp slt i32 %496, 0
  br i1 %497, label %501, label %498

498:                                              ; preds = %495
  %499 = load i32, ptr %12, align 4, !tbaa !9
  %500 = icmp slt i32 %499, 0
  br i1 %500, label %501, label %502

501:                                              ; preds = %498, %495
  store i64 -1, ptr %3, align 8
  store i32 1, ptr %40, align 4
  br label %545

502:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  store i64 0, ptr %41, align 8, !tbaa !16
  %503 = load i32, ptr %14, align 4, !tbaa !9
  %504 = icmp slt i32 %503, 1972
  br i1 %504, label %505, label %527

505:                                              ; preds = %502
  %506 = load i32, ptr %14, align 4, !tbaa !9
  %507 = sub nsw i32 1972, %506
  %508 = mul nsw i32 %507, 365
  %509 = load i32, ptr %14, align 4, !tbaa !9
  %510 = sub nsw i32 1972, %509
  %511 = sdiv i32 %510, 4
  %512 = add nsw i32 %508, %511
  %513 = load i32, ptr %14, align 4, !tbaa !9
  %514 = sub nsw i32 1972, %513
  %515 = srem i32 %514, 4
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %520

517:                                              ; preds = %505
  %518 = load i32, ptr %13, align 4, !tbaa !9
  %519 = icmp sgt i32 %518, 2
  br label %520

520:                                              ; preds = %517, %505
  %521 = phi i1 [ false, %505 ], [ %519, %517 ]
  %522 = zext i1 %521 to i32
  %523 = add nsw i32 %512, %522
  %524 = mul nsw i32 %523, 24
  %525 = mul nsw i32 %524, 3600
  %526 = sext i32 %525 to i64
  store i64 %526, ptr %41, align 8, !tbaa !16
  store i32 1972, ptr %14, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %520, %502
  call void @llvm.lifetime.start.p0(i64 56, ptr %42) #7
  %528 = load i32, ptr %14, align 4, !tbaa !9
  %529 = sub nsw i32 %528, 1900
  %530 = getelementptr inbounds %struct.tm, ptr %42, i32 0, i32 5
  store i32 %529, ptr %530, align 4, !tbaa !18
  %531 = load i32, ptr %13, align 4, !tbaa !9
  %532 = sub nsw i32 %531, 1
  %533 = getelementptr inbounds %struct.tm, ptr %42, i32 0, i32 4
  store i32 %532, ptr %533, align 8, !tbaa !20
  %534 = load i32, ptr %12, align 4, !tbaa !9
  %535 = getelementptr inbounds %struct.tm, ptr %42, i32 0, i32 3
  store i32 %534, ptr %535, align 4, !tbaa !21
  %536 = load i32, ptr %16, align 4, !tbaa !9
  %537 = getelementptr inbounds %struct.tm, ptr %42, i32 0, i32 2
  store i32 %536, ptr %537, align 8, !tbaa !22
  %538 = load i32, ptr %17, align 4, !tbaa !9
  %539 = getelementptr inbounds %struct.tm, ptr %42, i32 0, i32 1
  store i32 %538, ptr %539, align 4, !tbaa !23
  %540 = load i32, ptr %18, align 4, !tbaa !9
  %541 = getelementptr inbounds %struct.tm, ptr %42, i32 0, i32 0
  store i32 %540, ptr %541, align 8, !tbaa !24
  %542 = call i64 @mktime(ptr noundef %42) #7
  %543 = load i64, ptr %41, align 8, !tbaa !16
  %544 = sub nsw i64 %542, %543
  store i64 %544, ptr %3, align 8
  store i32 1, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %545

545:                                              ; preds = %527, %501
  call void @llvm.lifetime.end.p0(i64 128, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  br label %546

546:                                              ; preds = %545, %45
  %547 = load i64, ptr %3, align 8
  ret i64 %547
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: nounwind
declare i32 @__isoc99_sscanf(ptr noundef, ptr noundef, ...) #3

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcasecmp(ptr noundef, ptr noundef) #6

; Function Attrs: nounwind
declare i64 @mktime(ptr noundef) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = !{!17, !17, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!19, !10, i64 20}
!19 = !{!"tm", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !17, i64 40, !6, i64 48}
!20 = !{!19, !10, i64 16}
!21 = !{!19, !10, i64 12}
!22 = !{!19, !10, i64 8}
!23 = !{!19, !10, i64 4}
!24 = !{!19, !10, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, ptr }

@.str = external hidden unnamed_addr constant [76 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [29 x i8], align 1
@__const.m_StringTime.amonth = external hidden unnamed_addr constant [12 x ptr], align 16
@__FUNCTION__.m_StringTime = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @m_Exception(i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ...) local_unnamed_addr #1

; Function Attrs: nounwind
declare i64 @time(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @CHNNum(ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @CHNYear(ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local void @_CString(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
define dso_local i64 @m_StringTime(ptr noundef %0, ptr noundef %1) local_unnamed_addr #4 {
  %3 = alloca [128 x i8], align 16
  %4 = alloca [128 x i8], align 16
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca [32 x i8], align 16
  %13 = alloca [32 x i8], align 16
  %14 = alloca [32 x i8], align 16
  %15 = alloca [32 x i8], align 16
  %16 = alloca [32 x i8], align 16
  %17 = alloca [32 x i8], align 16
  %18 = alloca [32 x i8], align 16
  %19 = alloca [16 x i8], align 16
  %20 = alloca [16 x i8], align 16
  %21 = alloca [16 x ptr], align 16
  %22 = alloca [128 x i8], align 16
  %23 = alloca %struct.tm, align 8
  %24 = icmp eq ptr %0, null
  br i1 %24, label %25, label %27

25:                                               ; preds = %2
  %26 = tail call i64 @time(ptr noundef null) #9
  br label %248

27:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) #9
  call void @_CString(ptr noundef nonnull %0, ptr noundef nonnull %3)
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %4) #9
  %28 = icmp eq ptr %1, null
  br i1 %28, label %29, label %31

29:                                               ; preds = %27
  %30 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %4, ptr noundef nonnull dereferenceable(1) @.str.48) #9
  br label %32

31:                                               ; preds = %27
  call void @_CString(ptr noundef nonnull %1, ptr noundef nonnull %4)
  br label %32

32:                                               ; preds = %31, %29
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #9
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #9
  store i32 -1, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9
  store i32 -1, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #9
  store i32 -1, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store i32 0, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #9
  store i32 0, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %22) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(128) %22, i8 0, i64 128, i1 false)
  %33 = load i8, ptr %4, align 16, !tbaa !9
  %.not148 = icmp eq i8 %33, 0
  br i1 %.not148, label %.thread265, label %.lr.ph

.thread265:                                       ; preds = %32
  %34 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef, ptr noundef undef) #9
  br label %212

.lr.ph:                                           ; preds = %32, %.loopexit143
  %35 = phi i8 [ %143, %.loopexit143 ], [ %33, %32 ]
  %.088158 = phi i32 [ %.3, %.loopexit143 ], [ 0, %32 ]
  %.090157 = phi i32 [ %.393, %.loopexit143 ], [ 0, %32 ]
  %.094156 = phi i32 [ %.397, %.loopexit143 ], [ 0, %32 ]
  %.098155 = phi i32 [ %.3101, %.loopexit143 ], [ 0, %32 ]
  %.0102154 = phi i32 [ %.3105, %.loopexit143 ], [ 0, %32 ]
  %.0106153 = phi i32 [ %.3109, %.loopexit143 ], [ 0, %32 ]
  %.0110152 = phi i32 [ %.3113, %.loopexit143 ], [ 0, %32 ]
  %.0123149 = phi ptr [ %142, %.loopexit143 ], [ %4, %32 ]
  %36 = phi <2 x i32> [ %141, %.loopexit143 ], [ zeroinitializer, %32 ]
  %37 = icmp sgt <2 x i32> %36, <i32 15, i32 127>
  %38 = extractelement <2 x i1> %37, i64 0
  %39 = extractelement <2 x i1> %37, i64 1
  %or.cond = select i1 %38, i1 true, i1 %39
  br i1 %or.cond, label %._crit_edge, label %40

40:                                               ; preds = %.lr.ph
  %41 = extractelement <2 x i32> %36, i64 1
  %42 = sext i32 %41 to i64
  %43 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %42
  store i8 %35, ptr %43, align 1, !tbaa !9
  %44 = add nsw i32 %41, 1
  %45 = load i8, ptr %.0123149, align 1, !tbaa !9
  %46 = insertelement <2 x i32> %36, i32 %44, i64 1
  switch i8 %45, label %.loopexit143 [
    i8 47, label %47
    i8 37, label %.preheader
  ]

47:                                               ; preds = %40
  %48 = getelementptr inbounds i8, ptr %.0123149, i64 1
  br label %.loopexit143

.preheader:                                       ; preds = %40, %50
  %.0123.pn = phi ptr [ %.0121, %50 ], [ %.0123149, %40 ]
  %.0121 = getelementptr inbounds i8, ptr %.0123.pn, i64 1
  %49 = load i8, ptr %.0121, align 1, !tbaa !9
  %.not134 = icmp eq i8 %49, 0
  br i1 %.not134, label %.loopexit143, label %50

50:                                               ; preds = %.preheader
  %51 = add i8 %49, -48
  %or.cond142 = icmp ult i8 %51, 10
  br i1 %or.cond142, label %.preheader, label %52, !llvm.loop !10

52:                                               ; preds = %50
  switch i8 %49, label %140 [
    i8 89, label %53
    i8 77, label %60
    i8 87, label %67
    i8 68, label %74
    i8 72, label %81
    i8 109, label %88
    i8 83, label %95
    i8 115, label %102
    i8 97, label %102
    i8 67, label %111
  ]

53:                                               ; preds = %52
  %54 = extractelement <2 x i32> %36, i64 0
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %55
  store ptr %7, ptr %56, align 8, !tbaa !12
  %57 = add nsw <2 x i32> %36, <i32 1, i32 2>
  %58 = sext i32 %44 to i64
  %59 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %58
  store i8 100, ptr %59, align 1, !tbaa !9
  br label %.loopexit143

60:                                               ; preds = %52
  %61 = extractelement <2 x i32> %36, i64 0
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %62
  store ptr %6, ptr %63, align 8, !tbaa !12
  %64 = add nsw <2 x i32> %36, <i32 1, i32 2>
  %65 = sext i32 %44 to i64
  %66 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %65
  store i8 100, ptr %66, align 1, !tbaa !9
  br label %.loopexit143

67:                                               ; preds = %52
  %68 = extractelement <2 x i32> %36, i64 0
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %69
  store ptr %8, ptr %70, align 8, !tbaa !12
  %71 = add nsw <2 x i32> %36, <i32 1, i32 2>
  %72 = sext i32 %44 to i64
  %73 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %72
  store i8 100, ptr %73, align 1, !tbaa !9
  br label %.loopexit143

74:                                               ; preds = %52
  %75 = extractelement <2 x i32> %36, i64 0
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %76
  store ptr %5, ptr %77, align 8, !tbaa !12
  %78 = add nsw <2 x i32> %36, <i32 1, i32 2>
  %79 = sext i32 %44 to i64
  %80 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %79
  store i8 100, ptr %80, align 1, !tbaa !9
  br label %.loopexit143

81:                                               ; preds = %52
  %82 = extractelement <2 x i32> %36, i64 0
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %83
  store ptr %9, ptr %84, align 8, !tbaa !12
  %85 = add nsw <2 x i32> %36, <i32 1, i32 2>
  %86 = sext i32 %44 to i64
  %87 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %86
  store i8 100, ptr %87, align 1, !tbaa !9
  br label %.loopexit143

88:                                               ; preds = %52
  %89 = extractelement <2 x i32> %36, i64 0
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %90
  store ptr %10, ptr %91, align 8, !tbaa !12
  %92 = add nsw <2 x i32> %36, <i32 1, i32 2>
  %93 = sext i32 %44 to i64
  %94 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %93
  store i8 100, ptr %94, align 1, !tbaa !9
  br label %.loopexit143

95:                                               ; preds = %52
  %96 = extractelement <2 x i32> %36, i64 0
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %97
  store ptr %11, ptr %98, align 8, !tbaa !12
  %99 = add nsw <2 x i32> %36, <i32 1, i32 2>
  %100 = sext i32 %44 to i64
  %101 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %100
  store i8 100, ptr %101, align 1, !tbaa !9
  br label %.loopexit143

102:                                              ; preds = %52, %52
  %103 = getelementptr inbounds i8, ptr %.0123.pn, i64 2
  %104 = load i8, ptr %103, align 1, !tbaa !9
  %105 = icmp eq i8 %104, 77
  %106 = extractelement <2 x i32> %36, i64 0
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %107
  br i1 %105, label %109, label %110

109:                                              ; preds = %102
  store ptr %20, ptr %108, align 8, !tbaa !12
  br label %124

110:                                              ; preds = %102
  store ptr %19, ptr %108, align 8, !tbaa !12
  br label %124

111:                                              ; preds = %52
  %112 = getelementptr inbounds i8, ptr %.0123.pn, i64 2
  %113 = load i8, ptr %112, align 1, !tbaa !9
  %114 = extractelement <2 x i32> %36, i64 0
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds [16 x ptr], ptr %21, i64 0, i64 %115
  switch i8 %113, label %123 [
    i8 89, label %117
    i8 77, label %118
    i8 68, label %119
    i8 72, label %120
    i8 109, label %121
    i8 83, label %122
  ]

117:                                              ; preds = %111
  store ptr %12, ptr %116, align 8, !tbaa !12
  br label %124

118:                                              ; preds = %111
  store ptr %14, ptr %116, align 8, !tbaa !12
  br label %124

119:                                              ; preds = %111
  store ptr %15, ptr %116, align 8, !tbaa !12
  br label %124

120:                                              ; preds = %111
  store ptr %16, ptr %116, align 8, !tbaa !12
  br label %124

121:                                              ; preds = %111
  store ptr %17, ptr %116, align 8, !tbaa !12
  br label %124

122:                                              ; preds = %111
  store ptr %18, ptr %116, align 8, !tbaa !12
  br label %124

123:                                              ; preds = %111
  store ptr %13, ptr %116, align 8, !tbaa !12
  br label %124

124:                                              ; preds = %118, %120, %122, %123, %121, %119, %117, %109, %110
  %.1111 = phi i32 [ %.0110152, %109 ], [ %.0110152, %110 ], [ 1, %117 ], [ %.0110152, %118 ], [ %.0110152, %119 ], [ %.0110152, %120 ], [ %.0110152, %121 ], [ %.0110152, %122 ], [ %.0110152, %123 ]
  %.1107 = phi i32 [ %.0106153, %109 ], [ %.0106153, %110 ], [ %.0106153, %117 ], [ 1, %118 ], [ %.0106153, %119 ], [ %.0106153, %120 ], [ %.0106153, %121 ], [ %.0106153, %122 ], [ %.0106153, %123 ]
  %.1103 = phi i32 [ %.0102154, %109 ], [ %.0102154, %110 ], [ %.0102154, %117 ], [ %.0102154, %118 ], [ 1, %119 ], [ %.0102154, %120 ], [ %.0102154, %121 ], [ %.0102154, %122 ], [ %.0102154, %123 ]
  %.199 = phi i32 [ %.098155, %109 ], [ %.098155, %110 ], [ %.098155, %117 ], [ %.098155, %118 ], [ %.098155, %119 ], [ 1, %120 ], [ %.098155, %121 ], [ %.098155, %122 ], [ %.098155, %123 ]
  %.195 = phi i32 [ %.094156, %109 ], [ %.094156, %110 ], [ %.094156, %117 ], [ %.094156, %118 ], [ %.094156, %119 ], [ %.094156, %120 ], [ 1, %121 ], [ %.094156, %122 ], [ %.094156, %123 ]
  %.191 = phi i32 [ %.090157, %109 ], [ %.090157, %110 ], [ %.090157, %117 ], [ %.090157, %118 ], [ %.090157, %119 ], [ %.090157, %120 ], [ %.090157, %121 ], [ 1, %122 ], [ %.090157, %123 ]
  %.189 = phi i32 [ 1, %109 ], [ %.088158, %110 ], [ %.088158, %117 ], [ %.088158, %118 ], [ %.088158, %119 ], [ %.088158, %120 ], [ %.088158, %121 ], [ %.088158, %122 ], [ %.088158, %123 ]
  %125 = add nsw i32 %41, 2
  %126 = sext i32 %44 to i64
  %127 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %126
  store i8 91, ptr %127, align 1, !tbaa !9
  %128 = add nsw i32 %41, 3
  %129 = sext i32 %125 to i64
  %130 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %129
  store i8 94, ptr %130, align 1, !tbaa !9
  %131 = getelementptr inbounds i8, ptr %.0123.pn, i64 3
  %132 = load i8, ptr %131, align 1, !tbaa !9
  %133 = add nsw i32 %41, 4
  %134 = sext i32 %128 to i64
  %135 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %134
  store i8 %132, ptr %135, align 1, !tbaa !9
  %136 = add nsw <2 x i32> %36, <i32 1, i32 5>
  %137 = sext i32 %133 to i64
  %138 = getelementptr inbounds [128 x i8], ptr %22, i64 0, i64 %137
  store i8 93, ptr %138, align 1, !tbaa !9
  %139 = getelementptr inbounds i8, ptr %.0123.pn, i64 2
  br label %.loopexit143

140:                                              ; preds = %52
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 574, ptr noundef nonnull @__FUNCTION__.m_StringTime, ptr noundef nonnull @.str.47) #9
  br label %.loopexit143

.loopexit143:                                     ; preds = %.preheader, %60, %74, %88, %124, %140, %95, %81, %67, %53, %40, %47
  %.1124 = phi ptr [ %48, %47 ], [ %.0123149, %40 ], [ %.0121, %53 ], [ %.0121, %60 ], [ %.0121, %67 ], [ %.0121, %74 ], [ %.0121, %81 ], [ %.0121, %88 ], [ %.0121, %95 ], [ %139, %124 ], [ %.0121, %140 ], [ %.0121, %.preheader ]
  %.3113 = phi i32 [ %.0110152, %47 ], [ %.0110152, %40 ], [ %.0110152, %53 ], [ %.0110152, %60 ], [ %.0110152, %67 ], [ %.0110152, %74 ], [ %.0110152, %81 ], [ %.0110152, %88 ], [ %.0110152, %95 ], [ %.1111, %124 ], [ %.0110152, %140 ], [ %.0110152, %.preheader ]
  %.3109 = phi i32 [ %.0106153, %47 ], [ %.0106153, %40 ], [ %.0106153, %53 ], [ %.0106153, %60 ], [ %.0106153, %67 ], [ %.0106153, %74 ], [ %.0106153, %81 ], [ %.0106153, %88 ], [ %.0106153, %95 ], [ %.1107, %124 ], [ %.0106153, %140 ], [ %.0106153, %.preheader ]
  %.3105 = phi i32 [ %.0102154, %47 ], [ %.0102154, %40 ], [ %.0102154, %53 ], [ %.0102154, %60 ], [ %.0102154, %67 ], [ %.0102154, %74 ], [ %.0102154, %81 ], [ %.0102154, %88 ], [ %.0102154, %95 ], [ %.1103, %124 ], [ %.0102154, %140 ], [ %.0102154, %.preheader ]
  %.3101 = phi i32 [ %.098155, %47 ], [ %.098155, %40 ], [ %.098155, %53 ], [ %.098155, %60 ], [ %.098155, %67 ], [ %.098155, %74 ], [ %.098155, %81 ], [ %.098155, %88 ], [ %.098155, %95 ], [ %.199, %124 ], [ %.098155, %140 ], [ %.098155, %.preheader ]
  %.397 = phi i32 [ %.094156, %47 ], [ %.094156, %40 ], [ %.094156, %53 ], [ %.094156, %60 ], [ %.094156, %67 ], [ %.094156, %74 ], [ %.094156, %81 ], [ %.094156, %88 ], [ %.094156, %95 ], [ %.195, %124 ], [ %.094156, %140 ], [ %.094156, %.preheader ]
  %.393 = phi i32 [ %.090157, %47 ], [ %.090157, %40 ], [ %.090157, %53 ], [ %.090157, %60 ], [ %.090157, %67 ], [ %.090157, %74 ], [ %.090157, %81 ], [ %.090157, %88 ], [ %.090157, %95 ], [ %.191, %124 ], [ %.090157, %140 ], [ %.090157, %.preheader ]
  %.3 = phi i32 [ %.088158, %47 ], [ %.088158, %40 ], [ %.088158, %53 ], [ %.088158, %60 ], [ %.088158, %67 ], [ %.088158, %74 ], [ %.088158, %81 ], [ %.088158, %88 ], [ %.088158, %95 ], [ %.189, %124 ], [ %.088158, %140 ], [ %.088158, %.preheader ]
  %141 = phi <2 x i32> [ %46, %47 ], [ %46, %40 ], [ %57, %53 ], [ %64, %60 ], [ %71, %67 ], [ %78, %74 ], [ %85, %81 ], [ %92, %88 ], [ %99, %95 ], [ %136, %124 ], [ %46, %140 ], [ %46, %.preheader ]
  %142 = getelementptr inbounds i8, ptr %.1124, i64 1
  %143 = load i8, ptr %142, align 1, !tbaa !9
  %.not = icmp eq i8 %143, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !14

._crit_edge:                                      ; preds = %.loopexit143, %.lr.ph
  %.0110.lcssa.ph = phi i32 [ %.3113, %.loopexit143 ], [ %.0110152, %.lr.ph ]
  %.0106.lcssa.ph = phi i32 [ %.3109, %.loopexit143 ], [ %.0106153, %.lr.ph ]
  %.0102.lcssa.ph = phi i32 [ %.3105, %.loopexit143 ], [ %.0102154, %.lr.ph ]
  %.098.lcssa.ph = phi i32 [ %.3101, %.loopexit143 ], [ %.098155, %.lr.ph ]
  %.094.lcssa.ph = phi i32 [ %.397, %.loopexit143 ], [ %.094156, %.lr.ph ]
  %.090.lcssa.ph = phi i32 [ %.393, %.loopexit143 ], [ %.090157, %.lr.ph ]
  %.088.lcssa.ph = phi i32 [ %.3, %.loopexit143 ], [ %.088158, %.lr.ph ]
  %.pre = load ptr, ptr %21, align 16, !tbaa !12
  %.phi.trans.insert = getelementptr inbounds i8, ptr %21, i64 8
  %.pre179 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !12
  %.phi.trans.insert180 = getelementptr inbounds i8, ptr %21, i64 16
  %.pre181 = load ptr, ptr %.phi.trans.insert180, align 16, !tbaa !12
  %.phi.trans.insert182 = getelementptr inbounds i8, ptr %21, i64 24
  %.pre183 = load ptr, ptr %.phi.trans.insert182, align 8, !tbaa !12
  %.phi.trans.insert184 = getelementptr inbounds i8, ptr %21, i64 32
  %.pre185 = load ptr, ptr %.phi.trans.insert184, align 16, !tbaa !12
  %.phi.trans.insert186 = getelementptr inbounds i8, ptr %21, i64 40
  %.pre187 = load ptr, ptr %.phi.trans.insert186, align 8, !tbaa !12
  %.phi.trans.insert188 = getelementptr inbounds i8, ptr %21, i64 48
  %.pre189 = load ptr, ptr %.phi.trans.insert188, align 16, !tbaa !12
  %.phi.trans.insert190 = getelementptr inbounds i8, ptr %21, i64 56
  %.pre191 = load ptr, ptr %.phi.trans.insert190, align 8, !tbaa !12
  %.phi.trans.insert192 = getelementptr inbounds i8, ptr %21, i64 64
  %.pre193 = load ptr, ptr %.phi.trans.insert192, align 16, !tbaa !12
  %.phi.trans.insert194 = getelementptr inbounds i8, ptr %21, i64 72
  %.pre195 = load ptr, ptr %.phi.trans.insert194, align 8, !tbaa !12
  %.phi.trans.insert196 = getelementptr inbounds i8, ptr %21, i64 80
  %.pre197 = load ptr, ptr %.phi.trans.insert196, align 16, !tbaa !12
  %.phi.trans.insert198 = getelementptr inbounds i8, ptr %21, i64 88
  %.pre199 = load ptr, ptr %.phi.trans.insert198, align 8, !tbaa !12
  %.phi.trans.insert200 = getelementptr inbounds i8, ptr %21, i64 96
  %.pre201 = load ptr, ptr %.phi.trans.insert200, align 16, !tbaa !12
  %.phi.trans.insert202 = getelementptr inbounds i8, ptr %21, i64 104
  %.pre203 = load ptr, ptr %.phi.trans.insert202, align 8, !tbaa !12
  %.phi.trans.insert204 = getelementptr inbounds i8, ptr %21, i64 112
  %.pre205 = load ptr, ptr %.phi.trans.insert204, align 16, !tbaa !12
  %.phi.trans.insert206 = getelementptr inbounds i8, ptr %21, i64 120
  %.pre207 = load ptr, ptr %.phi.trans.insert206, align 8, !tbaa !12
  %144 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %.pre, ptr noundef %.pre179, ptr noundef %.pre181, ptr noundef %.pre183, ptr noundef %.pre185, ptr noundef %.pre187, ptr noundef %.pre189, ptr noundef %.pre191, ptr noundef %.pre193, ptr noundef %.pre195, ptr noundef %.pre197, ptr noundef %.pre199, ptr noundef %.pre201, ptr noundef %.pre203, ptr noundef %.pre205, ptr noundef %.pre207) #9
  %.not135 = icmp eq i32 %.088.lcssa.ph, 0
  br i1 %.not135, label %.loopexit, label %145

145:                                              ; preds = %._crit_edge
  %146 = getelementptr inbounds i8, ptr %20, i64 3
  store i8 0, ptr %146, align 1, !tbaa !9
  %147 = load ptr, ptr @__const.m_StringTime.amonth, align 16, !tbaa !12
  %148 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %147) #10
  %149 = icmp eq i32 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %191, %187, %183, %179, %175, %171, %167, %163, %159, %155, %151, %145
  %.086173.lcssa.wide = phi i32 [ 1, %145 ], [ 2, %151 ], [ 3, %155 ], [ 4, %159 ], [ 5, %163 ], [ 6, %167 ], [ 7, %171 ], [ 8, %175 ], [ 9, %179 ], [ 10, %183 ], [ 11, %187 ], [ 12, %191 ]
  store i32 %.086173.lcssa.wide, ptr %6, align 4, !tbaa !5
  br label %.loopexit

151:                                              ; preds = %145
  %152 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 8), align 8, !tbaa !12
  %153 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %152) #10
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %150, label %155

155:                                              ; preds = %151
  %156 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 16), align 16, !tbaa !12
  %157 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %156) #10
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %150, label %159

159:                                              ; preds = %155
  %160 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 24), align 8, !tbaa !12
  %161 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %160) #10
  %162 = icmp eq i32 %161, 0
  br i1 %162, label %150, label %163

163:                                              ; preds = %159
  %164 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 32), align 16, !tbaa !12
  %165 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %164) #10
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %150, label %167

167:                                              ; preds = %163
  %168 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 40), align 8, !tbaa !12
  %169 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %168) #10
  %170 = icmp eq i32 %169, 0
  br i1 %170, label %150, label %171

171:                                              ; preds = %167
  %172 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 48), align 16, !tbaa !12
  %173 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %172) #10
  %174 = icmp eq i32 %173, 0
  br i1 %174, label %150, label %175

175:                                              ; preds = %171
  %176 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 56), align 8, !tbaa !12
  %177 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %176) #10
  %178 = icmp eq i32 %177, 0
  br i1 %178, label %150, label %179

179:                                              ; preds = %175
  %180 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 64), align 16, !tbaa !12
  %181 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %180) #10
  %182 = icmp eq i32 %181, 0
  br i1 %182, label %150, label %183

183:                                              ; preds = %179
  %184 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 72), align 8, !tbaa !12
  %185 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %184) #10
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %150, label %187

187:                                              ; preds = %183
  %188 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 80), align 16, !tbaa !12
  %189 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %188) #10
  %190 = icmp eq i32 %189, 0
  br i1 %190, label %150, label %191

191:                                              ; preds = %187
  %192 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.m_StringTime.amonth, i64 88), align 8, !tbaa !12
  %193 = call i32 @strcasecmp(ptr noundef nonnull %20, ptr noundef %192) #10
  %194 = icmp eq i32 %193, 0
  br i1 %194, label %150, label %.loopexit

.loopexit:                                        ; preds = %191, %150, %._crit_edge
  %.not136 = icmp eq i32 %.0110.lcssa.ph, 0
  br i1 %.not136, label %197, label %195

195:                                              ; preds = %.loopexit
  %196 = call i32 @CHNYear(ptr noundef nonnull %12)
  store i32 %196, ptr %7, align 4, !tbaa !5
  br label %197

197:                                              ; preds = %195, %.loopexit
  %.not137 = icmp eq i32 %.0106.lcssa.ph, 0
  br i1 %.not137, label %200, label %198

198:                                              ; preds = %197
  %199 = call i32 @CHNNum(ptr noundef nonnull %14)
  store i32 %199, ptr %6, align 4, !tbaa !5
  br label %200

200:                                              ; preds = %198, %197
  %.not138 = icmp eq i32 %.0102.lcssa.ph, 0
  br i1 %.not138, label %203, label %201

201:                                              ; preds = %200
  %202 = call i32 @CHNNum(ptr noundef nonnull %15)
  store i32 %202, ptr %5, align 4, !tbaa !5
  br label %203

203:                                              ; preds = %201, %200
  %.not139 = icmp eq i32 %.098.lcssa.ph, 0
  br i1 %.not139, label %206, label %204

204:                                              ; preds = %203
  %205 = call i32 @CHNNum(ptr noundef nonnull %16)
  store i32 %205, ptr %9, align 4, !tbaa !5
  br label %206

206:                                              ; preds = %204, %203
  %.not140 = icmp eq i32 %.094.lcssa.ph, 0
  br i1 %.not140, label %209, label %207

207:                                              ; preds = %206
  %208 = call i32 @CHNNum(ptr noundef nonnull %17)
  store i32 %208, ptr %10, align 4, !tbaa !5
  br label %209

209:                                              ; preds = %207, %206
  %.not141 = icmp eq i32 %.090.lcssa.ph, 0
  br i1 %.not141, label %212, label %210

210:                                              ; preds = %209
  %211 = call i32 @CHNNum(ptr noundef nonnull %18)
  store i32 %211, ptr %11, align 4, !tbaa !5
  br label %212

212:                                              ; preds = %.thread265, %210, %209
  %213 = load i32, ptr %6, align 4
  %214 = icmp slt i32 %213, 0
  %215 = load i32, ptr %5, align 4
  %216 = icmp slt i32 %215, 0
  %or.cond3 = select i1 %214, i1 true, i1 %216
  br i1 %or.cond3, label %247, label %217

217:                                              ; preds = %212
  %218 = load i32, ptr %7, align 4, !tbaa !5
  %219 = icmp slt i32 %218, 1972
  br i1 %219, label %220, label %233

220:                                              ; preds = %217
  %221 = sub nsw i32 1972, %218
  %222 = mul nsw i32 %221, 365
  %223 = lshr i32 %221, 2
  %224 = add nuw nsw i32 %222, %223
  %225 = and i32 %221, 3
  %226 = icmp ne i32 %225, 0
  %227 = icmp ugt i32 %213, 2
  %228 = and i1 %227, %226
  %229 = zext i1 %228 to i32
  %230 = add nuw nsw i32 %224, %229
  %231 = mul i32 %230, 86400
  %232 = zext nneg i32 %231 to i64
  store i32 1972, ptr %7, align 4, !tbaa !5
  br label %233

233:                                              ; preds = %220, %217
  %234 = phi i32 [ 1972, %220 ], [ %218, %217 ]
  %.0 = phi i64 [ %232, %220 ], [ 0, %217 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %23) #9
  %235 = add nsw i32 %234, -1900
  %236 = getelementptr inbounds i8, ptr %23, i64 20
  store i32 %235, ptr %236, align 4, !tbaa !15
  %237 = add nsw i32 %213, -1
  %238 = getelementptr inbounds i8, ptr %23, i64 16
  store i32 %237, ptr %238, align 8, !tbaa !18
  %239 = getelementptr inbounds i8, ptr %23, i64 12
  store i32 %215, ptr %239, align 4, !tbaa !19
  %240 = load i32, ptr %9, align 4, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %23, i64 8
  store i32 %240, ptr %241, align 8, !tbaa !20
  %242 = load i32, ptr %10, align 4, !tbaa !5
  %243 = getelementptr inbounds i8, ptr %23, i64 4
  store i32 %242, ptr %243, align 4, !tbaa !21
  %244 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %244, ptr %23, align 8, !tbaa !22
  %245 = call i64 @mktime(ptr noundef nonnull %23) #9
  %246 = sub nsw i64 %245, %.0
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #9
  br label %247

247:                                              ; preds = %212, %233
  %.087 = phi i64 [ %246, %233 ], [ -1, %212 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #9
  br label %248

248:                                              ; preds = %247, %25
  %.1 = phi i64 [ %26, %25 ], [ %.087, %247 ]
  ret i64 %.1
}

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_sscanf(ptr nocapture noundef readonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #6

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare i32 @strcasecmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nounwind willreturn
declare noundef i64 @mktime(ptr nocapture noundef) local_unnamed_addr #8

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nofree nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nofree nounwind willreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { nounwind willreturn memory(read) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = !{!13, !13, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = distinct !{!14, !11}
!15 = !{!16, !6, i64 20}
!16 = !{!"tm", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !17, i64 40, !13, i64 48}
!17 = !{!"long", !7, i64 0}
!18 = !{!16, !6, i64 16}
!19 = !{!16, !6, i64 12}
!20 = !{!16, !6, i64 8}
!21 = !{!16, !6, i64 4}
!22 = !{!16, !6, i64 0}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass