; LLVM IR from clibs/clib :: test/package (package-new-from-slug)

; 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.clib_package_t = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32 }

@__assert_failures = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [27 x i8], align 1
@stderr = external global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [81 x i8], align 1
@__assert_bail = external hidden global i32, align 4
@.str.9 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [10 x i8], align 1
@__const.main.expected = external hidden unnamed_addr constant [315 x i8], align 16
@.str.33 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @__describe_after_spec(ptr noundef, i32 noundef) #0

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

27:                                               ; preds = %408, %0
  %28 = load i32, ptr %2, align 4, !tbaa !5
  %29 = add nsw i32 %28, 1
  store i32 %29, ptr %2, align 4, !tbaa !5
  %30 = icmp eq i32 %28, 0
  br i1 %30, label %31, label %34

31:                                               ; preds = %27
  %32 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, ptr noundef @.str.5)
  %33 = icmp ne i32 %32, 0
  br label %34

34:                                               ; preds = %31, %27
  %35 = phi i1 [ false, %27 ], [ %33, %31 ]
  br i1 %35, label %37, label %36

36:                                               ; preds = %34
  store i32 2, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #7
  br label %410

37:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  %38 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  store i32 %38, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  store i32 0, ptr %5, align 4, !tbaa !5
  br label %39

39:                                               ; preds = %60, %37
  %40 = load i32, ptr %5, align 4, !tbaa !5
  %41 = add nsw i32 %40, 1
  store i32 %41, ptr %5, align 4, !tbaa !5
  %42 = icmp eq i32 %40, 0
  br i1 %42, label %44, label %43

43:                                               ; preds = %39
  store i32 5, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  br label %62

44:                                               ; preds = %39
  br label %45

45:                                               ; preds = %44
  %46 = call ptr @clib_package_new_from_slug(ptr noundef null, i32 noundef 0)
  %47 = icmp eq ptr null, %46
  br i1 %47, label %57, label %48

48:                                               ; preds = %45
  %49 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %50 = add nsw i32 %49, 1
  store i32 %50, ptr @__assert_failures, align 4, !tbaa !5
  %51 = load ptr, ptr @stderr, align 8, !tbaa !9
  %52 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %51, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef @.str.8, i32 noundef 14) #7
  %53 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %54 = icmp ne i32 %53, 0
  br i1 %54, label %55, label %56

55:                                               ; preds = %48
  call void @abort() #8
  unreachable

56:                                               ; preds = %48
  br label %57

57:                                               ; preds = %56, %45
  br label %58

58:                                               ; preds = %57
  br label %59

59:                                               ; preds = %58
  br label %60

60:                                               ; preds = %59
  %61 = load i32, ptr %4, align 4, !tbaa !5
  call void @__describe_after_spec(ptr noundef @.str.9, i32 noundef %61)
  br label %39, !llvm.loop !11

62:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  %63 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  store i32 %63, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %64

64:                                               ; preds = %85, %62
  %65 = load i32, ptr %7, align 4, !tbaa !5
  %66 = add nsw i32 %65, 1
  store i32 %66, ptr %7, align 4, !tbaa !5
  %67 = icmp eq i32 %65, 0
  br i1 %67, label %69, label %68

68:                                               ; preds = %64
  store i32 10, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %87

69:                                               ; preds = %64
  br label %70

70:                                               ; preds = %69
  %71 = call ptr @clib_package_new_from_slug(ptr noundef @.str.10, i32 noundef 0)
  %72 = icmp eq ptr null, %71
  br i1 %72, label %82, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %75 = add nsw i32 %74, 1
  store i32 %75, ptr @__assert_failures, align 4, !tbaa !5
  %76 = load ptr, ptr @stderr, align 8, !tbaa !9
  %77 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %76, ptr noundef @.str.6, ptr noundef @.str.11, ptr noundef @.str.8, i32 noundef 18) #7
  %78 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %79 = icmp ne i32 %78, 0
  br i1 %79, label %80, label %81

80:                                               ; preds = %73
  call void @abort() #8
  unreachable

81:                                               ; preds = %73
  br label %82

82:                                               ; preds = %81, %70
  br label %83

83:                                               ; preds = %82
  br label %84

84:                                               ; preds = %83
  br label %85

85:                                               ; preds = %84
  %86 = load i32, ptr %6, align 4, !tbaa !5
  call void @__describe_after_spec(ptr noundef @.str.12, i32 noundef %86)
  br label %64, !llvm.loop !13

87:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %88 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  store i32 %88, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %89

89:                                               ; preds = %110, %87
  %90 = load i32, ptr %9, align 4, !tbaa !5
  %91 = add nsw i32 %90, 1
  store i32 %91, ptr %9, align 4, !tbaa !5
  %92 = icmp eq i32 %90, 0
  br i1 %92, label %94, label %93

93:                                               ; preds = %89
  store i32 15, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %112

94:                                               ; preds = %89
  br label %95

95:                                               ; preds = %94
  %96 = call ptr @clib_package_new_from_slug(ptr noundef @.str.13, i32 noundef 0)
  %97 = icmp eq ptr null, %96
  br i1 %97, label %107, label %98

98:                                               ; preds = %95
  %99 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %100 = add nsw i32 %99, 1
  store i32 %100, ptr @__assert_failures, align 4, !tbaa !5
  %101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %102 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %101, ptr noundef @.str.6, ptr noundef @.str.14, ptr noundef @.str.8, i32 noundef 22) #7
  %103 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %104 = icmp ne i32 %103, 0
  br i1 %104, label %105, label %106

105:                                              ; preds = %98
  call void @abort() #8
  unreachable

106:                                              ; preds = %98
  br label %107

107:                                              ; preds = %106, %95
  br label %108

108:                                              ; preds = %107
  br label %109

109:                                              ; preds = %108
  br label %110

110:                                              ; preds = %109
  %111 = load i32, ptr %8, align 4, !tbaa !5
  call void @__describe_after_spec(ptr noundef @.str.15, i32 noundef %111)
  br label %89, !llvm.loop !14

112:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  %113 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  store i32 %113, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 0, ptr %11, align 4, !tbaa !5
  br label %114

114:                                              ; preds = %242, %112
  %115 = load i32, ptr %11, align 4, !tbaa !5
  %116 = add nsw i32 %115, 1
  store i32 %116, ptr %11, align 4, !tbaa !5
  %117 = icmp eq i32 %115, 0
  br i1 %117, label %119, label %118

118:                                              ; preds = %114
  store i32 20, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %244

119:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %120 = call ptr @clib_package_new_from_slug(ptr noundef @.str.16, i32 noundef 0)
  store ptr %120, ptr %12, align 8, !tbaa !9
  br label %121

121:                                              ; preds = %119
  %122 = load ptr, ptr %12, align 8, !tbaa !9
  %123 = icmp ne ptr %122, null
  br i1 %123, label %133, label %124

124:                                              ; preds = %121
  %125 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr @__assert_failures, align 4, !tbaa !5
  %127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %128 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %127, ptr noundef @.str.6, ptr noundef @.str.17, ptr noundef @.str.8, i32 noundef 28) #7
  %129 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %132

131:                                              ; preds = %124
  call void @abort() #8
  unreachable

132:                                              ; preds = %124
  br label %133

133:                                              ; preds = %132, %121
  br label %134

134:                                              ; preds = %133
  br label %135

135:                                              ; preds = %134
  br label %136

136:                                              ; preds = %135
  %137 = load ptr, ptr %12, align 8, !tbaa !9
  %138 = getelementptr inbounds %struct.clib_package_t, ptr %137, i32 0, i32 6
  %139 = load ptr, ptr %138, align 8, !tbaa !15
  %140 = call i32 @strcmp(ptr noundef @.str.18, ptr noundef %139) #9
  %141 = icmp ne i32 0, %140
  br i1 %141, label %142, label %154

142:                                              ; preds = %136
  %143 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %144 = add nsw i32 %143, 1
  store i32 %144, ptr @__assert_failures, align 4, !tbaa !5
  %145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %146 = load ptr, ptr %12, align 8, !tbaa !9
  %147 = getelementptr inbounds %struct.clib_package_t, ptr %146, i32 0, i32 6
  %148 = load ptr, ptr %147, align 8, !tbaa !15
  %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %145, ptr noundef @.str.19, ptr noundef @.str.18, ptr noundef %148, ptr noundef @.str.8, i32 noundef 29) #7
  %150 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %153

152:                                              ; preds = %142
  call void @abort() #8
  unreachable

153:                                              ; preds = %142
  br label %154

154:                                              ; preds = %153, %136
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %155
  br label %157

157:                                              ; preds = %156
  %158 = load ptr, ptr %12, align 8, !tbaa !9
  %159 = getelementptr inbounds %struct.clib_package_t, ptr %158, i32 0, i32 10
  %160 = load ptr, ptr %159, align 8, !tbaa !17
  %161 = call i32 @strcmp(ptr noundef @.str.20, ptr noundef %160) #9
  %162 = icmp ne i32 0, %161
  br i1 %162, label %163, label %175

163:                                              ; preds = %157
  %164 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr @__assert_failures, align 4, !tbaa !5
  %166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %167 = load ptr, ptr %12, align 8, !tbaa !9
  %168 = getelementptr inbounds %struct.clib_package_t, ptr %167, i32 0, i32 10
  %169 = load ptr, ptr %168, align 8, !tbaa !17
  %170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %166, ptr noundef @.str.19, ptr noundef @.str.20, ptr noundef %169, ptr noundef @.str.8, i32 noundef 30) #7
  %171 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %163
  call void @abort() #8
  unreachable

174:                                              ; preds = %163
  br label %175

175:                                              ; preds = %174, %157
  br label %176

176:                                              ; preds = %175
  br label %177

177:                                              ; preds = %176
  br label %178

178:                                              ; preds = %177
  %179 = load ptr, ptr %12, align 8, !tbaa !9
  %180 = getelementptr inbounds %struct.clib_package_t, ptr %179, i32 0, i32 7
  %181 = load ptr, ptr %180, align 8, !tbaa !18
  %182 = call i32 @strcmp(ptr noundef @.str.21, ptr noundef %181) #9
  %183 = icmp ne i32 0, %182
  br i1 %183, label %184, label %196

184:                                              ; preds = %178
  %185 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %186 = add nsw i32 %185, 1
  store i32 %186, ptr @__assert_failures, align 4, !tbaa !5
  %187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %188 = load ptr, ptr %12, align 8, !tbaa !9
  %189 = getelementptr inbounds %struct.clib_package_t, ptr %188, i32 0, i32 7
  %190 = load ptr, ptr %189, align 8, !tbaa !18
  %191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %187, ptr noundef @.str.19, ptr noundef @.str.21, ptr noundef %190, ptr noundef @.str.8, i32 noundef 31) #7
  %192 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %184
  call void @abort() #8
  unreachable

195:                                              ; preds = %184
  br label %196

196:                                              ; preds = %195, %178
  br label %197

197:                                              ; preds = %196
  br label %198

198:                                              ; preds = %197
  br label %199

199:                                              ; preds = %198
  %200 = load ptr, ptr %12, align 8, !tbaa !9
  %201 = getelementptr inbounds %struct.clib_package_t, ptr %200, i32 0, i32 5
  %202 = load ptr, ptr %201, align 8, !tbaa !19
  %203 = call i32 @strcmp(ptr noundef @.str.22, ptr noundef %202) #9
  %204 = icmp ne i32 0, %203
  br i1 %204, label %205, label %217

205:                                              ; preds = %199
  %206 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr @__assert_failures, align 4, !tbaa !5
  %208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %209 = load ptr, ptr %12, align 8, !tbaa !9
  %210 = getelementptr inbounds %struct.clib_package_t, ptr %209, i32 0, i32 5
  %211 = load ptr, ptr %210, align 8, !tbaa !19
  %212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %208, ptr noundef @.str.19, ptr noundef @.str.22, ptr noundef %211, ptr noundef @.str.8, i32 noundef 32) #7
  %213 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %216

215:                                              ; preds = %205
  call void @abort() #8
  unreachable

216:                                              ; preds = %205
  br label %217

217:                                              ; preds = %216, %199
  br label %218

218:                                              ; preds = %217
  br label %219

219:                                              ; preds = %218
  br label %220

220:                                              ; preds = %219
  %221 = load ptr, ptr %12, align 8, !tbaa !9
  %222 = getelementptr inbounds %struct.clib_package_t, ptr %221, i32 0, i32 1
  %223 = load ptr, ptr %222, align 8, !tbaa !20
  %224 = call i32 @strcmp(ptr noundef @.str.23, ptr noundef %223) #9
  %225 = icmp ne i32 0, %224
  br i1 %225, label %226, label %238

226:                                              ; preds = %220
  %227 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr @__assert_failures, align 4, !tbaa !5
  %229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %230 = load ptr, ptr %12, align 8, !tbaa !9
  %231 = getelementptr inbounds %struct.clib_package_t, ptr %230, i32 0, i32 1
  %232 = load ptr, ptr %231, align 8, !tbaa !20
  %233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %229, ptr noundef @.str.19, ptr noundef @.str.23, ptr noundef %232, ptr noundef @.str.8, i32 noundef 33) #7
  %234 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %237

236:                                              ; preds = %226
  call void @abort() #8
  unreachable

237:                                              ; preds = %226
  br label %238

238:                                              ; preds = %237, %220
  br label %239

239:                                              ; preds = %238
  br label %240

240:                                              ; preds = %239
  %241 = load ptr, ptr %12, align 8, !tbaa !9
  call void @clib_package_free(ptr noundef %241)
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %242

242:                                              ; preds = %240
  %243 = load i32, ptr %10, align 4, !tbaa !5
  call void @__describe_after_spec(ptr noundef @.str.24, i32 noundef %243)
  br label %114, !llvm.loop !21

244:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  %245 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  store i32 %245, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %246

246:                                              ; preds = %290, %244
  %247 = load i32, ptr %14, align 4, !tbaa !5
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr %14, align 4, !tbaa !5
  %249 = icmp eq i32 %247, 0
  br i1 %249, label %251, label %250

250:                                              ; preds = %246
  store i32 35, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %292

251:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %252 = call ptr @clib_package_new_from_slug(ptr noundef @.str.25, i32 noundef 0)
  store ptr %252, ptr %15, align 8, !tbaa !9
  br label %253

253:                                              ; preds = %251
  %254 = load ptr, ptr %15, align 8, !tbaa !9
  %255 = icmp ne ptr %254, null
  br i1 %255, label %265, label %256

256:                                              ; preds = %253
  %257 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr @__assert_failures, align 4, !tbaa !5
  %259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %260 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %259, ptr noundef @.str.6, ptr noundef @.str.17, ptr noundef @.str.8, i32 noundef 40) #7
  %261 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %263, label %264

263:                                              ; preds = %256
  call void @abort() #8
  unreachable

264:                                              ; preds = %256
  br label %265

265:                                              ; preds = %264, %253
  br label %266

266:                                              ; preds = %265
  br label %267

267:                                              ; preds = %266
  br label %268

268:                                              ; preds = %267
  %269 = load ptr, ptr %15, align 8, !tbaa !9
  %270 = getelementptr inbounds %struct.clib_package_t, ptr %269, i32 0, i32 10
  %271 = load ptr, ptr %270, align 8, !tbaa !17
  %272 = call i32 @strcmp(ptr noundef @.str.26, ptr noundef %271) #9
  %273 = icmp ne i32 0, %272
  br i1 %273, label %274, label %286

274:                                              ; preds = %268
  %275 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr @__assert_failures, align 4, !tbaa !5
  %277 = load ptr, ptr @stderr, align 8, !tbaa !9
  %278 = load ptr, ptr %15, align 8, !tbaa !9
  %279 = getelementptr inbounds %struct.clib_package_t, ptr %278, i32 0, i32 10
  %280 = load ptr, ptr %279, align 8, !tbaa !17
  %281 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %277, ptr noundef @.str.19, ptr noundef @.str.26, ptr noundef %280, ptr noundef @.str.8, i32 noundef 41) #7
  %282 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %285

284:                                              ; preds = %274
  call void @abort() #8
  unreachable

285:                                              ; preds = %274
  br label %286

286:                                              ; preds = %285, %268
  br label %287

287:                                              ; preds = %286
  br label %288

288:                                              ; preds = %287
  %289 = load ptr, ptr %15, align 8, !tbaa !9
  call void @clib_package_free(ptr noundef %289)
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %290

290:                                              ; preds = %288
  %291 = load i32, ptr %13, align 4, !tbaa !5
  call void @__describe_after_spec(ptr noundef @.str.27, i32 noundef %291)
  br label %246, !llvm.loop !22

292:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %293 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  store i32 %293, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %294

294:                                              ; preds = %338, %292
  %295 = load i32, ptr %17, align 4, !tbaa !5
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr %17, align 4, !tbaa !5
  %297 = icmp eq i32 %295, 0
  br i1 %297, label %299, label %298

298:                                              ; preds = %294
  store i32 42, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %340

299:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %300 = call ptr @clib_package_new_from_slug(ptr noundef @.str.28, i32 noundef 0)
  store ptr %300, ptr %18, align 8, !tbaa !9
  br label %301

301:                                              ; preds = %299
  %302 = load ptr, ptr %18, align 8, !tbaa !9
  %303 = icmp ne ptr %302, null
  br i1 %303, label %313, label %304

304:                                              ; preds = %301
  %305 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %306 = add nsw i32 %305, 1
  store i32 %306, ptr @__assert_failures, align 4, !tbaa !5
  %307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %307, ptr noundef @.str.6, ptr noundef @.str.17, ptr noundef @.str.8, i32 noundef 48) #7
  %309 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %310 = icmp ne i32 %309, 0
  br i1 %310, label %311, label %312

311:                                              ; preds = %304
  call void @abort() #8
  unreachable

312:                                              ; preds = %304
  br label %313

313:                                              ; preds = %312, %301
  br label %314

314:                                              ; preds = %313
  br label %315

315:                                              ; preds = %314
  br label %316

316:                                              ; preds = %315
  %317 = load ptr, ptr %18, align 8, !tbaa !9
  %318 = getelementptr inbounds %struct.clib_package_t, ptr %317, i32 0, i32 10
  %319 = load ptr, ptr %318, align 8, !tbaa !17
  %320 = call i32 @strcmp(ptr noundef @.str.29, ptr noundef %319) #9
  %321 = icmp ne i32 0, %320
  br i1 %321, label %322, label %334

322:                                              ; preds = %316
  %323 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %324 = add nsw i32 %323, 1
  store i32 %324, ptr @__assert_failures, align 4, !tbaa !5
  %325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %326 = load ptr, ptr %18, align 8, !tbaa !9
  %327 = getelementptr inbounds %struct.clib_package_t, ptr %326, i32 0, i32 10
  %328 = load ptr, ptr %327, align 8, !tbaa !17
  %329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %325, ptr noundef @.str.19, ptr noundef @.str.29, ptr noundef %328, ptr noundef @.str.8, i32 noundef 49) #7
  %330 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %333

332:                                              ; preds = %322
  call void @abort() #8
  unreachable

333:                                              ; preds = %322
  br label %334

334:                                              ; preds = %333, %316
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335
  %337 = load ptr, ptr %18, align 8, !tbaa !9
  call void @clib_package_free(ptr noundef %337)
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %338

338:                                              ; preds = %336
  %339 = load i32, ptr %16, align 4, !tbaa !5
  call void @__describe_after_spec(ptr noundef @.str.30, i32 noundef %339)
  br label %294, !llvm.loop !23

340:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %341 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  store i32 %341, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %342

342:                                              ; preds = %405, %340
  %343 = load i32, ptr %20, align 4, !tbaa !5
  %344 = add nsw i32 %343, 1
  store i32 %344, ptr %20, align 4, !tbaa !5
  %345 = icmp eq i32 %343, 0
  br i1 %345, label %347, label %346

346:                                              ; preds = %342
  store i32 49, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %407

347:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %348 = call ptr @clib_package_new_from_slug(ptr noundef @.str.31, i32 noundef 0)
  store ptr %348, ptr %21, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %347
  %350 = load ptr, ptr %21, align 8, !tbaa !9
  %351 = icmp ne ptr %350, null
  br i1 %351, label %361, label %352

352:                                              ; preds = %349
  %353 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %354 = add nsw i32 %353, 1
  store i32 %354, ptr @__assert_failures, align 4, !tbaa !5
  %355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %355, ptr noundef @.str.6, ptr noundef @.str.17, ptr noundef @.str.8, i32 noundef 56) #7
  %357 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %358 = icmp ne i32 %357, 0
  br i1 %358, label %359, label %360

359:                                              ; preds = %352
  call void @abort() #8
  unreachable

360:                                              ; preds = %352
  br label %361

361:                                              ; preds = %360, %349
  br label %362

362:                                              ; preds = %361
  br label %363

363:                                              ; preds = %362
  br label %364

364:                                              ; preds = %363
  %365 = load ptr, ptr %21, align 8, !tbaa !9
  %366 = getelementptr inbounds %struct.clib_package_t, ptr %365, i32 0, i32 4
  %367 = load ptr, ptr %366, align 8, !tbaa !24
  %368 = icmp ne ptr %367, null
  br i1 %368, label %378, label %369

369:                                              ; preds = %364
  %370 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr @__assert_failures, align 4, !tbaa !5
  %372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %373 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %372, ptr noundef @.str.6, ptr noundef @.str.32, ptr noundef @.str.8, i32 noundef 57) #7
  %374 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %377

376:                                              ; preds = %369
  call void @abort() #8
  unreachable

377:                                              ; preds = %369
  br label %378

378:                                              ; preds = %377, %364
  br label %379

379:                                              ; preds = %378
  br label %380

380:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 315, ptr %22) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %22, ptr align 16 @__const.main.expected, i64 315, i1 false)
  br label %381

381:                                              ; preds = %380
  %382 = getelementptr inbounds [315 x i8], ptr %22, i64 0, i64 0
  %383 = load ptr, ptr %21, align 8, !tbaa !9
  %384 = getelementptr inbounds %struct.clib_package_t, ptr %383, i32 0, i32 4
  %385 = load ptr, ptr %384, align 8, !tbaa !24
  %386 = call i32 @strcmp(ptr noundef %382, ptr noundef %385) #9
  %387 = icmp ne i32 0, %386
  br i1 %387, label %388, label %401

388:                                              ; preds = %381
  %389 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %390 = add nsw i32 %389, 1
  store i32 %390, ptr @__assert_failures, align 4, !tbaa !5
  %391 = load ptr, ptr @stderr, align 8, !tbaa !9
  %392 = getelementptr inbounds [315 x i8], ptr %22, i64 0, i64 0
  %393 = load ptr, ptr %21, align 8, !tbaa !9
  %394 = getelementptr inbounds %struct.clib_package_t, ptr %393, i32 0, i32 4
  %395 = load ptr, ptr %394, align 8, !tbaa !24
  %396 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %391, ptr noundef @.str.19, ptr noundef %392, ptr noundef %395, ptr noundef @.str.8, i32 noundef 74) #7
  %397 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %398 = icmp ne i32 %397, 0
  br i1 %398, label %399, label %400

399:                                              ; preds = %388
  call void @abort() #8
  unreachable

400:                                              ; preds = %388
  br label %401

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

402:                                              ; preds = %401
  br label %403

403:                                              ; preds = %402
  %404 = load ptr, ptr %21, align 8, !tbaa !9
  call void @clib_package_free(ptr noundef %404)
  call void @llvm.lifetime.end.p0(i64 315, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %405

405:                                              ; preds = %403
  %406 = load i32, ptr %19, align 4, !tbaa !5
  call void @__describe_after_spec(ptr noundef @.str.33, i32 noundef %406)
  br label %342, !llvm.loop !25

407:                                              ; preds = %346
  br label %408

408:                                              ; preds = %407
  %409 = call i32 (ptr, ...) @printf(ptr noundef @.str.34)
  br label %27, !llvm.loop !26

410:                                              ; preds = %36
  call void @curl_global_cleanup()
  call void (...) @clib_package_cleanup()
  %411 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  ret i32 %411
}

declare i32 @curl_global_init(i64 noundef) #1

declare i32 @clib_cache_init(i64 noundef) #1

declare i32 @rimraf(ptr noundef) #1

declare ptr @clib_cache_dir() #1

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

declare i32 @printf(ptr noundef, ...) #1

declare ptr @clib_package_new_from_slug(ptr noundef, i32 noundef) #1

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

; Function Attrs: noreturn nounwind
declare void @abort() #4

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

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

declare void @clib_package_free(ptr noundef) #1

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

declare void @curl_global_cleanup() #1

declare void @clib_package_cleanup(...) #1

attributes #0 = { 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 #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nounwind }
attributes #8 = { noreturn nounwind }
attributes #9 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{!16, !10, i64 48}
!16 = !{!"", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !6, i64 152}
!17 = !{!16, !10, i64 80}
!18 = !{!16, !10, i64 56}
!19 = !{!16, !10, i64 40}
!20 = !{!16, !10, i64 8}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = !{!16, !10, i64 32}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}


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

@__assert_failures = external hidden local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [27 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [81 x i8], align 1
@__assert_bail = external hidden local_unnamed_addr global i32, align 4
@.str.9 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [10 x i8], align 1
@__const.main.expected = external hidden unnamed_addr constant [315 x i8], align 16
@.str.33 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @__describe_after_spec(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local i32 @main() local_unnamed_addr #0 {
  %1 = alloca [315 x i8], align 16
  %2 = tail call i32 @curl_global_init(i64 noundef 3) #7
  %3 = tail call i32 @clib_cache_init(i64 noundef 100) #7
  %4 = tail call ptr @clib_cache_dir() #7
  %5 = tail call i32 @rimraf(ptr noundef %4) #7
  %6 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, ptr noundef nonnull @.str.5)
  %.not = icmp eq i32 %6, 0
  br i1 %.not, label %.critedge, label %.critedge76

.critedge:                                        ; preds = %171, %0
  call void @curl_global_cleanup() #7
  call void (...) @clib_package_cleanup() #7
  %7 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  ret i32 %7

.critedge76:                                      ; preds = %0
  %8 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %9 = tail call ptr @clib_package_new_from_slug(ptr noundef null, i32 noundef 0) #7
  %10 = icmp eq ptr %9, null
  br i1 %10, label %.critedge78, label %11

11:                                               ; preds = %.critedge76
  %12 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %13 = add nsw i32 %12, 1
  store i32 %13, ptr @__assert_failures, align 4, !tbaa !5
  %14 = load ptr, ptr @stderr, align 8, !tbaa !9
  %15 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %14, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, i32 noundef 14) #8
  %16 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not74 = icmp eq i32 %16, 0
  br i1 %.not74, label %.critedge78, label %17

17:                                               ; preds = %11
  tail call void @abort() #9
  unreachable

.critedge78:                                      ; preds = %.critedge76, %11
  tail call void @__describe_after_spec(ptr noundef nonnull @.str.9, i32 noundef %8)
  %18 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %19 = tail call ptr @clib_package_new_from_slug(ptr noundef nonnull @.str.10, i32 noundef 0) #7
  %20 = icmp eq ptr %19, null
  br i1 %20, label %.critedge80, label %21

21:                                               ; preds = %.critedge78
  %22 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %23 = add nsw i32 %22, 1
  store i32 %23, ptr @__assert_failures, align 4, !tbaa !5
  %24 = load ptr, ptr @stderr, align 8, !tbaa !9
  %25 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.8, i32 noundef 18) #8
  %26 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not73 = icmp eq i32 %26, 0
  br i1 %.not73, label %.critedge80, label %27

27:                                               ; preds = %21
  tail call void @abort() #9
  unreachable

.critedge80:                                      ; preds = %.critedge78, %21
  tail call void @__describe_after_spec(ptr noundef nonnull @.str.12, i32 noundef %18)
  %28 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %29 = tail call ptr @clib_package_new_from_slug(ptr noundef nonnull @.str.13, i32 noundef 0) #7
  %30 = icmp eq ptr %29, null
  br i1 %30, label %.critedge82, label %31

31:                                               ; preds = %.critedge80
  %32 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %33 = add nsw i32 %32, 1
  store i32 %33, ptr @__assert_failures, align 4, !tbaa !5
  %34 = load ptr, ptr @stderr, align 8, !tbaa !9
  %35 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %34, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.8, i32 noundef 22) #8
  %36 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not72 = icmp eq i32 %36, 0
  br i1 %.not72, label %.critedge82, label %37

37:                                               ; preds = %31
  tail call void @abort() #9
  unreachable

.critedge82:                                      ; preds = %.critedge80, %31
  tail call void @__describe_after_spec(ptr noundef nonnull @.str.15, i32 noundef %28)
  %38 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %39 = tail call ptr @clib_package_new_from_slug(ptr noundef nonnull @.str.16, i32 noundef 0) #7
  %.not60 = icmp eq ptr %39, null
  br i1 %.not60, label %40, label %47

40:                                               ; preds = %.critedge82
  %41 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %42 = add nsw i32 %41, 1
  store i32 %42, ptr @__assert_failures, align 4, !tbaa !5
  %43 = load ptr, ptr @stderr, align 8, !tbaa !9
  %44 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %43, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.8, i32 noundef 28) #8
  %45 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not61 = icmp eq i32 %45, 0
  br i1 %.not61, label %47, label %46

46:                                               ; preds = %40
  tail call void @abort() #9
  unreachable

47:                                               ; preds = %.critedge82, %40
  %48 = getelementptr inbounds i8, ptr %39, i64 48
  %49 = load ptr, ptr %48, align 8, !tbaa !11
  %50 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.18, ptr noundef nonnull dereferenceable(1) %49) #10
  %.not62 = icmp eq i32 %50, 0
  br i1 %.not62, label %58, label %51

51:                                               ; preds = %47
  %52 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %53 = add nsw i32 %52, 1
  store i32 %53, ptr @__assert_failures, align 4, !tbaa !5
  %54 = load ptr, ptr @stderr, align 8, !tbaa !9
  %55 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %54, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.18, ptr noundef %49, ptr noundef nonnull @.str.8, i32 noundef 29) #8
  %56 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not63 = icmp eq i32 %56, 0
  br i1 %.not63, label %58, label %57

57:                                               ; preds = %51
  tail call void @abort() #9
  unreachable

58:                                               ; preds = %47, %51
  %59 = getelementptr inbounds i8, ptr %39, i64 80
  %60 = load ptr, ptr %59, align 8, !tbaa !13
  %61 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.20, ptr noundef nonnull dereferenceable(1) %60) #10
  %.not64 = icmp eq i32 %61, 0
  br i1 %.not64, label %69, label %62

62:                                               ; preds = %58
  %63 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %64 = add nsw i32 %63, 1
  store i32 %64, ptr @__assert_failures, align 4, !tbaa !5
  %65 = load ptr, ptr @stderr, align 8, !tbaa !9
  %66 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %65, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.20, ptr noundef %60, ptr noundef nonnull @.str.8, i32 noundef 30) #8
  %67 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not65 = icmp eq i32 %67, 0
  br i1 %.not65, label %69, label %68

68:                                               ; preds = %62
  tail call void @abort() #9
  unreachable

69:                                               ; preds = %58, %62
  %70 = getelementptr inbounds i8, ptr %39, i64 56
  %71 = load ptr, ptr %70, align 8, !tbaa !14
  %72 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.21, ptr noundef nonnull dereferenceable(1) %71) #10
  %.not66 = icmp eq i32 %72, 0
  br i1 %.not66, label %80, label %73

73:                                               ; preds = %69
  %74 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %75 = add nsw i32 %74, 1
  store i32 %75, ptr @__assert_failures, align 4, !tbaa !5
  %76 = load ptr, ptr @stderr, align 8, !tbaa !9
  %77 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %76, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.21, ptr noundef %71, ptr noundef nonnull @.str.8, i32 noundef 31) #8
  %78 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not67 = icmp eq i32 %78, 0
  br i1 %.not67, label %80, label %79

79:                                               ; preds = %73
  tail call void @abort() #9
  unreachable

80:                                               ; preds = %69, %73
  %81 = getelementptr inbounds i8, ptr %39, i64 40
  %82 = load ptr, ptr %81, align 8, !tbaa !15
  %83 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.22, ptr noundef nonnull dereferenceable(1) %82) #10
  %.not68 = icmp eq i32 %83, 0
  br i1 %.not68, label %91, label %84

84:                                               ; preds = %80
  %85 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %86 = add nsw i32 %85, 1
  store i32 %86, ptr @__assert_failures, align 4, !tbaa !5
  %87 = load ptr, ptr @stderr, align 8, !tbaa !9
  %88 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %87, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.22, ptr noundef %82, ptr noundef nonnull @.str.8, i32 noundef 32) #8
  %89 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not69 = icmp eq i32 %89, 0
  br i1 %.not69, label %91, label %90

90:                                               ; preds = %84
  tail call void @abort() #9
  unreachable

91:                                               ; preds = %80, %84
  %92 = getelementptr inbounds i8, ptr %39, i64 8
  %93 = load ptr, ptr %92, align 8, !tbaa !16
  %94 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.23, ptr noundef nonnull dereferenceable(1) %93) #10
  %.not70 = icmp eq i32 %94, 0
  br i1 %.not70, label %.critedge84, label %95

95:                                               ; preds = %91
  %96 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %97 = add nsw i32 %96, 1
  store i32 %97, ptr @__assert_failures, align 4, !tbaa !5
  %98 = load ptr, ptr @stderr, align 8, !tbaa !9
  %99 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %98, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.23, ptr noundef %93, ptr noundef nonnull @.str.8, i32 noundef 33) #8
  %100 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not71 = icmp eq i32 %100, 0
  br i1 %.not71, label %.critedge84, label %101

101:                                              ; preds = %95
  tail call void @abort() #9
  unreachable

.critedge84:                                      ; preds = %95, %91
  tail call void @clib_package_free(ptr noundef nonnull %39) #7
  tail call void @__describe_after_spec(ptr noundef nonnull @.str.24, i32 noundef %38)
  %102 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %103 = tail call ptr @clib_package_new_from_slug(ptr noundef nonnull @.str.25, i32 noundef 0) #7
  %.not56 = icmp eq ptr %103, null
  br i1 %.not56, label %104, label %111

104:                                              ; preds = %.critedge84
  %105 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %106 = add nsw i32 %105, 1
  store i32 %106, ptr @__assert_failures, align 4, !tbaa !5
  %107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %108 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %107, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.8, i32 noundef 40) #8
  %109 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not57 = icmp eq i32 %109, 0
  br i1 %.not57, label %111, label %110

110:                                              ; preds = %104
  tail call void @abort() #9
  unreachable

111:                                              ; preds = %.critedge84, %104
  %112 = getelementptr inbounds i8, ptr %103, i64 80
  %113 = load ptr, ptr %112, align 8, !tbaa !13
  %114 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.26, ptr noundef nonnull dereferenceable(1) %113) #10
  %.not58 = icmp eq i32 %114, 0
  br i1 %.not58, label %.critedge86, label %115

115:                                              ; preds = %111
  %116 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %117 = add nsw i32 %116, 1
  store i32 %117, ptr @__assert_failures, align 4, !tbaa !5
  %118 = load ptr, ptr @stderr, align 8, !tbaa !9
  %119 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %118, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.26, ptr noundef %113, ptr noundef nonnull @.str.8, i32 noundef 41) #8
  %120 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not59 = icmp eq i32 %120, 0
  br i1 %.not59, label %.critedge86, label %121

121:                                              ; preds = %115
  tail call void @abort() #9
  unreachable

.critedge86:                                      ; preds = %115, %111
  tail call void @clib_package_free(ptr noundef nonnull %103) #7
  tail call void @__describe_after_spec(ptr noundef nonnull @.str.27, i32 noundef %102)
  %122 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %123 = tail call ptr @clib_package_new_from_slug(ptr noundef nonnull @.str.28, i32 noundef 0) #7
  %.not52 = icmp eq ptr %123, null
  br i1 %.not52, label %124, label %131

124:                                              ; preds = %.critedge86
  %125 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr @__assert_failures, align 4, !tbaa !5
  %127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %128 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %127, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.8, i32 noundef 48) #8
  %129 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not53 = icmp eq i32 %129, 0
  br i1 %.not53, label %131, label %130

130:                                              ; preds = %124
  tail call void @abort() #9
  unreachable

131:                                              ; preds = %.critedge86, %124
  %132 = getelementptr inbounds i8, ptr %123, i64 80
  %133 = load ptr, ptr %132, align 8, !tbaa !13
  %134 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.29, ptr noundef nonnull dereferenceable(1) %133) #10
  %.not54 = icmp eq i32 %134, 0
  br i1 %.not54, label %.critedge88, label %135

135:                                              ; preds = %131
  %136 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr @__assert_failures, align 4, !tbaa !5
  %138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %139 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %138, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.29, ptr noundef %133, ptr noundef nonnull @.str.8, i32 noundef 49) #8
  %140 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not55 = icmp eq i32 %140, 0
  br i1 %.not55, label %.critedge88, label %141

141:                                              ; preds = %135
  tail call void @abort() #9
  unreachable

.critedge88:                                      ; preds = %135, %131
  tail call void @clib_package_free(ptr noundef nonnull %123) #7
  tail call void @__describe_after_spec(ptr noundef nonnull @.str.30, i32 noundef %122)
  %142 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %143 = tail call ptr @clib_package_new_from_slug(ptr noundef nonnull @.str.31, i32 noundef 0) #7
  %.not46 = icmp eq ptr %143, null
  br i1 %.not46, label %144, label %151

144:                                              ; preds = %.critedge88
  %145 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr @__assert_failures, align 4, !tbaa !5
  %147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %148 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %147, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.8, i32 noundef 56) #8
  %149 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not47 = icmp eq i32 %149, 0
  br i1 %.not47, label %151, label %150

150:                                              ; preds = %144
  tail call void @abort() #9
  unreachable

151:                                              ; preds = %.critedge88, %144
  %152 = getelementptr inbounds i8, ptr %143, i64 32
  %153 = load ptr, ptr %152, align 8, !tbaa !17
  %.not48 = icmp eq ptr %153, null
  br i1 %.not48, label %154, label %161

154:                                              ; preds = %151
  %155 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr @__assert_failures, align 4, !tbaa !5
  %157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %158 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %157, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.8, i32 noundef 57) #8
  %159 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not49 = icmp eq i32 %159, 0
  br i1 %.not49, label %._crit_edge, label %160

._crit_edge:                                      ; preds = %154
  %.pre = load ptr, ptr %152, align 8, !tbaa !17
  br label %161

160:                                              ; preds = %154
  tail call void @abort() #9
  unreachable

161:                                              ; preds = %._crit_edge, %151
  %162 = phi ptr [ %.pre, %._crit_edge ], [ %153, %151 ]
  call void @llvm.lifetime.start.p0(i64 315, ptr nonnull %1) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(315) %1, ptr noundef nonnull align 16 dereferenceable(315) @__const.main.expected, i64 315, i1 false)
  %163 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(1) %162) #10
  %.not50 = icmp eq i32 %163, 0
  br i1 %.not50, label %171, label %164

164:                                              ; preds = %161
  %165 = load i32, ptr @__assert_failures, align 4, !tbaa !5
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr @__assert_failures, align 4, !tbaa !5
  %167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %168 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %167, ptr noundef nonnull @.str.19, ptr noundef nonnull %1, ptr noundef %162, ptr noundef nonnull @.str.8, i32 noundef 74) #8
  %169 = load i32, ptr @__assert_bail, align 4, !tbaa !5
  %.not51 = icmp eq i32 %169, 0
  br i1 %.not51, label %171, label %170

170:                                              ; preds = %164
  call void @abort() #9
  unreachable

171:                                              ; preds = %164, %161
  call void @clib_package_free(ptr noundef nonnull %143) #7
  call void @llvm.lifetime.end.p0(i64 315, ptr nonnull %1) #7
  call void @__describe_after_spec(ptr noundef nonnull @.str.33, i32 noundef %142)
  %172 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34)
  br label %.critedge
}

declare i32 @curl_global_init(i64 noundef) local_unnamed_addr #1

declare i32 @clib_cache_init(i64 noundef) local_unnamed_addr #1

declare i32 @rimraf(ptr noundef) local_unnamed_addr #1

declare ptr @clib_cache_dir() local_unnamed_addr #1

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

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

declare ptr @clib_package_new_from_slug(ptr noundef, i32 noundef) local_unnamed_addr #1

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

; Function Attrs: noreturn nounwind
declare void @abort() local_unnamed_addr #4

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

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

declare void @clib_package_free(ptr noundef) local_unnamed_addr #1

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

declare void @curl_global_cleanup() local_unnamed_addr #1

declare void @clib_package_cleanup(...) local_unnamed_addr #1

attributes #0 = { 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 #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nounwind }
attributes #8 = { cold nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 48}
!12 = !{!"", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !6, i64 152}
!13 = !{!12, !10, i64 80}
!14 = !{!12, !10, i64 56}
!15 = !{!12, !10, i64 40}
!16 = !{!12, !10, i64 8}
!17 = !{!12, !10, i64 32}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,LoopRotatePass,SROAPass,SimplifyCFGPass,TailCallElimPass