; LLVM IR from jspd-group/pegit :: src (delta)

; 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.strbuf = type { i64, i64, ptr }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%struct.delta_options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr, ptr }

@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [8 x i8], align 1
@__const.delta_parse_single_option.path = external hidden unnamed_addr constant %struct.strbuf, align 8
@.str.55 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [21 x i8], align 1

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

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

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #1

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #2

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

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

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__errno_location() #5

; Function Attrs: nounwind
declare ptr @strerror(i32 noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @delta_parse_single_option(ptr noundef %0, ptr noundef %1, ptr noundef %2) #6 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %struct.stat, align 8
  %8 = alloca %struct.strbuf, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 144, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %8, ptr align 8 @__const.delta_parse_single_option.path, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  %11 = load ptr, ptr %5, align 8, !tbaa !5
  %12 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %12, ptr %9, align 4, !tbaa !9
  %13 = load ptr, ptr %6, align 8, !tbaa !5
  %14 = load i32, ptr %9, align 4, !tbaa !9
  %15 = sext i32 %14 to i64
  %16 = getelementptr inbounds ptr, ptr %13, i64 %15
  %17 = load ptr, ptr %16, align 8, !tbaa !5
  %18 = call i32 @strcmp(ptr noundef @.str.55, ptr noundef %17) #9
  %19 = icmp ne i32 %18, 0
  br i1 %19, label %20, label %28

20:                                               ; preds = %3
  %21 = load ptr, ptr %6, align 8, !tbaa !5
  %22 = load i32, ptr %9, align 4, !tbaa !9
  %23 = sext i32 %22 to i64
  %24 = getelementptr inbounds ptr, ptr %21, i64 %23
  %25 = load ptr, ptr %24, align 8, !tbaa !5
  %26 = call i32 @strcmp(ptr noundef @.str.56, ptr noundef %25) #9
  %27 = icmp ne i32 %26, 0
  br i1 %27, label %31, label %28

28:                                               ; preds = %20, %3
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.delta_options, ptr %29, i32 0, i32 5
  store i8 1, ptr %30, align 1, !tbaa !11
  br label %402

31:                                               ; preds = %20
  %32 = load ptr, ptr %6, align 8, !tbaa !5
  %33 = load i32, ptr %9, align 4, !tbaa !9
  %34 = sext i32 %33 to i64
  %35 = getelementptr inbounds ptr, ptr %32, i64 %34
  %36 = load ptr, ptr %35, align 8, !tbaa !5
  %37 = call i32 @strcmp(ptr noundef @.str.57, ptr noundef %36) #9
  %38 = icmp ne i32 %37, 0
  br i1 %38, label %39, label %47

39:                                               ; preds = %31
  %40 = load ptr, ptr %6, align 8, !tbaa !5
  %41 = load i32, ptr %9, align 4, !tbaa !9
  %42 = sext i32 %41 to i64
  %43 = getelementptr inbounds ptr, ptr %40, i64 %42
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  %45 = call i32 @strcmp(ptr noundef @.str.58, ptr noundef %44) #9
  %46 = icmp ne i32 %45, 0
  br i1 %46, label %50, label %47

47:                                               ; preds = %39, %31
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.delta_options, ptr %48, i32 0, i32 0
  store i8 1, ptr %49, align 8, !tbaa !14
  br label %401

50:                                               ; preds = %39
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = load i32, ptr %9, align 4, !tbaa !9
  %53 = sext i32 %52 to i64
  %54 = getelementptr inbounds ptr, ptr %51, i64 %53
  %55 = load ptr, ptr %54, align 8, !tbaa !5
  %56 = call i32 @strcmp(ptr noundef @.str.59, ptr noundef %55) #9
  %57 = icmp ne i32 %56, 0
  br i1 %57, label %61, label %58

58:                                               ; preds = %50
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.delta_options, ptr %59, i32 0, i32 3
  store i8 1, ptr %60, align 1, !tbaa !15
  br label %400

61:                                               ; preds = %50
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  %63 = load i32, ptr %9, align 4, !tbaa !9
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds ptr, ptr %62, i64 %64
  %66 = load ptr, ptr %65, align 8, !tbaa !5
  %67 = call i32 @strcmp(ptr noundef @.str.60, ptr noundef %66) #9
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %69, label %77

69:                                               ; preds = %61
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = load i32, ptr %9, align 4, !tbaa !9
  %72 = sext i32 %71 to i64
  %73 = getelementptr inbounds ptr, ptr %70, i64 %72
  %74 = load ptr, ptr %73, align 8, !tbaa !5
  %75 = call i32 @strcmp(ptr noundef @.str.61, ptr noundef %74) #9
  %76 = icmp ne i32 %75, 0
  br i1 %76, label %80, label %77

77:                                               ; preds = %69, %61
  %78 = load ptr, ptr %4, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.delta_options, ptr %78, i32 0, i32 2
  store i8 1, ptr %79, align 2, !tbaa !16
  br label %399

80:                                               ; preds = %69
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = load i32, ptr %9, align 4, !tbaa !9
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds ptr, ptr %81, i64 %83
  %85 = load ptr, ptr %84, align 8, !tbaa !5
  %86 = call i32 @strcmp(ptr noundef @.str.62, ptr noundef %85) #9
  %87 = icmp ne i32 %86, 0
  br i1 %87, label %88, label %96

88:                                               ; preds = %80
  %89 = load ptr, ptr %6, align 8, !tbaa !5
  %90 = load i32, ptr %9, align 4, !tbaa !9
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds ptr, ptr %89, i64 %91
  %93 = load ptr, ptr %92, align 8, !tbaa !5
  %94 = call i32 @strcmp(ptr noundef @.str.63, ptr noundef %93) #9
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %99, label %96

96:                                               ; preds = %88, %80
  %97 = load ptr, ptr %4, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.delta_options, ptr %97, i32 0, i32 7
  store i8 1, ptr %98, align 1, !tbaa !17
  br label %398

99:                                               ; preds = %88
  %100 = load ptr, ptr %6, align 8, !tbaa !5
  %101 = load i32, ptr %9, align 4, !tbaa !9
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds ptr, ptr %100, i64 %102
  %104 = load ptr, ptr %103, align 8, !tbaa !5
  %105 = call i32 @strcmp(ptr noundef @.str.64, ptr noundef %104) #9
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %107, label %115

107:                                              ; preds = %99
  %108 = load ptr, ptr %6, align 8, !tbaa !5
  %109 = load i32, ptr %9, align 4, !tbaa !9
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds ptr, ptr %108, i64 %110
  %112 = load ptr, ptr %111, align 8, !tbaa !5
  %113 = call i32 @strcmp(ptr noundef @.str.65, ptr noundef %112) #9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %118, label %115

115:                                              ; preds = %107, %99
  %116 = load ptr, ptr %4, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.delta_options, ptr %116, i32 0, i32 4
  store i8 1, ptr %117, align 4, !tbaa !18
  br label %397

118:                                              ; preds = %107
  %119 = load ptr, ptr %6, align 8, !tbaa !5
  %120 = load i32, ptr %9, align 4, !tbaa !9
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds ptr, ptr %119, i64 %121
  %123 = load ptr, ptr %122, align 8, !tbaa !5
  %124 = call i32 @strcmp(ptr noundef @.str.66, ptr noundef %123) #9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %126, label %134

126:                                              ; preds = %118
  %127 = load ptr, ptr %6, align 8, !tbaa !5
  %128 = load i32, ptr %9, align 4, !tbaa !9
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds ptr, ptr %127, i64 %129
  %131 = load ptr, ptr %130, align 8, !tbaa !5
  %132 = call i32 @strcmp(ptr noundef @.str.67, ptr noundef %131) #9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %137, label %134

134:                                              ; preds = %126, %118
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.delta_options, ptr %135, i32 0, i32 8
  store i8 1, ptr %136, align 8, !tbaa !19
  br label %396

137:                                              ; preds = %126
  %138 = load ptr, ptr %6, align 8, !tbaa !5
  %139 = load i32, ptr %9, align 4, !tbaa !9
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds ptr, ptr %138, i64 %140
  %142 = load ptr, ptr %141, align 8, !tbaa !5
  %143 = call i32 @strcmp(ptr noundef @.str.68, ptr noundef %142) #9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %153

145:                                              ; preds = %137
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  %147 = load i32, ptr %9, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds ptr, ptr %146, i64 %148
  %150 = load ptr, ptr %149, align 8, !tbaa !5
  %151 = call i32 @strcmp(ptr noundef @.str.69, ptr noundef %150) #9
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %156, label %153

153:                                              ; preds = %145, %137
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.delta_options, ptr %154, i32 0, i32 9
  store i8 1, ptr %155, align 1, !tbaa !20
  br label %395

156:                                              ; preds = %145
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.delta_options, ptr %157, i32 0, i32 2
  %159 = load i8, ptr %158, align 2, !tbaa !16, !range !21, !noundef !22
  %160 = trunc i8 %159 to i1
  br i1 %160, label %161, label %236

161:                                              ; preds = %156
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.delta_options, ptr %162, i32 0, i32 3
  %164 = load i8, ptr %163, align 1, !tbaa !15, !range !21, !noundef !22
  %165 = trunc i8 %164 to i1
  br i1 %165, label %236, label %166

166:                                              ; preds = %161
  %167 = load ptr, ptr %6, align 8, !tbaa !5
  %168 = load i32, ptr %9, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds ptr, ptr %167, i64 %169
  %171 = load ptr, ptr %170, align 8, !tbaa !5
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.delta_options, ptr %172, i32 0, i32 12
  store ptr %171, ptr %173, align 8, !tbaa !23
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.delta_options, ptr %174, i32 0, i32 12
  %176 = load ptr, ptr %175, align 8, !tbaa !23
  %177 = call i32 @stat(ptr noundef %176, ptr noundef %7) #8
  %178 = icmp slt i32 %177, 0
  br i1 %178, label %179, label %199

179:                                              ; preds = %166
  br label %180

180:                                              ; preds = %179
  %181 = load ptr, ptr @stderr, align 8, !tbaa !5
  %182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %181, ptr noundef @.str.2) #8
  %183 = load ptr, ptr @stderr, align 8, !tbaa !5
  %184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef @.str.3) #8
  %185 = load ptr, ptr @stderr, align 8, !tbaa !5
  %186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %185, ptr noundef @.str.4) #8
  %187 = load ptr, ptr @stderr, align 8, !tbaa !5
  %188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %187, ptr noundef @.str.5) #8
  %189 = load ptr, ptr @stderr, align 8, !tbaa !5
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.delta_options, ptr %190, i32 0, i32 12
  %192 = load ptr, ptr %191, align 8, !tbaa !23
  %193 = call ptr @__errno_location() #10
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = call ptr @strerror(i32 noundef %194) #8
  %196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %189, ptr noundef @.str.49, ptr noundef %192, ptr noundef %195) #8
  br label %197

197:                                              ; preds = %180
  br label %198

198:                                              ; preds = %197
  call void @exit(i32 noundef -1) #11
  unreachable

199:                                              ; preds = %166
  %200 = getelementptr inbounds %struct.stat, ptr %7, i32 0, i32 3
  %201 = load i32, ptr %200, align 8, !tbaa !24
  %202 = and i32 %201, 61440
  %203 = icmp eq i32 %202, 16384
  br i1 %203, label %204, label %207

204:                                              ; preds = %199
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.delta_options, ptr %205, i32 0, i32 1
  store i8 1, ptr %206, align 1, !tbaa !28
  br label %235

207:                                              ; preds = %199
  %208 = getelementptr inbounds %struct.stat, ptr %7, i32 0, i32 3
  %209 = load i32, ptr %208, align 8, !tbaa !24
  %210 = and i32 %209, 61440
  %211 = icmp eq i32 %210, 32768
  br i1 %211, label %212, label %215

212:                                              ; preds = %207
  %213 = load ptr, ptr %4, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.delta_options, ptr %213, i32 0, i32 2
  store i8 1, ptr %214, align 2, !tbaa !16
  br label %234

215:                                              ; preds = %207
  br label %216

216:                                              ; preds = %215
  %217 = load ptr, ptr @stderr, align 8, !tbaa !5
  %218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %217, ptr noundef @.str.2) #8
  %219 = load ptr, ptr @stderr, align 8, !tbaa !5
  %220 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %219, ptr noundef @.str.3) #8
  %221 = load ptr, ptr @stderr, align 8, !tbaa !5
  %222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %221, ptr noundef @.str.4) #8
  %223 = load ptr, ptr @stderr, align 8, !tbaa !5
  %224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %223, ptr noundef @.str.5) #8
  %225 = load ptr, ptr @stderr, align 8, !tbaa !5
  %226 = load ptr, ptr %6, align 8, !tbaa !5
  %227 = load i32, ptr %9, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds ptr, ptr %226, i64 %228
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  %231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %225, ptr noundef @.str.70, ptr noundef %230) #8
  call void @exit(i32 noundef 1) #11
  unreachable

232:                                              ; No predecessors!
  br label %233

233:                                              ; preds = %232
  br label %234

234:                                              ; preds = %233, %212
  br label %235

235:                                              ; preds = %234, %204
  br label %394

236:                                              ; preds = %161, %156
  %237 = load ptr, ptr %4, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.delta_options, ptr %237, i32 0, i32 3
  %239 = load i8, ptr %238, align 1, !tbaa !15, !range !21, !noundef !22
  %240 = trunc i8 %239 to i1
  br i1 %240, label %241, label %269

241:                                              ; preds = %236
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.delta_options, ptr %242, i32 0, i32 2
  %244 = load i8, ptr %243, align 2, !tbaa !16, !range !21, !noundef !22
  %245 = trunc i8 %244 to i1
  br i1 %245, label %269, label %246

246:                                              ; preds = %241
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.delta_options, ptr %247, i32 0, i32 10
  %249 = load ptr, ptr %248, align 8, !tbaa !29
  %250 = icmp ne ptr %249, null
  br i1 %250, label %251, label %259

251:                                              ; preds = %246
  %252 = load ptr, ptr %6, align 8, !tbaa !5
  %253 = load i32, ptr %9, align 4, !tbaa !9
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds ptr, ptr %252, i64 %254
  %256 = load ptr, ptr %255, align 8, !tbaa !5
  %257 = load ptr, ptr %4, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.delta_options, ptr %257, i32 0, i32 11
  store ptr %256, ptr %258, align 8, !tbaa !30
  br label %267

259:                                              ; preds = %246
  %260 = load ptr, ptr %6, align 8, !tbaa !5
  %261 = load i32, ptr %9, align 4, !tbaa !9
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds ptr, ptr %260, i64 %262
  %264 = load ptr, ptr %263, align 8, !tbaa !5
  %265 = load ptr, ptr %4, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.delta_options, ptr %265, i32 0, i32 10
  store ptr %264, ptr %266, align 8, !tbaa !29
  br label %267

267:                                              ; preds = %259, %251
  %268 = phi ptr [ %256, %251 ], [ %264, %259 ]
  br label %393

269:                                              ; preds = %241, %236
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.delta_options, ptr %270, i32 0, i32 3
  %272 = load i8, ptr %271, align 1, !tbaa !15, !range !21, !noundef !22
  %273 = trunc i8 %272 to i1
  br i1 %273, label %274, label %279

274:                                              ; preds = %269
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.delta_options, ptr %275, i32 0, i32 2
  %277 = load i8, ptr %276, align 2, !tbaa !16, !range !21, !noundef !22
  %278 = trunc i8 %277 to i1
  br i1 %278, label %373, label %279

279:                                              ; preds = %274, %269
  %280 = load ptr, ptr %6, align 8, !tbaa !5
  %281 = load i32, ptr %9, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds ptr, ptr %280, i64 %282
  %284 = load ptr, ptr %283, align 8, !tbaa !5
  %285 = call i32 @stat(ptr noundef %284, ptr noundef %7) #8
  %286 = icmp slt i32 %285, 0
  br i1 %286, label %287, label %314

287:                                              ; preds = %279
  %288 = load ptr, ptr %4, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.delta_options, ptr %288, i32 0, i32 3
  store i8 1, ptr %289, align 1, !tbaa !15
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.delta_options, ptr %290, i32 0, i32 10
  %292 = load ptr, ptr %291, align 8, !tbaa !29
  %293 = icmp ne ptr %292, null
  br i1 %293, label %294, label %302

294:                                              ; preds = %287
  %295 = load ptr, ptr %6, align 8, !tbaa !5
  %296 = load i32, ptr %9, align 4, !tbaa !9
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds ptr, ptr %295, i64 %297
  %299 = load ptr, ptr %298, align 8, !tbaa !5
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.delta_options, ptr %300, i32 0, i32 11
  store ptr %299, ptr %301, align 8, !tbaa !30
  br label %310

302:                                              ; preds = %287
  %303 = load ptr, ptr %6, align 8, !tbaa !5
  %304 = load i32, ptr %9, align 4, !tbaa !9
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds ptr, ptr %303, i64 %305
  %307 = load ptr, ptr %306, align 8, !tbaa !5
  %308 = load ptr, ptr %4, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.delta_options, ptr %308, i32 0, i32 10
  store ptr %307, ptr %309, align 8, !tbaa !29
  br label %310

310:                                              ; preds = %302, %294
  %311 = phi ptr [ %299, %294 ], [ %307, %302 ]
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.delta_options, ptr %312, i32 0, i32 6
  store i8 1, ptr %313, align 2, !tbaa !31
  store i32 1, ptr %10, align 4
  br label %403

314:                                              ; preds = %279
  %315 = getelementptr inbounds %struct.stat, ptr %7, i32 0, i32 3
  %316 = load i32, ptr %315, align 8, !tbaa !24
  %317 = and i32 %316, 61440
  %318 = icmp eq i32 %317, 16384
  br i1 %318, label %319, label %333

319:                                              ; preds = %314
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.delta_options, ptr %320, i32 0, i32 1
  store i8 1, ptr %321, align 1, !tbaa !28
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.delta_options, ptr %322, i32 0, i32 2
  store i8 1, ptr %323, align 2, !tbaa !16
  %324 = load ptr, ptr %6, align 8, !tbaa !5
  %325 = load i32, ptr %9, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds ptr, ptr %324, i64 %326
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  call void @get_peg_path_buf(ptr noundef %8, ptr noundef %328)
  %329 = getelementptr inbounds %struct.strbuf, ptr %8, i32 0, i32 2
  %330 = load ptr, ptr %329, align 8, !tbaa !32
  %331 = load ptr, ptr %4, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.delta_options, ptr %331, i32 0, i32 12
  store ptr %330, ptr %332, align 8, !tbaa !23
  br label %370

333:                                              ; preds = %314
  %334 = getelementptr inbounds %struct.stat, ptr %7, i32 0, i32 3
  %335 = load i32, ptr %334, align 8, !tbaa !24
  %336 = and i32 %335, 61440
  %337 = icmp eq i32 %336, 32768
  br i1 %337, label %338, label %350

338:                                              ; preds = %333
  %339 = load ptr, ptr %4, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.delta_options, ptr %339, i32 0, i32 2
  store i8 1, ptr %340, align 2, !tbaa !16
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = load i32, ptr %9, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds ptr, ptr %341, i64 %343
  %345 = load ptr, ptr %344, align 8, !tbaa !5
  call void @get_peg_path_buf(ptr noundef %8, ptr noundef %345)
  %346 = getelementptr inbounds %struct.strbuf, ptr %8, i32 0, i32 2
  %347 = load ptr, ptr %346, align 8, !tbaa !32
  %348 = load ptr, ptr %4, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.delta_options, ptr %348, i32 0, i32 12
  store ptr %347, ptr %349, align 8, !tbaa !23
  br label %369

350:                                              ; preds = %333
  br label %351

351:                                              ; preds = %350
  %352 = load ptr, ptr @stderr, align 8, !tbaa !5
  %353 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %352, ptr noundef @.str.2) #8
  %354 = load ptr, ptr @stderr, align 8, !tbaa !5
  %355 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %354, ptr noundef @.str.3) #8
  %356 = load ptr, ptr @stderr, align 8, !tbaa !5
  %357 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %356, ptr noundef @.str.4) #8
  %358 = load ptr, ptr @stderr, align 8, !tbaa !5
  %359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %358, ptr noundef @.str.5) #8
  %360 = load ptr, ptr @stderr, align 8, !tbaa !5
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  %362 = load i32, ptr %9, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds ptr, ptr %361, i64 %363
  %365 = load ptr, ptr %364, align 8, !tbaa !5
  %366 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %360, ptr noundef @.str.70, ptr noundef %365) #8
  call void @exit(i32 noundef 1) #11
  unreachable

367:                                              ; No predecessors!
  br label %368

368:                                              ; preds = %367
  br label %369

369:                                              ; preds = %368, %338
  br label %370

370:                                              ; preds = %369, %319
  %371 = load ptr, ptr %4, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.delta_options, ptr %371, i32 0, i32 6
  store i8 1, ptr %372, align 2, !tbaa !31
  br label %392

373:                                              ; preds = %274
  br label %374

374:                                              ; preds = %373
  %375 = load ptr, ptr @stderr, align 8, !tbaa !5
  %376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %375, ptr noundef @.str.2) #8
  %377 = load ptr, ptr @stderr, align 8, !tbaa !5
  %378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %377, ptr noundef @.str.3) #8
  %379 = load ptr, ptr @stderr, align 8, !tbaa !5
  %380 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %379, ptr noundef @.str.4) #8
  %381 = load ptr, ptr @stderr, align 8, !tbaa !5
  %382 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %381, ptr noundef @.str.5) #8
  %383 = load ptr, ptr @stderr, align 8, !tbaa !5
  %384 = load ptr, ptr %6, align 8, !tbaa !5
  %385 = load i32, ptr %9, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds ptr, ptr %384, i64 %386
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  %389 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %383, ptr noundef @.str.71, ptr noundef %388) #8
  call void @exit(i32 noundef 1) #11
  unreachable

390:                                              ; No predecessors!
  br label %391

391:                                              ; preds = %390
  br label %392

392:                                              ; preds = %391, %370
  br label %393

393:                                              ; preds = %392, %267
  br label %394

394:                                              ; preds = %393, %235
  br label %395

395:                                              ; preds = %394, %153
  br label %396

396:                                              ; preds = %395, %134
  br label %397

397:                                              ; preds = %396, %115
  br label %398

398:                                              ; preds = %397, %96
  br label %399

399:                                              ; preds = %398, %77
  br label %400

400:                                              ; preds = %399, %58
  br label %401

401:                                              ; preds = %400, %47
  br label %402

402:                                              ; preds = %401, %28
  store i32 0, ptr %10, align 4
  br label %403

403:                                              ; preds = %402, %310
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %7) #8
  %404 = load i32, ptr %10, align 4
  switch i32 %404, label %406 [
    i32 0, label %405
    i32 1, label %405
  ]

405:                                              ; preds = %403, %403
  ret void

406:                                              ; preds = %403
  unreachable
}

; Function Attrs: nounwind
declare i32 @stat(ptr noundef, ptr noundef) #1

declare void @get_peg_path_buf(ptr noundef, ptr noundef) #7

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { 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 #6 = { 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 #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { nounwind willreturn memory(none) }
attributes #11 = { noreturn 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 5}
!12 = !{!"delta_options", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !13, i64 5, !13, i64 6, !13, i64 7, !13, i64 8, !13, i64 9, !6, i64 16, !6, i64 24, !6, i64 32}
!13 = !{!"_Bool", !7, i64 0}
!14 = !{!12, !13, i64 0}
!15 = !{!12, !13, i64 3}
!16 = !{!12, !13, i64 2}
!17 = !{!12, !13, i64 7}
!18 = !{!12, !13, i64 4}
!19 = !{!12, !13, i64 8}
!20 = !{!12, !13, i64 9}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{!12, !6, i64 32}
!24 = !{!25, !10, i64 24}
!25 = !{!"stat", !26, i64 0, !26, i64 8, !26, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !26, i64 40, !26, i64 48, !26, i64 56, !26, i64 64, !27, i64 72, !27, i64 88, !27, i64 104, !7, i64 120}
!26 = !{!"long", !7, i64 0}
!27 = !{!"timespec", !26, i64 0, !26, i64 8}
!28 = !{!12, !13, i64 1}
!29 = !{!12, !6, i64 16}
!30 = !{!12, !6, i64 24}
!31 = !{!12, !13, i64 6}
!32 = !{!33, !6, i64 16}
!33 = !{!"strbuf", !26, i64 0, !26, i64 8, !6, i64 16}


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

%struct.strbuf = type { i64, i64, ptr }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }

@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [8 x i8], align 1
@__const.delta_parse_single_option.path = external hidden unnamed_addr constant %struct.strbuf, align 8
@.str.55 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [21 x i8], align 1

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

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

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nounwind
declare ptr @strerror(i32 noundef) local_unnamed_addr #6

; Function Attrs: nounwind uwtable
define dso_local void @delta_parse_single_option(ptr nocapture noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2) local_unnamed_addr #7 {
  %4 = alloca %struct.stat, align 8
  %5 = alloca %struct.strbuf, align 8
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) @__const.delta_parse_single_option.path, i64 24, i1 false)
  %6 = load i32, ptr %1, align 4, !tbaa !5
  %7 = sext i32 %6 to i64
  %8 = getelementptr inbounds ptr, ptr %2, i64 %7
  %9 = load ptr, ptr %8, align 8, !tbaa !9
  %10 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.55, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not = icmp eq i32 %10, 0
  br i1 %.not, label %13, label %11

11:                                               ; preds = %3
  %12 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.56, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not86 = icmp eq i32 %12, 0
  br i1 %.not86, label %13, label %15

13:                                               ; preds = %11, %3
  %14 = getelementptr inbounds i8, ptr %0, i64 5
  store i8 1, ptr %14, align 1, !tbaa !11
  br label %151

15:                                               ; preds = %11
  %16 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.57, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not87 = icmp eq i32 %16, 0
  br i1 %.not87, label %19, label %17

17:                                               ; preds = %15
  %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.58, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not88 = icmp eq i32 %18, 0
  br i1 %.not88, label %19, label %20

19:                                               ; preds = %17, %15
  store i8 1, ptr %0, align 8, !tbaa !14
  br label %151

20:                                               ; preds = %17
  %21 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.59, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not89 = icmp eq i32 %21, 0
  br i1 %.not89, label %22, label %24

22:                                               ; preds = %20
  %23 = getelementptr inbounds i8, ptr %0, i64 3
  store i8 1, ptr %23, align 1, !tbaa !15
  br label %151

24:                                               ; preds = %20
  %25 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.60, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not90 = icmp eq i32 %25, 0
  br i1 %.not90, label %28, label %26

26:                                               ; preds = %24
  %27 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.61, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not91 = icmp eq i32 %27, 0
  br i1 %.not91, label %28, label %30

28:                                               ; preds = %26, %24
  %29 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %29, align 2, !tbaa !16
  br label %151

30:                                               ; preds = %26
  %31 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.62, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not92 = icmp eq i32 %31, 0
  br i1 %.not92, label %34, label %32

32:                                               ; preds = %30
  %33 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.63, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not93 = icmp eq i32 %33, 0
  br i1 %.not93, label %34, label %36

34:                                               ; preds = %32, %30
  %35 = getelementptr inbounds i8, ptr %0, i64 7
  store i8 1, ptr %35, align 1, !tbaa !17
  br label %151

36:                                               ; preds = %32
  %37 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.64, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not94 = icmp eq i32 %37, 0
  br i1 %.not94, label %40, label %38

38:                                               ; preds = %36
  %39 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.65, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not95 = icmp eq i32 %39, 0
  br i1 %.not95, label %40, label %42

40:                                               ; preds = %38, %36
  %41 = getelementptr inbounds i8, ptr %0, i64 4
  store i8 1, ptr %41, align 4, !tbaa !18
  br label %151

42:                                               ; preds = %38
  %43 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.66, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not96 = icmp eq i32 %43, 0
  br i1 %.not96, label %46, label %44

44:                                               ; preds = %42
  %45 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.67, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not97 = icmp eq i32 %45, 0
  br i1 %.not97, label %46, label %48

46:                                               ; preds = %44, %42
  %47 = getelementptr inbounds i8, ptr %0, i64 8
  store i8 1, ptr %47, align 8, !tbaa !19
  br label %151

48:                                               ; preds = %44
  %49 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.68, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not98 = icmp eq i32 %49, 0
  br i1 %.not98, label %52, label %50

50:                                               ; preds = %48
  %51 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.69, ptr noundef nonnull dereferenceable(1) %9) #10
  %.not99 = icmp eq i32 %51, 0
  br i1 %.not99, label %52, label %54

52:                                               ; preds = %50, %48
  %53 = getelementptr inbounds i8, ptr %0, i64 9
  store i8 1, ptr %53, align 1, !tbaa !20
  br label %151

54:                                               ; preds = %50
  %55 = getelementptr inbounds i8, ptr %0, i64 2
  %56 = load i8, ptr %55, align 2, !tbaa !16, !range !21, !noundef !22
  %57 = trunc nuw i8 %56 to i1
  %58 = getelementptr inbounds i8, ptr %0, i64 3
  %59 = load i8, ptr %58, align 1, !tbaa !15, !range !21, !noundef !22
  %60 = trunc nuw i8 %59 to i1
  br i1 %57, label %61, label %.thread

61:                                               ; preds = %54
  br i1 %60, label %100, label %62

62:                                               ; preds = %61
  %63 = getelementptr inbounds i8, ptr %0, i64 32
  store ptr %9, ptr %63, align 8, !tbaa !23
  %64 = call i32 @stat(ptr noundef %9, ptr noundef nonnull %4) #9
  %65 = icmp slt i32 %64, 0
  br i1 %65, label %66, label %81

66:                                               ; preds = %62
  %67 = load ptr, ptr @stderr, align 8, !tbaa !9
  %68 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %67, ptr noundef nonnull @.str.2) #11
  %69 = load ptr, ptr @stderr, align 8, !tbaa !9
  %70 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %69, ptr noundef nonnull @.str.3) #11
  %71 = load ptr, ptr @stderr, align 8, !tbaa !9
  %72 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %71, ptr noundef nonnull @.str.4) #11
  %73 = load ptr, ptr @stderr, align 8, !tbaa !9
  %74 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %73, ptr noundef nonnull @.str.5) #11
  %75 = load ptr, ptr @stderr, align 8, !tbaa !9
  %76 = load ptr, ptr %63, align 8, !tbaa !23
  %77 = tail call ptr @__errno_location() #12
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = tail call ptr @strerror(i32 noundef %78) #9
  %80 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %75, ptr noundef nonnull @.str.49, ptr noundef %76, ptr noundef %79) #11
  tail call void @exit(i32 noundef -1) #13
  unreachable

81:                                               ; preds = %62
  %82 = getelementptr inbounds i8, ptr %4, i64 24
  %83 = load i32, ptr %82, align 8, !tbaa !24
  %84 = trunc i32 %83 to i16
  %trunc = and i16 %84, -4096
  switch i16 %trunc, label %88 [
    i16 16384, label %85
    i16 -32768, label %87
  ]

85:                                               ; preds = %81
  %86 = getelementptr inbounds i8, ptr %0, i64 1
  store i8 1, ptr %86, align 1, !tbaa !28
  br label %151

87:                                               ; preds = %81
  store i8 1, ptr %55, align 2, !tbaa !16
  br label %151

88:                                               ; preds = %81
  %89 = load ptr, ptr @stderr, align 8, !tbaa !9
  %90 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %89, ptr noundef nonnull @.str.2) #11
  %91 = load ptr, ptr @stderr, align 8, !tbaa !9
  %92 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %91, ptr noundef nonnull @.str.3) #11
  %93 = load ptr, ptr @stderr, align 8, !tbaa !9
  %94 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %93, ptr noundef nonnull @.str.4) #11
  %95 = load ptr, ptr @stderr, align 8, !tbaa !9
  %96 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %95, ptr noundef nonnull @.str.5) #11
  %97 = load ptr, ptr @stderr, align 8, !tbaa !9
  %98 = load ptr, ptr %8, align 8, !tbaa !9
  %99 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %97, ptr noundef nonnull @.str.70, ptr noundef %98) #11
  tail call void @exit(i32 noundef 1) #13
  unreachable

100:                                              ; preds = %61
  %brmerge.demorgan106 = and i8 %59, %56
  %brmerge.demorgan = trunc nuw i8 %brmerge.demorgan106 to i1
  br i1 %brmerge.demorgan, label %139, label %.thread103

.thread:                                          ; preds = %54
  br i1 %60, label %101, label %.thread103

101:                                              ; preds = %.thread
  %102 = getelementptr inbounds i8, ptr %0, i64 16
  %103 = load ptr, ptr %102, align 8, !tbaa !29
  %.not100 = icmp eq ptr %103, null
  br i1 %.not100, label %106, label %104

104:                                              ; preds = %101
  %105 = getelementptr inbounds i8, ptr %0, i64 24
  store ptr %9, ptr %105, align 8, !tbaa !30
  br label %151

106:                                              ; preds = %101
  store ptr %9, ptr %102, align 8, !tbaa !29
  br label %151

.thread103:                                       ; preds = %100, %.thread
  %107 = call i32 @stat(ptr noundef %9, ptr noundef nonnull %4) #9
  %108 = icmp slt i32 %107, 0
  br i1 %108, label %109, label %115

109:                                              ; preds = %.thread103
  store i8 1, ptr %58, align 1, !tbaa !15
  %110 = getelementptr inbounds i8, ptr %0, i64 16
  %111 = load ptr, ptr %110, align 8, !tbaa !29
  %.not101 = icmp eq ptr %111, null
  %112 = load ptr, ptr %8, align 8, !tbaa !9
  %113 = getelementptr inbounds i8, ptr %0, i64 24
  %.sink = select i1 %.not101, ptr %110, ptr %113
  store ptr %112, ptr %.sink, align 8, !tbaa !9
  %114 = getelementptr inbounds i8, ptr %0, i64 6
  store i8 1, ptr %114, align 2, !tbaa !31
  br label %151

115:                                              ; preds = %.thread103
  %116 = getelementptr inbounds i8, ptr %4, i64 24
  %117 = load i32, ptr %116, align 8, !tbaa !24
  %118 = trunc i32 %117 to i16
  %trunc107 = and i16 %118, -4096
  switch i16 %trunc107, label %121 [
    i16 16384, label %119
    i16 -32768, label %133
  ]

119:                                              ; preds = %115
  %120 = getelementptr inbounds i8, ptr %0, i64 1
  store i8 1, ptr %120, align 1, !tbaa !28
  br label %133

121:                                              ; preds = %115
  %122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %123 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %122, ptr noundef nonnull @.str.2) #11
  %124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %125 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %124, ptr noundef nonnull @.str.3) #11
  %126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %127 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %126, ptr noundef nonnull @.str.4) #11
  %128 = load ptr, ptr @stderr, align 8, !tbaa !9
  %129 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %128, ptr noundef nonnull @.str.5) #11
  %130 = load ptr, ptr @stderr, align 8, !tbaa !9
  %131 = load ptr, ptr %8, align 8, !tbaa !9
  %132 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %130, ptr noundef nonnull @.str.70, ptr noundef %131) #11
  tail call void @exit(i32 noundef 1) #13
  unreachable

133:                                              ; preds = %115, %119
  store i8 1, ptr %55, align 2, !tbaa !16
  %134 = load ptr, ptr %8, align 8, !tbaa !9
  call void @get_peg_path_buf(ptr noundef nonnull %5, ptr noundef %134) #9
  %135 = getelementptr inbounds i8, ptr %5, i64 16
  %136 = load ptr, ptr %135, align 8, !tbaa !32
  %137 = getelementptr inbounds i8, ptr %0, i64 32
  store ptr %136, ptr %137, align 8, !tbaa !23
  %138 = getelementptr inbounds i8, ptr %0, i64 6
  store i8 1, ptr %138, align 2, !tbaa !31
  br label %151

139:                                              ; preds = %100
  %140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %141 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %140, ptr noundef nonnull @.str.2) #11
  %142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %143 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef nonnull @.str.3) #11
  %144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %145 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %144, ptr noundef nonnull @.str.4) #11
  %146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %147 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %146, ptr noundef nonnull @.str.5) #11
  %148 = load ptr, ptr @stderr, align 8, !tbaa !9
  %149 = load ptr, ptr %8, align 8, !tbaa !9
  %150 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef nonnull @.str.71, ptr noundef %149) #11
  tail call void @exit(i32 noundef 1) #13
  unreachable

151:                                              ; preds = %13, %22, %34, %46, %87, %85, %104, %106, %133, %52, %40, %28, %19, %109
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %4) #9
  ret void
}

; Function Attrs: nofree nounwind
declare noundef i32 @stat(ptr nocapture noundef readonly, ptr nocapture noundef) local_unnamed_addr #1

declare void @get_peg_path_buf(ptr noundef, ptr noundef) local_unnamed_addr #8

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { 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 #6 = { 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 = { 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 #8 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { nounwind willreturn memory(read) }
attributes #11 = { cold nounwind }
attributes #12 = { nounwind willreturn memory(none) }
attributes #13 = { noreturn 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 = !{!"int", !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, !13, i64 5}
!12 = !{!"delta_options", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !13, i64 5, !13, i64 6, !13, i64 7, !13, i64 8, !13, i64 9, !10, i64 16, !10, i64 24, !10, i64 32}
!13 = !{!"_Bool", !7, i64 0}
!14 = !{!12, !13, i64 0}
!15 = !{!12, !13, i64 3}
!16 = !{!12, !13, i64 2}
!17 = !{!12, !13, i64 7}
!18 = !{!12, !13, i64 4}
!19 = !{!12, !13, i64 8}
!20 = !{!12, !13, i64 9}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{!12, !10, i64 32}
!24 = !{!25, !6, i64 24}
!25 = !{!"stat", !26, i64 0, !26, i64 8, !26, i64 16, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !26, i64 40, !26, i64 48, !26, i64 56, !26, i64 64, !27, i64 72, !27, i64 88, !27, i64 104, !7, i64 120}
!26 = !{!"long", !7, i64 0}
!27 = !{!"timespec", !26, i64 0, !26, i64 8}
!28 = !{!12, !13, i64 1}
!29 = !{!12, !10, i64 16}
!30 = !{!12, !10, i64 24}
!31 = !{!12, !13, i64 6}
!32 = !{!33, !10, i64 16}
!33 = !{!"strbuf", !26, i64 0, !26, i64 8, !10, i64 16}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass