; LLVM IR from joltwallet/jolt_wallet :: components/console/argtable3 (argtable3)

; 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.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@day = external hidden global [7 x ptr], align 16
@abday = external hidden global [7 x ptr], align 16
@mon = external hidden global [12 x ptr], align 16
@abmon = external hidden global [12 x ptr], align 16
@am_pm = external hidden global [2 x ptr], 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

; Function Attrs: nounwind uwtable
define dso_local ptr @arg_strptime(ptr noundef %0, ptr noundef %1, ptr noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca ptr, align 8
  %10 = alloca i64, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  store i64 0, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !11
  %15 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %15, ptr %9, align 8, !tbaa !5
  br label %16

16:                                               ; preds = %566, %48, %3
  %17 = load ptr, ptr %6, align 8, !tbaa !5
  %18 = load i8, ptr %17, align 1, !tbaa !13
  store i8 %18, ptr %8, align 1, !tbaa !13
  %19 = sext i8 %18 to i32
  %20 = icmp ne i32 %19, 0
  br i1 %20, label %21, label %567

21:                                               ; preds = %16
  store i32 0, ptr %11, align 4, !tbaa !11
  %22 = call ptr @__ctype_b_loc() #5
  %23 = load ptr, ptr %22, align 8, !tbaa !5
  %24 = load i8, ptr %8, align 1, !tbaa !13
  %25 = sext i8 %24 to i32
  %26 = sext i32 %25 to i64
  %27 = getelementptr inbounds i16, ptr %23, i64 %26
  %28 = load i16, ptr %27, align 2, !tbaa !14
  %29 = zext i16 %28 to i32
  %30 = and i32 %29, 8192
  %31 = icmp ne i32 %30, 0
  br i1 %31, label %32, label %51

32:                                               ; preds = %21
  br label %33

33:                                               ; preds = %45, %32
  %34 = call ptr @__ctype_b_loc() #5
  %35 = load ptr, ptr %34, align 8, !tbaa !5
  %36 = load ptr, ptr %9, align 8, !tbaa !5
  %37 = load i8, ptr %36, align 1, !tbaa !13
  %38 = sext i8 %37 to i32
  %39 = sext i32 %38 to i64
  %40 = getelementptr inbounds i16, ptr %35, i64 %39
  %41 = load i16, ptr %40, align 2, !tbaa !14
  %42 = zext i16 %41 to i32
  %43 = and i32 %42, 8192
  %44 = icmp ne i32 %43, 0
  br i1 %44, label %45, label %48

45:                                               ; preds = %33
  %46 = load ptr, ptr %9, align 8, !tbaa !5
  %47 = getelementptr inbounds i8, ptr %46, i32 1
  store ptr %47, ptr %9, align 8, !tbaa !5
  br label %33, !llvm.loop !16

48:                                               ; preds = %33
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %49, i32 1
  store ptr %50, ptr %6, align 8, !tbaa !5
  br label %16, !llvm.loop !18

51:                                               ; preds = %21
  %52 = load ptr, ptr %6, align 8, !tbaa !5
  %53 = getelementptr inbounds i8, ptr %52, i32 1
  store ptr %53, ptr %6, align 8, !tbaa !5
  %54 = load i8, ptr %52, align 1, !tbaa !13
  store i8 %54, ptr %8, align 1, !tbaa !13
  %55 = sext i8 %54 to i32
  %56 = icmp ne i32 %55, 37
  br i1 %56, label %57, label %58

57:                                               ; preds = %51
  br label %65

58:                                               ; preds = %51
  br label %59

59:                                               ; preds = %88, %80, %58
  %60 = load ptr, ptr %6, align 8, !tbaa !5
  %61 = getelementptr inbounds i8, ptr %60, i32 1
  store ptr %61, ptr %6, align 8, !tbaa !5
  %62 = load i8, ptr %60, align 1, !tbaa !13
  store i8 %62, ptr %8, align 1, !tbaa !13
  %63 = sext i8 %62 to i32
  switch i32 %63, label %565 [
    i32 37, label %64
    i32 69, label %75
    i32 79, label %83
    i32 99, label %91
    i32 68, label %104
    i32 82, label %117
    i32 114, label %130
    i32 84, label %143
    i32 88, label %156
    i32 120, label %169
    i32 65, label %182
    i32 97, label %182
    i32 66, label %236
    i32 98, label %236
    i32 104, label %236
    i32 67, label %290
    i32 100, label %318
    i32 101, label %318
    i32 107, label %330
    i32 72, label %336
    i32 108, label %348
    i32 73, label %354
    i32 106, label %374
    i32 77, label %388
    i32 109, label %400
    i32 112, label %414
    i32 83, label %457
    i32 85, label %469
    i32 87, label %469
    i32 119, label %479
    i32 89, label %491
    i32 121, label %505
    i32 110, label %543
    i32 116, label %543
  ]

64:                                               ; preds = %59
  br label %65

65:                                               ; preds = %64, %57
  %66 = load i8, ptr %8, align 1, !tbaa !13
  %67 = sext i8 %66 to i32
  %68 = load ptr, ptr %9, align 8, !tbaa !5
  %69 = getelementptr inbounds i8, ptr %68, i32 1
  store ptr %69, ptr %9, align 8, !tbaa !5
  %70 = load i8, ptr %68, align 1, !tbaa !13
  %71 = sext i8 %70 to i32
  %72 = icmp ne i32 %67, %71
  br i1 %72, label %73, label %74

73:                                               ; preds = %65
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

74:                                               ; preds = %65
  br label %566

75:                                               ; preds = %59
  %76 = load i32, ptr %11, align 4, !tbaa !11
  %77 = and i32 %76, -1
  %78 = icmp ne i32 %77, 0
  br i1 %78, label %79, label %80

79:                                               ; preds = %75
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

80:                                               ; preds = %75
  %81 = load i32, ptr %11, align 4, !tbaa !11
  %82 = or i32 %81, 1
  store i32 %82, ptr %11, align 4, !tbaa !11
  br label %59

83:                                               ; preds = %59
  %84 = load i32, ptr %11, align 4, !tbaa !11
  %85 = and i32 %84, -1
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %88

87:                                               ; preds = %83
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

88:                                               ; preds = %83
  %89 = load i32, ptr %11, align 4, !tbaa !11
  %90 = or i32 %89, 2
  store i32 %90, ptr %11, align 4, !tbaa !11
  br label %59

91:                                               ; preds = %59
  %92 = load i32, ptr %11, align 4, !tbaa !11
  %93 = and i32 %92, -2
  %94 = icmp ne i32 %93, 0
  br i1 %94, label %95, label %96

95:                                               ; preds = %91
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

96:                                               ; preds = %91
  %97 = load ptr, ptr %9, align 8, !tbaa !5
  %98 = load ptr, ptr %7, align 8, !tbaa !5
  %99 = call ptr @arg_strptime(ptr noundef %97, ptr noundef @.str.1, ptr noundef %98)
  store ptr %99, ptr %9, align 8, !tbaa !5
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = icmp ne ptr %100, null
  br i1 %101, label %103, label %102

102:                                              ; preds = %96
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

103:                                              ; preds = %96
  br label %566

104:                                              ; preds = %59
  %105 = load i32, ptr %11, align 4, !tbaa !11
  %106 = and i32 %105, -1
  %107 = icmp ne i32 %106, 0
  br i1 %107, label %108, label %109

108:                                              ; preds = %104
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

109:                                              ; preds = %104
  %110 = load ptr, ptr %9, align 8, !tbaa !5
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = call ptr @arg_strptime(ptr noundef %110, ptr noundef @.str.2, ptr noundef %111)
  store ptr %112, ptr %9, align 8, !tbaa !5
  %113 = load ptr, ptr %9, align 8, !tbaa !5
  %114 = icmp ne ptr %113, null
  br i1 %114, label %116, label %115

115:                                              ; preds = %109
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

116:                                              ; preds = %109
  br label %566

117:                                              ; preds = %59
  %118 = load i32, ptr %11, align 4, !tbaa !11
  %119 = and i32 %118, -1
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %122

121:                                              ; preds = %117
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

122:                                              ; preds = %117
  %123 = load ptr, ptr %9, align 8, !tbaa !5
  %124 = load ptr, ptr %7, align 8, !tbaa !5
  %125 = call ptr @arg_strptime(ptr noundef %123, ptr noundef @.str.3, ptr noundef %124)
  store ptr %125, ptr %9, align 8, !tbaa !5
  %126 = load ptr, ptr %9, align 8, !tbaa !5
  %127 = icmp ne ptr %126, null
  br i1 %127, label %129, label %128

128:                                              ; preds = %122
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

129:                                              ; preds = %122
  br label %566

130:                                              ; preds = %59
  %131 = load i32, ptr %11, align 4, !tbaa !11
  %132 = and i32 %131, -1
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %135

134:                                              ; preds = %130
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

135:                                              ; preds = %130
  %136 = load ptr, ptr %9, align 8, !tbaa !5
  %137 = load ptr, ptr %7, align 8, !tbaa !5
  %138 = call ptr @arg_strptime(ptr noundef %136, ptr noundef @.str.4, ptr noundef %137)
  store ptr %138, ptr %9, align 8, !tbaa !5
  %139 = load ptr, ptr %9, align 8, !tbaa !5
  %140 = icmp ne ptr %139, null
  br i1 %140, label %142, label %141

141:                                              ; preds = %135
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

142:                                              ; preds = %135
  br label %566

143:                                              ; preds = %59
  %144 = load i32, ptr %11, align 4, !tbaa !11
  %145 = and i32 %144, -1
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %148

147:                                              ; preds = %143
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

148:                                              ; preds = %143
  %149 = load ptr, ptr %9, align 8, !tbaa !5
  %150 = load ptr, ptr %7, align 8, !tbaa !5
  %151 = call ptr @arg_strptime(ptr noundef %149, ptr noundef @.str.5, ptr noundef %150)
  store ptr %151, ptr %9, align 8, !tbaa !5
  %152 = load ptr, ptr %9, align 8, !tbaa !5
  %153 = icmp ne ptr %152, null
  br i1 %153, label %155, label %154

154:                                              ; preds = %148
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

155:                                              ; preds = %148
  br label %566

156:                                              ; preds = %59
  %157 = load i32, ptr %11, align 4, !tbaa !11
  %158 = and i32 %157, -2
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %160, label %161

160:                                              ; preds = %156
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

161:                                              ; preds = %156
  %162 = load ptr, ptr %9, align 8, !tbaa !5
  %163 = load ptr, ptr %7, align 8, !tbaa !5
  %164 = call ptr @arg_strptime(ptr noundef %162, ptr noundef @.str.5, ptr noundef %163)
  store ptr %164, ptr %9, align 8, !tbaa !5
  %165 = load ptr, ptr %9, align 8, !tbaa !5
  %166 = icmp ne ptr %165, null
  br i1 %166, label %168, label %167

167:                                              ; preds = %161
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

168:                                              ; preds = %161
  br label %566

169:                                              ; preds = %59
  %170 = load i32, ptr %11, align 4, !tbaa !11
  %171 = and i32 %170, -2
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %169
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

174:                                              ; preds = %169
  %175 = load ptr, ptr %9, align 8, !tbaa !5
  %176 = load ptr, ptr %7, align 8, !tbaa !5
  %177 = call ptr @arg_strptime(ptr noundef %175, ptr noundef @.str.2, ptr noundef %176)
  store ptr %177, ptr %9, align 8, !tbaa !5
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = icmp ne ptr %178, null
  br i1 %179, label %181, label %180

180:                                              ; preds = %174
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

181:                                              ; preds = %174
  br label %566

182:                                              ; preds = %59, %59
  %183 = load i32, ptr %11, align 4, !tbaa !11
  %184 = and i32 %183, -1
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %187

186:                                              ; preds = %182
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

187:                                              ; preds = %182
  store i32 0, ptr %12, align 4, !tbaa !11
  br label %188

188:                                              ; preds = %222, %187
  %189 = load i32, ptr %12, align 4, !tbaa !11
  %190 = icmp slt i32 %189, 7
  br i1 %190, label %191, label %225

191:                                              ; preds = %188
  %192 = load i32, ptr %12, align 4, !tbaa !11
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds [7 x ptr], ptr @day, i64 0, i64 %193
  %195 = load ptr, ptr %194, align 8, !tbaa !5
  %196 = call i64 @strlen(ptr noundef %195) #6
  store i64 %196, ptr %10, align 8, !tbaa !9
  %197 = load i32, ptr %12, align 4, !tbaa !11
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds [7 x ptr], ptr @day, i64 0, i64 %198
  %200 = load ptr, ptr %199, align 8, !tbaa !5
  %201 = load ptr, ptr %9, align 8, !tbaa !5
  %202 = load i64, ptr %10, align 8, !tbaa !9
  %203 = call i32 @arg_strncasecmp(ptr noundef %200, ptr noundef %201, i64 noundef %202)
  %204 = icmp eq i32 %203, 0
  br i1 %204, label %205, label %206

205:                                              ; preds = %191
  br label %225

206:                                              ; preds = %191
  %207 = load i32, ptr %12, align 4, !tbaa !11
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [7 x ptr], ptr @abday, i64 0, i64 %208
  %210 = load ptr, ptr %209, align 8, !tbaa !5
  %211 = call i64 @strlen(ptr noundef %210) #6
  store i64 %211, ptr %10, align 8, !tbaa !9
  %212 = load i32, ptr %12, align 4, !tbaa !11
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds [7 x ptr], ptr @abday, i64 0, i64 %213
  %215 = load ptr, ptr %214, align 8, !tbaa !5
  %216 = load ptr, ptr %9, align 8, !tbaa !5
  %217 = load i64, ptr %10, align 8, !tbaa !9
  %218 = call i32 @arg_strncasecmp(ptr noundef %215, ptr noundef %216, i64 noundef %217)
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %220, label %221

220:                                              ; preds = %206
  br label %225

221:                                              ; preds = %206
  br label %222

222:                                              ; preds = %221
  %223 = load i32, ptr %12, align 4, !tbaa !11
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %12, align 4, !tbaa !11
  br label %188, !llvm.loop !19

225:                                              ; preds = %220, %205, %188
  %226 = load i32, ptr %12, align 4, !tbaa !11
  %227 = icmp eq i32 %226, 7
  br i1 %227, label %228, label %229

228:                                              ; preds = %225
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

229:                                              ; preds = %225
  %230 = load i32, ptr %12, align 4, !tbaa !11
  %231 = load ptr, ptr %7, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.tm, ptr %231, i32 0, i32 6
  store i32 %230, ptr %232, align 8, !tbaa !20
  %233 = load i64, ptr %10, align 8, !tbaa !9
  %234 = load ptr, ptr %9, align 8, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %234, i64 %233
  store ptr %235, ptr %9, align 8, !tbaa !5
  br label %566

236:                                              ; preds = %59, %59, %59
  %237 = load i32, ptr %11, align 4, !tbaa !11
  %238 = and i32 %237, -1
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %240, label %241

240:                                              ; preds = %236
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

241:                                              ; preds = %236
  store i32 0, ptr %12, align 4, !tbaa !11
  br label %242

242:                                              ; preds = %276, %241
  %243 = load i32, ptr %12, align 4, !tbaa !11
  %244 = icmp slt i32 %243, 12
  br i1 %244, label %245, label %279

245:                                              ; preds = %242
  %246 = load i32, ptr %12, align 4, !tbaa !11
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds [12 x ptr], ptr @mon, i64 0, i64 %247
  %249 = load ptr, ptr %248, align 8, !tbaa !5
  %250 = call i64 @strlen(ptr noundef %249) #6
  store i64 %250, ptr %10, align 8, !tbaa !9
  %251 = load i32, ptr %12, align 4, !tbaa !11
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds [12 x ptr], ptr @mon, i64 0, i64 %252
  %254 = load ptr, ptr %253, align 8, !tbaa !5
  %255 = load ptr, ptr %9, align 8, !tbaa !5
  %256 = load i64, ptr %10, align 8, !tbaa !9
  %257 = call i32 @arg_strncasecmp(ptr noundef %254, ptr noundef %255, i64 noundef %256)
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %259, label %260

259:                                              ; preds = %245
  br label %279

260:                                              ; preds = %245
  %261 = load i32, ptr %12, align 4, !tbaa !11
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds [12 x ptr], ptr @abmon, i64 0, i64 %262
  %264 = load ptr, ptr %263, align 8, !tbaa !5
  %265 = call i64 @strlen(ptr noundef %264) #6
  store i64 %265, ptr %10, align 8, !tbaa !9
  %266 = load i32, ptr %12, align 4, !tbaa !11
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [12 x ptr], ptr @abmon, i64 0, i64 %267
  %269 = load ptr, ptr %268, align 8, !tbaa !5
  %270 = load ptr, ptr %9, align 8, !tbaa !5
  %271 = load i64, ptr %10, align 8, !tbaa !9
  %272 = call i32 @arg_strncasecmp(ptr noundef %269, ptr noundef %270, i64 noundef %271)
  %273 = icmp eq i32 %272, 0
  br i1 %273, label %274, label %275

274:                                              ; preds = %260
  br label %279

275:                                              ; preds = %260
  br label %276

276:                                              ; preds = %275
  %277 = load i32, ptr %12, align 4, !tbaa !11
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %12, align 4, !tbaa !11
  br label %242, !llvm.loop !22

279:                                              ; preds = %274, %259, %242
  %280 = load i32, ptr %12, align 4, !tbaa !11
  %281 = icmp eq i32 %280, 12
  br i1 %281, label %282, label %283

282:                                              ; preds = %279
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

283:                                              ; preds = %279
  %284 = load i32, ptr %12, align 4, !tbaa !11
  %285 = load ptr, ptr %7, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.tm, ptr %285, i32 0, i32 4
  store i32 %284, ptr %286, align 8, !tbaa !23
  %287 = load i64, ptr %10, align 8, !tbaa !9
  %288 = load ptr, ptr %9, align 8, !tbaa !5
  %289 = getelementptr inbounds i8, ptr %288, i64 %287
  store ptr %289, ptr %9, align 8, !tbaa !5
  br label %566

290:                                              ; preds = %59
  %291 = load i32, ptr %11, align 4, !tbaa !11
  %292 = and i32 %291, -2
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %295

294:                                              ; preds = %290
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

295:                                              ; preds = %290
  %296 = call i32 @conv_num(ptr noundef %9, ptr noundef %12, i32 noundef 0, i32 noundef 99)
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %299, label %298

298:                                              ; preds = %295
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

299:                                              ; preds = %295
  %300 = load i32, ptr %13, align 4, !tbaa !11
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %302, label %312

302:                                              ; preds = %299
  %303 = load ptr, ptr %7, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.tm, ptr %303, i32 0, i32 5
  %305 = load i32, ptr %304, align 4, !tbaa !24
  %306 = srem i32 %305, 100
  %307 = load i32, ptr %12, align 4, !tbaa !11
  %308 = mul nsw i32 %307, 100
  %309 = add nsw i32 %306, %308
  %310 = load ptr, ptr %7, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.tm, ptr %310, i32 0, i32 5
  store i32 %309, ptr %311, align 4, !tbaa !24
  br label %317

312:                                              ; preds = %299
  %313 = load i32, ptr %12, align 4, !tbaa !11
  %314 = mul nsw i32 %313, 100
  %315 = load ptr, ptr %7, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.tm, ptr %315, i32 0, i32 5
  store i32 %314, ptr %316, align 4, !tbaa !24
  store i32 1, ptr %13, align 4, !tbaa !11
  br label %317

317:                                              ; preds = %312, %302
  br label %566

318:                                              ; preds = %59, %59
  %319 = load i32, ptr %11, align 4, !tbaa !11
  %320 = and i32 %319, -3
  %321 = icmp ne i32 %320, 0
  br i1 %321, label %322, label %323

322:                                              ; preds = %318
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

323:                                              ; preds = %318
  %324 = load ptr, ptr %7, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.tm, ptr %324, i32 0, i32 3
  %326 = call i32 @conv_num(ptr noundef %9, ptr noundef %325, i32 noundef 1, i32 noundef 31)
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %329, label %328

328:                                              ; preds = %323
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

329:                                              ; preds = %323
  br label %566

330:                                              ; preds = %59
  %331 = load i32, ptr %11, align 4, !tbaa !11
  %332 = and i32 %331, -1
  %333 = icmp ne i32 %332, 0
  br i1 %333, label %334, label %335

334:                                              ; preds = %330
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

335:                                              ; preds = %330
  br label %336

336:                                              ; preds = %335, %59
  %337 = load i32, ptr %11, align 4, !tbaa !11
  %338 = and i32 %337, -3
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %340, label %341

340:                                              ; preds = %336
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

341:                                              ; preds = %336
  %342 = load ptr, ptr %7, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.tm, ptr %342, i32 0, i32 2
  %344 = call i32 @conv_num(ptr noundef %9, ptr noundef %343, i32 noundef 0, i32 noundef 23)
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %347, label %346

346:                                              ; preds = %341
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

347:                                              ; preds = %341
  br label %566

348:                                              ; preds = %59
  %349 = load i32, ptr %11, align 4, !tbaa !11
  %350 = and i32 %349, -1
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %352, label %353

352:                                              ; preds = %348
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

353:                                              ; preds = %348
  br label %354

354:                                              ; preds = %353, %59
  %355 = load i32, ptr %11, align 4, !tbaa !11
  %356 = and i32 %355, -3
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %358, label %359

358:                                              ; preds = %354
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

359:                                              ; preds = %354
  %360 = load ptr, ptr %7, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.tm, ptr %360, i32 0, i32 2
  %362 = call i32 @conv_num(ptr noundef %9, ptr noundef %361, i32 noundef 1, i32 noundef 12)
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %365, label %364

364:                                              ; preds = %359
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

365:                                              ; preds = %359
  %366 = load ptr, ptr %7, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.tm, ptr %366, i32 0, i32 2
  %368 = load i32, ptr %367, align 8, !tbaa !25
  %369 = icmp eq i32 %368, 12
  br i1 %369, label %370, label %373

370:                                              ; preds = %365
  %371 = load ptr, ptr %7, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.tm, ptr %371, i32 0, i32 2
  store i32 0, ptr %372, align 8, !tbaa !25
  br label %373

373:                                              ; preds = %370, %365
  br label %566

374:                                              ; preds = %59
  %375 = load i32, ptr %11, align 4, !tbaa !11
  %376 = and i32 %375, -1
  %377 = icmp ne i32 %376, 0
  br i1 %377, label %378, label %379

378:                                              ; preds = %374
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

379:                                              ; preds = %374
  %380 = call i32 @conv_num(ptr noundef %9, ptr noundef %12, i32 noundef 1, i32 noundef 366)
  %381 = icmp ne i32 %380, 0
  br i1 %381, label %383, label %382

382:                                              ; preds = %379
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

383:                                              ; preds = %379
  %384 = load i32, ptr %12, align 4, !tbaa !11
  %385 = sub nsw i32 %384, 1
  %386 = load ptr, ptr %7, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.tm, ptr %386, i32 0, i32 7
  store i32 %385, ptr %387, align 4, !tbaa !26
  br label %566

388:                                              ; preds = %59
  %389 = load i32, ptr %11, align 4, !tbaa !11
  %390 = and i32 %389, -3
  %391 = icmp ne i32 %390, 0
  br i1 %391, label %392, label %393

392:                                              ; preds = %388
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

393:                                              ; preds = %388
  %394 = load ptr, ptr %7, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.tm, ptr %394, i32 0, i32 1
  %396 = call i32 @conv_num(ptr noundef %9, ptr noundef %395, i32 noundef 0, i32 noundef 59)
  %397 = icmp ne i32 %396, 0
  br i1 %397, label %399, label %398

398:                                              ; preds = %393
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

399:                                              ; preds = %393
  br label %566

400:                                              ; preds = %59
  %401 = load i32, ptr %11, align 4, !tbaa !11
  %402 = and i32 %401, -3
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %404, label %405

404:                                              ; preds = %400
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

405:                                              ; preds = %400
  %406 = call i32 @conv_num(ptr noundef %9, ptr noundef %12, i32 noundef 1, i32 noundef 12)
  %407 = icmp ne i32 %406, 0
  br i1 %407, label %409, label %408

408:                                              ; preds = %405
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

409:                                              ; preds = %405
  %410 = load i32, ptr %12, align 4, !tbaa !11
  %411 = sub nsw i32 %410, 1
  %412 = load ptr, ptr %7, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.tm, ptr %412, i32 0, i32 4
  store i32 %411, ptr %413, align 8, !tbaa !23
  br label %566

414:                                              ; preds = %59
  %415 = load i32, ptr %11, align 4, !tbaa !11
  %416 = and i32 %415, -1
  %417 = icmp ne i32 %416, 0
  br i1 %417, label %418, label %419

418:                                              ; preds = %414
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

419:                                              ; preds = %414
  %420 = load ptr, ptr @am_pm, align 16, !tbaa !5
  %421 = load ptr, ptr %9, align 8, !tbaa !5
  %422 = call i32 @arg_strcasecmp(ptr noundef %420, ptr noundef %421)
  %423 = icmp eq i32 %422, 0
  br i1 %423, label %424, label %435

424:                                              ; preds = %419
  %425 = load ptr, ptr %7, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.tm, ptr %425, i32 0, i32 2
  %427 = load i32, ptr %426, align 8, !tbaa !25
  %428 = icmp sgt i32 %427, 11
  br i1 %428, label %429, label %430

429:                                              ; preds = %424
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

430:                                              ; preds = %424
  %431 = load ptr, ptr @am_pm, align 16, !tbaa !5
  %432 = call i64 @strlen(ptr noundef %431) #6
  %433 = load ptr, ptr %9, align 8, !tbaa !5
  %434 = getelementptr inbounds i8, ptr %433, i64 %432
  store ptr %434, ptr %9, align 8, !tbaa !5
  br label %566

435:                                              ; preds = %419
  %436 = load ptr, ptr getelementptr inbounds ([2 x ptr], ptr @am_pm, i64 0, i64 1), align 8, !tbaa !5
  %437 = load ptr, ptr %9, align 8, !tbaa !5
  %438 = call i32 @arg_strcasecmp(ptr noundef %436, ptr noundef %437)
  %439 = icmp eq i32 %438, 0
  br i1 %439, label %440, label %455

440:                                              ; preds = %435
  %441 = load ptr, ptr %7, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.tm, ptr %441, i32 0, i32 2
  %443 = load i32, ptr %442, align 8, !tbaa !25
  %444 = icmp sgt i32 %443, 11
  br i1 %444, label %445, label %446

445:                                              ; preds = %440
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

446:                                              ; preds = %440
  %447 = load ptr, ptr %7, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.tm, ptr %447, i32 0, i32 2
  %449 = load i32, ptr %448, align 8, !tbaa !25
  %450 = add nsw i32 %449, 12
  store i32 %450, ptr %448, align 8, !tbaa !25
  %451 = load ptr, ptr getelementptr inbounds ([2 x ptr], ptr @am_pm, i64 0, i64 1), align 8, !tbaa !5
  %452 = call i64 @strlen(ptr noundef %451) #6
  %453 = load ptr, ptr %9, align 8, !tbaa !5
  %454 = getelementptr inbounds i8, ptr %453, i64 %452
  store ptr %454, ptr %9, align 8, !tbaa !5
  br label %566

455:                                              ; preds = %435
  br label %456

456:                                              ; preds = %455
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

457:                                              ; preds = %59
  %458 = load i32, ptr %11, align 4, !tbaa !11
  %459 = and i32 %458, -3
  %460 = icmp ne i32 %459, 0
  br i1 %460, label %461, label %462

461:                                              ; preds = %457
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

462:                                              ; preds = %457
  %463 = load ptr, ptr %7, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.tm, ptr %463, i32 0, i32 0
  %465 = call i32 @conv_num(ptr noundef %9, ptr noundef %464, i32 noundef 0, i32 noundef 61)
  %466 = icmp ne i32 %465, 0
  br i1 %466, label %468, label %467

467:                                              ; preds = %462
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

468:                                              ; preds = %462
  br label %566

469:                                              ; preds = %59, %59
  %470 = load i32, ptr %11, align 4, !tbaa !11
  %471 = and i32 %470, -3
  %472 = icmp ne i32 %471, 0
  br i1 %472, label %473, label %474

473:                                              ; preds = %469
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

474:                                              ; preds = %469
  %475 = call i32 @conv_num(ptr noundef %9, ptr noundef %12, i32 noundef 0, i32 noundef 53)
  %476 = icmp ne i32 %475, 0
  br i1 %476, label %478, label %477

477:                                              ; preds = %474
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

478:                                              ; preds = %474
  br label %566

479:                                              ; preds = %59
  %480 = load i32, ptr %11, align 4, !tbaa !11
  %481 = and i32 %480, -3
  %482 = icmp ne i32 %481, 0
  br i1 %482, label %483, label %484

483:                                              ; preds = %479
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

484:                                              ; preds = %479
  %485 = load ptr, ptr %7, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.tm, ptr %485, i32 0, i32 6
  %487 = call i32 @conv_num(ptr noundef %9, ptr noundef %486, i32 noundef 0, i32 noundef 6)
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %490, label %489

489:                                              ; preds = %484
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

490:                                              ; preds = %484
  br label %566

491:                                              ; preds = %59
  %492 = load i32, ptr %11, align 4, !tbaa !11
  %493 = and i32 %492, -2
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %495, label %496

495:                                              ; preds = %491
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

496:                                              ; preds = %491
  %497 = call i32 @conv_num(ptr noundef %9, ptr noundef %12, i32 noundef 0, i32 noundef 9999)
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %500, label %499

499:                                              ; preds = %496
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

500:                                              ; preds = %496
  %501 = load i32, ptr %12, align 4, !tbaa !11
  %502 = sub nsw i32 %501, 1900
  %503 = load ptr, ptr %7, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.tm, ptr %503, i32 0, i32 5
  store i32 %502, ptr %504, align 4, !tbaa !24
  br label %566

505:                                              ; preds = %59
  %506 = load i32, ptr %11, align 4, !tbaa !11
  %507 = and i32 %506, -4
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %509, label %510

509:                                              ; preds = %505
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

510:                                              ; preds = %505
  %511 = call i32 @conv_num(ptr noundef %9, ptr noundef %12, i32 noundef 0, i32 noundef 99)
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %514, label %513

513:                                              ; preds = %510
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

514:                                              ; preds = %510
  %515 = load i32, ptr %13, align 4, !tbaa !11
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %527

517:                                              ; preds = %514
  %518 = load ptr, ptr %7, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.tm, ptr %518, i32 0, i32 5
  %520 = load i32, ptr %519, align 4, !tbaa !24
  %521 = sdiv i32 %520, 100
  %522 = mul nsw i32 %521, 100
  %523 = load i32, ptr %12, align 4, !tbaa !11
  %524 = add nsw i32 %522, %523
  %525 = load ptr, ptr %7, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.tm, ptr %525, i32 0, i32 5
  store i32 %524, ptr %526, align 4, !tbaa !24
  br label %566

527:                                              ; preds = %514
  store i32 1, ptr %13, align 4, !tbaa !11
  %528 = load i32, ptr %12, align 4, !tbaa !11
  %529 = icmp sle i32 %528, 68
  br i1 %529, label %530, label %536

530:                                              ; preds = %527
  %531 = load i32, ptr %12, align 4, !tbaa !11
  %532 = add nsw i32 %531, 2000
  %533 = sub nsw i32 %532, 1900
  %534 = load ptr, ptr %7, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.tm, ptr %534, i32 0, i32 5
  store i32 %533, ptr %535, align 4, !tbaa !24
  br label %542

536:                                              ; preds = %527
  %537 = load i32, ptr %12, align 4, !tbaa !11
  %538 = add nsw i32 %537, 1900
  %539 = sub nsw i32 %538, 1900
  %540 = load ptr, ptr %7, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.tm, ptr %540, i32 0, i32 5
  store i32 %539, ptr %541, align 4, !tbaa !24
  br label %542

542:                                              ; preds = %536, %530
  br label %566

543:                                              ; preds = %59, %59
  %544 = load i32, ptr %11, align 4, !tbaa !11
  %545 = and i32 %544, -1
  %546 = icmp ne i32 %545, 0
  br i1 %546, label %547, label %548

547:                                              ; preds = %543
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

548:                                              ; preds = %543
  br label %549

549:                                              ; preds = %561, %548
  %550 = call ptr @__ctype_b_loc() #5
  %551 = load ptr, ptr %550, align 8, !tbaa !5
  %552 = load ptr, ptr %9, align 8, !tbaa !5
  %553 = load i8, ptr %552, align 1, !tbaa !13
  %554 = sext i8 %553 to i32
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds i16, ptr %551, i64 %555
  %557 = load i16, ptr %556, align 2, !tbaa !14
  %558 = zext i16 %557 to i32
  %559 = and i32 %558, 8192
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %561, label %564

561:                                              ; preds = %549
  %562 = load ptr, ptr %9, align 8, !tbaa !5
  %563 = getelementptr inbounds i8, ptr %562, i32 1
  store ptr %563, ptr %9, align 8, !tbaa !5
  br label %549, !llvm.loop !27

564:                                              ; preds = %549
  br label %566

565:                                              ; preds = %59
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

566:                                              ; preds = %564, %542, %517, %500, %490, %478, %468, %446, %430, %409, %399, %383, %373, %347, %329, %317, %283, %229, %181, %168, %155, %142, %129, %116, %103, %74
  br label %16, !llvm.loop !18

567:                                              ; preds = %16
  %568 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %568, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %569

569:                                              ; preds = %567, %565, %547, %513, %509, %499, %495, %489, %483, %477, %473, %467, %461, %456, %445, %429, %418, %408, %404, %398, %392, %382, %378, %364, %358, %352, %346, %340, %334, %328, %322, %298, %294, %282, %240, %228, %186, %180, %173, %167, %160, %154, %147, %141, %134, %128, %121, %115, %108, %102, %95, %87, %79, %73
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
  %570 = load ptr, ptr %4, align 8
  ret ptr %570
}

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() #2

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden i32 @arg_strncasecmp(ptr noundef, ptr noundef, i64 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @conv_num(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @arg_strcasecmp(ptr noundef, ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nounwind willreturn memory(none) "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 = { 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 #4 = { nounwind }
attributes #5 = { nounwind willreturn memory(none) }
attributes #6 = { 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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"short", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = !{!21, !12, i64 24}
!21 = !{!"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, !10, i64 40, !6, i64 48}
!22 = distinct !{!22, !17}
!23 = !{!21, !12, i64 16}
!24 = !{!21, !12, i64 20}
!25 = !{!21, !12, i64 8}
!26 = !{!21, !12, i64 28}
!27 = distinct !{!27, !17}


; 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.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@day = external hidden local_unnamed_addr global [7 x ptr], align 16
@abday = external hidden local_unnamed_addr global [7 x ptr], align 16
@mon = external hidden local_unnamed_addr global [12 x ptr], align 16
@abmon = external hidden local_unnamed_addr global [12 x ptr], align 16
@am_pm = external hidden local_unnamed_addr global [2 x ptr], 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

; Function Attrs: nounwind uwtable
define dso_local ptr @arg_strptime(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2) local_unnamed_addr #1 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #4
  store ptr %0, ptr %4, align 8, !tbaa !5
  %6 = load i8, ptr %1, align 1, !tbaa !9
  %.not269278 = icmp eq i8 %6, 0
  br i1 %.not269278, label %.loopexit153, label %.lr.ph271.lr.ph

.lr.ph271.lr.ph:                                  ; preds = %3
  %7 = tail call ptr @__ctype_b_loc() #5
  %8 = getelementptr inbounds i8, ptr %2, i64 20
  %9 = getelementptr inbounds i8, ptr %2, i64 24
  %10 = getelementptr inbounds i8, ptr %2, i64 8
  %11 = getelementptr inbounds i8, ptr %2, i64 16
  %12 = getelementptr inbounds i8, ptr %2, i64 4
  %13 = getelementptr inbounds i8, ptr %2, i64 28
  %14 = getelementptr inbounds i8, ptr %2, i64 12
  br label %.lr.ph271

.lr.ph271:                                        ; preds = %.lr.ph271.lr.ph, %.outer
  %15 = phi i8 [ %6, %.lr.ph271.lr.ph ], [ %202, %.outer ]
  %.0.ph281 = phi i32 [ 0, %.lr.ph271.lr.ph ], [ %.1, %.outer ]
  %.079.ph279 = phi ptr [ %1, %.lr.ph271.lr.ph ], [ %.382, %.outer ]
  %.promoted282 = load ptr, ptr %4, align 8, !tbaa !5
  %.pre = load ptr, ptr %7, align 8, !tbaa !5
  br label %16

16:                                               ; preds = %.lr.ph271, %._crit_edge
  %17 = phi ptr [ %.pre, %.lr.ph271 ], [ %37, %._crit_edge ]
  %18 = phi i8 [ %15, %.lr.ph271 ], [ %40, %._crit_edge ]
  %.079270 = phi ptr [ %.079.ph279, %.lr.ph271 ], [ %39, %._crit_edge ]
  %19 = phi ptr [ %.promoted282, %.lr.ph271 ], [ %38, %._crit_edge ]
  %20 = sext i8 %18 to i64
  %21 = getelementptr inbounds i16, ptr %17, i64 %20
  %22 = load i16, ptr %21, align 2, !tbaa !10
  %23 = and i16 %22, 8192
  %.not91 = icmp eq i16 %23, 0
  br i1 %.not91, label %41, label %.preheader155

.preheader155:                                    ; preds = %16
  %24 = load i8, ptr %19, align 1, !tbaa !9
  %25 = sext i8 %24 to i64
  %26 = getelementptr inbounds i16, ptr %17, i64 %25
  %27 = load i16, ptr %26, align 2, !tbaa !10
  %28 = and i16 %27, 8192
  %.not143268 = icmp eq i16 %28, 0
  br i1 %.not143268, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader155, %.lr.ph
  %29 = phi ptr [ %30, %.lr.ph ], [ %19, %.preheader155 ]
  %30 = getelementptr inbounds i8, ptr %29, i64 1
  store ptr %30, ptr %4, align 8, !tbaa !5
  %31 = load ptr, ptr %7, align 8, !tbaa !5
  %32 = load i8, ptr %30, align 1, !tbaa !9
  %33 = sext i8 %32 to i64
  %34 = getelementptr inbounds i16, ptr %31, i64 %33
  %35 = load i16, ptr %34, align 2, !tbaa !10
  %36 = and i16 %35, 8192
  %.not143 = icmp eq i16 %36, 0
  br i1 %.not143, label %._crit_edge, label %.lr.ph, !llvm.loop !12

._crit_edge:                                      ; preds = %.lr.ph, %.preheader155
  %37 = phi ptr [ %17, %.preheader155 ], [ %31, %.lr.ph ]
  %38 = phi ptr [ %19, %.preheader155 ], [ %30, %.lr.ph ]
  %39 = getelementptr inbounds i8, ptr %.079270, i64 1
  %40 = load i8, ptr %39, align 1, !tbaa !9
  %.not = icmp eq i8 %40, 0
  br i1 %.not, label %.loopexit153, label %16, !llvm.loop !14

41:                                               ; preds = %16
  %42 = getelementptr inbounds i8, ptr %.079270, i64 1
  %.not92 = icmp eq i8 %18, 37
  br i1 %.not92, label %.preheader152.preheader, label %.loopexit154

.preheader152.preheader:                          ; preds = %41
  %43 = getelementptr inbounds i8, ptr %.079270, i64 2
  %44 = load i8, ptr %42, align 1, !tbaa !9
  switch i8 %44, label %.loopexit153 [
    i8 37, label %.loopexit154
    i8 69, label %45
    i8 79, label %.preheader152
    i8 99, label %.loopexit398.thread
    i8 68, label %50
    i8 82, label %52
    i8 114, label %54
    i8 84, label %56
    i8 88, label %.loopexit403.thread
    i8 120, label %.loopexit404.thread
    i8 65, label %.preheader
    i8 97, label %.preheader
    i8 66, label %.preheader148
    i8 98, label %.preheader148
    i8 104, label %.preheader148
    i8 67, label %.loopexit407.thread
    i8 100, label %.loopexit408.thread
    i8 101, label %.loopexit408.thread
    i8 107, label %.loopexit410.thread
    i8 72, label %.loopexit410.thread
    i8 108, label %.loopexit412.thread
    i8 73, label %.loopexit412.thread
    i8 106, label %132
    i8 77, label %.loopexit414.thread
    i8 109, label %.loopexit415.thread
    i8 112, label %142
    i8 83, label %.loopexit417.thread
    i8 85, label %.loopexit418.thread
    i8 87, label %.loopexit418.thread
    i8 119, label %.loopexit419.thread
    i8 89, label %.loopexit420.thread
    i8 121, label %.loopexit421
    i8 110, label %.preheader150
    i8 116, label %.preheader150
  ]

45:                                               ; preds = %.preheader152.preheader
  br label %.preheader152

.preheader152:                                    ; preds = %45, %.preheader152.preheader
  %.not97.be.peel = phi i1 [ true, %45 ], [ false, %.preheader152.preheader ]
  %.not99.be.peel = phi i1 [ false, %45 ], [ true, %.preheader152.preheader ]
  %.pre426 = load i8, ptr %43, align 1, !tbaa !9
  %46 = getelementptr inbounds i8, ptr %.079270, i64 3
  switch i8 %.pre426, label %.loopexit153 [
    i8 37, label %.loopexit154
    i8 121, label %.loopexit421
    i8 89, label %.loopexit420
    i8 99, label %.loopexit398
    i8 119, label %.loopexit419
    i8 87, label %.loopexit418
    i8 85, label %.loopexit418
    i8 83, label %.loopexit417
    i8 88, label %.loopexit403
    i8 120, label %.loopexit404
    i8 109, label %.loopexit415
    i8 77, label %.loopexit414
    i8 73, label %.loopexit412
    i8 72, label %.loopexit410
    i8 101, label %.loopexit408
    i8 67, label %.loopexit407
    i8 100, label %.loopexit408
  ]

.loopexit154:                                     ; preds = %.preheader152.preheader, %.preheader152, %41
  %.281 = phi ptr [ %42, %41 ], [ %43, %.preheader152.preheader ], [ %46, %.preheader152 ]
  %47 = getelementptr inbounds i8, ptr %19, i64 1
  store ptr %47, ptr %4, align 8, !tbaa !5
  %48 = load i8, ptr %19, align 1, !tbaa !9
  %.not142 = icmp eq i8 %18, %48
  br i1 %.not142, label %.outer, label %.loopexit153

.loopexit398:                                     ; preds = %.preheader152
  br i1 %.not97.be.peel, label %.loopexit398.thread, label %.loopexit153

.loopexit398.thread:                              ; preds = %.preheader152.preheader, %.loopexit398
  %.lcssa290429 = phi ptr [ %46, %.loopexit398 ], [ %43, %.preheader152.preheader ]
  %49 = call ptr @arg_strptime(ptr noundef %19, ptr noundef nonnull @.str.1, ptr noundef %2)
  store ptr %49, ptr %4, align 8, !tbaa !5
  %.not139 = icmp eq ptr %49, null
  br i1 %.not139, label %.loopexit153, label %.outer

50:                                               ; preds = %.preheader152.preheader
  %51 = call ptr @arg_strptime(ptr noundef %19, ptr noundef nonnull @.str.2, ptr noundef %2)
  store ptr %51, ptr %4, align 8, !tbaa !5
  %.not137 = icmp eq ptr %51, null
  br i1 %.not137, label %.loopexit153, label %.outer

52:                                               ; preds = %.preheader152.preheader
  %53 = call ptr @arg_strptime(ptr noundef %19, ptr noundef nonnull @.str.3, ptr noundef %2)
  store ptr %53, ptr %4, align 8, !tbaa !5
  %.not135 = icmp eq ptr %53, null
  br i1 %.not135, label %.loopexit153, label %.outer

54:                                               ; preds = %.preheader152.preheader
  %55 = call ptr @arg_strptime(ptr noundef %19, ptr noundef nonnull @.str.4, ptr noundef %2)
  store ptr %55, ptr %4, align 8, !tbaa !5
  %.not133 = icmp eq ptr %55, null
  br i1 %.not133, label %.loopexit153, label %.outer

56:                                               ; preds = %.preheader152.preheader
  %57 = call ptr @arg_strptime(ptr noundef %19, ptr noundef nonnull @.str.5, ptr noundef %2)
  store ptr %57, ptr %4, align 8, !tbaa !5
  %.not131 = icmp eq ptr %57, null
  br i1 %.not131, label %.loopexit153, label %.outer

.loopexit403:                                     ; preds = %.preheader152
  br i1 %.not97.be.peel, label %.loopexit403.thread, label %.loopexit153

.loopexit403.thread:                              ; preds = %.preheader152.preheader, %.loopexit403
  %.lcssa295444 = phi ptr [ %46, %.loopexit403 ], [ %43, %.preheader152.preheader ]
  %58 = call ptr @arg_strptime(ptr noundef %19, ptr noundef nonnull @.str.5, ptr noundef %2)
  store ptr %58, ptr %4, align 8, !tbaa !5
  %.not129 = icmp eq ptr %58, null
  br i1 %.not129, label %.loopexit153, label %.outer

.loopexit404:                                     ; preds = %.preheader152
  br i1 %.not97.be.peel, label %.loopexit404.thread, label %.loopexit153

.loopexit404.thread:                              ; preds = %.preheader152.preheader, %.loopexit404
  %.lcssa296447 = phi ptr [ %46, %.loopexit404 ], [ %43, %.preheader152.preheader ]
  %59 = call ptr @arg_strptime(ptr noundef %19, ptr noundef nonnull @.str.2, ptr noundef %2)
  store ptr %59, ptr %4, align 8, !tbaa !5
  %.not127 = icmp eq ptr %59, null
  br i1 %.not127, label %.loopexit153, label %.outer

.preheader:                                       ; preds = %.preheader152.preheader, %.preheader152.preheader
  store i32 0, ptr %5, align 4, !tbaa !15
  br label %60

60:                                               ; preds = %.preheader, %77
  %storemerge125276 = phi i32 [ 0, %.preheader ], [ %79, %77 ]
  %61 = sext i32 %storemerge125276 to i64
  %62 = getelementptr inbounds [7 x ptr], ptr @day, i64 0, i64 %61
  %63 = load ptr, ptr %62, align 8, !tbaa !5
  %64 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %63) #6
  %65 = load ptr, ptr %4, align 8, !tbaa !5
  %66 = call i32 @arg_strncasecmp(ptr noundef %63, ptr noundef %65, i64 noundef %64)
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %thread-pre-split, label %68

68:                                               ; preds = %60
  %69 = load i32, ptr %5, align 4, !tbaa !15
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds [7 x ptr], ptr @abday, i64 0, i64 %70
  %72 = load ptr, ptr %71, align 8, !tbaa !5
  %73 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %72) #6
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = call i32 @arg_strncasecmp(ptr noundef %72, ptr noundef %74, i64 noundef %73)
  %76 = icmp eq i32 %75, 0
  br i1 %76, label %thread-pre-split, label %77

77:                                               ; preds = %68
  %78 = load i32, ptr %5, align 4, !tbaa !15
  %79 = add nsw i32 %78, 1
  store i32 %79, ptr %5, align 4, !tbaa !15
  %80 = icmp slt i32 %78, 6
  br i1 %80, label %60, label %.loopexit, !llvm.loop !17

thread-pre-split:                                 ; preds = %60, %68
  %.2.ph = phi i64 [ %73, %68 ], [ %64, %60 ]
  %.pr = load i32, ptr %5, align 4, !tbaa !15
  br label %.loopexit

.loopexit:                                        ; preds = %77, %thread-pre-split
  %81 = phi i32 [ %.pr, %thread-pre-split ], [ %79, %77 ]
  %.2 = phi i64 [ %.2.ph, %thread-pre-split ], [ %73, %77 ]
  %82 = icmp eq i32 %81, 7
  br i1 %82, label %.loopexit153, label %83

83:                                               ; preds = %.loopexit
  store i32 %81, ptr %9, align 8, !tbaa !18
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds i8, ptr %84, i64 %.2
  store ptr %85, ptr %4, align 8, !tbaa !5
  br label %.outer

.preheader148:                                    ; preds = %.preheader152.preheader, %.preheader152.preheader, %.preheader152.preheader
  store i32 0, ptr %5, align 4, !tbaa !15
  br label %86

86:                                               ; preds = %.preheader148, %103
  %storemerge275 = phi i32 [ 0, %.preheader148 ], [ %105, %103 ]
  %87 = sext i32 %storemerge275 to i64
  %88 = getelementptr inbounds [12 x ptr], ptr @mon, i64 0, i64 %87
  %89 = load ptr, ptr %88, align 8, !tbaa !5
  %90 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %89) #6
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = call i32 @arg_strncasecmp(ptr noundef %89, ptr noundef %91, i64 noundef %90)
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %thread-pre-split146, label %94

94:                                               ; preds = %86
  %95 = load i32, ptr %5, align 4, !tbaa !15
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds [12 x ptr], ptr @abmon, i64 0, i64 %96
  %98 = load ptr, ptr %97, align 8, !tbaa !5
  %99 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %98) #6
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = call i32 @arg_strncasecmp(ptr noundef %98, ptr noundef %100, i64 noundef %99)
  %102 = icmp eq i32 %101, 0
  br i1 %102, label %thread-pre-split146, label %103

103:                                              ; preds = %94
  %104 = load i32, ptr %5, align 4, !tbaa !15
  %105 = add nsw i32 %104, 1
  store i32 %105, ptr %5, align 4, !tbaa !15
  %106 = icmp slt i32 %104, 11
  br i1 %106, label %86, label %.loopexit149, !llvm.loop !21

thread-pre-split146:                              ; preds = %86, %94
  %.4.ph = phi i64 [ %99, %94 ], [ %90, %86 ]
  %.pr147 = load i32, ptr %5, align 4, !tbaa !15
  br label %.loopexit149

.loopexit149:                                     ; preds = %103, %thread-pre-split146
  %107 = phi i32 [ %.pr147, %thread-pre-split146 ], [ %105, %103 ]
  %.4 = phi i64 [ %.4.ph, %thread-pre-split146 ], [ %99, %103 ]
  %108 = icmp eq i32 %107, 12
  br i1 %108, label %.loopexit153, label %109

109:                                              ; preds = %.loopexit149
  store i32 %107, ptr %11, align 8, !tbaa !22
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds i8, ptr %110, i64 %.4
  store ptr %111, ptr %4, align 8, !tbaa !5
  br label %.outer

.loopexit407:                                     ; preds = %.preheader152
  br i1 %.not97.be.peel, label %.loopexit407.thread, label %.loopexit153

.loopexit407.thread:                              ; preds = %.preheader152.preheader, %.loopexit407
  %.lcssa299456 = phi ptr [ %46, %.loopexit407 ], [ %43, %.preheader152.preheader ]
  %112 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef 0, i32 noundef 99)
  %.not121 = icmp eq i32 %112, 0
  br i1 %.not121, label %.loopexit153, label %113

113:                                              ; preds = %.loopexit407.thread
  %.not122 = icmp eq i32 %.0.ph281, 0
  br i1 %.not122, label %120, label %114

114:                                              ; preds = %113
  %115 = load i32, ptr %8, align 4, !tbaa !23
  %116 = srem i32 %115, 100
  %117 = load i32, ptr %5, align 4, !tbaa !15
  %118 = mul nsw i32 %117, 100
  %119 = add nsw i32 %118, %116
  store i32 %119, ptr %8, align 4, !tbaa !23
  br label %.outer

120:                                              ; preds = %113
  %121 = load i32, ptr %5, align 4, !tbaa !15
  %122 = mul nsw i32 %121, 100
  store i32 %122, ptr %8, align 4, !tbaa !23
  br label %.outer

.loopexit408:                                     ; preds = %.preheader152, %.preheader152
  br i1 %.not99.be.peel, label %.loopexit408.thread, label %.loopexit153

.loopexit408.thread:                              ; preds = %.preheader152.preheader, %.preheader152.preheader, %.loopexit408
  %.lcssa300459 = phi ptr [ %46, %.loopexit408 ], [ %43, %.preheader152.preheader ], [ %43, %.preheader152.preheader ]
  %123 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %14, i32 noundef 1, i32 noundef 31)
  %.not119 = icmp eq i32 %123, 0
  br i1 %.not119, label %.loopexit153, label %.outer

.loopexit410:                                     ; preds = %.preheader152
  br i1 %.not99.be.peel, label %.loopexit410.thread, label %.loopexit153

.loopexit410.thread:                              ; preds = %.preheader152.preheader, %.preheader152.preheader, %.loopexit410
  %124 = phi ptr [ %46, %.loopexit410 ], [ %43, %.preheader152.preheader ], [ %43, %.preheader152.preheader ]
  %125 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %10, i32 noundef 0, i32 noundef 23)
  %.not117 = icmp eq i32 %125, 0
  br i1 %.not117, label %.loopexit153, label %.outer

.loopexit412:                                     ; preds = %.preheader152
  br i1 %.not99.be.peel, label %.loopexit412.thread, label %.loopexit153

.loopexit412.thread:                              ; preds = %.preheader152.preheader, %.preheader152.preheader, %.loopexit412
  %126 = phi ptr [ %46, %.loopexit412 ], [ %43, %.preheader152.preheader ], [ %43, %.preheader152.preheader ]
  %127 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %10, i32 noundef 1, i32 noundef 12)
  %.not114 = icmp eq i32 %127, 0
  br i1 %.not114, label %.loopexit153, label %128

128:                                              ; preds = %.loopexit412.thread
  %129 = load i32, ptr %10, align 8, !tbaa !24
  %130 = icmp eq i32 %129, 12
  br i1 %130, label %131, label %.outer

131:                                              ; preds = %128
  store i32 0, ptr %10, align 8, !tbaa !24
  br label %.outer

132:                                              ; preds = %.preheader152.preheader
  %133 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef 1, i32 noundef 366)
  %.not111 = icmp eq i32 %133, 0
  br i1 %.not111, label %.loopexit153, label %134

134:                                              ; preds = %132
  %135 = load i32, ptr %5, align 4, !tbaa !15
  %136 = add nsw i32 %135, -1
  store i32 %136, ptr %13, align 4, !tbaa !25
  br label %.outer

.loopexit414:                                     ; preds = %.preheader152
  br i1 %.not99.be.peel, label %.loopexit414.thread, label %.loopexit153

.loopexit414.thread:                              ; preds = %.preheader152.preheader, %.loopexit414
  %.lcssa306473 = phi ptr [ %46, %.loopexit414 ], [ %43, %.preheader152.preheader ]
  %137 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %12, i32 noundef 0, i32 noundef 59)
  %.not109 = icmp eq i32 %137, 0
  br i1 %.not109, label %.loopexit153, label %.outer

.loopexit415:                                     ; preds = %.preheader152
  br i1 %.not99.be.peel, label %.loopexit415.thread, label %.loopexit153

.loopexit415.thread:                              ; preds = %.preheader152.preheader, %.loopexit415
  %.lcssa307476 = phi ptr [ %46, %.loopexit415 ], [ %43, %.preheader152.preheader ]
  %138 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef 1, i32 noundef 12)
  %.not107 = icmp eq i32 %138, 0
  br i1 %.not107, label %.loopexit153, label %139

139:                                              ; preds = %.loopexit415.thread
  %140 = load i32, ptr %5, align 4, !tbaa !15
  %141 = add nsw i32 %140, -1
  store i32 %141, ptr %11, align 8, !tbaa !22
  br label %.outer

142:                                              ; preds = %.preheader152.preheader
  %143 = load ptr, ptr @am_pm, align 16, !tbaa !5
  %144 = call i32 @arg_strcasecmp(ptr noundef %143, ptr noundef %19)
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %146, label %154

146:                                              ; preds = %142
  %147 = load i32, ptr %10, align 8, !tbaa !24
  %148 = icmp sgt i32 %147, 11
  br i1 %148, label %.loopexit153, label %149

149:                                              ; preds = %146
  %150 = load ptr, ptr @am_pm, align 16, !tbaa !5
  %151 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %150) #6
  %152 = load ptr, ptr %4, align 8, !tbaa !5
  %153 = getelementptr inbounds i8, ptr %152, i64 %151
  store ptr %153, ptr %4, align 8, !tbaa !5
  br label %.outer

154:                                              ; preds = %142
  %155 = load ptr, ptr getelementptr inbounds (i8, ptr @am_pm, i64 8), align 8, !tbaa !5
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = call i32 @arg_strcasecmp(ptr noundef %155, ptr noundef %156)
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %.loopexit153

159:                                              ; preds = %154
  %160 = load i32, ptr %10, align 8, !tbaa !24
  %161 = icmp sgt i32 %160, 11
  br i1 %161, label %.loopexit153, label %162

162:                                              ; preds = %159
  %163 = add nsw i32 %160, 12
  store i32 %163, ptr %10, align 8, !tbaa !24
  %164 = load ptr, ptr getelementptr inbounds (i8, ptr @am_pm, i64 8), align 8, !tbaa !5
  %165 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %164) #6
  %166 = load ptr, ptr %4, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 %165
  store ptr %167, ptr %4, align 8, !tbaa !5
  br label %.outer

.loopexit417:                                     ; preds = %.preheader152
  br i1 %.not99.be.peel, label %.loopexit417.thread, label %.loopexit153

.loopexit417.thread:                              ; preds = %.preheader152.preheader, %.loopexit417
  %.lcssa309482 = phi ptr [ %46, %.loopexit417 ], [ %43, %.preheader152.preheader ]
  %168 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef %2, i32 noundef 0, i32 noundef 61)
  %.not104 = icmp eq i32 %168, 0
  br i1 %.not104, label %.loopexit153, label %.outer

.loopexit418:                                     ; preds = %.preheader152, %.preheader152
  br i1 %.not99.be.peel, label %.loopexit418.thread, label %.loopexit153

.loopexit418.thread:                              ; preds = %.preheader152.preheader, %.preheader152.preheader, %.loopexit418
  %.lcssa310485 = phi ptr [ %46, %.loopexit418 ], [ %43, %.preheader152.preheader ], [ %43, %.preheader152.preheader ]
  %169 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef 0, i32 noundef 53)
  %.not102 = icmp eq i32 %169, 0
  br i1 %.not102, label %.loopexit153, label %.outer

.loopexit419:                                     ; preds = %.preheader152
  br i1 %.not99.be.peel, label %.loopexit419.thread, label %.loopexit153

.loopexit419.thread:                              ; preds = %.preheader152.preheader, %.loopexit419
  %.lcssa311488 = phi ptr [ %46, %.loopexit419 ], [ %43, %.preheader152.preheader ]
  %170 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %9, i32 noundef 0, i32 noundef 6)
  %.not100 = icmp eq i32 %170, 0
  br i1 %.not100, label %.loopexit153, label %.outer

.loopexit420:                                     ; preds = %.preheader152
  br i1 %.not97.be.peel, label %.loopexit420.thread, label %.loopexit153

.loopexit420.thread:                              ; preds = %.preheader152.preheader, %.loopexit420
  %.lcssa312491 = phi ptr [ %46, %.loopexit420 ], [ %43, %.preheader152.preheader ]
  %171 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef 0, i32 noundef 9999)
  %.not98 = icmp eq i32 %171, 0
  br i1 %.not98, label %.loopexit153, label %172

172:                                              ; preds = %.loopexit420.thread
  %173 = load i32, ptr %5, align 4, !tbaa !15
  %174 = add nsw i32 %173, -1900
  store i32 %174, ptr %8, align 4, !tbaa !23
  br label %.outer

.loopexit421:                                     ; preds = %.preheader152, %.preheader152.preheader
  %.lcssa313 = phi ptr [ %43, %.preheader152.preheader ], [ %46, %.preheader152 ]
  %175 = call i32 @conv_num(ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef 0, i32 noundef 99)
  %.not95 = icmp eq i32 %175, 0
  br i1 %.not95, label %.loopexit153, label %176

176:                                              ; preds = %.loopexit421
  %.not96 = icmp eq i32 %.0.ph281, 0
  br i1 %.not96, label %183, label %177

177:                                              ; preds = %176
  %178 = load i32, ptr %8, align 4, !tbaa !23
  %.fr = freeze i32 %178
  %179 = srem i32 %.fr, 100
  %180 = load i32, ptr %5, align 4, !tbaa !15
  %181 = add i32 %180, %.fr
  %182 = sub i32 %181, %179
  store i32 %182, ptr %8, align 4, !tbaa !23
  br label %.outer

183:                                              ; preds = %176
  %184 = load i32, ptr %5, align 4, !tbaa !15
  %185 = icmp slt i32 %184, 69
  br i1 %185, label %186, label %188

186:                                              ; preds = %183
  %187 = add nsw i32 %184, 100
  store i32 %187, ptr %8, align 4, !tbaa !23
  br label %.outer

188:                                              ; preds = %183
  store i32 %184, ptr %8, align 4, !tbaa !23
  br label %.outer

.preheader150:                                    ; preds = %.preheader152.preheader, %.preheader152.preheader
  %189 = load i8, ptr %19, align 1, !tbaa !9
  %190 = sext i8 %189 to i64
  %191 = getelementptr inbounds i16, ptr %17, i64 %190
  %192 = load i16, ptr %191, align 2, !tbaa !10
  %193 = and i16 %192, 8192
  %.not94273 = icmp eq i16 %193, 0
  br i1 %.not94273, label %.outer, label %.lr.ph274

.lr.ph274:                                        ; preds = %.preheader150, %.lr.ph274
  %194 = phi ptr [ %195, %.lr.ph274 ], [ %19, %.preheader150 ]
  %195 = getelementptr inbounds i8, ptr %194, i64 1
  store ptr %195, ptr %4, align 8, !tbaa !5
  %196 = load ptr, ptr %7, align 8, !tbaa !5
  %197 = load i8, ptr %195, align 1, !tbaa !9
  %198 = sext i8 %197 to i64
  %199 = getelementptr inbounds i16, ptr %196, i64 %198
  %200 = load i16, ptr %199, align 2, !tbaa !10
  %201 = and i16 %200, 8192
  %.not94 = icmp eq i16 %201, 0
  br i1 %.not94, label %.outer, label %.lr.ph274, !llvm.loop !26

.outer:                                           ; preds = %.lr.ph274, %.preheader150, %186, %188, %.loopexit419.thread, %.loopexit418.thread, %.loopexit417.thread, %.loopexit414.thread, %128, %131, %.loopexit410.thread, %.loopexit408.thread, %114, %120, %.loopexit404.thread, %.loopexit403.thread, %56, %54, %52, %50, %.loopexit398.thread, %.loopexit154, %177, %172, %162, %149, %139, %134, %109, %83
  %.382 = phi ptr [ %.281, %.loopexit154 ], [ %.lcssa313, %177 ], [ %.lcssa313, %186 ], [ %.lcssa313, %188 ], [ %.lcssa312491, %172 ], [ %.lcssa311488, %.loopexit419.thread ], [ %.lcssa310485, %.loopexit418.thread ], [ %.lcssa309482, %.loopexit417.thread ], [ %43, %149 ], [ %43, %162 ], [ %.lcssa307476, %139 ], [ %.lcssa306473, %.loopexit414.thread ], [ %43, %134 ], [ %126, %131 ], [ %126, %128 ], [ %124, %.loopexit410.thread ], [ %.lcssa300459, %.loopexit408.thread ], [ %.lcssa299456, %114 ], [ %.lcssa299456, %120 ], [ %43, %109 ], [ %43, %83 ], [ %.lcssa296447, %.loopexit404.thread ], [ %.lcssa295444, %.loopexit403.thread ], [ %43, %56 ], [ %43, %54 ], [ %43, %52 ], [ %43, %50 ], [ %.lcssa290429, %.loopexit398.thread ], [ %43, %.preheader150 ], [ %43, %.lr.ph274 ]
  %.1 = phi i32 [ %.0.ph281, %.loopexit154 ], [ 1, %177 ], [ 1, %186 ], [ 1, %188 ], [ %.0.ph281, %172 ], [ %.0.ph281, %.loopexit419.thread ], [ %.0.ph281, %.loopexit418.thread ], [ %.0.ph281, %.loopexit417.thread ], [ %.0.ph281, %149 ], [ %.0.ph281, %162 ], [ %.0.ph281, %139 ], [ %.0.ph281, %.loopexit414.thread ], [ %.0.ph281, %134 ], [ %.0.ph281, %131 ], [ %.0.ph281, %128 ], [ %.0.ph281, %.loopexit410.thread ], [ %.0.ph281, %.loopexit408.thread ], [ 1, %114 ], [ 1, %120 ], [ %.0.ph281, %109 ], [ %.0.ph281, %83 ], [ %.0.ph281, %.loopexit404.thread ], [ %.0.ph281, %.loopexit403.thread ], [ %.0.ph281, %56 ], [ %.0.ph281, %54 ], [ %.0.ph281, %52 ], [ %.0.ph281, %50 ], [ %.0.ph281, %.loopexit398.thread ], [ %.0.ph281, %.preheader150 ], [ %.0.ph281, %.lr.ph274 ]
  %202 = load i8, ptr %.382, align 1, !tbaa !9
  %.not269 = icmp eq i8 %202, 0
  br i1 %.not269, label %.outer._crit_edge.loopexit284, label %.lr.ph271, !llvm.loop !14

.outer._crit_edge.loopexit284:                    ; preds = %.outer
  %.pre425 = load ptr, ptr %4, align 8, !tbaa !5
  br label %.loopexit153

.loopexit153:                                     ; preds = %.loopexit421, %.loopexit420.thread, %.loopexit420, %.loopexit419.thread, %.loopexit419, %.loopexit418.thread, %.loopexit418, %.loopexit417.thread, %.loopexit417, %154, %159, %146, %.loopexit415.thread, %.loopexit415, %.loopexit414.thread, %.loopexit414, %132, %.loopexit412.thread, %.loopexit412, %.loopexit410.thread, %.loopexit410, %.loopexit408.thread, %.loopexit408, %.loopexit407.thread, %.loopexit407, %.loopexit149, %.loopexit, %.loopexit404.thread, %.loopexit404, %.loopexit403.thread, %.loopexit403, %56, %54, %52, %50, %.loopexit398.thread, %.loopexit398, %.loopexit154, %.preheader152, %.preheader152.preheader, %._crit_edge, %3, %.outer._crit_edge.loopexit284
  %.078 = phi ptr [ %.pre425, %.outer._crit_edge.loopexit284 ], [ %0, %3 ], [ %38, %._crit_edge ], [ null, %.preheader152.preheader ], [ null, %.preheader152 ], [ null, %.loopexit154 ], [ null, %.loopexit398 ], [ null, %.loopexit398.thread ], [ null, %50 ], [ null, %52 ], [ null, %54 ], [ null, %56 ], [ null, %.loopexit403 ], [ null, %.loopexit403.thread ], [ null, %.loopexit404 ], [ null, %.loopexit404.thread ], [ null, %.loopexit ], [ null, %.loopexit149 ], [ null, %.loopexit407 ], [ null, %.loopexit407.thread ], [ null, %.loopexit408 ], [ null, %.loopexit408.thread ], [ null, %.loopexit410 ], [ null, %.loopexit410.thread ], [ null, %.loopexit412 ], [ null, %.loopexit412.thread ], [ null, %132 ], [ null, %.loopexit414 ], [ null, %.loopexit414.thread ], [ null, %.loopexit415 ], [ null, %.loopexit415.thread ], [ null, %146 ], [ null, %159 ], [ null, %154 ], [ null, %.loopexit417 ], [ null, %.loopexit417.thread ], [ null, %.loopexit418 ], [ null, %.loopexit418.thread ], [ null, %.loopexit419 ], [ null, %.loopexit419.thread ], [ null, %.loopexit420 ], [ null, %.loopexit420.thread ], [ null, %.loopexit421 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #4
  ret ptr %.078
}

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden i32 @arg_strncasecmp(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @conv_num(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @arg_strcasecmp(ptr noundef, ptr noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nofree nosync nounwind willreturn memory(none) "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: 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 #4 = { nounwind }
attributes #5 = { nounwind willreturn memory(none) }
attributes #6 = { 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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"short", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = distinct !{!17, !13}
!18 = !{!19, !16, i64 24}
!19 = !{!"tm", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28, !16, i64 32, !20, i64 40, !6, i64 48}
!20 = !{!"long", !7, i64 0}
!21 = distinct !{!21, !13}
!22 = !{!19, !16, i64 16}
!23 = !{!19, !16, i64 20}
!24 = !{!19, !16, i64 8}
!25 = !{!19, !16, i64 28}
!26 = distinct !{!26, !13}


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