; 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.9 = external hidden unnamed_addr constant [28 x i8], align 1
@__const.m_TimeString.wday = external hidden unnamed_addr constant [7 x ptr], align 16
@__const.m_TimeString.month = external hidden unnamed_addr constant [12 x ptr], align 16
@__const.m_TimeString.awday = external hidden unnamed_addr constant [7 x ptr], align 16
@__const.m_TimeString.amonth = external hidden unnamed_addr constant [12 x ptr], align 16
@__const.m_TimeString.cwday = external hidden unnamed_addr constant [7 x i32], align 16
@__FUNCTION__.m_TimeString = external hidden unnamed_addr constant [13 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [15 x i8], align 1
@morn_time_string = external dso_local global [128 x i8], align 16

; 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 @localtime(ptr noundef) #3

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

; Function Attrs: nounwind uwtable
define dso_local ptr @m_TimeString(i64 noundef %0, ptr noundef %1) #4 {
  %3 = alloca i64, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i64, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca [7 x ptr], align 16
  %9 = alloca [12 x ptr], align 16
  %10 = alloca [7 x ptr], align 16
  %11 = alloca [12 x ptr], align 16
  %12 = alloca [7 x i32], align 16
  %13 = alloca [16 x i8], align 16
  %14 = alloca [16 x i8], align 16
  %15 = alloca [8 x i8], align 1
  %16 = alloca [16 x i8], align 16
  %17 = alloca [16 x i8], align 16
  %18 = alloca [16 x i8], align 16
  %19 = alloca [256 x i8], align 16
  %20 = alloca [16 x i64], align 16
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  store i64 %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  %25 = load i64, ptr %3, align 8, !tbaa !5
  %26 = icmp eq i64 %25, -1
  br i1 %26, label %27, label %29

27:                                               ; preds = %2
  %28 = call i64 @time(ptr noundef null) #5
  br label %31

29:                                               ; preds = %2
  %30 = load i64, ptr %3, align 8, !tbaa !5
  br label %31

31:                                               ; preds = %29, %27
  %32 = phi i64 [ %28, %27 ], [ %30, %29 ]
  store i64 %32, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  store i32 0, ptr %6, align 4, !tbaa !11
  %33 = load i64, ptr %5, align 8, !tbaa !5
  %34 = icmp slt i64 %33, 0
  br i1 %34, label %35, label %51

35:                                               ; preds = %31
  %36 = load i64, ptr %5, align 8, !tbaa !5
  %37 = sub nsw i64 0, %36
  %38 = sdiv i64 %37, 883612800
  %39 = add nsw i64 %38, 1
  %40 = trunc i64 %39 to i32
  store i32 %40, ptr %6, align 4, !tbaa !11
  %41 = load i32, ptr %6, align 4, !tbaa !11
  %42 = mul nsw i32 %41, 1461
  %43 = mul nsw i32 %42, 7
  %44 = mul nsw i32 %43, 24
  %45 = mul nsw i32 %44, 3600
  %46 = sext i32 %45 to i64
  %47 = load i64, ptr %5, align 8, !tbaa !5
  %48 = add nsw i64 %47, %46
  store i64 %48, ptr %5, align 8, !tbaa !5
  %49 = load i32, ptr %6, align 4, !tbaa !11
  %50 = mul nsw i32 %49, 28
  store i32 %50, ptr %6, align 4, !tbaa !11
  br label %51

51:                                               ; preds = %35, %31
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  %52 = call ptr @localtime(ptr noundef %5) #5
  store ptr %52, ptr %7, align 8, !tbaa !9
  %53 = load ptr, ptr %4, align 8, !tbaa !9
  %54 = icmp eq ptr %53, null
  br i1 %54, label %55, label %56

55:                                               ; preds = %51
  store ptr @.str.9, ptr %4, align 8, !tbaa !9
  br label %56

56:                                               ; preds = %55, %51
  call void @llvm.lifetime.start.p0(i64 56, ptr %8) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %8, ptr align 16 @__const.m_TimeString.wday, i64 56, i1 false)
  call void @llvm.lifetime.start.p0(i64 96, ptr %9) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %9, ptr align 16 @__const.m_TimeString.month, i64 96, i1 false)
  call void @llvm.lifetime.start.p0(i64 56, ptr %10) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %10, ptr align 16 @__const.m_TimeString.awday, i64 56, i1 false)
  call void @llvm.lifetime.start.p0(i64 96, ptr %11) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %11, ptr align 16 @__const.m_TimeString.amonth, i64 96, i1 false)
  call void @llvm.lifetime.start.p0(i64 28, ptr %12) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %12, ptr align 16 @__const.m_TimeString.cwday, i64 28, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 256, ptr %19) #5
  %57 = getelementptr inbounds [256 x i8], ptr %19, i64 0, i64 0
  %58 = load ptr, ptr %4, align 8, !tbaa !9
  %59 = call ptr @strcpy(ptr noundef %57, ptr noundef %58) #5
  call void @llvm.lifetime.start.p0(i64 128, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %60 = getelementptr inbounds [256 x i8], ptr %19, i64 0, i64 0
  store ptr %60, ptr %22, align 8, !tbaa !9
  br label %61

61:                                               ; preds = %588, %56
  %62 = load ptr, ptr %22, align 8, !tbaa !9
  %63 = load i8, ptr %62, align 1, !tbaa !13
  %64 = sext i8 %63 to i32
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %591

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

69:                                               ; preds = %66
  br label %591

70:                                               ; preds = %66
  %71 = load ptr, ptr %22, align 8, !tbaa !9
  %72 = load i8, ptr %71, align 1, !tbaa !13
  %73 = sext i8 %72 to i32
  %74 = icmp eq i32 %73, 47
  br i1 %74, label %75, label %78

75:                                               ; preds = %70
  %76 = load ptr, ptr %22, align 8, !tbaa !9
  %77 = getelementptr inbounds i8, ptr %76, i32 1
  store ptr %77, ptr %22, align 8, !tbaa !9
  br label %588

78:                                               ; preds = %70
  %79 = load ptr, ptr %22, align 8, !tbaa !9
  %80 = load i8, ptr %79, align 1, !tbaa !13
  %81 = sext i8 %80 to i32
  %82 = icmp eq i32 %81, 37
  br i1 %82, label %83, label %587

83:                                               ; preds = %78
  %84 = load ptr, ptr %22, align 8, !tbaa !9
  %85 = getelementptr inbounds i8, ptr %84, i64 1
  store ptr %85, ptr %23, align 8, !tbaa !9
  br label %86

86:                                               ; preds = %582, %83
  %87 = load ptr, ptr %23, align 8, !tbaa !9
  %88 = load i8, ptr %87, align 1, !tbaa !13
  %89 = sext i8 %88 to i32
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %91, label %585

91:                                               ; preds = %86
  %92 = load ptr, ptr %23, align 8, !tbaa !9
  %93 = load i8, ptr %92, align 1, !tbaa !13
  %94 = sext i8 %93 to i32
  %95 = icmp sge i32 %94, 48
  br i1 %95, label %96, label %102

96:                                               ; preds = %91
  %97 = load ptr, ptr %23, align 8, !tbaa !9
  %98 = load i8, ptr %97, align 1, !tbaa !13
  %99 = sext i8 %98 to i32
  %100 = icmp sle i32 %99, 57
  br i1 %100, label %101, label %102

101:                                              ; preds = %96
  br label %582

102:                                              ; preds = %96, %91
  %103 = load ptr, ptr %23, align 8, !tbaa !9
  %104 = load i8, ptr %103, align 1, !tbaa !13
  %105 = sext i8 %104 to i32
  %106 = icmp eq i32 %105, 89
  br i1 %106, label %107, label %120

107:                                              ; preds = %102
  %108 = load ptr, ptr %7, align 8, !tbaa !9
  %109 = getelementptr inbounds %struct.tm, ptr %108, i32 0, i32 5
  %110 = load i32, ptr %109, align 4, !tbaa !14
  %111 = add nsw i32 %110, 1900
  %112 = load i32, ptr %6, align 4, !tbaa !11
  %113 = sub nsw i32 %111, %112
  %114 = sext i32 %113 to i64
  %115 = load i32, ptr %21, align 4, !tbaa !11
  %116 = add nsw i32 %115, 1
  store i32 %116, ptr %21, align 4, !tbaa !11
  %117 = sext i32 %115 to i64
  %118 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %117
  store i64 %114, ptr %118, align 8, !tbaa !5
  %119 = load ptr, ptr %23, align 8, !tbaa !9
  store i8 100, ptr %119, align 1, !tbaa !13
  br label %581

120:                                              ; preds = %102
  %121 = load ptr, ptr %23, align 8, !tbaa !9
  %122 = load i8, ptr %121, align 1, !tbaa !13
  %123 = sext i8 %122 to i32
  %124 = icmp eq i32 %123, 77
  br i1 %124, label %125, label %136

125:                                              ; preds = %120
  %126 = load ptr, ptr %7, align 8, !tbaa !9
  %127 = getelementptr inbounds %struct.tm, ptr %126, i32 0, i32 4
  %128 = load i32, ptr %127, align 8, !tbaa !16
  %129 = add nsw i32 %128, 1
  %130 = sext i32 %129 to i64
  %131 = load i32, ptr %21, align 4, !tbaa !11
  %132 = add nsw i32 %131, 1
  store i32 %132, ptr %21, align 4, !tbaa !11
  %133 = sext i32 %131 to i64
  %134 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %133
  store i64 %130, ptr %134, align 8, !tbaa !5
  %135 = load ptr, ptr %23, align 8, !tbaa !9
  store i8 100, ptr %135, align 1, !tbaa !13
  br label %580

136:                                              ; preds = %120
  %137 = load ptr, ptr %23, align 8, !tbaa !9
  %138 = load i8, ptr %137, align 1, !tbaa !13
  %139 = sext i8 %138 to i32
  %140 = icmp eq i32 %139, 87
  br i1 %140, label %141, label %151

141:                                              ; preds = %136
  %142 = load ptr, ptr %7, align 8, !tbaa !9
  %143 = getelementptr inbounds %struct.tm, ptr %142, i32 0, i32 6
  %144 = load i32, ptr %143, align 8, !tbaa !17
  %145 = sext i32 %144 to i64
  %146 = load i32, ptr %21, align 4, !tbaa !11
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %21, align 4, !tbaa !11
  %148 = sext i32 %146 to i64
  %149 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %148
  store i64 %145, ptr %149, align 8, !tbaa !5
  %150 = load ptr, ptr %23, align 8, !tbaa !9
  store i8 100, ptr %150, align 1, !tbaa !13
  br label %579

151:                                              ; preds = %136
  %152 = load ptr, ptr %23, align 8, !tbaa !9
  %153 = load i8, ptr %152, align 1, !tbaa !13
  %154 = sext i8 %153 to i32
  %155 = icmp eq i32 %154, 68
  br i1 %155, label %156, label %166

156:                                              ; preds = %151
  %157 = load ptr, ptr %7, align 8, !tbaa !9
  %158 = getelementptr inbounds %struct.tm, ptr %157, i32 0, i32 3
  %159 = load i32, ptr %158, align 4, !tbaa !18
  %160 = sext i32 %159 to i64
  %161 = load i32, ptr %21, align 4, !tbaa !11
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %21, align 4, !tbaa !11
  %163 = sext i32 %161 to i64
  %164 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %163
  store i64 %160, ptr %164, align 8, !tbaa !5
  %165 = load ptr, ptr %23, align 8, !tbaa !9
  store i8 100, ptr %165, align 1, !tbaa !13
  br label %578

166:                                              ; preds = %151
  %167 = load ptr, ptr %23, align 8, !tbaa !9
  %168 = load i8, ptr %167, align 1, !tbaa !13
  %169 = sext i8 %168 to i32
  %170 = icmp eq i32 %169, 72
  br i1 %170, label %171, label %181

171:                                              ; preds = %166
  %172 = load ptr, ptr %7, align 8, !tbaa !9
  %173 = getelementptr inbounds %struct.tm, ptr %172, i32 0, i32 2
  %174 = load i32, ptr %173, align 8, !tbaa !19
  %175 = sext i32 %174 to i64
  %176 = load i32, ptr %21, align 4, !tbaa !11
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr %21, align 4, !tbaa !11
  %178 = sext i32 %176 to i64
  %179 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %178
  store i64 %175, ptr %179, align 8, !tbaa !5
  %180 = load ptr, ptr %23, align 8, !tbaa !9
  store i8 100, ptr %180, align 1, !tbaa !13
  br label %577

181:                                              ; preds = %166
  %182 = load ptr, ptr %23, align 8, !tbaa !9
  %183 = load i8, ptr %182, align 1, !tbaa !13
  %184 = sext i8 %183 to i32
  %185 = icmp eq i32 %184, 109
  br i1 %185, label %186, label %196

186:                                              ; preds = %181
  %187 = load ptr, ptr %7, align 8, !tbaa !9
  %188 = getelementptr inbounds %struct.tm, ptr %187, i32 0, i32 1
  %189 = load i32, ptr %188, align 4, !tbaa !20
  %190 = sext i32 %189 to i64
  %191 = load i32, ptr %21, align 4, !tbaa !11
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %21, align 4, !tbaa !11
  %193 = sext i32 %191 to i64
  %194 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %193
  store i64 %190, ptr %194, align 8, !tbaa !5
  %195 = load ptr, ptr %23, align 8, !tbaa !9
  store i8 100, ptr %195, align 1, !tbaa !13
  br label %576

196:                                              ; preds = %181
  %197 = load ptr, ptr %23, align 8, !tbaa !9
  %198 = load i8, ptr %197, align 1, !tbaa !13
  %199 = sext i8 %198 to i32
  %200 = icmp eq i32 %199, 83
  br i1 %200, label %201, label %211

201:                                              ; preds = %196
  %202 = load ptr, ptr %7, align 8, !tbaa !9
  %203 = getelementptr inbounds %struct.tm, ptr %202, i32 0, i32 0
  %204 = load i32, ptr %203, align 8, !tbaa !21
  %205 = sext i32 %204 to i64
  %206 = load i32, ptr %21, align 4, !tbaa !11
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %21, align 4, !tbaa !11
  %208 = sext i32 %206 to i64
  %209 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %208
  store i64 %205, ptr %209, align 8, !tbaa !5
  %210 = load ptr, ptr %23, align 8, !tbaa !9
  store i8 100, ptr %210, align 1, !tbaa !13
  br label %575

211:                                              ; preds = %196
  %212 = load ptr, ptr %23, align 8, !tbaa !9
  %213 = getelementptr inbounds i8, ptr %212, i64 0
  %214 = load i8, ptr %213, align 1, !tbaa !13
  %215 = sext i8 %214 to i32
  %216 = icmp eq i32 %215, 115
  br i1 %216, label %217, label %241

217:                                              ; preds = %211
  %218 = load ptr, ptr %23, align 8, !tbaa !9
  %219 = getelementptr inbounds i8, ptr %218, i64 1
  %220 = load i8, ptr %219, align 1, !tbaa !13
  %221 = sext i8 %220 to i32
  %222 = icmp eq i32 %221, 77
  br i1 %222, label %223, label %241

223:                                              ; preds = %217
  %224 = load ptr, ptr %7, align 8, !tbaa !9
  %225 = getelementptr inbounds %struct.tm, ptr %224, i32 0, i32 4
  %226 = load i32, ptr %225, align 8, !tbaa !16
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds [12 x ptr], ptr %9, i64 0, i64 %227
  %229 = load ptr, ptr %228, align 8, !tbaa !9
  %230 = ptrtoint ptr %229 to i64
  %231 = load i32, ptr %21, align 4, !tbaa !11
  %232 = add nsw i32 %231, 1
  store i32 %232, ptr %21, align 4, !tbaa !11
  %233 = sext i32 %231 to i64
  %234 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %233
  store i64 %230, ptr %234, align 8, !tbaa !5
  %235 = load ptr, ptr %23, align 8, !tbaa !9
  %236 = getelementptr inbounds i8, ptr %235, i64 0
  store i8 104, ptr %236, align 1, !tbaa !13
  %237 = load ptr, ptr %23, align 8, !tbaa !9
  %238 = getelementptr inbounds i8, ptr %237, i64 1
  store i8 115, ptr %238, align 1, !tbaa !13
  %239 = load ptr, ptr %23, align 8, !tbaa !9
  %240 = getelementptr inbounds i8, ptr %239, i32 1
  store ptr %240, ptr %23, align 8, !tbaa !9
  br label %574

241:                                              ; preds = %217, %211
  %242 = load ptr, ptr %23, align 8, !tbaa !9
  %243 = getelementptr inbounds i8, ptr %242, i64 0
  %244 = load i8, ptr %243, align 1, !tbaa !13
  %245 = sext i8 %244 to i32
  %246 = icmp eq i32 %245, 97
  br i1 %246, label %247, label %271

247:                                              ; preds = %241
  %248 = load ptr, ptr %23, align 8, !tbaa !9
  %249 = getelementptr inbounds i8, ptr %248, i64 1
  %250 = load i8, ptr %249, align 1, !tbaa !13
  %251 = sext i8 %250 to i32
  %252 = icmp eq i32 %251, 77
  br i1 %252, label %253, label %271

253:                                              ; preds = %247
  %254 = load ptr, ptr %7, align 8, !tbaa !9
  %255 = getelementptr inbounds %struct.tm, ptr %254, i32 0, i32 4
  %256 = load i32, ptr %255, align 8, !tbaa !16
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds [12 x ptr], ptr %11, i64 0, i64 %257
  %259 = load ptr, ptr %258, align 8, !tbaa !9
  %260 = ptrtoint ptr %259 to i64
  %261 = load i32, ptr %21, align 4, !tbaa !11
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %21, align 4, !tbaa !11
  %263 = sext i32 %261 to i64
  %264 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %263
  store i64 %260, ptr %264, align 8, !tbaa !5
  %265 = load ptr, ptr %23, align 8, !tbaa !9
  %266 = getelementptr inbounds i8, ptr %265, i64 0
  store i8 104, ptr %266, align 1, !tbaa !13
  %267 = load ptr, ptr %23, align 8, !tbaa !9
  %268 = getelementptr inbounds i8, ptr %267, i64 1
  store i8 115, ptr %268, align 1, !tbaa !13
  %269 = load ptr, ptr %23, align 8, !tbaa !9
  %270 = getelementptr inbounds i8, ptr %269, i32 1
  store ptr %270, ptr %23, align 8, !tbaa !9
  br label %573

271:                                              ; preds = %247, %241
  %272 = load ptr, ptr %23, align 8, !tbaa !9
  %273 = getelementptr inbounds i8, ptr %272, i64 0
  %274 = load i8, ptr %273, align 1, !tbaa !13
  %275 = sext i8 %274 to i32
  %276 = icmp eq i32 %275, 115
  br i1 %276, label %277, label %301

277:                                              ; preds = %271
  %278 = load ptr, ptr %23, align 8, !tbaa !9
  %279 = getelementptr inbounds i8, ptr %278, i64 1
  %280 = load i8, ptr %279, align 1, !tbaa !13
  %281 = sext i8 %280 to i32
  %282 = icmp eq i32 %281, 87
  br i1 %282, label %283, label %301

283:                                              ; preds = %277
  %284 = load ptr, ptr %7, align 8, !tbaa !9
  %285 = getelementptr inbounds %struct.tm, ptr %284, i32 0, i32 6
  %286 = load i32, ptr %285, align 8, !tbaa !17
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds [7 x ptr], ptr %8, i64 0, i64 %287
  %289 = load ptr, ptr %288, align 8, !tbaa !9
  %290 = ptrtoint ptr %289 to i64
  %291 = load i32, ptr %21, align 4, !tbaa !11
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr %21, align 4, !tbaa !11
  %293 = sext i32 %291 to i64
  %294 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %293
  store i64 %290, ptr %294, align 8, !tbaa !5
  %295 = load ptr, ptr %23, align 8, !tbaa !9
  %296 = getelementptr inbounds i8, ptr %295, i64 0
  store i8 104, ptr %296, align 1, !tbaa !13
  %297 = load ptr, ptr %23, align 8, !tbaa !9
  %298 = getelementptr inbounds i8, ptr %297, i64 1
  store i8 115, ptr %298, align 1, !tbaa !13
  %299 = load ptr, ptr %23, align 8, !tbaa !9
  %300 = getelementptr inbounds i8, ptr %299, i32 1
  store ptr %300, ptr %23, align 8, !tbaa !9
  br label %572

301:                                              ; preds = %277, %271
  %302 = load ptr, ptr %23, align 8, !tbaa !9
  %303 = getelementptr inbounds i8, ptr %302, i64 0
  %304 = load i8, ptr %303, align 1, !tbaa !13
  %305 = sext i8 %304 to i32
  %306 = icmp eq i32 %305, 97
  br i1 %306, label %307, label %331

307:                                              ; preds = %301
  %308 = load ptr, ptr %23, align 8, !tbaa !9
  %309 = getelementptr inbounds i8, ptr %308, i64 1
  %310 = load i8, ptr %309, align 1, !tbaa !13
  %311 = sext i8 %310 to i32
  %312 = icmp eq i32 %311, 87
  br i1 %312, label %313, label %331

313:                                              ; preds = %307
  %314 = load ptr, ptr %7, align 8, !tbaa !9
  %315 = getelementptr inbounds %struct.tm, ptr %314, i32 0, i32 6
  %316 = load i32, ptr %315, align 8, !tbaa !17
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds [7 x ptr], ptr %10, i64 0, i64 %317
  %319 = load ptr, ptr %318, align 8, !tbaa !9
  %320 = ptrtoint ptr %319 to i64
  %321 = load i32, ptr %21, align 4, !tbaa !11
  %322 = add nsw i32 %321, 1
  store i32 %322, ptr %21, align 4, !tbaa !11
  %323 = sext i32 %321 to i64
  %324 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %323
  store i64 %320, ptr %324, align 8, !tbaa !5
  %325 = load ptr, ptr %23, align 8, !tbaa !9
  %326 = getelementptr inbounds i8, ptr %325, i64 0
  store i8 104, ptr %326, align 1, !tbaa !13
  %327 = load ptr, ptr %23, align 8, !tbaa !9
  %328 = getelementptr inbounds i8, ptr %327, i64 1
  store i8 115, ptr %328, align 1, !tbaa !13
  %329 = load ptr, ptr %23, align 8, !tbaa !9
  %330 = getelementptr inbounds i8, ptr %329, i32 1
  store ptr %330, ptr %23, align 8, !tbaa !9
  br label %571

331:                                              ; preds = %307, %301
  %332 = load ptr, ptr %23, align 8, !tbaa !9
  %333 = getelementptr inbounds i8, ptr %332, i64 0
  %334 = load i8, ptr %333, align 1, !tbaa !13
  %335 = sext i8 %334 to i32
  %336 = icmp eq i32 %335, 67
  br i1 %336, label %337, label %360

337:                                              ; preds = %331
  %338 = load ptr, ptr %23, align 8, !tbaa !9
  %339 = getelementptr inbounds i8, ptr %338, i64 1
  %340 = load i8, ptr %339, align 1, !tbaa !13
  %341 = sext i8 %340 to i32
  %342 = icmp eq i32 %341, 87
  br i1 %342, label %343, label %360

343:                                              ; preds = %337
  %344 = load ptr, ptr %7, align 8, !tbaa !9
  %345 = getelementptr inbounds %struct.tm, ptr %344, i32 0, i32 6
  %346 = load i32, ptr %345, align 8, !tbaa !17
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [7 x i32], ptr %12, i64 0, i64 %347
  %349 = ptrtoint ptr %348 to i64
  %350 = load i32, ptr %21, align 4, !tbaa !11
  %351 = add nsw i32 %350, 1
  store i32 %351, ptr %21, align 4, !tbaa !11
  %352 = sext i32 %350 to i64
  %353 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %352
  store i64 %349, ptr %353, align 8, !tbaa !5
  %354 = load ptr, ptr %23, align 8, !tbaa !9
  %355 = getelementptr inbounds i8, ptr %354, i64 0
  store i8 104, ptr %355, align 1, !tbaa !13
  %356 = load ptr, ptr %23, align 8, !tbaa !9
  %357 = getelementptr inbounds i8, ptr %356, i64 1
  store i8 115, ptr %357, align 1, !tbaa !13
  %358 = load ptr, ptr %23, align 8, !tbaa !9
  %359 = getelementptr inbounds i8, ptr %358, i32 1
  store ptr %359, ptr %23, align 8, !tbaa !9
  br label %570

360:                                              ; preds = %337, %331
  %361 = load ptr, ptr %23, align 8, !tbaa !9
  %362 = getelementptr inbounds i8, ptr %361, i64 0
  %363 = load i8, ptr %362, align 1, !tbaa !13
  %364 = sext i8 %363 to i32
  %365 = icmp eq i32 %364, 67
  br i1 %365, label %366, label %394

366:                                              ; preds = %360
  %367 = load ptr, ptr %23, align 8, !tbaa !9
  %368 = getelementptr inbounds i8, ptr %367, i64 1
  %369 = load i8, ptr %368, align 1, !tbaa !13
  %370 = sext i8 %369 to i32
  %371 = icmp eq i32 %370, 89
  br i1 %371, label %372, label %394

372:                                              ; preds = %366
  %373 = getelementptr inbounds [16 x i8], ptr %13, i64 0, i64 0
  %374 = load ptr, ptr %7, align 8, !tbaa !9
  %375 = getelementptr inbounds %struct.tm, ptr %374, i32 0, i32 5
  %376 = load i32, ptr %375, align 4, !tbaa !14
  %377 = add nsw i32 %376, 1900
  %378 = load i32, ptr %6, align 4, !tbaa !11
  %379 = sub nsw i32 %377, %378
  %380 = call ptr @CHNYearString(i32 noundef %379)
  %381 = call ptr @strcpy(ptr noundef %373, ptr noundef %380) #5
  %382 = getelementptr inbounds [16 x i8], ptr %13, i64 0, i64 0
  %383 = ptrtoint ptr %382 to i64
  %384 = load i32, ptr %21, align 4, !tbaa !11
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr %21, align 4, !tbaa !11
  %386 = sext i32 %384 to i64
  %387 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %386
  store i64 %383, ptr %387, align 8, !tbaa !5
  %388 = load ptr, ptr %23, align 8, !tbaa !9
  %389 = getelementptr inbounds i8, ptr %388, i64 0
  store i8 104, ptr %389, align 1, !tbaa !13
  %390 = load ptr, ptr %23, align 8, !tbaa !9
  %391 = getelementptr inbounds i8, ptr %390, i64 1
  store i8 115, ptr %391, align 1, !tbaa !13
  %392 = load ptr, ptr %23, align 8, !tbaa !9
  %393 = getelementptr inbounds i8, ptr %392, i32 1
  store ptr %393, ptr %23, align 8, !tbaa !9
  br label %569

394:                                              ; preds = %366, %360
  %395 = load ptr, ptr %23, align 8, !tbaa !9
  %396 = getelementptr inbounds i8, ptr %395, i64 0
  %397 = load i8, ptr %396, align 1, !tbaa !13
  %398 = sext i8 %397 to i32
  %399 = icmp eq i32 %398, 67
  br i1 %399, label %400, label %427

400:                                              ; preds = %394
  %401 = load ptr, ptr %23, align 8, !tbaa !9
  %402 = getelementptr inbounds i8, ptr %401, i64 1
  %403 = load i8, ptr %402, align 1, !tbaa !13
  %404 = sext i8 %403 to i32
  %405 = icmp eq i32 %404, 77
  br i1 %405, label %406, label %427

406:                                              ; preds = %400
  %407 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  %408 = load ptr, ptr %7, align 8, !tbaa !9
  %409 = getelementptr inbounds %struct.tm, ptr %408, i32 0, i32 4
  %410 = load i32, ptr %409, align 8, !tbaa !16
  %411 = add nsw i32 %410, 1
  %412 = sitofp i32 %411 to double
  %413 = call ptr @mShu(double noundef %412)
  %414 = call ptr @strcpy(ptr noundef %407, ptr noundef %413) #5
  %415 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
  %416 = ptrtoint ptr %415 to i64
  %417 = load i32, ptr %21, align 4, !tbaa !11
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr %21, align 4, !tbaa !11
  %419 = sext i32 %417 to i64
  %420 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %419
  store i64 %416, ptr %420, align 8, !tbaa !5
  %421 = load ptr, ptr %23, align 8, !tbaa !9
  %422 = getelementptr inbounds i8, ptr %421, i64 0
  store i8 104, ptr %422, align 1, !tbaa !13
  %423 = load ptr, ptr %23, align 8, !tbaa !9
  %424 = getelementptr inbounds i8, ptr %423, i64 1
  store i8 115, ptr %424, align 1, !tbaa !13
  %425 = load ptr, ptr %23, align 8, !tbaa !9
  %426 = getelementptr inbounds i8, ptr %425, i32 1
  store ptr %426, ptr %23, align 8, !tbaa !9
  br label %568

427:                                              ; preds = %400, %394
  %428 = load ptr, ptr %23, align 8, !tbaa !9
  %429 = getelementptr inbounds i8, ptr %428, i64 0
  %430 = load i8, ptr %429, align 1, !tbaa !13
  %431 = sext i8 %430 to i32
  %432 = icmp eq i32 %431, 67
  br i1 %432, label %433, label %459

433:                                              ; preds = %427
  %434 = load ptr, ptr %23, align 8, !tbaa !9
  %435 = getelementptr inbounds i8, ptr %434, i64 1
  %436 = load i8, ptr %435, align 1, !tbaa !13
  %437 = sext i8 %436 to i32
  %438 = icmp eq i32 %437, 68
  br i1 %438, label %439, label %459

439:                                              ; preds = %433
  %440 = getelementptr inbounds [8 x i8], ptr %15, i64 0, i64 0
  %441 = load ptr, ptr %7, align 8, !tbaa !9
  %442 = getelementptr inbounds %struct.tm, ptr %441, i32 0, i32 3
  %443 = load i32, ptr %442, align 4, !tbaa !18
  %444 = sitofp i32 %443 to double
  %445 = call ptr @mShu(double noundef %444)
  %446 = call ptr @strcpy(ptr noundef %440, ptr noundef %445) #5
  %447 = getelementptr inbounds [8 x i8], ptr %15, i64 0, i64 0
  %448 = ptrtoint ptr %447 to i64
  %449 = load i32, ptr %21, align 4, !tbaa !11
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr %21, align 4, !tbaa !11
  %451 = sext i32 %449 to i64
  %452 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %451
  store i64 %448, ptr %452, align 8, !tbaa !5
  %453 = load ptr, ptr %23, align 8, !tbaa !9
  %454 = getelementptr inbounds i8, ptr %453, i64 0
  store i8 104, ptr %454, align 1, !tbaa !13
  %455 = load ptr, ptr %23, align 8, !tbaa !9
  %456 = getelementptr inbounds i8, ptr %455, i64 1
  store i8 115, ptr %456, align 1, !tbaa !13
  %457 = load ptr, ptr %23, align 8, !tbaa !9
  %458 = getelementptr inbounds i8, ptr %457, i32 1
  store ptr %458, ptr %23, align 8, !tbaa !9
  br label %567

459:                                              ; preds = %433, %427
  %460 = load ptr, ptr %23, align 8, !tbaa !9
  %461 = getelementptr inbounds i8, ptr %460, i64 0
  %462 = load i8, ptr %461, align 1, !tbaa !13
  %463 = sext i8 %462 to i32
  %464 = icmp eq i32 %463, 67
  br i1 %464, label %465, label %491

465:                                              ; preds = %459
  %466 = load ptr, ptr %23, align 8, !tbaa !9
  %467 = getelementptr inbounds i8, ptr %466, i64 1
  %468 = load i8, ptr %467, align 1, !tbaa !13
  %469 = sext i8 %468 to i32
  %470 = icmp eq i32 %469, 72
  br i1 %470, label %471, label %491

471:                                              ; preds = %465
  %472 = getelementptr inbounds [16 x i8], ptr %16, i64 0, i64 0
  %473 = load ptr, ptr %7, align 8, !tbaa !9
  %474 = getelementptr inbounds %struct.tm, ptr %473, i32 0, i32 2
  %475 = load i32, ptr %474, align 8, !tbaa !19
  %476 = sitofp i32 %475 to double
  %477 = call ptr @mShu(double noundef %476)
  %478 = call ptr @strcpy(ptr noundef %472, ptr noundef %477) #5
  %479 = getelementptr inbounds [16 x i8], ptr %16, i64 0, i64 0
  %480 = ptrtoint ptr %479 to i64
  %481 = load i32, ptr %21, align 4, !tbaa !11
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %21, align 4, !tbaa !11
  %483 = sext i32 %481 to i64
  %484 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %483
  store i64 %480, ptr %484, align 8, !tbaa !5
  %485 = load ptr, ptr %23, align 8, !tbaa !9
  %486 = getelementptr inbounds i8, ptr %485, i64 0
  store i8 104, ptr %486, align 1, !tbaa !13
  %487 = load ptr, ptr %23, align 8, !tbaa !9
  %488 = getelementptr inbounds i8, ptr %487, i64 1
  store i8 115, ptr %488, align 1, !tbaa !13
  %489 = load ptr, ptr %23, align 8, !tbaa !9
  %490 = getelementptr inbounds i8, ptr %489, i32 1
  store ptr %490, ptr %23, align 8, !tbaa !9
  br label %566

491:                                              ; preds = %465, %459
  %492 = load ptr, ptr %23, align 8, !tbaa !9
  %493 = getelementptr inbounds i8, ptr %492, i64 0
  %494 = load i8, ptr %493, align 1, !tbaa !13
  %495 = sext i8 %494 to i32
  %496 = icmp eq i32 %495, 67
  br i1 %496, label %497, label %523

497:                                              ; preds = %491
  %498 = load ptr, ptr %23, align 8, !tbaa !9
  %499 = getelementptr inbounds i8, ptr %498, i64 1
  %500 = load i8, ptr %499, align 1, !tbaa !13
  %501 = sext i8 %500 to i32
  %502 = icmp eq i32 %501, 109
  br i1 %502, label %503, label %523

503:                                              ; preds = %497
  %504 = getelementptr inbounds [16 x i8], ptr %17, i64 0, i64 0
  %505 = load ptr, ptr %7, align 8, !tbaa !9
  %506 = getelementptr inbounds %struct.tm, ptr %505, i32 0, i32 1
  %507 = load i32, ptr %506, align 4, !tbaa !20
  %508 = sitofp i32 %507 to double
  %509 = call ptr @mShu(double noundef %508)
  %510 = call ptr @strcpy(ptr noundef %504, ptr noundef %509) #5
  %511 = getelementptr inbounds [16 x i8], ptr %17, i64 0, i64 0
  %512 = ptrtoint ptr %511 to i64
  %513 = load i32, ptr %21, align 4, !tbaa !11
  %514 = add nsw i32 %513, 1
  store i32 %514, ptr %21, align 4, !tbaa !11
  %515 = sext i32 %513 to i64
  %516 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %515
  store i64 %512, ptr %516, align 8, !tbaa !5
  %517 = load ptr, ptr %23, align 8, !tbaa !9
  %518 = getelementptr inbounds i8, ptr %517, i64 0
  store i8 104, ptr %518, align 1, !tbaa !13
  %519 = load ptr, ptr %23, align 8, !tbaa !9
  %520 = getelementptr inbounds i8, ptr %519, i64 1
  store i8 115, ptr %520, align 1, !tbaa !13
  %521 = load ptr, ptr %23, align 8, !tbaa !9
  %522 = getelementptr inbounds i8, ptr %521, i32 1
  store ptr %522, ptr %23, align 8, !tbaa !9
  br label %565

523:                                              ; preds = %497, %491
  %524 = load ptr, ptr %23, align 8, !tbaa !9
  %525 = getelementptr inbounds i8, ptr %524, i64 0
  %526 = load i8, ptr %525, align 1, !tbaa !13
  %527 = sext i8 %526 to i32
  %528 = icmp eq i32 %527, 67
  br i1 %528, label %529, label %555

529:                                              ; preds = %523
  %530 = load ptr, ptr %23, align 8, !tbaa !9
  %531 = getelementptr inbounds i8, ptr %530, i64 1
  %532 = load i8, ptr %531, align 1, !tbaa !13
  %533 = sext i8 %532 to i32
  %534 = icmp eq i32 %533, 83
  br i1 %534, label %535, label %555

535:                                              ; preds = %529
  %536 = getelementptr inbounds [16 x i8], ptr %18, i64 0, i64 0
  %537 = load ptr, ptr %7, align 8, !tbaa !9
  %538 = getelementptr inbounds %struct.tm, ptr %537, i32 0, i32 0
  %539 = load i32, ptr %538, align 8, !tbaa !21
  %540 = sitofp i32 %539 to double
  %541 = call ptr @mShu(double noundef %540)
  %542 = call ptr @strcpy(ptr noundef %536, ptr noundef %541) #5
  %543 = getelementptr inbounds [16 x i8], ptr %18, i64 0, i64 0
  %544 = ptrtoint ptr %543 to i64
  %545 = load i32, ptr %21, align 4, !tbaa !11
  %546 = add nsw i32 %545, 1
  store i32 %546, ptr %21, align 4, !tbaa !11
  %547 = sext i32 %545 to i64
  %548 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 %547
  store i64 %544, ptr %548, align 8, !tbaa !5
  %549 = load ptr, ptr %23, align 8, !tbaa !9
  %550 = getelementptr inbounds i8, ptr %549, i64 0
  store i8 104, ptr %550, align 1, !tbaa !13
  %551 = load ptr, ptr %23, align 8, !tbaa !9
  %552 = getelementptr inbounds i8, ptr %551, i64 1
  store i8 115, ptr %552, align 1, !tbaa !13
  %553 = load ptr, ptr %23, align 8, !tbaa !9
  %554 = getelementptr inbounds i8, ptr %553, i32 1
  store ptr %554, ptr %23, align 8, !tbaa !9
  br label %564

555:                                              ; preds = %529, %523
  br label %556

556:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 1, ptr %24, align 4, !tbaa !11
  %557 = load i32, ptr %24, align 4, !tbaa !11
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %559, label %561

559:                                              ; preds = %556
  %560 = load i32, ptr %24, align 4, !tbaa !11
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %560, i32 noundef -1, ptr noundef @.str, i32 noundef 420, ptr noundef @__FUNCTION__.m_TimeString, ptr noundef @.str.47)
  br label %561

561:                                              ; preds = %559, %556
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  br label %562

562:                                              ; preds = %561
  br label %563

563:                                              ; preds = %562
  br label %564

564:                                              ; preds = %563, %535
  br label %565

565:                                              ; preds = %564, %503
  br label %566

566:                                              ; preds = %565, %471
  br label %567

567:                                              ; preds = %566, %439
  br label %568

568:                                              ; preds = %567, %406
  br label %569

569:                                              ; preds = %568, %372
  br label %570

570:                                              ; preds = %569, %343
  br label %571

571:                                              ; preds = %570, %313
  br label %572

572:                                              ; preds = %571, %283
  br label %573

573:                                              ; preds = %572, %253
  br label %574

574:                                              ; preds = %573, %223
  br label %575

575:                                              ; preds = %574, %201
  br label %576

576:                                              ; preds = %575, %186
  br label %577

577:                                              ; preds = %576, %171
  br label %578

578:                                              ; preds = %577, %156
  br label %579

579:                                              ; preds = %578, %141
  br label %580

580:                                              ; preds = %579, %125
  br label %581

581:                                              ; preds = %580, %107
  br label %585

582:                                              ; preds = %101
  %583 = load ptr, ptr %23, align 8, !tbaa !9
  %584 = getelementptr inbounds i8, ptr %583, i32 1
  store ptr %584, ptr %23, align 8, !tbaa !9
  br label %86, !llvm.loop !22

585:                                              ; preds = %581, %86
  %586 = load ptr, ptr %23, align 8, !tbaa !9
  store ptr %586, ptr %22, align 8, !tbaa !9
  br label %587

587:                                              ; preds = %585, %78
  br label %588

588:                                              ; preds = %587, %75
  %589 = load ptr, ptr %22, align 8, !tbaa !9
  %590 = getelementptr inbounds i8, ptr %589, i32 1
  store ptr %590, ptr %22, align 8, !tbaa !9
  br label %61, !llvm.loop !24

591:                                              ; preds = %69, %61
  %592 = getelementptr inbounds [256 x i8], ptr %19, i64 0, i64 0
  %593 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 0
  %594 = load i64, ptr %593, align 16, !tbaa !5
  %595 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 1
  %596 = load i64, ptr %595, align 8, !tbaa !5
  %597 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 2
  %598 = load i64, ptr %597, align 16, !tbaa !5
  %599 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 3
  %600 = load i64, ptr %599, align 8, !tbaa !5
  %601 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 4
  %602 = load i64, ptr %601, align 16, !tbaa !5
  %603 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 5
  %604 = load i64, ptr %603, align 8, !tbaa !5
  %605 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 6
  %606 = load i64, ptr %605, align 16, !tbaa !5
  %607 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 7
  %608 = load i64, ptr %607, align 8, !tbaa !5
  %609 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 8
  %610 = load i64, ptr %609, align 16, !tbaa !5
  %611 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 9
  %612 = load i64, ptr %611, align 8, !tbaa !5
  %613 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 10
  %614 = load i64, ptr %613, align 16, !tbaa !5
  %615 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 11
  %616 = load i64, ptr %615, align 8, !tbaa !5
  %617 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 12
  %618 = load i64, ptr %617, align 16, !tbaa !5
  %619 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 13
  %620 = load i64, ptr %619, align 8, !tbaa !5
  %621 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 14
  %622 = load i64, ptr %621, align 16, !tbaa !5
  %623 = getelementptr inbounds [16 x i64], ptr %20, i64 0, i64 15
  %624 = load i64, ptr %623, align 8, !tbaa !5
  %625 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef @morn_time_string, ptr noundef %592, i64 noundef %594, i64 noundef %596, i64 noundef %598, i64 noundef %600, i64 noundef %602, i64 noundef %604, i64 noundef %606, i64 noundef %608, i64 noundef %610, i64 noundef %612, i64 noundef %614, i64 noundef %616, i64 noundef %618, i64 noundef %620, i64 noundef %622, i64 noundef %624) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 256, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 28, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 96, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 96, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  ret ptr @morn_time_string
}

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

declare ptr @mShu(double noundef) #1

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, 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 = { nounwind }

!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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !12, i64 20}
!15 = !{!"tm", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !6, i64 40, !10, i64 48}
!16 = !{!15, !12, i64 16}
!17 = !{!15, !12, i64 24}
!18 = !{!15, !12, i64 12}
!19 = !{!15, !12, i64 8}
!20 = !{!15, !12, i64 4}
!21 = !{!15, !12, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = distinct !{!24, !23}


; 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"

@.str = external hidden unnamed_addr constant [76 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1
@__const.m_TimeString.wday = external hidden unnamed_addr constant [7 x ptr], align 16
@__const.m_TimeString.month = external hidden unnamed_addr constant [12 x ptr], align 16
@__const.m_TimeString.awday = external hidden unnamed_addr constant [7 x ptr], align 16
@__const.m_TimeString.amonth = external hidden unnamed_addr constant [12 x ptr], align 16
@__const.m_TimeString.cwday = external hidden unnamed_addr constant [7 x i32], align 16
@__FUNCTION__.m_TimeString = external hidden unnamed_addr constant [13 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [15 x i8], align 1
@morn_time_string = external dso_local global [128 x i8], align 16

; 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: mustprogress 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) local_unnamed_addr #3

; Function Attrs: nounwind
declare ptr @localtime(ptr noundef) local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
define dso_local noundef nonnull ptr @m_TimeString(i64 noundef %0, ptr noundef readonly %1) local_unnamed_addr #4 {
  %3 = alloca i64, align 8
  %4 = alloca [7 x i32], align 16
  %5 = alloca [16 x i8], align 16
  %6 = alloca [16 x i8], align 16
  %7 = alloca [8 x i8], align 1
  %8 = alloca [16 x i8], align 16
  %9 = alloca [16 x i8], align 16
  %10 = alloca [16 x i8], align 16
  %11 = alloca [256 x i8], align 16
  %12 = alloca [16 x i64], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  %13 = icmp eq i64 %0, -1
  br i1 %13, label %14, label %16

14:                                               ; preds = %2
  %15 = tail call i64 @time(ptr noundef null) #8
  br label %16

16:                                               ; preds = %2, %14
  %17 = phi i64 [ %15, %14 ], [ %0, %2 ]
  store i64 %17, ptr %3, align 8, !tbaa !5
  %18 = icmp slt i64 %17, 0
  br i1 %18, label %19, label %.lr.ph

19:                                               ; preds = %16
  %20 = sub nsw i64 0, %17
  %21 = udiv i64 %20, 883612800
  %22 = trunc i64 %21 to i32
  %23 = add i32 %22, 1
  %24 = mul i32 %23, 883612800
  %25 = sext i32 %24 to i64
  %26 = add nsw i64 %17, %25
  store i64 %26, ptr %3, align 8, !tbaa !5
  %.neg = mul i32 %23, -28
  %27 = add i32 %.neg, 1900
  br label %.lr.ph

.lr.ph:                                           ; preds = %19, %16
  %.0131.neg158 = phi i32 [ %27, %19 ], [ 1900, %16 ]
  %28 = call ptr @localtime(ptr noundef nonnull %3) #8
  %29 = icmp eq ptr %1, null
  %spec.store.select = select i1 %29, ptr @.str.9, ptr %1
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %4) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(28) %4, ptr noundef nonnull align 16 dereferenceable(28) @__const.m_TimeString.cwday, i64 28, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %11) #8
  %30 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %11, ptr noundef nonnull dereferenceable(1) %spec.store.select) #8
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %12) #8
  %31 = load i8, ptr %11, align 16, !tbaa !9
  %32 = icmp ne i8 %31, 0
  call void @llvm.assume(i1 %32)
  %33 = ptrtoint ptr %10 to i64
  %34 = getelementptr inbounds i8, ptr %28, i64 4
  %35 = ptrtoint ptr %9 to i64
  %36 = getelementptr inbounds i8, ptr %28, i64 8
  %37 = ptrtoint ptr %8 to i64
  %38 = getelementptr inbounds i8, ptr %28, i64 12
  %39 = ptrtoint ptr %7 to i64
  %40 = getelementptr inbounds i8, ptr %28, i64 16
  %41 = ptrtoint ptr %6 to i64
  %42 = getelementptr inbounds i8, ptr %28, i64 20
  %43 = ptrtoint ptr %5 to i64
  %44 = getelementptr inbounds i8, ptr %28, i64 24
  br label %45

45:                                               ; preds = %.lr.ph, %.loopexit
  %46 = phi i8 [ %31, %.lr.ph ], [ %200, %.loopexit ]
  %.0127157 = phi ptr [ %11, %.lr.ph ], [ %199, %.loopexit ]
  %.0129156 = phi i32 [ 0, %.lr.ph ], [ %.2, %.loopexit ]
  switch i8 %46, label %.loopexit [
    i8 47, label %47
    i8 37, label %.preheader
  ]

47:                                               ; preds = %45
  %48 = getelementptr inbounds i8, ptr %.0127157, i64 1
  br label %.loopexit

.preheader:                                       ; preds = %45, %50
  %.0127.pn = phi ptr [ %.0, %50 ], [ %.0127157, %45 ]
  %.0 = getelementptr inbounds i8, ptr %.0127.pn, i64 1
  %49 = load i8, ptr %.0, align 1, !tbaa !9
  %.not = icmp eq i8 %49, 0
  br i1 %.not, label %.loopexit, label %50

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

52:                                               ; preds = %50
  switch i8 %49, label %.thread152 [
    i8 89, label %53
    i8 77, label %60
    i8 87, label %67
    i8 68, label %73
    i8 72, label %79
    i8 109, label %85
    i8 83, label %91
    i8 115, label %97
    i8 97, label %109
    i8 67, label %139
  ]

53:                                               ; preds = %52
  %54 = load i32, ptr %42, align 4, !tbaa !12
  %55 = add i32 %.0131.neg158, %54
  %56 = sext i32 %55 to i64
  %57 = add nsw i32 %.0129156, 1
  %58 = sext i32 %.0129156 to i64
  %59 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %58
  store i64 %56, ptr %59, align 8, !tbaa !5
  store i8 100, ptr %.0, align 1, !tbaa !9
  br label %.loopexit

60:                                               ; preds = %52
  %61 = load i32, ptr %40, align 8, !tbaa !16
  %62 = add nsw i32 %61, 1
  %63 = sext i32 %62 to i64
  %64 = add nsw i32 %.0129156, 1
  %65 = sext i32 %.0129156 to i64
  %66 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %65
  store i64 %63, ptr %66, align 8, !tbaa !5
  store i8 100, ptr %.0, align 1, !tbaa !9
  br label %.loopexit

67:                                               ; preds = %52
  %68 = load i32, ptr %44, align 8, !tbaa !17
  %69 = sext i32 %68 to i64
  %70 = add nsw i32 %.0129156, 1
  %71 = sext i32 %.0129156 to i64
  %72 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %71
  store i64 %69, ptr %72, align 8, !tbaa !5
  store i8 100, ptr %.0, align 1, !tbaa !9
  br label %.loopexit

73:                                               ; preds = %52
  %74 = load i32, ptr %38, align 4, !tbaa !18
  %75 = sext i32 %74 to i64
  %76 = add nsw i32 %.0129156, 1
  %77 = sext i32 %.0129156 to i64
  %78 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %77
  store i64 %75, ptr %78, align 8, !tbaa !5
  store i8 100, ptr %.0, align 1, !tbaa !9
  br label %.loopexit

79:                                               ; preds = %52
  %80 = load i32, ptr %36, align 8, !tbaa !19
  %81 = sext i32 %80 to i64
  %82 = add nsw i32 %.0129156, 1
  %83 = sext i32 %.0129156 to i64
  %84 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %83
  store i64 %81, ptr %84, align 8, !tbaa !5
  store i8 100, ptr %.0, align 1, !tbaa !9
  br label %.loopexit

85:                                               ; preds = %52
  %86 = load i32, ptr %34, align 4, !tbaa !20
  %87 = sext i32 %86 to i64
  %88 = add nsw i32 %.0129156, 1
  %89 = sext i32 %.0129156 to i64
  %90 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %89
  store i64 %87, ptr %90, align 8, !tbaa !5
  store i8 100, ptr %.0, align 1, !tbaa !9
  br label %.loopexit

91:                                               ; preds = %52
  %92 = load i32, ptr %28, align 8, !tbaa !21
  %93 = sext i32 %92 to i64
  %94 = add nsw i32 %.0129156, 1
  %95 = sext i32 %.0129156 to i64
  %96 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %95
  store i64 %93, ptr %96, align 8, !tbaa !5
  store i8 100, ptr %.0, align 1, !tbaa !9
  br label %.loopexit

97:                                               ; preds = %52
  %98 = getelementptr inbounds i8, ptr %.0127.pn, i64 2
  %99 = load i8, ptr %98, align 1, !tbaa !9
  switch i8 %99, label %.thread152 [
    i8 77, label %100
    i8 87, label %121
  ]

100:                                              ; preds = %97
  %101 = load i32, ptr %40, align 8, !tbaa !16
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds [12 x ptr], ptr @__const.m_TimeString.month, i64 0, i64 %102
  %104 = load ptr, ptr %103, align 8, !tbaa !22
  %105 = ptrtoint ptr %104 to i64
  %106 = add nsw i32 %.0129156, 1
  %107 = sext i32 %.0129156 to i64
  %108 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %107
  store i64 %105, ptr %108, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %98, align 1, !tbaa !9
  br label %.loopexit

109:                                              ; preds = %52
  %110 = getelementptr inbounds i8, ptr %.0127.pn, i64 2
  %111 = load i8, ptr %110, align 1, !tbaa !9
  switch i8 %111, label %.thread152 [
    i8 77, label %112
    i8 87, label %130
  ]

112:                                              ; preds = %109
  %113 = load i32, ptr %40, align 8, !tbaa !16
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds [12 x ptr], ptr @__const.m_TimeString.amonth, i64 0, i64 %114
  %116 = load ptr, ptr %115, align 8, !tbaa !22
  %117 = ptrtoint ptr %116 to i64
  %118 = add nsw i32 %.0129156, 1
  %119 = sext i32 %.0129156 to i64
  %120 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %119
  store i64 %117, ptr %120, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %110, align 1, !tbaa !9
  br label %.loopexit

121:                                              ; preds = %97
  %122 = load i32, ptr %44, align 8, !tbaa !17
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds [7 x ptr], ptr @__const.m_TimeString.wday, i64 0, i64 %123
  %125 = load ptr, ptr %124, align 8, !tbaa !22
  %126 = ptrtoint ptr %125 to i64
  %127 = add nsw i32 %.0129156, 1
  %128 = sext i32 %.0129156 to i64
  %129 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %128
  store i64 %126, ptr %129, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %98, align 1, !tbaa !9
  br label %.loopexit

130:                                              ; preds = %109
  %131 = load i32, ptr %44, align 8, !tbaa !17
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds [7 x ptr], ptr @__const.m_TimeString.awday, i64 0, i64 %132
  %134 = load ptr, ptr %133, align 8, !tbaa !22
  %135 = ptrtoint ptr %134 to i64
  %136 = add nsw i32 %.0129156, 1
  %137 = sext i32 %.0129156 to i64
  %138 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %137
  store i64 %135, ptr %138, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %110, align 1, !tbaa !9
  br label %.loopexit

139:                                              ; preds = %52
  %140 = getelementptr inbounds i8, ptr %.0127.pn, i64 2
  %141 = load i8, ptr %140, align 1, !tbaa !9
  switch i8 %141, label %.thread152 [
    i8 87, label %142
    i8 89, label %150
    i8 77, label %158
    i8 68, label %167
    i8 72, label %175
    i8 109, label %183
    i8 83, label %191
  ]

142:                                              ; preds = %139
  %143 = load i32, ptr %44, align 8, !tbaa !17
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds [7 x i32], ptr %4, i64 0, i64 %144
  %146 = ptrtoint ptr %145 to i64
  %147 = add nsw i32 %.0129156, 1
  %148 = sext i32 %.0129156 to i64
  %149 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %148
  store i64 %146, ptr %149, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %140, align 1, !tbaa !9
  br label %.loopexit

150:                                              ; preds = %139
  %151 = load i32, ptr %42, align 4, !tbaa !12
  %152 = add i32 %.0131.neg158, %151
  %153 = call ptr @CHNYearString(i32 noundef %152)
  %154 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) %153) #8
  %155 = add nsw i32 %.0129156, 1
  %156 = sext i32 %.0129156 to i64
  %157 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %156
  store i64 %43, ptr %157, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %140, align 1, !tbaa !9
  br label %.loopexit

158:                                              ; preds = %139
  %159 = load i32, ptr %40, align 8, !tbaa !16
  %160 = add nsw i32 %159, 1
  %161 = sitofp i32 %160 to double
  %162 = call ptr @mShu(double noundef %161) #8
  %163 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) %162) #8
  %164 = add nsw i32 %.0129156, 1
  %165 = sext i32 %.0129156 to i64
  %166 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %165
  store i64 %41, ptr %166, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %140, align 1, !tbaa !9
  br label %.loopexit

167:                                              ; preds = %139
  %168 = load i32, ptr %38, align 4, !tbaa !18
  %169 = sitofp i32 %168 to double
  %170 = call ptr @mShu(double noundef %169) #8
  %171 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) %170) #8
  %172 = add nsw i32 %.0129156, 1
  %173 = sext i32 %.0129156 to i64
  %174 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %173
  store i64 %39, ptr %174, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %140, align 1, !tbaa !9
  br label %.loopexit

175:                                              ; preds = %139
  %176 = load i32, ptr %36, align 8, !tbaa !19
  %177 = sitofp i32 %176 to double
  %178 = call ptr @mShu(double noundef %177) #8
  %179 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) %178) #8
  %180 = add nsw i32 %.0129156, 1
  %181 = sext i32 %.0129156 to i64
  %182 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %181
  store i64 %37, ptr %182, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %140, align 1, !tbaa !9
  br label %.loopexit

183:                                              ; preds = %139
  %184 = load i32, ptr %34, align 4, !tbaa !20
  %185 = sitofp i32 %184 to double
  %186 = call ptr @mShu(double noundef %185) #8
  %187 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) %186) #8
  %188 = add nsw i32 %.0129156, 1
  %189 = sext i32 %.0129156 to i64
  %190 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %189
  store i64 %35, ptr %190, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %140, align 1, !tbaa !9
  br label %.loopexit

191:                                              ; preds = %139
  %192 = load i32, ptr %28, align 8, !tbaa !21
  %193 = sitofp i32 %192 to double
  %194 = call ptr @mShu(double noundef %193) #8
  %195 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) %194) #8
  %196 = add nsw i32 %.0129156, 1
  %197 = sext i32 %.0129156 to i64
  %198 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %197
  store i64 %33, ptr %198, align 8, !tbaa !5
  store i8 104, ptr %.0, align 1, !tbaa !9
  store i8 115, ptr %140, align 1, !tbaa !9
  br label %.loopexit

.thread152:                                       ; preds = %139, %109, %97, %52
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 420, ptr noundef nonnull @__FUNCTION__.m_TimeString, ptr noundef nonnull @.str.47) #8
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %60, %73, %85, %100, %121, %142, %158, %175, %191, %.thread152, %183, %167, %150, %130, %112, %91, %79, %67, %53, %45, %47
  %.2 = phi i32 [ %.0129156, %47 ], [ %.0129156, %45 ], [ %57, %53 ], [ %64, %60 ], [ %70, %67 ], [ %76, %73 ], [ %82, %79 ], [ %88, %85 ], [ %94, %91 ], [ %106, %100 ], [ %118, %112 ], [ %127, %121 ], [ %136, %130 ], [ %147, %142 ], [ %155, %150 ], [ %164, %158 ], [ %172, %167 ], [ %180, %175 ], [ %188, %183 ], [ %196, %191 ], [ %.0129156, %.thread152 ], [ %.0129156, %.preheader ]
  %.1128 = phi ptr [ %48, %47 ], [ %.0127157, %45 ], [ %.0, %53 ], [ %.0, %60 ], [ %.0, %67 ], [ %.0, %73 ], [ %.0, %79 ], [ %.0, %85 ], [ %.0, %91 ], [ %98, %100 ], [ %110, %112 ], [ %98, %121 ], [ %110, %130 ], [ %140, %142 ], [ %140, %150 ], [ %140, %158 ], [ %140, %167 ], [ %140, %175 ], [ %140, %183 ], [ %140, %191 ], [ %.0, %.thread152 ], [ %.0, %.preheader ]
  %199 = getelementptr inbounds i8, ptr %.1128, i64 1
  %200 = load i8, ptr %199, align 1, !tbaa !9
  %201 = icmp eq i8 %200, 0
  %202 = icmp sgt i32 %.2, 15
  %or.cond = select i1 %201, i1 true, i1 %202
  br i1 %or.cond, label %._crit_edge.loopexit, label %45, !llvm.loop !23

._crit_edge.loopexit:                             ; preds = %.loopexit
  %.pre = load i64, ptr %12, align 16, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %12, i64 8
  %.pre162 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !5
  %.phi.trans.insert163 = getelementptr inbounds i8, ptr %12, i64 16
  %.pre164 = load i64, ptr %.phi.trans.insert163, align 16, !tbaa !5
  %.phi.trans.insert165 = getelementptr inbounds i8, ptr %12, i64 24
  %.pre166 = load i64, ptr %.phi.trans.insert165, align 8, !tbaa !5
  %.phi.trans.insert167 = getelementptr inbounds i8, ptr %12, i64 32
  %.pre168 = load i64, ptr %.phi.trans.insert167, align 16, !tbaa !5
  %.phi.trans.insert169 = getelementptr inbounds i8, ptr %12, i64 40
  %.pre170 = load i64, ptr %.phi.trans.insert169, align 8, !tbaa !5
  %.phi.trans.insert171 = getelementptr inbounds i8, ptr %12, i64 48
  %.pre172 = load i64, ptr %.phi.trans.insert171, align 16, !tbaa !5
  %.phi.trans.insert173 = getelementptr inbounds i8, ptr %12, i64 56
  %.pre174 = load i64, ptr %.phi.trans.insert173, align 8, !tbaa !5
  %.phi.trans.insert175 = getelementptr inbounds i8, ptr %12, i64 64
  %.pre176 = load i64, ptr %.phi.trans.insert175, align 16, !tbaa !5
  %.phi.trans.insert177 = getelementptr inbounds i8, ptr %12, i64 72
  %.pre178 = load i64, ptr %.phi.trans.insert177, align 8, !tbaa !5
  %.phi.trans.insert179 = getelementptr inbounds i8, ptr %12, i64 80
  %.pre180 = load i64, ptr %.phi.trans.insert179, align 16, !tbaa !5
  %.phi.trans.insert181 = getelementptr inbounds i8, ptr %12, i64 88
  %.pre182 = load i64, ptr %.phi.trans.insert181, align 8, !tbaa !5
  %.phi.trans.insert183 = getelementptr inbounds i8, ptr %12, i64 96
  %.pre184 = load i64, ptr %.phi.trans.insert183, align 16, !tbaa !5
  %.phi.trans.insert185 = getelementptr inbounds i8, ptr %12, i64 104
  %.pre186 = load i64, ptr %.phi.trans.insert185, align 8, !tbaa !5
  %.phi.trans.insert187 = getelementptr inbounds i8, ptr %12, i64 112
  %.pre188 = load i64, ptr %.phi.trans.insert187, align 16, !tbaa !5
  %.phi.trans.insert189 = getelementptr inbounds i8, ptr %12, i64 120
  %.pre190 = load i64, ptr %.phi.trans.insert189, align 8, !tbaa !5
  %203 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) @morn_time_string, ptr noundef nonnull dereferenceable(1) %11, i64 noundef %.pre, i64 noundef %.pre162, i64 noundef %.pre164, i64 noundef %.pre166, i64 noundef %.pre168, i64 noundef %.pre170, i64 noundef %.pre172, i64 noundef %.pre174, i64 noundef %.pre176, i64 noundef %.pre178, i64 noundef %.pre180, i64 noundef %.pre182, i64 noundef %.pre184, i64 noundef %.pre186, i64 noundef %.pre188, i64 noundef %.pre190) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  ret ptr @morn_time_string
}

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

declare ptr @mShu(double noundef) local_unnamed_addr #1

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write)
declare void @llvm.assume(i1 noundef) #7

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 = { mustprogress 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 = { 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 #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 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) }
attributes #8 = { nounwind }

!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 = !{!"long", !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, !14, i64 20}
!13 = !{!"tm", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !15, i64 48}
!14 = !{!"int", !7, i64 0}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!13, !14, i64 16}
!17 = !{!13, !14, i64 24}
!18 = !{!13, !14, i64 12}
!19 = !{!13, !14, i64 8}
!20 = !{!13, !14, i64 4}
!21 = !{!13, !14, i64 0}
!22 = !{!15, !15, i64 0}
!23 = distinct !{!23, !11}


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