; LLVM IR from aws/s2n-tls :: tests/unit (s2n_self_talk_offload_signing_test)

; 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.s2n_result = type { i32 }

@s2n_use_color_in_output = external dso_local global i8, align 1
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [93 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [156 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [205 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [110 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [145 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [136 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [168 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [150 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [182 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [166 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [148 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [180 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca [5000 x i8], align 16
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %struct.s2n_result, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca %struct.s2n_result, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca %struct.s2n_result, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca %struct.s2n_result, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca %struct.s2n_result, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca %struct.s2n_result, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca %struct.s2n_result, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca %struct.s2n_result, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca %struct.s2n_result, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca %struct.s2n_result, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  br label %81

81:                                               ; preds = %2
  br label %82

82:                                               ; preds = %81
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %83 = load ptr, ptr @stdout, align 8, !tbaa !9
  %84 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %83, ptr noundef @.str, ptr noundef @.str.1) #9
  %85 = load ptr, ptr @stdout, align 8, !tbaa !9
  %86 = call i32 @fflush(ptr noundef %85)
  br label %87

87:                                               ; preds = %82
  %88 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %89 = icmp eq i32 %88, -1
  br i1 %89, label %90, label %141

90:                                               ; preds = %87
  br label %91

91:                                               ; preds = %90
  br label %92

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #9
  %93 = call ptr @__errno_location() #10
  %94 = load i32, ptr %93, align 4, !tbaa !5
  store i32 %94, ptr %6, align 4, !tbaa !5
  %95 = load ptr, ptr @stderr, align 8, !tbaa !9
  %96 = call i32 @s2n_print_stacktrace(ptr noundef %95)
  %97 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %98 = trunc i8 %97 to i1
  br i1 %98, label %99, label %121

99:                                               ; preds = %92
  %100 = load ptr, ptr @stderr, align 8, !tbaa !9
  %101 = call i32 @fileno(ptr noundef %100) #9
  %102 = call i32 @isatty(i32 noundef %101) #9
  %103 = icmp ne i32 %102, 0
  br i1 %103, label %104, label %121

104:                                              ; preds = %99
  %105 = load i32, ptr %6, align 4, !tbaa !5
  %106 = call ptr @__errno_location() #10
  store i32 %105, ptr %106, align 4, !tbaa !5
  %107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %108 = load i32, ptr @test_count, align 4, !tbaa !5
  %109 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = call ptr @s2n_strerror(i32 noundef %110, ptr noundef @.str.4)
  %112 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = call ptr @s2n_strerror_debug(i32 noundef %113, ptr noundef @.str.4)
  %115 = call ptr @__errno_location() #10
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = call ptr @strerror(i32 noundef %116) #9
  %118 = call ptr @__errno_location() #10
  %119 = load i32, ptr %118, align 4, !tbaa !5
  %120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %107, ptr noundef @.str.2, i32 noundef %108, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 154, ptr noundef %111, ptr noundef %114, ptr noundef %117, i32 noundef %119) #9
  br label %138

121:                                              ; preds = %99, %92
  %122 = load i32, ptr %6, align 4, !tbaa !5
  %123 = call ptr @__errno_location() #10
  store i32 %122, ptr %123, align 4, !tbaa !5
  %124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %125 = load i32, ptr @test_count, align 4, !tbaa !5
  %126 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %127 = load i32, ptr %126, align 4, !tbaa !5
  %128 = call ptr @s2n_strerror(i32 noundef %127, ptr noundef @.str.4)
  %129 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %130 = load i32, ptr %129, align 4, !tbaa !5
  %131 = call ptr @s2n_strerror_debug(i32 noundef %130, ptr noundef @.str.4)
  %132 = call ptr @__errno_location() #10
  %133 = load i32, ptr %132, align 4, !tbaa !5
  %134 = call ptr @strerror(i32 noundef %133) #9
  %135 = call ptr @__errno_location() #10
  %136 = load i32, ptr %135, align 4, !tbaa !5
  %137 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %124, ptr noundef @.str.5, i32 noundef %125, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 154, ptr noundef %128, ptr noundef %131, ptr noundef %134, i32 noundef %136) #9
  br label %138

138:                                              ; preds = %121, %104
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #9
  br label %139

139:                                              ; preds = %138
  call void @exit(i32 noundef 1) #11
  unreachable

140:                                              ; No predecessors!
  br label %141

141:                                              ; preds = %140, %87
  br label %142

142:                                              ; preds = %141
  br label %143

143:                                              ; preds = %142
  %144 = load i32, ptr @test_count, align 4, !tbaa !5
  %145 = add nsw i32 %144, 1
  store i32 %145, ptr @test_count, align 4, !tbaa !5
  %146 = call i32 @s2n_enable_atexit()
  %147 = icmp eq i32 %146, -1
  br i1 %147, label %148, label %199

148:                                              ; preds = %143
  br label %149

149:                                              ; preds = %148
  br label %150

150:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  %151 = call ptr @__errno_location() #10
  %152 = load i32, ptr %151, align 4, !tbaa !5
  store i32 %152, ptr %7, align 4, !tbaa !5
  %153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %154 = call i32 @s2n_print_stacktrace(ptr noundef %153)
  %155 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %156 = trunc i8 %155 to i1
  br i1 %156, label %157, label %179

157:                                              ; preds = %150
  %158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %159 = call i32 @fileno(ptr noundef %158) #9
  %160 = call i32 @isatty(i32 noundef %159) #9
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %179

162:                                              ; preds = %157
  %163 = load i32, ptr %7, align 4, !tbaa !5
  %164 = call ptr @__errno_location() #10
  store i32 %163, ptr %164, align 4, !tbaa !5
  %165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %166 = load i32, ptr @test_count, align 4, !tbaa !5
  %167 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %168 = load i32, ptr %167, align 4, !tbaa !5
  %169 = call ptr @s2n_strerror(i32 noundef %168, ptr noundef @.str.4)
  %170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = call ptr @s2n_strerror_debug(i32 noundef %171, ptr noundef @.str.4)
  %173 = call ptr @__errno_location() #10
  %174 = load i32, ptr %173, align 4, !tbaa !5
  %175 = call ptr @strerror(i32 noundef %174) #9
  %176 = call ptr @__errno_location() #10
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %165, ptr noundef @.str.2, i32 noundef %166, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 154, ptr noundef %169, ptr noundef %172, ptr noundef %175, i32 noundef %177) #9
  br label %196

179:                                              ; preds = %157, %150
  %180 = load i32, ptr %7, align 4, !tbaa !5
  %181 = call ptr @__errno_location() #10
  store i32 %180, ptr %181, align 4, !tbaa !5
  %182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %183 = load i32, ptr @test_count, align 4, !tbaa !5
  %184 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %185 = load i32, ptr %184, align 4, !tbaa !5
  %186 = call ptr @s2n_strerror(i32 noundef %185, ptr noundef @.str.4)
  %187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %188 = load i32, ptr %187, align 4, !tbaa !5
  %189 = call ptr @s2n_strerror_debug(i32 noundef %188, ptr noundef @.str.4)
  %190 = call ptr @__errno_location() #10
  %191 = load i32, ptr %190, align 4, !tbaa !5
  %192 = call ptr @strerror(i32 noundef %191) #9
  %193 = call ptr @__errno_location() #10
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %182, ptr noundef @.str.5, i32 noundef %183, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 154, ptr noundef %186, ptr noundef %189, ptr noundef %192, i32 noundef %194) #9
  br label %196

196:                                              ; preds = %179, %162
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %197

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

198:                                              ; No predecessors!
  br label %199

199:                                              ; preds = %198, %143
  br label %200

200:                                              ; preds = %199
  br label %201

201:                                              ; preds = %200
  br label %202

202:                                              ; preds = %201
  %203 = call i32 @s2n_init()
  %204 = icmp eq i32 %203, -1
  br i1 %204, label %205, label %256

205:                                              ; preds = %202
  br label %206

206:                                              ; preds = %205
  br label %207

207:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  %208 = call ptr @__errno_location() #10
  %209 = load i32, ptr %208, align 4, !tbaa !5
  store i32 %209, ptr %8, align 4, !tbaa !5
  %210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %211 = call i32 @s2n_print_stacktrace(ptr noundef %210)
  %212 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %213 = trunc i8 %212 to i1
  br i1 %213, label %214, label %236

214:                                              ; preds = %207
  %215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %216 = call i32 @fileno(ptr noundef %215) #9
  %217 = call i32 @isatty(i32 noundef %216) #9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %236

219:                                              ; preds = %214
  %220 = load i32, ptr %8, align 4, !tbaa !5
  %221 = call ptr @__errno_location() #10
  store i32 %220, ptr %221, align 4, !tbaa !5
  %222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %223 = load i32, ptr @test_count, align 4, !tbaa !5
  %224 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %225 = load i32, ptr %224, align 4, !tbaa !5
  %226 = call ptr @s2n_strerror(i32 noundef %225, ptr noundef @.str.4)
  %227 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %228 = load i32, ptr %227, align 4, !tbaa !5
  %229 = call ptr @s2n_strerror_debug(i32 noundef %228, ptr noundef @.str.4)
  %230 = call ptr @__errno_location() #10
  %231 = load i32, ptr %230, align 4, !tbaa !5
  %232 = call ptr @strerror(i32 noundef %231) #9
  %233 = call ptr @__errno_location() #10
  %234 = load i32, ptr %233, align 4, !tbaa !5
  %235 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %222, ptr noundef @.str.2, i32 noundef %223, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 154, ptr noundef %226, ptr noundef %229, ptr noundef %232, i32 noundef %234) #9
  br label %253

236:                                              ; preds = %214, %207
  %237 = load i32, ptr %8, align 4, !tbaa !5
  %238 = call ptr @__errno_location() #10
  store i32 %237, ptr %238, align 4, !tbaa !5
  %239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %240 = load i32, ptr @test_count, align 4, !tbaa !5
  %241 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %242 = load i32, ptr %241, align 4, !tbaa !5
  %243 = call ptr @s2n_strerror(i32 noundef %242, ptr noundef @.str.4)
  %244 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %245 = load i32, ptr %244, align 4, !tbaa !5
  %246 = call ptr @s2n_strerror_debug(i32 noundef %245, ptr noundef @.str.4)
  %247 = call ptr @__errno_location() #10
  %248 = load i32, ptr %247, align 4, !tbaa !5
  %249 = call ptr @strerror(i32 noundef %248) #9
  %250 = call ptr @__errno_location() #10
  %251 = load i32, ptr %250, align 4, !tbaa !5
  %252 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %239, ptr noundef @.str.5, i32 noundef %240, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 154, ptr noundef %243, ptr noundef %246, ptr noundef %249, i32 noundef %251) #9
  br label %253

253:                                              ; preds = %236, %219
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  br label %254

254:                                              ; preds = %253
  call void @exit(i32 noundef 1) #11
  unreachable

255:                                              ; No predecessors!
  br label %256

256:                                              ; preds = %255, %202
  br label %257

257:                                              ; preds = %256
  br label %258

258:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 5000, ptr %10) #9
  call void @llvm.memset.p0.i64(ptr align 16 %10, i8 0, i64 5000, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  store ptr @.str.8, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  store ptr @.str.9, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  store ptr @.str.10, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 3, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  %259 = load i32, ptr %14, align 4, !tbaa !5
  %260 = or i32 %259, 32
  store i32 %260, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %261 = load i32, ptr %14, align 4, !tbaa !5
  %262 = or i32 %261, 16
  store i32 %262, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %263 = call zeroext i1 (...) @s2n_is_tls13_fully_supported()
  br i1 %263, label %264, label %266

264:                                              ; preds = %258
  %265 = load i32, ptr %15, align 4, !tbaa !5
  br label %268

266:                                              ; preds = %258
  %267 = load i32, ptr %16, align 4, !tbaa !5
  br label %268

268:                                              ; preds = %266, %264
  %269 = phi i32 [ %265, %264 ], [ %267, %266 ]
  store i32 %269, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  store ptr null, ptr %18, align 8, !tbaa !9
  br label %270

270:                                              ; preds = %268
  %271 = load i32, ptr @test_count, align 4, !tbaa !5
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr @test_count, align 4, !tbaa !5
  %273 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %18, ptr noundef @.str.11, ptr noundef @.str.12)
  %274 = icmp eq i32 %273, -1
  br i1 %274, label %275, label %328

275:                                              ; preds = %270
  br label %276

276:                                              ; preds = %275
  br label %277

277:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %278 = call ptr @__errno_location() #10
  %279 = load i32, ptr %278, align 4, !tbaa !5
  store i32 %279, ptr %19, align 4, !tbaa !5
  %280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %281 = call i32 @s2n_print_stacktrace(ptr noundef %280)
  %282 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %283 = trunc i8 %282 to i1
  br i1 %283, label %284, label %306

284:                                              ; preds = %277
  %285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %286 = call i32 @fileno(ptr noundef %285) #9
  %287 = call i32 @isatty(i32 noundef %286) #9
  %288 = icmp ne i32 %287, 0
  br i1 %288, label %289, label %306

289:                                              ; preds = %284
  %290 = load i32, ptr %19, align 4, !tbaa !5
  %291 = call ptr @__errno_location() #10
  store i32 %290, ptr %291, align 4, !tbaa !5
  %292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %293 = load i32, ptr @test_count, align 4, !tbaa !5
  %294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %295 = load i32, ptr %294, align 4, !tbaa !5
  %296 = call ptr @s2n_strerror(i32 noundef %295, ptr noundef @.str.4)
  %297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %298 = load i32, ptr %297, align 4, !tbaa !5
  %299 = call ptr @s2n_strerror_debug(i32 noundef %298, ptr noundef @.str.4)
  %300 = call ptr @__errno_location() #10
  %301 = load i32, ptr %300, align 4, !tbaa !5
  %302 = call ptr @strerror(i32 noundef %301) #9
  %303 = call ptr @__errno_location() #10
  %304 = load i32, ptr %303, align 4, !tbaa !5
  %305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %292, ptr noundef @.str.2, i32 noundef %293, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 180, ptr noundef %296, ptr noundef %299, ptr noundef %302, i32 noundef %304) #9
  br label %323

306:                                              ; preds = %284, %277
  %307 = load i32, ptr %19, align 4, !tbaa !5
  %308 = call ptr @__errno_location() #10
  store i32 %307, ptr %308, align 4, !tbaa !5
  %309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %310 = load i32, ptr @test_count, align 4, !tbaa !5
  %311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %312 = load i32, ptr %311, align 4, !tbaa !5
  %313 = call ptr @s2n_strerror(i32 noundef %312, ptr noundef @.str.4)
  %314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %315 = load i32, ptr %314, align 4, !tbaa !5
  %316 = call ptr @s2n_strerror_debug(i32 noundef %315, ptr noundef @.str.4)
  %317 = call ptr @__errno_location() #10
  %318 = load i32, ptr %317, align 4, !tbaa !5
  %319 = call ptr @strerror(i32 noundef %318) #9
  %320 = call ptr @__errno_location() #10
  %321 = load i32, ptr %320, align 4, !tbaa !5
  %322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %309, ptr noundef @.str.5, i32 noundef %310, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 180, ptr noundef %313, ptr noundef %316, ptr noundef %319, i32 noundef %321) #9
  br label %323

323:                                              ; preds = %306, %289
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %324

324:                                              ; preds = %323
  br label %325

325:                                              ; preds = %324
  call void @exit(i32 noundef 1) #11
  unreachable

326:                                              ; No predecessors!
  br label %327

327:                                              ; preds = %326
  br label %328

328:                                              ; preds = %327, %270
  br label %329

329:                                              ; preds = %328
  br label %330

330:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  store ptr null, ptr %20, align 8, !tbaa !9
  br label %331

331:                                              ; preds = %330
  %332 = load i32, ptr @test_count, align 4, !tbaa !5
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr @test_count, align 4, !tbaa !5
  %334 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %20, ptr noundef @.str.14, ptr noundef @.str.15)
  %335 = icmp eq i32 %334, -1
  br i1 %335, label %336, label %389

336:                                              ; preds = %331
  br label %337

337:                                              ; preds = %336
  br label %338

338:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  %339 = call ptr @__errno_location() #10
  %340 = load i32, ptr %339, align 4, !tbaa !5
  store i32 %340, ptr %21, align 4, !tbaa !5
  %341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %342 = call i32 @s2n_print_stacktrace(ptr noundef %341)
  %343 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %344 = trunc i8 %343 to i1
  br i1 %344, label %345, label %367

345:                                              ; preds = %338
  %346 = load ptr, ptr @stderr, align 8, !tbaa !9
  %347 = call i32 @fileno(ptr noundef %346) #9
  %348 = call i32 @isatty(i32 noundef %347) #9
  %349 = icmp ne i32 %348, 0
  br i1 %349, label %350, label %367

350:                                              ; preds = %345
  %351 = load i32, ptr %21, align 4, !tbaa !5
  %352 = call ptr @__errno_location() #10
  store i32 %351, ptr %352, align 4, !tbaa !5
  %353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %354 = load i32, ptr @test_count, align 4, !tbaa !5
  %355 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %356 = load i32, ptr %355, align 4, !tbaa !5
  %357 = call ptr @s2n_strerror(i32 noundef %356, ptr noundef @.str.4)
  %358 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %359 = load i32, ptr %358, align 4, !tbaa !5
  %360 = call ptr @s2n_strerror_debug(i32 noundef %359, ptr noundef @.str.4)
  %361 = call ptr @__errno_location() #10
  %362 = load i32, ptr %361, align 4, !tbaa !5
  %363 = call ptr @strerror(i32 noundef %362) #9
  %364 = call ptr @__errno_location() #10
  %365 = load i32, ptr %364, align 4, !tbaa !5
  %366 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %353, ptr noundef @.str.2, i32 noundef %354, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 184, ptr noundef %357, ptr noundef %360, ptr noundef %363, i32 noundef %365) #9
  br label %384

367:                                              ; preds = %345, %338
  %368 = load i32, ptr %21, align 4, !tbaa !5
  %369 = call ptr @__errno_location() #10
  store i32 %368, ptr %369, align 4, !tbaa !5
  %370 = load ptr, ptr @stderr, align 8, !tbaa !9
  %371 = load i32, ptr @test_count, align 4, !tbaa !5
  %372 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %373 = load i32, ptr %372, align 4, !tbaa !5
  %374 = call ptr @s2n_strerror(i32 noundef %373, ptr noundef @.str.4)
  %375 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %376 = load i32, ptr %375, align 4, !tbaa !5
  %377 = call ptr @s2n_strerror_debug(i32 noundef %376, ptr noundef @.str.4)
  %378 = call ptr @__errno_location() #10
  %379 = load i32, ptr %378, align 4, !tbaa !5
  %380 = call ptr @strerror(i32 noundef %379) #9
  %381 = call ptr @__errno_location() #10
  %382 = load i32, ptr %381, align 4, !tbaa !5
  %383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %370, ptr noundef @.str.5, i32 noundef %371, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 184, ptr noundef %374, ptr noundef %377, ptr noundef %380, i32 noundef %382) #9
  br label %384

384:                                              ; preds = %367, %350
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %385

385:                                              ; preds = %384
  br label %386

386:                                              ; preds = %385
  call void @exit(i32 noundef 1) #11
  unreachable

387:                                              ; No predecessors!
  br label %388

388:                                              ; preds = %387
  br label %389

389:                                              ; preds = %388, %331
  br label %390

390:                                              ; preds = %389
  br label %391

391:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %392 = call ptr @s2n_cert_chain_and_key_new()
  store ptr %392, ptr %22, align 8, !tbaa !9
  br label %393

393:                                              ; preds = %391
  %394 = load i32, ptr @test_count, align 4, !tbaa !5
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr @test_count, align 4, !tbaa !5
  %396 = load ptr, ptr %22, align 8, !tbaa !9
  %397 = icmp eq ptr %396, null
  br i1 %397, label %398, label %451

398:                                              ; preds = %393
  br label %399

399:                                              ; preds = %398
  br label %400

400:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %401 = call ptr @__errno_location() #10
  %402 = load i32, ptr %401, align 4, !tbaa !5
  store i32 %402, ptr %23, align 4, !tbaa !5
  %403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %404 = call i32 @s2n_print_stacktrace(ptr noundef %403)
  %405 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %406 = trunc i8 %405 to i1
  br i1 %406, label %407, label %429

407:                                              ; preds = %400
  %408 = load ptr, ptr @stderr, align 8, !tbaa !9
  %409 = call i32 @fileno(ptr noundef %408) #9
  %410 = call i32 @isatty(i32 noundef %409) #9
  %411 = icmp ne i32 %410, 0
  br i1 %411, label %412, label %429

412:                                              ; preds = %407
  %413 = load i32, ptr %23, align 4, !tbaa !5
  %414 = call ptr @__errno_location() #10
  store i32 %413, ptr %414, align 4, !tbaa !5
  %415 = load ptr, ptr @stderr, align 8, !tbaa !9
  %416 = load i32, ptr @test_count, align 4, !tbaa !5
  %417 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %418 = load i32, ptr %417, align 4, !tbaa !5
  %419 = call ptr @s2n_strerror(i32 noundef %418, ptr noundef @.str.4)
  %420 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = call ptr @s2n_strerror_debug(i32 noundef %421, ptr noundef @.str.4)
  %423 = call ptr @__errno_location() #10
  %424 = load i32, ptr %423, align 4, !tbaa !5
  %425 = call ptr @strerror(i32 noundef %424) #9
  %426 = call ptr @__errno_location() #10
  %427 = load i32, ptr %426, align 4, !tbaa !5
  %428 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %415, ptr noundef @.str.2, i32 noundef %416, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 191, ptr noundef %419, ptr noundef %422, ptr noundef %425, i32 noundef %427) #9
  br label %446

429:                                              ; preds = %407, %400
  %430 = load i32, ptr %23, align 4, !tbaa !5
  %431 = call ptr @__errno_location() #10
  store i32 %430, ptr %431, align 4, !tbaa !5
  %432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %433 = load i32, ptr @test_count, align 4, !tbaa !5
  %434 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %435 = load i32, ptr %434, align 4, !tbaa !5
  %436 = call ptr @s2n_strerror(i32 noundef %435, ptr noundef @.str.4)
  %437 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = call ptr @s2n_strerror_debug(i32 noundef %438, ptr noundef @.str.4)
  %440 = call ptr @__errno_location() #10
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = call ptr @strerror(i32 noundef %441) #9
  %443 = call ptr @__errno_location() #10
  %444 = load i32, ptr %443, align 4, !tbaa !5
  %445 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %432, ptr noundef @.str.5, i32 noundef %433, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 191, ptr noundef %436, ptr noundef %439, ptr noundef %442, i32 noundef %444) #9
  br label %446

446:                                              ; preds = %429, %412
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %447

447:                                              ; preds = %446
  br label %448

448:                                              ; preds = %447
  call void @exit(i32 noundef 1) #11
  unreachable

449:                                              ; No predecessors!
  br label %450

450:                                              ; preds = %449
  br label %451

451:                                              ; preds = %450, %393
  br label %452

452:                                              ; preds = %451
  br label %453

453:                                              ; preds = %452
  br label %454

454:                                              ; preds = %453
  %455 = load i32, ptr @test_count, align 4, !tbaa !5
  %456 = add nsw i32 %455, 1
  store i32 %456, ptr @test_count, align 4, !tbaa !5
  %457 = getelementptr inbounds [5000 x i8], ptr %10, i64 0, i64 0
  %458 = call i32 @s2n_read_test_pem_and_len(ptr noundef @.str.11, ptr noundef %457, ptr noundef %9, i64 noundef 5000)
  %459 = icmp eq i32 %458, -1
  br i1 %459, label %460, label %513

460:                                              ; preds = %454
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %463 = call ptr @__errno_location() #10
  %464 = load i32, ptr %463, align 4, !tbaa !5
  store i32 %464, ptr %24, align 4, !tbaa !5
  %465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %466 = call i32 @s2n_print_stacktrace(ptr noundef %465)
  %467 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %468 = trunc i8 %467 to i1
  br i1 %468, label %469, label %491

469:                                              ; preds = %462
  %470 = load ptr, ptr @stderr, align 8, !tbaa !9
  %471 = call i32 @fileno(ptr noundef %470) #9
  %472 = call i32 @isatty(i32 noundef %471) #9
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %474, label %491

474:                                              ; preds = %469
  %475 = load i32, ptr %24, align 4, !tbaa !5
  %476 = call ptr @__errno_location() #10
  store i32 %475, ptr %476, align 4, !tbaa !5
  %477 = load ptr, ptr @stderr, align 8, !tbaa !9
  %478 = load i32, ptr @test_count, align 4, !tbaa !5
  %479 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %480 = load i32, ptr %479, align 4, !tbaa !5
  %481 = call ptr @s2n_strerror(i32 noundef %480, ptr noundef @.str.4)
  %482 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %483 = load i32, ptr %482, align 4, !tbaa !5
  %484 = call ptr @s2n_strerror_debug(i32 noundef %483, ptr noundef @.str.4)
  %485 = call ptr @__errno_location() #10
  %486 = load i32, ptr %485, align 4, !tbaa !5
  %487 = call ptr @strerror(i32 noundef %486) #9
  %488 = call ptr @__errno_location() #10
  %489 = load i32, ptr %488, align 4, !tbaa !5
  %490 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %477, ptr noundef @.str.2, i32 noundef %478, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 192, ptr noundef %481, ptr noundef %484, ptr noundef %487, i32 noundef %489) #9
  br label %508

491:                                              ; preds = %469, %462
  %492 = load i32, ptr %24, align 4, !tbaa !5
  %493 = call ptr @__errno_location() #10
  store i32 %492, ptr %493, align 4, !tbaa !5
  %494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %495 = load i32, ptr @test_count, align 4, !tbaa !5
  %496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %497 = load i32, ptr %496, align 4, !tbaa !5
  %498 = call ptr @s2n_strerror(i32 noundef %497, ptr noundef @.str.4)
  %499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %500 = load i32, ptr %499, align 4, !tbaa !5
  %501 = call ptr @s2n_strerror_debug(i32 noundef %500, ptr noundef @.str.4)
  %502 = call ptr @__errno_location() #10
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = call ptr @strerror(i32 noundef %503) #9
  %505 = call ptr @__errno_location() #10
  %506 = load i32, ptr %505, align 4, !tbaa !5
  %507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %494, ptr noundef @.str.5, i32 noundef %495, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 192, ptr noundef %498, ptr noundef %501, ptr noundef %504, i32 noundef %506) #9
  br label %508

508:                                              ; preds = %491, %474
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %509

509:                                              ; preds = %508
  br label %510

510:                                              ; preds = %509
  call void @exit(i32 noundef 1) #11
  unreachable

511:                                              ; No predecessors!
  br label %512

512:                                              ; preds = %511
  br label %513

513:                                              ; preds = %512, %454
  br label %514

514:                                              ; preds = %513
  br label %515

515:                                              ; preds = %514
  br label %516

516:                                              ; preds = %515
  %517 = load i32, ptr @test_count, align 4, !tbaa !5
  %518 = add nsw i32 %517, 1
  store i32 %518, ptr @test_count, align 4, !tbaa !5
  %519 = load ptr, ptr %22, align 8, !tbaa !9
  %520 = getelementptr inbounds [5000 x i8], ptr %10, i64 0, i64 0
  %521 = load i32, ptr %9, align 4, !tbaa !5
  %522 = call i32 @s2n_cert_chain_and_key_load_public_pem_bytes(ptr noundef %519, ptr noundef %520, i32 noundef %521)
  %523 = icmp eq i32 %522, -1
  br i1 %523, label %524, label %577

524:                                              ; preds = %516
  br label %525

525:                                              ; preds = %524
  br label %526

526:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %527 = call ptr @__errno_location() #10
  %528 = load i32, ptr %527, align 4, !tbaa !5
  store i32 %528, ptr %25, align 4, !tbaa !5
  %529 = load ptr, ptr @stderr, align 8, !tbaa !9
  %530 = call i32 @s2n_print_stacktrace(ptr noundef %529)
  %531 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %532 = trunc i8 %531 to i1
  br i1 %532, label %533, label %555

533:                                              ; preds = %526
  %534 = load ptr, ptr @stderr, align 8, !tbaa !9
  %535 = call i32 @fileno(ptr noundef %534) #9
  %536 = call i32 @isatty(i32 noundef %535) #9
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %538, label %555

538:                                              ; preds = %533
  %539 = load i32, ptr %25, align 4, !tbaa !5
  %540 = call ptr @__errno_location() #10
  store i32 %539, ptr %540, align 4, !tbaa !5
  %541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %542 = load i32, ptr @test_count, align 4, !tbaa !5
  %543 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %544 = load i32, ptr %543, align 4, !tbaa !5
  %545 = call ptr @s2n_strerror(i32 noundef %544, ptr noundef @.str.4)
  %546 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %547 = load i32, ptr %546, align 4, !tbaa !5
  %548 = call ptr @s2n_strerror_debug(i32 noundef %547, ptr noundef @.str.4)
  %549 = call ptr @__errno_location() #10
  %550 = load i32, ptr %549, align 4, !tbaa !5
  %551 = call ptr @strerror(i32 noundef %550) #9
  %552 = call ptr @__errno_location() #10
  %553 = load i32, ptr %552, align 4, !tbaa !5
  %554 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %541, ptr noundef @.str.2, i32 noundef %542, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 193, ptr noundef %545, ptr noundef %548, ptr noundef %551, i32 noundef %553) #9
  br label %572

555:                                              ; preds = %533, %526
  %556 = load i32, ptr %25, align 4, !tbaa !5
  %557 = call ptr @__errno_location() #10
  store i32 %556, ptr %557, align 4, !tbaa !5
  %558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %559 = load i32, ptr @test_count, align 4, !tbaa !5
  %560 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %561 = load i32, ptr %560, align 4, !tbaa !5
  %562 = call ptr @s2n_strerror(i32 noundef %561, ptr noundef @.str.4)
  %563 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %564 = load i32, ptr %563, align 4, !tbaa !5
  %565 = call ptr @s2n_strerror_debug(i32 noundef %564, ptr noundef @.str.4)
  %566 = call ptr @__errno_location() #10
  %567 = load i32, ptr %566, align 4, !tbaa !5
  %568 = call ptr @strerror(i32 noundef %567) #9
  %569 = call ptr @__errno_location() #10
  %570 = load i32, ptr %569, align 4, !tbaa !5
  %571 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %558, ptr noundef @.str.5, i32 noundef %559, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 193, ptr noundef %562, ptr noundef %565, ptr noundef %568, i32 noundef %570) #9
  br label %572

572:                                              ; preds = %555, %538
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %573

573:                                              ; preds = %572
  br label %574

574:                                              ; preds = %573
  call void @exit(i32 noundef 1) #11
  unreachable

575:                                              ; No predecessors!
  br label %576

576:                                              ; preds = %575
  br label %577

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

578:                                              ; preds = %577
  br label %579

579:                                              ; preds = %578
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %580 = call ptr @s2n_cert_chain_and_key_new()
  store ptr %580, ptr %26, align 8, !tbaa !9
  br label %581

581:                                              ; preds = %579
  %582 = load i32, ptr @test_count, align 4, !tbaa !5
  %583 = add nsw i32 %582, 1
  store i32 %583, ptr @test_count, align 4, !tbaa !5
  %584 = load ptr, ptr %26, align 8, !tbaa !9
  %585 = icmp eq ptr %584, null
  br i1 %585, label %586, label %639

586:                                              ; preds = %581
  br label %587

587:                                              ; preds = %586
  br label %588

588:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %589 = call ptr @__errno_location() #10
  %590 = load i32, ptr %589, align 4, !tbaa !5
  store i32 %590, ptr %27, align 4, !tbaa !5
  %591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %592 = call i32 @s2n_print_stacktrace(ptr noundef %591)
  %593 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %594 = trunc i8 %593 to i1
  br i1 %594, label %595, label %617

595:                                              ; preds = %588
  %596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %597 = call i32 @fileno(ptr noundef %596) #9
  %598 = call i32 @isatty(i32 noundef %597) #9
  %599 = icmp ne i32 %598, 0
  br i1 %599, label %600, label %617

600:                                              ; preds = %595
  %601 = load i32, ptr %27, align 4, !tbaa !5
  %602 = call ptr @__errno_location() #10
  store i32 %601, ptr %602, align 4, !tbaa !5
  %603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %604 = load i32, ptr @test_count, align 4, !tbaa !5
  %605 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %606 = load i32, ptr %605, align 4, !tbaa !5
  %607 = call ptr @s2n_strerror(i32 noundef %606, ptr noundef @.str.4)
  %608 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %609 = load i32, ptr %608, align 4, !tbaa !5
  %610 = call ptr @s2n_strerror_debug(i32 noundef %609, ptr noundef @.str.4)
  %611 = call ptr @__errno_location() #10
  %612 = load i32, ptr %611, align 4, !tbaa !5
  %613 = call ptr @strerror(i32 noundef %612) #9
  %614 = call ptr @__errno_location() #10
  %615 = load i32, ptr %614, align 4, !tbaa !5
  %616 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %603, ptr noundef @.str.2, i32 noundef %604, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 196, ptr noundef %607, ptr noundef %610, ptr noundef %613, i32 noundef %615) #9
  br label %634

617:                                              ; preds = %595, %588
  %618 = load i32, ptr %27, align 4, !tbaa !5
  %619 = call ptr @__errno_location() #10
  store i32 %618, ptr %619, align 4, !tbaa !5
  %620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %621 = load i32, ptr @test_count, align 4, !tbaa !5
  %622 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %623 = load i32, ptr %622, align 4, !tbaa !5
  %624 = call ptr @s2n_strerror(i32 noundef %623, ptr noundef @.str.4)
  %625 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %626 = load i32, ptr %625, align 4, !tbaa !5
  %627 = call ptr @s2n_strerror_debug(i32 noundef %626, ptr noundef @.str.4)
  %628 = call ptr @__errno_location() #10
  %629 = load i32, ptr %628, align 4, !tbaa !5
  %630 = call ptr @strerror(i32 noundef %629) #9
  %631 = call ptr @__errno_location() #10
  %632 = load i32, ptr %631, align 4, !tbaa !5
  %633 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %620, ptr noundef @.str.5, i32 noundef %621, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 196, ptr noundef %624, ptr noundef %627, ptr noundef %630, i32 noundef %632) #9
  br label %634

634:                                              ; preds = %617, %600
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %635

635:                                              ; preds = %634
  br label %636

636:                                              ; preds = %635
  call void @exit(i32 noundef 1) #11
  unreachable

637:                                              ; No predecessors!
  br label %638

638:                                              ; preds = %637
  br label %639

639:                                              ; preds = %638, %581
  br label %640

640:                                              ; preds = %639
  br label %641

641:                                              ; preds = %640
  br label %642

642:                                              ; preds = %641
  %643 = load i32, ptr @test_count, align 4, !tbaa !5
  %644 = add nsw i32 %643, 1
  store i32 %644, ptr @test_count, align 4, !tbaa !5
  %645 = getelementptr inbounds [5000 x i8], ptr %10, i64 0, i64 0
  %646 = call i32 @s2n_read_test_pem_and_len(ptr noundef @.str.14, ptr noundef %645, ptr noundef %9, i64 noundef 5000)
  %647 = icmp eq i32 %646, -1
  br i1 %647, label %648, label %701

648:                                              ; preds = %642
  br label %649

649:                                              ; preds = %648
  br label %650

650:                                              ; preds = %649
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  %651 = call ptr @__errno_location() #10
  %652 = load i32, ptr %651, align 4, !tbaa !5
  store i32 %652, ptr %28, align 4, !tbaa !5
  %653 = load ptr, ptr @stderr, align 8, !tbaa !9
  %654 = call i32 @s2n_print_stacktrace(ptr noundef %653)
  %655 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %656 = trunc i8 %655 to i1
  br i1 %656, label %657, label %679

657:                                              ; preds = %650
  %658 = load ptr, ptr @stderr, align 8, !tbaa !9
  %659 = call i32 @fileno(ptr noundef %658) #9
  %660 = call i32 @isatty(i32 noundef %659) #9
  %661 = icmp ne i32 %660, 0
  br i1 %661, label %662, label %679

662:                                              ; preds = %657
  %663 = load i32, ptr %28, align 4, !tbaa !5
  %664 = call ptr @__errno_location() #10
  store i32 %663, ptr %664, align 4, !tbaa !5
  %665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %666 = load i32, ptr @test_count, align 4, !tbaa !5
  %667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %668 = load i32, ptr %667, align 4, !tbaa !5
  %669 = call ptr @s2n_strerror(i32 noundef %668, ptr noundef @.str.4)
  %670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %671 = load i32, ptr %670, align 4, !tbaa !5
  %672 = call ptr @s2n_strerror_debug(i32 noundef %671, ptr noundef @.str.4)
  %673 = call ptr @__errno_location() #10
  %674 = load i32, ptr %673, align 4, !tbaa !5
  %675 = call ptr @strerror(i32 noundef %674) #9
  %676 = call ptr @__errno_location() #10
  %677 = load i32, ptr %676, align 4, !tbaa !5
  %678 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %665, ptr noundef @.str.2, i32 noundef %666, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 197, ptr noundef %669, ptr noundef %672, ptr noundef %675, i32 noundef %677) #9
  br label %696

679:                                              ; preds = %657, %650
  %680 = load i32, ptr %28, align 4, !tbaa !5
  %681 = call ptr @__errno_location() #10
  store i32 %680, ptr %681, align 4, !tbaa !5
  %682 = load ptr, ptr @stderr, align 8, !tbaa !9
  %683 = load i32, ptr @test_count, align 4, !tbaa !5
  %684 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %685 = load i32, ptr %684, align 4, !tbaa !5
  %686 = call ptr @s2n_strerror(i32 noundef %685, ptr noundef @.str.4)
  %687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %688 = load i32, ptr %687, align 4, !tbaa !5
  %689 = call ptr @s2n_strerror_debug(i32 noundef %688, ptr noundef @.str.4)
  %690 = call ptr @__errno_location() #10
  %691 = load i32, ptr %690, align 4, !tbaa !5
  %692 = call ptr @strerror(i32 noundef %691) #9
  %693 = call ptr @__errno_location() #10
  %694 = load i32, ptr %693, align 4, !tbaa !5
  %695 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %682, ptr noundef @.str.5, i32 noundef %683, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 197, ptr noundef %686, ptr noundef %689, ptr noundef %692, i32 noundef %694) #9
  br label %696

696:                                              ; preds = %679, %662
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  br label %697

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697
  call void @exit(i32 noundef 1) #11
  unreachable

699:                                              ; No predecessors!
  br label %700

700:                                              ; preds = %699
  br label %701

701:                                              ; preds = %700, %642
  br label %702

702:                                              ; preds = %701
  br label %703

703:                                              ; preds = %702
  br label %704

704:                                              ; preds = %703
  %705 = load i32, ptr @test_count, align 4, !tbaa !5
  %706 = add nsw i32 %705, 1
  store i32 %706, ptr @test_count, align 4, !tbaa !5
  %707 = load ptr, ptr %26, align 8, !tbaa !9
  %708 = getelementptr inbounds [5000 x i8], ptr %10, i64 0, i64 0
  %709 = load i32, ptr %9, align 4, !tbaa !5
  %710 = call i32 @s2n_cert_chain_and_key_load_public_pem_bytes(ptr noundef %707, ptr noundef %708, i32 noundef %709)
  %711 = icmp eq i32 %710, -1
  br i1 %711, label %712, label %765

712:                                              ; preds = %704
  br label %713

713:                                              ; preds = %712
  br label %714

714:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %715 = call ptr @__errno_location() #10
  %716 = load i32, ptr %715, align 4, !tbaa !5
  store i32 %716, ptr %29, align 4, !tbaa !5
  %717 = load ptr, ptr @stderr, align 8, !tbaa !9
  %718 = call i32 @s2n_print_stacktrace(ptr noundef %717)
  %719 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %720 = trunc i8 %719 to i1
  br i1 %720, label %721, label %743

721:                                              ; preds = %714
  %722 = load ptr, ptr @stderr, align 8, !tbaa !9
  %723 = call i32 @fileno(ptr noundef %722) #9
  %724 = call i32 @isatty(i32 noundef %723) #9
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %726, label %743

726:                                              ; preds = %721
  %727 = load i32, ptr %29, align 4, !tbaa !5
  %728 = call ptr @__errno_location() #10
  store i32 %727, ptr %728, align 4, !tbaa !5
  %729 = load ptr, ptr @stderr, align 8, !tbaa !9
  %730 = load i32, ptr @test_count, align 4, !tbaa !5
  %731 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %732 = load i32, ptr %731, align 4, !tbaa !5
  %733 = call ptr @s2n_strerror(i32 noundef %732, ptr noundef @.str.4)
  %734 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %735 = load i32, ptr %734, align 4, !tbaa !5
  %736 = call ptr @s2n_strerror_debug(i32 noundef %735, ptr noundef @.str.4)
  %737 = call ptr @__errno_location() #10
  %738 = load i32, ptr %737, align 4, !tbaa !5
  %739 = call ptr @strerror(i32 noundef %738) #9
  %740 = call ptr @__errno_location() #10
  %741 = load i32, ptr %740, align 4, !tbaa !5
  %742 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %729, ptr noundef @.str.2, i32 noundef %730, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 198, ptr noundef %733, ptr noundef %736, ptr noundef %739, i32 noundef %741) #9
  br label %760

743:                                              ; preds = %721, %714
  %744 = load i32, ptr %29, align 4, !tbaa !5
  %745 = call ptr @__errno_location() #10
  store i32 %744, ptr %745, align 4, !tbaa !5
  %746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %747 = load i32, ptr @test_count, align 4, !tbaa !5
  %748 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %749 = load i32, ptr %748, align 4, !tbaa !5
  %750 = call ptr @s2n_strerror(i32 noundef %749, ptr noundef @.str.4)
  %751 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %752 = load i32, ptr %751, align 4, !tbaa !5
  %753 = call ptr @s2n_strerror_debug(i32 noundef %752, ptr noundef @.str.4)
  %754 = call ptr @__errno_location() #10
  %755 = load i32, ptr %754, align 4, !tbaa !5
  %756 = call ptr @strerror(i32 noundef %755) #9
  %757 = call ptr @__errno_location() #10
  %758 = load i32, ptr %757, align 4, !tbaa !5
  %759 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %746, ptr noundef @.str.5, i32 noundef %747, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 198, ptr noundef %750, ptr noundef %753, ptr noundef %756, i32 noundef %758) #9
  br label %760

760:                                              ; preds = %743, %726
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  br label %761

761:                                              ; preds = %760
  br label %762

762:                                              ; preds = %761
  call void @exit(i32 noundef 1) #11
  unreachable

763:                                              ; No predecessors!
  br label %764

764:                                              ; preds = %763
  br label %765

765:                                              ; preds = %764, %704
  br label %766

766:                                              ; preds = %765
  br label %767

767:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %768 = call ptr @s2n_config_new()
  store ptr %768, ptr %30, align 8, !tbaa !9
  br label %769

769:                                              ; preds = %767
  %770 = load i32, ptr @test_count, align 4, !tbaa !5
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr @test_count, align 4, !tbaa !5
  %772 = load ptr, ptr %30, align 8, !tbaa !9
  %773 = icmp eq ptr %772, null
  br i1 %773, label %774, label %827

774:                                              ; preds = %769
  br label %775

775:                                              ; preds = %774
  br label %776

776:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %777 = call ptr @__errno_location() #10
  %778 = load i32, ptr %777, align 4, !tbaa !5
  store i32 %778, ptr %31, align 4, !tbaa !5
  %779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %780 = call i32 @s2n_print_stacktrace(ptr noundef %779)
  %781 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %782 = trunc i8 %781 to i1
  br i1 %782, label %783, label %805

783:                                              ; preds = %776
  %784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %785 = call i32 @fileno(ptr noundef %784) #9
  %786 = call i32 @isatty(i32 noundef %785) #9
  %787 = icmp ne i32 %786, 0
  br i1 %787, label %788, label %805

788:                                              ; preds = %783
  %789 = load i32, ptr %31, align 4, !tbaa !5
  %790 = call ptr @__errno_location() #10
  store i32 %789, ptr %790, align 4, !tbaa !5
  %791 = load ptr, ptr @stderr, align 8, !tbaa !9
  %792 = load i32, ptr @test_count, align 4, !tbaa !5
  %793 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %794 = load i32, ptr %793, align 4, !tbaa !5
  %795 = call ptr @s2n_strerror(i32 noundef %794, ptr noundef @.str.4)
  %796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %797 = load i32, ptr %796, align 4, !tbaa !5
  %798 = call ptr @s2n_strerror_debug(i32 noundef %797, ptr noundef @.str.4)
  %799 = call ptr @__errno_location() #10
  %800 = load i32, ptr %799, align 4, !tbaa !5
  %801 = call ptr @strerror(i32 noundef %800) #9
  %802 = call ptr @__errno_location() #10
  %803 = load i32, ptr %802, align 4, !tbaa !5
  %804 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %791, ptr noundef @.str.2, i32 noundef %792, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 203, ptr noundef %795, ptr noundef %798, ptr noundef %801, i32 noundef %803) #9
  br label %822

805:                                              ; preds = %783, %776
  %806 = load i32, ptr %31, align 4, !tbaa !5
  %807 = call ptr @__errno_location() #10
  store i32 %806, ptr %807, align 4, !tbaa !5
  %808 = load ptr, ptr @stderr, align 8, !tbaa !9
  %809 = load i32, ptr @test_count, align 4, !tbaa !5
  %810 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %811 = load i32, ptr %810, align 4, !tbaa !5
  %812 = call ptr @s2n_strerror(i32 noundef %811, ptr noundef @.str.4)
  %813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %814 = load i32, ptr %813, align 4, !tbaa !5
  %815 = call ptr @s2n_strerror_debug(i32 noundef %814, ptr noundef @.str.4)
  %816 = call ptr @__errno_location() #10
  %817 = load i32, ptr %816, align 4, !tbaa !5
  %818 = call ptr @strerror(i32 noundef %817) #9
  %819 = call ptr @__errno_location() #10
  %820 = load i32, ptr %819, align 4, !tbaa !5
  %821 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %808, ptr noundef @.str.5, i32 noundef %809, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 203, ptr noundef %812, ptr noundef %815, ptr noundef %818, i32 noundef %820) #9
  br label %822

822:                                              ; preds = %805, %788
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %823

823:                                              ; preds = %822
  br label %824

824:                                              ; preds = %823
  call void @exit(i32 noundef 1) #11
  unreachable

825:                                              ; No predecessors!
  br label %826

826:                                              ; preds = %825
  br label %827

827:                                              ; preds = %826, %769
  br label %828

828:                                              ; preds = %827
  br label %829

829:                                              ; preds = %828
  br label %830

830:                                              ; preds = %829
  %831 = load i32, ptr @test_count, align 4, !tbaa !5
  %832 = add nsw i32 %831, 1
  store i32 %832, ptr @test_count, align 4, !tbaa !5
  %833 = load ptr, ptr %30, align 8, !tbaa !9
  %834 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef %833)
  %835 = icmp eq i32 %834, -1
  br i1 %835, label %836, label %889

836:                                              ; preds = %830
  br label %837

837:                                              ; preds = %836
  br label %838

838:                                              ; preds = %837
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %839 = call ptr @__errno_location() #10
  %840 = load i32, ptr %839, align 4, !tbaa !5
  store i32 %840, ptr %32, align 4, !tbaa !5
  %841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %842 = call i32 @s2n_print_stacktrace(ptr noundef %841)
  %843 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %844 = trunc i8 %843 to i1
  br i1 %844, label %845, label %867

845:                                              ; preds = %838
  %846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %847 = call i32 @fileno(ptr noundef %846) #9
  %848 = call i32 @isatty(i32 noundef %847) #9
  %849 = icmp ne i32 %848, 0
  br i1 %849, label %850, label %867

850:                                              ; preds = %845
  %851 = load i32, ptr %32, align 4, !tbaa !5
  %852 = call ptr @__errno_location() #10
  store i32 %851, ptr %852, align 4, !tbaa !5
  %853 = load ptr, ptr @stderr, align 8, !tbaa !9
  %854 = load i32, ptr @test_count, align 4, !tbaa !5
  %855 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %856 = load i32, ptr %855, align 4, !tbaa !5
  %857 = call ptr @s2n_strerror(i32 noundef %856, ptr noundef @.str.4)
  %858 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %859 = load i32, ptr %858, align 4, !tbaa !5
  %860 = call ptr @s2n_strerror_debug(i32 noundef %859, ptr noundef @.str.4)
  %861 = call ptr @__errno_location() #10
  %862 = load i32, ptr %861, align 4, !tbaa !5
  %863 = call ptr @strerror(i32 noundef %862) #9
  %864 = call ptr @__errno_location() #10
  %865 = load i32, ptr %864, align 4, !tbaa !5
  %866 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %853, ptr noundef @.str.2, i32 noundef %854, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 204, ptr noundef %857, ptr noundef %860, ptr noundef %863, i32 noundef %865) #9
  br label %884

867:                                              ; preds = %845, %838
  %868 = load i32, ptr %32, align 4, !tbaa !5
  %869 = call ptr @__errno_location() #10
  store i32 %868, ptr %869, align 4, !tbaa !5
  %870 = load ptr, ptr @stderr, align 8, !tbaa !9
  %871 = load i32, ptr @test_count, align 4, !tbaa !5
  %872 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %873 = load i32, ptr %872, align 4, !tbaa !5
  %874 = call ptr @s2n_strerror(i32 noundef %873, ptr noundef @.str.4)
  %875 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %876 = load i32, ptr %875, align 4, !tbaa !5
  %877 = call ptr @s2n_strerror_debug(i32 noundef %876, ptr noundef @.str.4)
  %878 = call ptr @__errno_location() #10
  %879 = load i32, ptr %878, align 4, !tbaa !5
  %880 = call ptr @strerror(i32 noundef %879) #9
  %881 = call ptr @__errno_location() #10
  %882 = load i32, ptr %881, align 4, !tbaa !5
  %883 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %870, ptr noundef @.str.5, i32 noundef %871, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 204, ptr noundef %874, ptr noundef %877, ptr noundef %880, i32 noundef %882) #9
  br label %884

884:                                              ; preds = %867, %850
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %885

885:                                              ; preds = %884
  br label %886

886:                                              ; preds = %885
  call void @exit(i32 noundef 1) #11
  unreachable

887:                                              ; No predecessors!
  br label %888

888:                                              ; preds = %887
  br label %889

889:                                              ; preds = %888, %830
  br label %890

890:                                              ; preds = %889
  br label %891

891:                                              ; preds = %890
  br label %892

892:                                              ; preds = %891
  %893 = load i32, ptr @test_count, align 4, !tbaa !5
  %894 = add nsw i32 %893, 1
  store i32 %894, ptr @test_count, align 4, !tbaa !5
  %895 = load ptr, ptr %30, align 8, !tbaa !9
  %896 = load ptr, ptr %22, align 8, !tbaa !9
  %897 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %895, ptr noundef %896)
  %898 = icmp eq i32 %897, -1
  br i1 %898, label %899, label %952

899:                                              ; preds = %892
  br label %900

900:                                              ; preds = %899
  br label %901

901:                                              ; preds = %900
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  %902 = call ptr @__errno_location() #10
  %903 = load i32, ptr %902, align 4, !tbaa !5
  store i32 %903, ptr %33, align 4, !tbaa !5
  %904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %905 = call i32 @s2n_print_stacktrace(ptr noundef %904)
  %906 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %907 = trunc i8 %906 to i1
  br i1 %907, label %908, label %930

908:                                              ; preds = %901
  %909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %910 = call i32 @fileno(ptr noundef %909) #9
  %911 = call i32 @isatty(i32 noundef %910) #9
  %912 = icmp ne i32 %911, 0
  br i1 %912, label %913, label %930

913:                                              ; preds = %908
  %914 = load i32, ptr %33, align 4, !tbaa !5
  %915 = call ptr @__errno_location() #10
  store i32 %914, ptr %915, align 4, !tbaa !5
  %916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %917 = load i32, ptr @test_count, align 4, !tbaa !5
  %918 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %919 = load i32, ptr %918, align 4, !tbaa !5
  %920 = call ptr @s2n_strerror(i32 noundef %919, ptr noundef @.str.4)
  %921 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %922 = load i32, ptr %921, align 4, !tbaa !5
  %923 = call ptr @s2n_strerror_debug(i32 noundef %922, ptr noundef @.str.4)
  %924 = call ptr @__errno_location() #10
  %925 = load i32, ptr %924, align 4, !tbaa !5
  %926 = call ptr @strerror(i32 noundef %925) #9
  %927 = call ptr @__errno_location() #10
  %928 = load i32, ptr %927, align 4, !tbaa !5
  %929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %916, ptr noundef @.str.2, i32 noundef %917, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 205, ptr noundef %920, ptr noundef %923, ptr noundef %926, i32 noundef %928) #9
  br label %947

930:                                              ; preds = %908, %901
  %931 = load i32, ptr %33, align 4, !tbaa !5
  %932 = call ptr @__errno_location() #10
  store i32 %931, ptr %932, align 4, !tbaa !5
  %933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %934 = load i32, ptr @test_count, align 4, !tbaa !5
  %935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %936 = load i32, ptr %935, align 4, !tbaa !5
  %937 = call ptr @s2n_strerror(i32 noundef %936, ptr noundef @.str.4)
  %938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %939 = load i32, ptr %938, align 4, !tbaa !5
  %940 = call ptr @s2n_strerror_debug(i32 noundef %939, ptr noundef @.str.4)
  %941 = call ptr @__errno_location() #10
  %942 = load i32, ptr %941, align 4, !tbaa !5
  %943 = call ptr @strerror(i32 noundef %942) #9
  %944 = call ptr @__errno_location() #10
  %945 = load i32, ptr %944, align 4, !tbaa !5
  %946 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %933, ptr noundef @.str.5, i32 noundef %934, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 205, ptr noundef %937, ptr noundef %940, ptr noundef %943, i32 noundef %945) #9
  br label %947

947:                                              ; preds = %930, %913
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %948

948:                                              ; preds = %947
  br label %949

949:                                              ; preds = %948
  call void @exit(i32 noundef 1) #11
  unreachable

950:                                              ; No predecessors!
  br label %951

951:                                              ; preds = %950
  br label %952

952:                                              ; preds = %951, %892
  br label %953

953:                                              ; preds = %952
  br label %954

954:                                              ; preds = %953
  br label %955

955:                                              ; preds = %954
  %956 = load i32, ptr @test_count, align 4, !tbaa !5
  %957 = add nsw i32 %956, 1
  store i32 %957, ptr @test_count, align 4, !tbaa !5
  %958 = load ptr, ptr %30, align 8, !tbaa !9
  %959 = call i32 @s2n_config_set_async_pkey_callback(ptr noundef %958, ptr noundef @s2n_test_async_pkey_cb)
  %960 = icmp eq i32 %959, -1
  br i1 %960, label %961, label %1014

961:                                              ; preds = %955
  br label %962

962:                                              ; preds = %961
  br label %963

963:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  %964 = call ptr @__errno_location() #10
  %965 = load i32, ptr %964, align 4, !tbaa !5
  store i32 %965, ptr %34, align 4, !tbaa !5
  %966 = load ptr, ptr @stderr, align 8, !tbaa !9
  %967 = call i32 @s2n_print_stacktrace(ptr noundef %966)
  %968 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %969 = trunc i8 %968 to i1
  br i1 %969, label %970, label %992

970:                                              ; preds = %963
  %971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %972 = call i32 @fileno(ptr noundef %971) #9
  %973 = call i32 @isatty(i32 noundef %972) #9
  %974 = icmp ne i32 %973, 0
  br i1 %974, label %975, label %992

975:                                              ; preds = %970
  %976 = load i32, ptr %34, align 4, !tbaa !5
  %977 = call ptr @__errno_location() #10
  store i32 %976, ptr %977, align 4, !tbaa !5
  %978 = load ptr, ptr @stderr, align 8, !tbaa !9
  %979 = load i32, ptr @test_count, align 4, !tbaa !5
  %980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %981 = load i32, ptr %980, align 4, !tbaa !5
  %982 = call ptr @s2n_strerror(i32 noundef %981, ptr noundef @.str.4)
  %983 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %984 = load i32, ptr %983, align 4, !tbaa !5
  %985 = call ptr @s2n_strerror_debug(i32 noundef %984, ptr noundef @.str.4)
  %986 = call ptr @__errno_location() #10
  %987 = load i32, ptr %986, align 4, !tbaa !5
  %988 = call ptr @strerror(i32 noundef %987) #9
  %989 = call ptr @__errno_location() #10
  %990 = load i32, ptr %989, align 4, !tbaa !5
  %991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %978, ptr noundef @.str.2, i32 noundef %979, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 206, ptr noundef %982, ptr noundef %985, ptr noundef %988, i32 noundef %990) #9
  br label %1009

992:                                              ; preds = %970, %963
  %993 = load i32, ptr %34, align 4, !tbaa !5
  %994 = call ptr @__errno_location() #10
  store i32 %993, ptr %994, align 4, !tbaa !5
  %995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %996 = load i32, ptr @test_count, align 4, !tbaa !5
  %997 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %998 = load i32, ptr %997, align 4, !tbaa !5
  %999 = call ptr @s2n_strerror(i32 noundef %998, ptr noundef @.str.4)
  %1000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1001 = load i32, ptr %1000, align 4, !tbaa !5
  %1002 = call ptr @s2n_strerror_debug(i32 noundef %1001, ptr noundef @.str.4)
  %1003 = call ptr @__errno_location() #10
  %1004 = load i32, ptr %1003, align 4, !tbaa !5
  %1005 = call ptr @strerror(i32 noundef %1004) #9
  %1006 = call ptr @__errno_location() #10
  %1007 = load i32, ptr %1006, align 4, !tbaa !5
  %1008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %995, ptr noundef @.str.5, i32 noundef %996, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 206, ptr noundef %999, ptr noundef %1002, ptr noundef %1005, i32 noundef %1007) #9
  br label %1009

1009:                                             ; preds = %992, %975
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  br label %1010

1010:                                             ; preds = %1009
  br label %1011

1011:                                             ; preds = %1010
  call void @exit(i32 noundef 1) #11
  unreachable

1012:                                             ; No predecessors!
  br label %1013

1013:                                             ; preds = %1012
  br label %1014

1014:                                             ; preds = %1013, %955
  br label %1015

1015:                                             ; preds = %1014
  br label %1016

1016:                                             ; preds = %1015
  br label %1017

1017:                                             ; preds = %1016
  %1018 = load i32, ptr @test_count, align 4, !tbaa !5
  %1019 = add nsw i32 %1018, 1
  store i32 %1019, ptr @test_count, align 4, !tbaa !5
  %1020 = load ptr, ptr %30, align 8, !tbaa !9
  %1021 = load ptr, ptr %11, align 8, !tbaa !9
  %1022 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %1020, ptr noundef %1021)
  %1023 = icmp eq i32 %1022, -1
  br i1 %1023, label %1024, label %1077

1024:                                             ; preds = %1017
  br label %1025

1025:                                             ; preds = %1024
  br label %1026

1026:                                             ; preds = %1025
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  %1027 = call ptr @__errno_location() #10
  %1028 = load i32, ptr %1027, align 4, !tbaa !5
  store i32 %1028, ptr %35, align 4, !tbaa !5
  %1029 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1030 = call i32 @s2n_print_stacktrace(ptr noundef %1029)
  %1031 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1032 = trunc i8 %1031 to i1
  br i1 %1032, label %1033, label %1055

1033:                                             ; preds = %1026
  %1034 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1035 = call i32 @fileno(ptr noundef %1034) #9
  %1036 = call i32 @isatty(i32 noundef %1035) #9
  %1037 = icmp ne i32 %1036, 0
  br i1 %1037, label %1038, label %1055

1038:                                             ; preds = %1033
  %1039 = load i32, ptr %35, align 4, !tbaa !5
  %1040 = call ptr @__errno_location() #10
  store i32 %1039, ptr %1040, align 4, !tbaa !5
  %1041 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1042 = load i32, ptr @test_count, align 4, !tbaa !5
  %1043 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1044 = load i32, ptr %1043, align 4, !tbaa !5
  %1045 = call ptr @s2n_strerror(i32 noundef %1044, ptr noundef @.str.4)
  %1046 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1047 = load i32, ptr %1046, align 4, !tbaa !5
  %1048 = call ptr @s2n_strerror_debug(i32 noundef %1047, ptr noundef @.str.4)
  %1049 = call ptr @__errno_location() #10
  %1050 = load i32, ptr %1049, align 4, !tbaa !5
  %1051 = call ptr @strerror(i32 noundef %1050) #9
  %1052 = call ptr @__errno_location() #10
  %1053 = load i32, ptr %1052, align 4, !tbaa !5
  %1054 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1041, ptr noundef @.str.2, i32 noundef %1042, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 211, ptr noundef %1045, ptr noundef %1048, ptr noundef %1051, i32 noundef %1053) #9
  br label %1072

1055:                                             ; preds = %1033, %1026
  %1056 = load i32, ptr %35, align 4, !tbaa !5
  %1057 = call ptr @__errno_location() #10
  store i32 %1056, ptr %1057, align 4, !tbaa !5
  %1058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1059 = load i32, ptr @test_count, align 4, !tbaa !5
  %1060 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1061 = load i32, ptr %1060, align 4, !tbaa !5
  %1062 = call ptr @s2n_strerror(i32 noundef %1061, ptr noundef @.str.4)
  %1063 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1064 = load i32, ptr %1063, align 4, !tbaa !5
  %1065 = call ptr @s2n_strerror_debug(i32 noundef %1064, ptr noundef @.str.4)
  %1066 = call ptr @__errno_location() #10
  %1067 = load i32, ptr %1066, align 4, !tbaa !5
  %1068 = call ptr @strerror(i32 noundef %1067) #9
  %1069 = call ptr @__errno_location() #10
  %1070 = load i32, ptr %1069, align 4, !tbaa !5
  %1071 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1058, ptr noundef @.str.5, i32 noundef %1059, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 211, ptr noundef %1062, ptr noundef %1065, ptr noundef %1068, i32 noundef %1070) #9
  br label %1072

1072:                                             ; preds = %1055, %1038
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  br label %1073

1073:                                             ; preds = %1072
  br label %1074

1074:                                             ; preds = %1073
  call void @exit(i32 noundef 1) #11
  unreachable

1075:                                             ; No predecessors!
  br label %1076

1076:                                             ; preds = %1075
  br label %1077

1077:                                             ; preds = %1076, %1017
  br label %1078

1078:                                             ; preds = %1077
  br label %1079

1079:                                             ; preds = %1078
  br label %1080

1080:                                             ; preds = %1079
  %1081 = load i32, ptr @test_count, align 4, !tbaa !5
  %1082 = add nsw i32 %1081, 1
  store i32 %1082, ptr @test_count, align 4, !tbaa !5
  %1083 = load ptr, ptr %30, align 8, !tbaa !9
  %1084 = load ptr, ptr %18, align 8, !tbaa !9
  %1085 = load i32, ptr %14, align 4, !tbaa !5
  %1086 = or i32 %1085, 16
  %1087 = call i32 @s2n_do_test_handshake(ptr noundef %1083, ptr noundef %1084, i8 noundef zeroext 33, i32 noundef %1086)
  %1088 = getelementptr inbounds %struct.s2n_result, ptr %36, i32 0, i32 0
  store i32 %1087, ptr %1088, align 4
  %1089 = getelementptr inbounds %struct.s2n_result, ptr %36, i32 0, i32 0
  %1090 = load i32, ptr %1089, align 4
  %1091 = call zeroext i1 @s2n_result_is_ok(i32 %1090)
  br i1 %1091, label %1145, label %1092

1092:                                             ; preds = %1080
  br label %1093

1093:                                             ; preds = %1092
  br label %1094

1094:                                             ; preds = %1093
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  %1095 = call ptr @__errno_location() #10
  %1096 = load i32, ptr %1095, align 4, !tbaa !5
  store i32 %1096, ptr %37, align 4, !tbaa !5
  %1097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1098 = call i32 @s2n_print_stacktrace(ptr noundef %1097)
  %1099 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1100 = trunc i8 %1099 to i1
  br i1 %1100, label %1101, label %1123

1101:                                             ; preds = %1094
  %1102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1103 = call i32 @fileno(ptr noundef %1102) #9
  %1104 = call i32 @isatty(i32 noundef %1103) #9
  %1105 = icmp ne i32 %1104, 0
  br i1 %1105, label %1106, label %1123

1106:                                             ; preds = %1101
  %1107 = load i32, ptr %37, align 4, !tbaa !5
  %1108 = call ptr @__errno_location() #10
  store i32 %1107, ptr %1108, align 4, !tbaa !5
  %1109 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1110 = load i32, ptr @test_count, align 4, !tbaa !5
  %1111 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1112 = load i32, ptr %1111, align 4, !tbaa !5
  %1113 = call ptr @s2n_strerror(i32 noundef %1112, ptr noundef @.str.4)
  %1114 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1115 = load i32, ptr %1114, align 4, !tbaa !5
  %1116 = call ptr @s2n_strerror_debug(i32 noundef %1115, ptr noundef @.str.4)
  %1117 = call ptr @__errno_location() #10
  %1118 = load i32, ptr %1117, align 4, !tbaa !5
  %1119 = call ptr @strerror(i32 noundef %1118) #9
  %1120 = call ptr @__errno_location() #10
  %1121 = load i32, ptr %1120, align 4, !tbaa !5
  %1122 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1109, ptr noundef @.str.2, i32 noundef %1110, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 213, ptr noundef %1113, ptr noundef %1116, ptr noundef %1119, i32 noundef %1121) #9
  br label %1140

1123:                                             ; preds = %1101, %1094
  %1124 = load i32, ptr %37, align 4, !tbaa !5
  %1125 = call ptr @__errno_location() #10
  store i32 %1124, ptr %1125, align 4, !tbaa !5
  %1126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1127 = load i32, ptr @test_count, align 4, !tbaa !5
  %1128 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1129 = load i32, ptr %1128, align 4, !tbaa !5
  %1130 = call ptr @s2n_strerror(i32 noundef %1129, ptr noundef @.str.4)
  %1131 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1132 = load i32, ptr %1131, align 4, !tbaa !5
  %1133 = call ptr @s2n_strerror_debug(i32 noundef %1132, ptr noundef @.str.4)
  %1134 = call ptr @__errno_location() #10
  %1135 = load i32, ptr %1134, align 4, !tbaa !5
  %1136 = call ptr @strerror(i32 noundef %1135) #9
  %1137 = call ptr @__errno_location() #10
  %1138 = load i32, ptr %1137, align 4, !tbaa !5
  %1139 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1126, ptr noundef @.str.5, i32 noundef %1127, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 213, ptr noundef %1130, ptr noundef %1133, ptr noundef %1136, i32 noundef %1138) #9
  br label %1140

1140:                                             ; preds = %1123, %1106
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %1141

1141:                                             ; preds = %1140
  br label %1142

1142:                                             ; preds = %1141
  call void @exit(i32 noundef 1) #11
  unreachable

1143:                                             ; No predecessors!
  br label %1144

1144:                                             ; preds = %1143
  br label %1145

1145:                                             ; preds = %1144, %1080
  br label %1146

1146:                                             ; preds = %1145
  br label %1147

1147:                                             ; preds = %1146
  br label %1148

1148:                                             ; preds = %1147
  %1149 = load i32, ptr @test_count, align 4, !tbaa !5
  %1150 = add nsw i32 %1149, 1
  store i32 %1150, ptr @test_count, align 4, !tbaa !5
  %1151 = load ptr, ptr %30, align 8, !tbaa !9
  %1152 = load ptr, ptr %12, align 8, !tbaa !9
  %1153 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %1151, ptr noundef %1152)
  %1154 = icmp eq i32 %1153, -1
  br i1 %1154, label %1155, label %1208

1155:                                             ; preds = %1148
  br label %1156

1156:                                             ; preds = %1155
  br label %1157

1157:                                             ; preds = %1156
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  %1158 = call ptr @__errno_location() #10
  %1159 = load i32, ptr %1158, align 4, !tbaa !5
  store i32 %1159, ptr %38, align 4, !tbaa !5
  %1160 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1161 = call i32 @s2n_print_stacktrace(ptr noundef %1160)
  %1162 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1163 = trunc i8 %1162 to i1
  br i1 %1163, label %1164, label %1186

1164:                                             ; preds = %1157
  %1165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1166 = call i32 @fileno(ptr noundef %1165) #9
  %1167 = call i32 @isatty(i32 noundef %1166) #9
  %1168 = icmp ne i32 %1167, 0
  br i1 %1168, label %1169, label %1186

1169:                                             ; preds = %1164
  %1170 = load i32, ptr %38, align 4, !tbaa !5
  %1171 = call ptr @__errno_location() #10
  store i32 %1170, ptr %1171, align 4, !tbaa !5
  %1172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1173 = load i32, ptr @test_count, align 4, !tbaa !5
  %1174 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1175 = load i32, ptr %1174, align 4, !tbaa !5
  %1176 = call ptr @s2n_strerror(i32 noundef %1175, ptr noundef @.str.4)
  %1177 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  %1179 = call ptr @s2n_strerror_debug(i32 noundef %1178, ptr noundef @.str.4)
  %1180 = call ptr @__errno_location() #10
  %1181 = load i32, ptr %1180, align 4, !tbaa !5
  %1182 = call ptr @strerror(i32 noundef %1181) #9
  %1183 = call ptr @__errno_location() #10
  %1184 = load i32, ptr %1183, align 4, !tbaa !5
  %1185 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1172, ptr noundef @.str.2, i32 noundef %1173, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 216, ptr noundef %1176, ptr noundef %1179, ptr noundef %1182, i32 noundef %1184) #9
  br label %1203

1186:                                             ; preds = %1164, %1157
  %1187 = load i32, ptr %38, align 4, !tbaa !5
  %1188 = call ptr @__errno_location() #10
  store i32 %1187, ptr %1188, align 4, !tbaa !5
  %1189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1190 = load i32, ptr @test_count, align 4, !tbaa !5
  %1191 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1192 = load i32, ptr %1191, align 4, !tbaa !5
  %1193 = call ptr @s2n_strerror(i32 noundef %1192, ptr noundef @.str.4)
  %1194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  %1196 = call ptr @s2n_strerror_debug(i32 noundef %1195, ptr noundef @.str.4)
  %1197 = call ptr @__errno_location() #10
  %1198 = load i32, ptr %1197, align 4, !tbaa !5
  %1199 = call ptr @strerror(i32 noundef %1198) #9
  %1200 = call ptr @__errno_location() #10
  %1201 = load i32, ptr %1200, align 4, !tbaa !5
  %1202 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1189, ptr noundef @.str.5, i32 noundef %1190, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 216, ptr noundef %1193, ptr noundef %1196, ptr noundef %1199, i32 noundef %1201) #9
  br label %1203

1203:                                             ; preds = %1186, %1169
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204
  call void @exit(i32 noundef 1) #11
  unreachable

1206:                                             ; No predecessors!
  br label %1207

1207:                                             ; preds = %1206
  br label %1208

1208:                                             ; preds = %1207, %1148
  br label %1209

1209:                                             ; preds = %1208
  br label %1210

1210:                                             ; preds = %1209
  br label %1211

1211:                                             ; preds = %1210
  %1212 = load i32, ptr @test_count, align 4, !tbaa !5
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr @test_count, align 4, !tbaa !5
  %1214 = load ptr, ptr %30, align 8, !tbaa !9
  %1215 = load ptr, ptr %18, align 8, !tbaa !9
  %1216 = call i32 (...) @s2n_get_highest_fully_supported_tls_version()
  %1217 = trunc i32 %1216 to i8
  %1218 = load i32, ptr %17, align 4, !tbaa !5
  %1219 = call i32 @s2n_do_test_handshake(ptr noundef %1214, ptr noundef %1215, i8 noundef zeroext %1217, i32 noundef %1218)
  %1220 = getelementptr inbounds %struct.s2n_result, ptr %39, i32 0, i32 0
  store i32 %1219, ptr %1220, align 4
  %1221 = getelementptr inbounds %struct.s2n_result, ptr %39, i32 0, i32 0
  %1222 = load i32, ptr %1221, align 4
  %1223 = call zeroext i1 @s2n_result_is_ok(i32 %1222)
  br i1 %1223, label %1277, label %1224

1224:                                             ; preds = %1211
  br label %1225

1225:                                             ; preds = %1224
  br label %1226

1226:                                             ; preds = %1225
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  %1227 = call ptr @__errno_location() #10
  %1228 = load i32, ptr %1227, align 4, !tbaa !5
  store i32 %1228, ptr %40, align 4, !tbaa !5
  %1229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1230 = call i32 @s2n_print_stacktrace(ptr noundef %1229)
  %1231 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1232 = trunc i8 %1231 to i1
  br i1 %1232, label %1233, label %1255

1233:                                             ; preds = %1226
  %1234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1235 = call i32 @fileno(ptr noundef %1234) #9
  %1236 = call i32 @isatty(i32 noundef %1235) #9
  %1237 = icmp ne i32 %1236, 0
  br i1 %1237, label %1238, label %1255

1238:                                             ; preds = %1233
  %1239 = load i32, ptr %40, align 4, !tbaa !5
  %1240 = call ptr @__errno_location() #10
  store i32 %1239, ptr %1240, align 4, !tbaa !5
  %1241 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1242 = load i32, ptr @test_count, align 4, !tbaa !5
  %1243 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1244 = load i32, ptr %1243, align 4, !tbaa !5
  %1245 = call ptr @s2n_strerror(i32 noundef %1244, ptr noundef @.str.4)
  %1246 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1247 = load i32, ptr %1246, align 4, !tbaa !5
  %1248 = call ptr @s2n_strerror_debug(i32 noundef %1247, ptr noundef @.str.4)
  %1249 = call ptr @__errno_location() #10
  %1250 = load i32, ptr %1249, align 4, !tbaa !5
  %1251 = call ptr @strerror(i32 noundef %1250) #9
  %1252 = call ptr @__errno_location() #10
  %1253 = load i32, ptr %1252, align 4, !tbaa !5
  %1254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1241, ptr noundef @.str.2, i32 noundef %1242, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 218, ptr noundef %1245, ptr noundef %1248, ptr noundef %1251, i32 noundef %1253) #9
  br label %1272

1255:                                             ; preds = %1233, %1226
  %1256 = load i32, ptr %40, align 4, !tbaa !5
  %1257 = call ptr @__errno_location() #10
  store i32 %1256, ptr %1257, align 4, !tbaa !5
  %1258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1259 = load i32, ptr @test_count, align 4, !tbaa !5
  %1260 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1261 = load i32, ptr %1260, align 4, !tbaa !5
  %1262 = call ptr @s2n_strerror(i32 noundef %1261, ptr noundef @.str.4)
  %1263 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1264 = load i32, ptr %1263, align 4, !tbaa !5
  %1265 = call ptr @s2n_strerror_debug(i32 noundef %1264, ptr noundef @.str.4)
  %1266 = call ptr @__errno_location() #10
  %1267 = load i32, ptr %1266, align 4, !tbaa !5
  %1268 = call ptr @strerror(i32 noundef %1267) #9
  %1269 = call ptr @__errno_location() #10
  %1270 = load i32, ptr %1269, align 4, !tbaa !5
  %1271 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1258, ptr noundef @.str.5, i32 noundef %1259, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 218, ptr noundef %1262, ptr noundef %1265, ptr noundef %1268, i32 noundef %1270) #9
  br label %1272

1272:                                             ; preds = %1255, %1238
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %1273

1273:                                             ; preds = %1272
  br label %1274

1274:                                             ; preds = %1273
  call void @exit(i32 noundef 1) #11
  unreachable

1275:                                             ; No predecessors!
  br label %1276

1276:                                             ; preds = %1275
  br label %1277

1277:                                             ; preds = %1276, %1211
  br label %1278

1278:                                             ; preds = %1277
  br label %1279

1279:                                             ; preds = %1278
  br label %1280

1280:                                             ; preds = %1279
  %1281 = load i32, ptr @test_count, align 4, !tbaa !5
  %1282 = add nsw i32 %1281, 1
  store i32 %1282, ptr @test_count, align 4, !tbaa !5
  %1283 = load ptr, ptr %30, align 8, !tbaa !9
  %1284 = call i32 @s2n_config_set_client_auth_type(ptr noundef %1283, i32 noundef 1)
  %1285 = icmp eq i32 %1284, -1
  br i1 %1285, label %1286, label %1339

1286:                                             ; preds = %1280
  br label %1287

1287:                                             ; preds = %1286
  br label %1288

1288:                                             ; preds = %1287
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %1289 = call ptr @__errno_location() #10
  %1290 = load i32, ptr %1289, align 4, !tbaa !5
  store i32 %1290, ptr %41, align 4, !tbaa !5
  %1291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1292 = call i32 @s2n_print_stacktrace(ptr noundef %1291)
  %1293 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1294 = trunc i8 %1293 to i1
  br i1 %1294, label %1295, label %1317

1295:                                             ; preds = %1288
  %1296 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1297 = call i32 @fileno(ptr noundef %1296) #9
  %1298 = call i32 @isatty(i32 noundef %1297) #9
  %1299 = icmp ne i32 %1298, 0
  br i1 %1299, label %1300, label %1317

1300:                                             ; preds = %1295
  %1301 = load i32, ptr %41, align 4, !tbaa !5
  %1302 = call ptr @__errno_location() #10
  store i32 %1301, ptr %1302, align 4, !tbaa !5
  %1303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1304 = load i32, ptr @test_count, align 4, !tbaa !5
  %1305 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1306 = load i32, ptr %1305, align 4, !tbaa !5
  %1307 = call ptr @s2n_strerror(i32 noundef %1306, ptr noundef @.str.4)
  %1308 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1309 = load i32, ptr %1308, align 4, !tbaa !5
  %1310 = call ptr @s2n_strerror_debug(i32 noundef %1309, ptr noundef @.str.4)
  %1311 = call ptr @__errno_location() #10
  %1312 = load i32, ptr %1311, align 4, !tbaa !5
  %1313 = call ptr @strerror(i32 noundef %1312) #9
  %1314 = call ptr @__errno_location() #10
  %1315 = load i32, ptr %1314, align 4, !tbaa !5
  %1316 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1303, ptr noundef @.str.2, i32 noundef %1304, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 223, ptr noundef %1307, ptr noundef %1310, ptr noundef %1313, i32 noundef %1315) #9
  br label %1334

1317:                                             ; preds = %1295, %1288
  %1318 = load i32, ptr %41, align 4, !tbaa !5
  %1319 = call ptr @__errno_location() #10
  store i32 %1318, ptr %1319, align 4, !tbaa !5
  %1320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1321 = load i32, ptr @test_count, align 4, !tbaa !5
  %1322 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1323 = load i32, ptr %1322, align 4, !tbaa !5
  %1324 = call ptr @s2n_strerror(i32 noundef %1323, ptr noundef @.str.4)
  %1325 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1326 = load i32, ptr %1325, align 4, !tbaa !5
  %1327 = call ptr @s2n_strerror_debug(i32 noundef %1326, ptr noundef @.str.4)
  %1328 = call ptr @__errno_location() #10
  %1329 = load i32, ptr %1328, align 4, !tbaa !5
  %1330 = call ptr @strerror(i32 noundef %1329) #9
  %1331 = call ptr @__errno_location() #10
  %1332 = load i32, ptr %1331, align 4, !tbaa !5
  %1333 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1320, ptr noundef @.str.5, i32 noundef %1321, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 223, ptr noundef %1324, ptr noundef %1327, ptr noundef %1330, i32 noundef %1332) #9
  br label %1334

1334:                                             ; preds = %1317, %1300
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %1335

1335:                                             ; preds = %1334
  br label %1336

1336:                                             ; preds = %1335
  call void @exit(i32 noundef 1) #11
  unreachable

1337:                                             ; No predecessors!
  br label %1338

1338:                                             ; preds = %1337
  br label %1339

1339:                                             ; preds = %1338, %1280
  br label %1340

1340:                                             ; preds = %1339
  br label %1341

1341:                                             ; preds = %1340
  br label %1342

1342:                                             ; preds = %1341
  %1343 = load i32, ptr @test_count, align 4, !tbaa !5
  %1344 = add nsw i32 %1343, 1
  store i32 %1344, ptr @test_count, align 4, !tbaa !5
  %1345 = load ptr, ptr %30, align 8, !tbaa !9
  %1346 = load ptr, ptr %11, align 8, !tbaa !9
  %1347 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %1345, ptr noundef %1346)
  %1348 = icmp eq i32 %1347, -1
  br i1 %1348, label %1349, label %1402

1349:                                             ; preds = %1342
  br label %1350

1350:                                             ; preds = %1349
  br label %1351

1351:                                             ; preds = %1350
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  %1352 = call ptr @__errno_location() #10
  %1353 = load i32, ptr %1352, align 4, !tbaa !5
  store i32 %1353, ptr %42, align 4, !tbaa !5
  %1354 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1355 = call i32 @s2n_print_stacktrace(ptr noundef %1354)
  %1356 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1357 = trunc i8 %1356 to i1
  br i1 %1357, label %1358, label %1380

1358:                                             ; preds = %1351
  %1359 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1360 = call i32 @fileno(ptr noundef %1359) #9
  %1361 = call i32 @isatty(i32 noundef %1360) #9
  %1362 = icmp ne i32 %1361, 0
  br i1 %1362, label %1363, label %1380

1363:                                             ; preds = %1358
  %1364 = load i32, ptr %42, align 4, !tbaa !5
  %1365 = call ptr @__errno_location() #10
  store i32 %1364, ptr %1365, align 4, !tbaa !5
  %1366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1367 = load i32, ptr @test_count, align 4, !tbaa !5
  %1368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1369 = load i32, ptr %1368, align 4, !tbaa !5
  %1370 = call ptr @s2n_strerror(i32 noundef %1369, ptr noundef @.str.4)
  %1371 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1372 = load i32, ptr %1371, align 4, !tbaa !5
  %1373 = call ptr @s2n_strerror_debug(i32 noundef %1372, ptr noundef @.str.4)
  %1374 = call ptr @__errno_location() #10
  %1375 = load i32, ptr %1374, align 4, !tbaa !5
  %1376 = call ptr @strerror(i32 noundef %1375) #9
  %1377 = call ptr @__errno_location() #10
  %1378 = load i32, ptr %1377, align 4, !tbaa !5
  %1379 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1366, ptr noundef @.str.2, i32 noundef %1367, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 226, ptr noundef %1370, ptr noundef %1373, ptr noundef %1376, i32 noundef %1378) #9
  br label %1397

1380:                                             ; preds = %1358, %1351
  %1381 = load i32, ptr %42, align 4, !tbaa !5
  %1382 = call ptr @__errno_location() #10
  store i32 %1381, ptr %1382, align 4, !tbaa !5
  %1383 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1384 = load i32, ptr @test_count, align 4, !tbaa !5
  %1385 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1386 = load i32, ptr %1385, align 4, !tbaa !5
  %1387 = call ptr @s2n_strerror(i32 noundef %1386, ptr noundef @.str.4)
  %1388 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1389 = load i32, ptr %1388, align 4, !tbaa !5
  %1390 = call ptr @s2n_strerror_debug(i32 noundef %1389, ptr noundef @.str.4)
  %1391 = call ptr @__errno_location() #10
  %1392 = load i32, ptr %1391, align 4, !tbaa !5
  %1393 = call ptr @strerror(i32 noundef %1392) #9
  %1394 = call ptr @__errno_location() #10
  %1395 = load i32, ptr %1394, align 4, !tbaa !5
  %1396 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1383, ptr noundef @.str.5, i32 noundef %1384, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 226, ptr noundef %1387, ptr noundef %1390, ptr noundef %1393, i32 noundef %1395) #9
  br label %1397

1397:                                             ; preds = %1380, %1363
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %1398

1398:                                             ; preds = %1397
  br label %1399

1399:                                             ; preds = %1398
  call void @exit(i32 noundef 1) #11
  unreachable

1400:                                             ; No predecessors!
  br label %1401

1401:                                             ; preds = %1400
  br label %1402

1402:                                             ; preds = %1401, %1342
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

1404:                                             ; preds = %1403
  br label %1405

1405:                                             ; preds = %1404
  %1406 = load i32, ptr @test_count, align 4, !tbaa !5
  %1407 = add nsw i32 %1406, 1
  store i32 %1407, ptr @test_count, align 4, !tbaa !5
  %1408 = load ptr, ptr %30, align 8, !tbaa !9
  %1409 = load ptr, ptr %18, align 8, !tbaa !9
  %1410 = load i32, ptr %14, align 4, !tbaa !5
  %1411 = or i32 %1410, 4
  %1412 = or i32 %1411, 16
  %1413 = call i32 @s2n_do_test_handshake(ptr noundef %1408, ptr noundef %1409, i8 noundef zeroext 33, i32 noundef %1412)
  %1414 = getelementptr inbounds %struct.s2n_result, ptr %43, i32 0, i32 0
  store i32 %1413, ptr %1414, align 4
  %1415 = getelementptr inbounds %struct.s2n_result, ptr %43, i32 0, i32 0
  %1416 = load i32, ptr %1415, align 4
  %1417 = call zeroext i1 @s2n_result_is_ok(i32 %1416)
  br i1 %1417, label %1471, label %1418

1418:                                             ; preds = %1405
  br label %1419

1419:                                             ; preds = %1418
  br label %1420

1420:                                             ; preds = %1419
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #9
  %1421 = call ptr @__errno_location() #10
  %1422 = load i32, ptr %1421, align 4, !tbaa !5
  store i32 %1422, ptr %44, align 4, !tbaa !5
  %1423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1424 = call i32 @s2n_print_stacktrace(ptr noundef %1423)
  %1425 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1426 = trunc i8 %1425 to i1
  br i1 %1426, label %1427, label %1449

1427:                                             ; preds = %1420
  %1428 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1429 = call i32 @fileno(ptr noundef %1428) #9
  %1430 = call i32 @isatty(i32 noundef %1429) #9
  %1431 = icmp ne i32 %1430, 0
  br i1 %1431, label %1432, label %1449

1432:                                             ; preds = %1427
  %1433 = load i32, ptr %44, align 4, !tbaa !5
  %1434 = call ptr @__errno_location() #10
  store i32 %1433, ptr %1434, align 4, !tbaa !5
  %1435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1436 = load i32, ptr @test_count, align 4, !tbaa !5
  %1437 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1438 = load i32, ptr %1437, align 4, !tbaa !5
  %1439 = call ptr @s2n_strerror(i32 noundef %1438, ptr noundef @.str.4)
  %1440 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1441 = load i32, ptr %1440, align 4, !tbaa !5
  %1442 = call ptr @s2n_strerror_debug(i32 noundef %1441, ptr noundef @.str.4)
  %1443 = call ptr @__errno_location() #10
  %1444 = load i32, ptr %1443, align 4, !tbaa !5
  %1445 = call ptr @strerror(i32 noundef %1444) #9
  %1446 = call ptr @__errno_location() #10
  %1447 = load i32, ptr %1446, align 4, !tbaa !5
  %1448 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1435, ptr noundef @.str.2, i32 noundef %1436, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 228, ptr noundef %1439, ptr noundef %1442, ptr noundef %1445, i32 noundef %1447) #9
  br label %1466

1449:                                             ; preds = %1427, %1420
  %1450 = load i32, ptr %44, align 4, !tbaa !5
  %1451 = call ptr @__errno_location() #10
  store i32 %1450, ptr %1451, align 4, !tbaa !5
  %1452 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1453 = load i32, ptr @test_count, align 4, !tbaa !5
  %1454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1455 = load i32, ptr %1454, align 4, !tbaa !5
  %1456 = call ptr @s2n_strerror(i32 noundef %1455, ptr noundef @.str.4)
  %1457 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1458 = load i32, ptr %1457, align 4, !tbaa !5
  %1459 = call ptr @s2n_strerror_debug(i32 noundef %1458, ptr noundef @.str.4)
  %1460 = call ptr @__errno_location() #10
  %1461 = load i32, ptr %1460, align 4, !tbaa !5
  %1462 = call ptr @strerror(i32 noundef %1461) #9
  %1463 = call ptr @__errno_location() #10
  %1464 = load i32, ptr %1463, align 4, !tbaa !5
  %1465 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1452, ptr noundef @.str.5, i32 noundef %1453, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 228, ptr noundef %1456, ptr noundef %1459, ptr noundef %1462, i32 noundef %1464) #9
  br label %1466

1466:                                             ; preds = %1449, %1432
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %1467

1467:                                             ; preds = %1466
  br label %1468

1468:                                             ; preds = %1467
  call void @exit(i32 noundef 1) #11
  unreachable

1469:                                             ; No predecessors!
  br label %1470

1470:                                             ; preds = %1469
  br label %1471

1471:                                             ; preds = %1470, %1405
  br label %1472

1472:                                             ; preds = %1471
  br label %1473

1473:                                             ; preds = %1472
  br label %1474

1474:                                             ; preds = %1473
  %1475 = load i32, ptr @test_count, align 4, !tbaa !5
  %1476 = add nsw i32 %1475, 1
  store i32 %1476, ptr @test_count, align 4, !tbaa !5
  %1477 = load ptr, ptr %30, align 8, !tbaa !9
  %1478 = load ptr, ptr %12, align 8, !tbaa !9
  %1479 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %1477, ptr noundef %1478)
  %1480 = icmp eq i32 %1479, -1
  br i1 %1480, label %1481, label %1534

1481:                                             ; preds = %1474
  br label %1482

1482:                                             ; preds = %1481
  br label %1483

1483:                                             ; preds = %1482
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  %1484 = call ptr @__errno_location() #10
  %1485 = load i32, ptr %1484, align 4, !tbaa !5
  store i32 %1485, ptr %45, align 4, !tbaa !5
  %1486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1487 = call i32 @s2n_print_stacktrace(ptr noundef %1486)
  %1488 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1489 = trunc i8 %1488 to i1
  br i1 %1489, label %1490, label %1512

1490:                                             ; preds = %1483
  %1491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1492 = call i32 @fileno(ptr noundef %1491) #9
  %1493 = call i32 @isatty(i32 noundef %1492) #9
  %1494 = icmp ne i32 %1493, 0
  br i1 %1494, label %1495, label %1512

1495:                                             ; preds = %1490
  %1496 = load i32, ptr %45, align 4, !tbaa !5
  %1497 = call ptr @__errno_location() #10
  store i32 %1496, ptr %1497, align 4, !tbaa !5
  %1498 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1499 = load i32, ptr @test_count, align 4, !tbaa !5
  %1500 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1501 = load i32, ptr %1500, align 4, !tbaa !5
  %1502 = call ptr @s2n_strerror(i32 noundef %1501, ptr noundef @.str.4)
  %1503 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1504 = load i32, ptr %1503, align 4, !tbaa !5
  %1505 = call ptr @s2n_strerror_debug(i32 noundef %1504, ptr noundef @.str.4)
  %1506 = call ptr @__errno_location() #10
  %1507 = load i32, ptr %1506, align 4, !tbaa !5
  %1508 = call ptr @strerror(i32 noundef %1507) #9
  %1509 = call ptr @__errno_location() #10
  %1510 = load i32, ptr %1509, align 4, !tbaa !5
  %1511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1498, ptr noundef @.str.2, i32 noundef %1499, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 231, ptr noundef %1502, ptr noundef %1505, ptr noundef %1508, i32 noundef %1510) #9
  br label %1529

1512:                                             ; preds = %1490, %1483
  %1513 = load i32, ptr %45, align 4, !tbaa !5
  %1514 = call ptr @__errno_location() #10
  store i32 %1513, ptr %1514, align 4, !tbaa !5
  %1515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1516 = load i32, ptr @test_count, align 4, !tbaa !5
  %1517 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1518 = load i32, ptr %1517, align 4, !tbaa !5
  %1519 = call ptr @s2n_strerror(i32 noundef %1518, ptr noundef @.str.4)
  %1520 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1521 = load i32, ptr %1520, align 4, !tbaa !5
  %1522 = call ptr @s2n_strerror_debug(i32 noundef %1521, ptr noundef @.str.4)
  %1523 = call ptr @__errno_location() #10
  %1524 = load i32, ptr %1523, align 4, !tbaa !5
  %1525 = call ptr @strerror(i32 noundef %1524) #9
  %1526 = call ptr @__errno_location() #10
  %1527 = load i32, ptr %1526, align 4, !tbaa !5
  %1528 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1515, ptr noundef @.str.5, i32 noundef %1516, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 231, ptr noundef %1519, ptr noundef %1522, ptr noundef %1525, i32 noundef %1527) #9
  br label %1529

1529:                                             ; preds = %1512, %1495
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %1530

1530:                                             ; preds = %1529
  br label %1531

1531:                                             ; preds = %1530
  call void @exit(i32 noundef 1) #11
  unreachable

1532:                                             ; No predecessors!
  br label %1533

1533:                                             ; preds = %1532
  br label %1534

1534:                                             ; preds = %1533, %1474
  br label %1535

1535:                                             ; preds = %1534
  br label %1536

1536:                                             ; preds = %1535
  br label %1537

1537:                                             ; preds = %1536
  %1538 = load i32, ptr @test_count, align 4, !tbaa !5
  %1539 = add nsw i32 %1538, 1
  store i32 %1539, ptr @test_count, align 4, !tbaa !5
  %1540 = load ptr, ptr %30, align 8, !tbaa !9
  %1541 = load ptr, ptr %18, align 8, !tbaa !9
  %1542 = call i32 (...) @s2n_get_highest_fully_supported_tls_version()
  %1543 = trunc i32 %1542 to i8
  %1544 = load i32, ptr %17, align 4, !tbaa !5
  %1545 = or i32 %1544, 4
  %1546 = call i32 @s2n_do_test_handshake(ptr noundef %1540, ptr noundef %1541, i8 noundef zeroext %1543, i32 noundef %1545)
  %1547 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  store i32 %1546, ptr %1547, align 4
  %1548 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  %1549 = load i32, ptr %1548, align 4
  %1550 = call zeroext i1 @s2n_result_is_ok(i32 %1549)
  br i1 %1550, label %1604, label %1551

1551:                                             ; preds = %1537
  br label %1552

1552:                                             ; preds = %1551
  br label %1553

1553:                                             ; preds = %1552
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #9
  %1554 = call ptr @__errno_location() #10
  %1555 = load i32, ptr %1554, align 4, !tbaa !5
  store i32 %1555, ptr %47, align 4, !tbaa !5
  %1556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1557 = call i32 @s2n_print_stacktrace(ptr noundef %1556)
  %1558 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1559 = trunc i8 %1558 to i1
  br i1 %1559, label %1560, label %1582

1560:                                             ; preds = %1553
  %1561 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1562 = call i32 @fileno(ptr noundef %1561) #9
  %1563 = call i32 @isatty(i32 noundef %1562) #9
  %1564 = icmp ne i32 %1563, 0
  br i1 %1564, label %1565, label %1582

1565:                                             ; preds = %1560
  %1566 = load i32, ptr %47, align 4, !tbaa !5
  %1567 = call ptr @__errno_location() #10
  store i32 %1566, ptr %1567, align 4, !tbaa !5
  %1568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1569 = load i32, ptr @test_count, align 4, !tbaa !5
  %1570 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1571 = load i32, ptr %1570, align 4, !tbaa !5
  %1572 = call ptr @s2n_strerror(i32 noundef %1571, ptr noundef @.str.4)
  %1573 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1574 = load i32, ptr %1573, align 4, !tbaa !5
  %1575 = call ptr @s2n_strerror_debug(i32 noundef %1574, ptr noundef @.str.4)
  %1576 = call ptr @__errno_location() #10
  %1577 = load i32, ptr %1576, align 4, !tbaa !5
  %1578 = call ptr @strerror(i32 noundef %1577) #9
  %1579 = call ptr @__errno_location() #10
  %1580 = load i32, ptr %1579, align 4, !tbaa !5
  %1581 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1568, ptr noundef @.str.2, i32 noundef %1569, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 233, ptr noundef %1572, ptr noundef %1575, ptr noundef %1578, i32 noundef %1580) #9
  br label %1599

1582:                                             ; preds = %1560, %1553
  %1583 = load i32, ptr %47, align 4, !tbaa !5
  %1584 = call ptr @__errno_location() #10
  store i32 %1583, ptr %1584, align 4, !tbaa !5
  %1585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1586 = load i32, ptr @test_count, align 4, !tbaa !5
  %1587 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1588 = load i32, ptr %1587, align 4, !tbaa !5
  %1589 = call ptr @s2n_strerror(i32 noundef %1588, ptr noundef @.str.4)
  %1590 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1591 = load i32, ptr %1590, align 4, !tbaa !5
  %1592 = call ptr @s2n_strerror_debug(i32 noundef %1591, ptr noundef @.str.4)
  %1593 = call ptr @__errno_location() #10
  %1594 = load i32, ptr %1593, align 4, !tbaa !5
  %1595 = call ptr @strerror(i32 noundef %1594) #9
  %1596 = call ptr @__errno_location() #10
  %1597 = load i32, ptr %1596, align 4, !tbaa !5
  %1598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1585, ptr noundef @.str.5, i32 noundef %1586, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 233, ptr noundef %1589, ptr noundef %1592, ptr noundef %1595, i32 noundef %1597) #9
  br label %1599

1599:                                             ; preds = %1582, %1565
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #9
  br label %1600

1600:                                             ; preds = %1599
  br label %1601

1601:                                             ; preds = %1600
  call void @exit(i32 noundef 1) #11
  unreachable

1602:                                             ; No predecessors!
  br label %1603

1603:                                             ; preds = %1602
  br label %1604

1604:                                             ; preds = %1603, %1537
  br label %1605

1605:                                             ; preds = %1604
  br label %1606

1606:                                             ; preds = %1605
  br label %1607

1607:                                             ; preds = %1606
  %1608 = load i32, ptr @test_count, align 4, !tbaa !5
  %1609 = add nsw i32 %1608, 1
  store i32 %1609, ptr @test_count, align 4, !tbaa !5
  %1610 = load ptr, ptr %30, align 8, !tbaa !9
  %1611 = call i32 @s2n_config_free(ptr noundef %1610)
  %1612 = icmp eq i32 %1611, -1
  br i1 %1612, label %1613, label %1666

1613:                                             ; preds = %1607
  br label %1614

1614:                                             ; preds = %1613
  br label %1615

1615:                                             ; preds = %1614
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  %1616 = call ptr @__errno_location() #10
  %1617 = load i32, ptr %1616, align 4, !tbaa !5
  store i32 %1617, ptr %48, align 4, !tbaa !5
  %1618 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1619 = call i32 @s2n_print_stacktrace(ptr noundef %1618)
  %1620 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1621 = trunc i8 %1620 to i1
  br i1 %1621, label %1622, label %1644

1622:                                             ; preds = %1615
  %1623 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1624 = call i32 @fileno(ptr noundef %1623) #9
  %1625 = call i32 @isatty(i32 noundef %1624) #9
  %1626 = icmp ne i32 %1625, 0
  br i1 %1626, label %1627, label %1644

1627:                                             ; preds = %1622
  %1628 = load i32, ptr %48, align 4, !tbaa !5
  %1629 = call ptr @__errno_location() #10
  store i32 %1628, ptr %1629, align 4, !tbaa !5
  %1630 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1631 = load i32, ptr @test_count, align 4, !tbaa !5
  %1632 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1633 = load i32, ptr %1632, align 4, !tbaa !5
  %1634 = call ptr @s2n_strerror(i32 noundef %1633, ptr noundef @.str.4)
  %1635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1636 = load i32, ptr %1635, align 4, !tbaa !5
  %1637 = call ptr @s2n_strerror_debug(i32 noundef %1636, ptr noundef @.str.4)
  %1638 = call ptr @__errno_location() #10
  %1639 = load i32, ptr %1638, align 4, !tbaa !5
  %1640 = call ptr @strerror(i32 noundef %1639) #9
  %1641 = call ptr @__errno_location() #10
  %1642 = load i32, ptr %1641, align 4, !tbaa !5
  %1643 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1630, ptr noundef @.str.2, i32 noundef %1631, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 236, ptr noundef %1634, ptr noundef %1637, ptr noundef %1640, i32 noundef %1642) #9
  br label %1661

1644:                                             ; preds = %1622, %1615
  %1645 = load i32, ptr %48, align 4, !tbaa !5
  %1646 = call ptr @__errno_location() #10
  store i32 %1645, ptr %1646, align 4, !tbaa !5
  %1647 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1648 = load i32, ptr @test_count, align 4, !tbaa !5
  %1649 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1650 = load i32, ptr %1649, align 4, !tbaa !5
  %1651 = call ptr @s2n_strerror(i32 noundef %1650, ptr noundef @.str.4)
  %1652 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1653 = load i32, ptr %1652, align 4, !tbaa !5
  %1654 = call ptr @s2n_strerror_debug(i32 noundef %1653, ptr noundef @.str.4)
  %1655 = call ptr @__errno_location() #10
  %1656 = load i32, ptr %1655, align 4, !tbaa !5
  %1657 = call ptr @strerror(i32 noundef %1656) #9
  %1658 = call ptr @__errno_location() #10
  %1659 = load i32, ptr %1658, align 4, !tbaa !5
  %1660 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1647, ptr noundef @.str.5, i32 noundef %1648, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 236, ptr noundef %1651, ptr noundef %1654, ptr noundef %1657, i32 noundef %1659) #9
  br label %1661

1661:                                             ; preds = %1644, %1627
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %1662

1662:                                             ; preds = %1661
  br label %1663

1663:                                             ; preds = %1662
  call void @exit(i32 noundef 1) #11
  unreachable

1664:                                             ; No predecessors!
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

1666:                                             ; preds = %1665, %1607
  br label %1667

1667:                                             ; preds = %1666
  br label %1668

1668:                                             ; preds = %1667
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %1669 = call ptr @s2n_config_new()
  store ptr %1669, ptr %49, align 8, !tbaa !9
  br label %1670

1670:                                             ; preds = %1668
  %1671 = load i32, ptr @test_count, align 4, !tbaa !5
  %1672 = add nsw i32 %1671, 1
  store i32 %1672, ptr @test_count, align 4, !tbaa !5
  %1673 = load ptr, ptr %49, align 8, !tbaa !9
  %1674 = icmp eq ptr %1673, null
  br i1 %1674, label %1675, label %1728

1675:                                             ; preds = %1670
  br label %1676

1676:                                             ; preds = %1675
  br label %1677

1677:                                             ; preds = %1676
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #9
  %1678 = call ptr @__errno_location() #10
  %1679 = load i32, ptr %1678, align 4, !tbaa !5
  store i32 %1679, ptr %50, align 4, !tbaa !5
  %1680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1681 = call i32 @s2n_print_stacktrace(ptr noundef %1680)
  %1682 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1683 = trunc i8 %1682 to i1
  br i1 %1683, label %1684, label %1706

1684:                                             ; preds = %1677
  %1685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1686 = call i32 @fileno(ptr noundef %1685) #9
  %1687 = call i32 @isatty(i32 noundef %1686) #9
  %1688 = icmp ne i32 %1687, 0
  br i1 %1688, label %1689, label %1706

1689:                                             ; preds = %1684
  %1690 = load i32, ptr %50, align 4, !tbaa !5
  %1691 = call ptr @__errno_location() #10
  store i32 %1690, ptr %1691, align 4, !tbaa !5
  %1692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1693 = load i32, ptr @test_count, align 4, !tbaa !5
  %1694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1695 = load i32, ptr %1694, align 4, !tbaa !5
  %1696 = call ptr @s2n_strerror(i32 noundef %1695, ptr noundef @.str.4)
  %1697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1698 = load i32, ptr %1697, align 4, !tbaa !5
  %1699 = call ptr @s2n_strerror_debug(i32 noundef %1698, ptr noundef @.str.4)
  %1700 = call ptr @__errno_location() #10
  %1701 = load i32, ptr %1700, align 4, !tbaa !5
  %1702 = call ptr @strerror(i32 noundef %1701) #9
  %1703 = call ptr @__errno_location() #10
  %1704 = load i32, ptr %1703, align 4, !tbaa !5
  %1705 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1692, ptr noundef @.str.2, i32 noundef %1693, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 242, ptr noundef %1696, ptr noundef %1699, ptr noundef %1702, i32 noundef %1704) #9
  br label %1723

1706:                                             ; preds = %1684, %1677
  %1707 = load i32, ptr %50, align 4, !tbaa !5
  %1708 = call ptr @__errno_location() #10
  store i32 %1707, ptr %1708, align 4, !tbaa !5
  %1709 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1710 = load i32, ptr @test_count, align 4, !tbaa !5
  %1711 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1712 = load i32, ptr %1711, align 4, !tbaa !5
  %1713 = call ptr @s2n_strerror(i32 noundef %1712, ptr noundef @.str.4)
  %1714 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1715 = load i32, ptr %1714, align 4, !tbaa !5
  %1716 = call ptr @s2n_strerror_debug(i32 noundef %1715, ptr noundef @.str.4)
  %1717 = call ptr @__errno_location() #10
  %1718 = load i32, ptr %1717, align 4, !tbaa !5
  %1719 = call ptr @strerror(i32 noundef %1718) #9
  %1720 = call ptr @__errno_location() #10
  %1721 = load i32, ptr %1720, align 4, !tbaa !5
  %1722 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1709, ptr noundef @.str.5, i32 noundef %1710, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 242, ptr noundef %1713, ptr noundef %1716, ptr noundef %1719, i32 noundef %1721) #9
  br label %1723

1723:                                             ; preds = %1706, %1689
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  br label %1724

1724:                                             ; preds = %1723
  br label %1725

1725:                                             ; preds = %1724
  call void @exit(i32 noundef 1) #11
  unreachable

1726:                                             ; No predecessors!
  br label %1727

1727:                                             ; preds = %1726
  br label %1728

1728:                                             ; preds = %1727, %1670
  br label %1729

1729:                                             ; preds = %1728
  br label %1730

1730:                                             ; preds = %1729
  br label %1731

1731:                                             ; preds = %1730
  %1732 = load i32, ptr @test_count, align 4, !tbaa !5
  %1733 = add nsw i32 %1732, 1
  store i32 %1733, ptr @test_count, align 4, !tbaa !5
  %1734 = load ptr, ptr %49, align 8, !tbaa !9
  %1735 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef %1734)
  %1736 = icmp eq i32 %1735, -1
  br i1 %1736, label %1737, label %1790

1737:                                             ; preds = %1731
  br label %1738

1738:                                             ; preds = %1737
  br label %1739

1739:                                             ; preds = %1738
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  %1740 = call ptr @__errno_location() #10
  %1741 = load i32, ptr %1740, align 4, !tbaa !5
  store i32 %1741, ptr %51, align 4, !tbaa !5
  %1742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1743 = call i32 @s2n_print_stacktrace(ptr noundef %1742)
  %1744 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1745 = trunc i8 %1744 to i1
  br i1 %1745, label %1746, label %1768

1746:                                             ; preds = %1739
  %1747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1748 = call i32 @fileno(ptr noundef %1747) #9
  %1749 = call i32 @isatty(i32 noundef %1748) #9
  %1750 = icmp ne i32 %1749, 0
  br i1 %1750, label %1751, label %1768

1751:                                             ; preds = %1746
  %1752 = load i32, ptr %51, align 4, !tbaa !5
  %1753 = call ptr @__errno_location() #10
  store i32 %1752, ptr %1753, align 4, !tbaa !5
  %1754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1755 = load i32, ptr @test_count, align 4, !tbaa !5
  %1756 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1757 = load i32, ptr %1756, align 4, !tbaa !5
  %1758 = call ptr @s2n_strerror(i32 noundef %1757, ptr noundef @.str.4)
  %1759 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1760 = load i32, ptr %1759, align 4, !tbaa !5
  %1761 = call ptr @s2n_strerror_debug(i32 noundef %1760, ptr noundef @.str.4)
  %1762 = call ptr @__errno_location() #10
  %1763 = load i32, ptr %1762, align 4, !tbaa !5
  %1764 = call ptr @strerror(i32 noundef %1763) #9
  %1765 = call ptr @__errno_location() #10
  %1766 = load i32, ptr %1765, align 4, !tbaa !5
  %1767 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1754, ptr noundef @.str.2, i32 noundef %1755, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 243, ptr noundef %1758, ptr noundef %1761, ptr noundef %1764, i32 noundef %1766) #9
  br label %1785

1768:                                             ; preds = %1746, %1739
  %1769 = load i32, ptr %51, align 4, !tbaa !5
  %1770 = call ptr @__errno_location() #10
  store i32 %1769, ptr %1770, align 4, !tbaa !5
  %1771 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1772 = load i32, ptr @test_count, align 4, !tbaa !5
  %1773 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1774 = load i32, ptr %1773, align 4, !tbaa !5
  %1775 = call ptr @s2n_strerror(i32 noundef %1774, ptr noundef @.str.4)
  %1776 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1777 = load i32, ptr %1776, align 4, !tbaa !5
  %1778 = call ptr @s2n_strerror_debug(i32 noundef %1777, ptr noundef @.str.4)
  %1779 = call ptr @__errno_location() #10
  %1780 = load i32, ptr %1779, align 4, !tbaa !5
  %1781 = call ptr @strerror(i32 noundef %1780) #9
  %1782 = call ptr @__errno_location() #10
  %1783 = load i32, ptr %1782, align 4, !tbaa !5
  %1784 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1771, ptr noundef @.str.5, i32 noundef %1772, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 243, ptr noundef %1775, ptr noundef %1778, ptr noundef %1781, i32 noundef %1783) #9
  br label %1785

1785:                                             ; preds = %1768, %1751
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %1786

1786:                                             ; preds = %1785
  br label %1787

1787:                                             ; preds = %1786
  call void @exit(i32 noundef 1) #11
  unreachable

1788:                                             ; No predecessors!
  br label %1789

1789:                                             ; preds = %1788
  br label %1790

1790:                                             ; preds = %1789, %1731
  br label %1791

1791:                                             ; preds = %1790
  br label %1792

1792:                                             ; preds = %1791
  br label %1793

1793:                                             ; preds = %1792
  %1794 = load i32, ptr @test_count, align 4, !tbaa !5
  %1795 = add nsw i32 %1794, 1
  store i32 %1795, ptr @test_count, align 4, !tbaa !5
  %1796 = load ptr, ptr %49, align 8, !tbaa !9
  %1797 = load ptr, ptr %26, align 8, !tbaa !9
  %1798 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %1796, ptr noundef %1797)
  %1799 = icmp eq i32 %1798, -1
  br i1 %1799, label %1800, label %1853

1800:                                             ; preds = %1793
  br label %1801

1801:                                             ; preds = %1800
  br label %1802

1802:                                             ; preds = %1801
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  %1803 = call ptr @__errno_location() #10
  %1804 = load i32, ptr %1803, align 4, !tbaa !5
  store i32 %1804, ptr %52, align 4, !tbaa !5
  %1805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1806 = call i32 @s2n_print_stacktrace(ptr noundef %1805)
  %1807 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1808 = trunc i8 %1807 to i1
  br i1 %1808, label %1809, label %1831

1809:                                             ; preds = %1802
  %1810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1811 = call i32 @fileno(ptr noundef %1810) #9
  %1812 = call i32 @isatty(i32 noundef %1811) #9
  %1813 = icmp ne i32 %1812, 0
  br i1 %1813, label %1814, label %1831

1814:                                             ; preds = %1809
  %1815 = load i32, ptr %52, align 4, !tbaa !5
  %1816 = call ptr @__errno_location() #10
  store i32 %1815, ptr %1816, align 4, !tbaa !5
  %1817 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1818 = load i32, ptr @test_count, align 4, !tbaa !5
  %1819 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1820 = load i32, ptr %1819, align 4, !tbaa !5
  %1821 = call ptr @s2n_strerror(i32 noundef %1820, ptr noundef @.str.4)
  %1822 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1823 = load i32, ptr %1822, align 4, !tbaa !5
  %1824 = call ptr @s2n_strerror_debug(i32 noundef %1823, ptr noundef @.str.4)
  %1825 = call ptr @__errno_location() #10
  %1826 = load i32, ptr %1825, align 4, !tbaa !5
  %1827 = call ptr @strerror(i32 noundef %1826) #9
  %1828 = call ptr @__errno_location() #10
  %1829 = load i32, ptr %1828, align 4, !tbaa !5
  %1830 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1817, ptr noundef @.str.2, i32 noundef %1818, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 244, ptr noundef %1821, ptr noundef %1824, ptr noundef %1827, i32 noundef %1829) #9
  br label %1848

1831:                                             ; preds = %1809, %1802
  %1832 = load i32, ptr %52, align 4, !tbaa !5
  %1833 = call ptr @__errno_location() #10
  store i32 %1832, ptr %1833, align 4, !tbaa !5
  %1834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1835 = load i32, ptr @test_count, align 4, !tbaa !5
  %1836 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1837 = load i32, ptr %1836, align 4, !tbaa !5
  %1838 = call ptr @s2n_strerror(i32 noundef %1837, ptr noundef @.str.4)
  %1839 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1840 = load i32, ptr %1839, align 4, !tbaa !5
  %1841 = call ptr @s2n_strerror_debug(i32 noundef %1840, ptr noundef @.str.4)
  %1842 = call ptr @__errno_location() #10
  %1843 = load i32, ptr %1842, align 4, !tbaa !5
  %1844 = call ptr @strerror(i32 noundef %1843) #9
  %1845 = call ptr @__errno_location() #10
  %1846 = load i32, ptr %1845, align 4, !tbaa !5
  %1847 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1834, ptr noundef @.str.5, i32 noundef %1835, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 244, ptr noundef %1838, ptr noundef %1841, ptr noundef %1844, i32 noundef %1846) #9
  br label %1848

1848:                                             ; preds = %1831, %1814
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  br label %1849

1849:                                             ; preds = %1848
  br label %1850

1850:                                             ; preds = %1849
  call void @exit(i32 noundef 1) #11
  unreachable

1851:                                             ; No predecessors!
  br label %1852

1852:                                             ; preds = %1851
  br label %1853

1853:                                             ; preds = %1852, %1793
  br label %1854

1854:                                             ; preds = %1853
  br label %1855

1855:                                             ; preds = %1854
  br label %1856

1856:                                             ; preds = %1855
  %1857 = load i32, ptr @test_count, align 4, !tbaa !5
  %1858 = add nsw i32 %1857, 1
  store i32 %1858, ptr @test_count, align 4, !tbaa !5
  %1859 = load ptr, ptr %49, align 8, !tbaa !9
  %1860 = call i32 @s2n_config_set_async_pkey_callback(ptr noundef %1859, ptr noundef @s2n_test_async_pkey_cb)
  %1861 = icmp eq i32 %1860, -1
  br i1 %1861, label %1862, label %1915

1862:                                             ; preds = %1856
  br label %1863

1863:                                             ; preds = %1862
  br label %1864

1864:                                             ; preds = %1863
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  %1865 = call ptr @__errno_location() #10
  %1866 = load i32, ptr %1865, align 4, !tbaa !5
  store i32 %1866, ptr %53, align 4, !tbaa !5
  %1867 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1868 = call i32 @s2n_print_stacktrace(ptr noundef %1867)
  %1869 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1870 = trunc i8 %1869 to i1
  br i1 %1870, label %1871, label %1893

1871:                                             ; preds = %1864
  %1872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1873 = call i32 @fileno(ptr noundef %1872) #9
  %1874 = call i32 @isatty(i32 noundef %1873) #9
  %1875 = icmp ne i32 %1874, 0
  br i1 %1875, label %1876, label %1893

1876:                                             ; preds = %1871
  %1877 = load i32, ptr %53, align 4, !tbaa !5
  %1878 = call ptr @__errno_location() #10
  store i32 %1877, ptr %1878, align 4, !tbaa !5
  %1879 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1880 = load i32, ptr @test_count, align 4, !tbaa !5
  %1881 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1882 = load i32, ptr %1881, align 4, !tbaa !5
  %1883 = call ptr @s2n_strerror(i32 noundef %1882, ptr noundef @.str.4)
  %1884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1885 = load i32, ptr %1884, align 4, !tbaa !5
  %1886 = call ptr @s2n_strerror_debug(i32 noundef %1885, ptr noundef @.str.4)
  %1887 = call ptr @__errno_location() #10
  %1888 = load i32, ptr %1887, align 4, !tbaa !5
  %1889 = call ptr @strerror(i32 noundef %1888) #9
  %1890 = call ptr @__errno_location() #10
  %1891 = load i32, ptr %1890, align 4, !tbaa !5
  %1892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1879, ptr noundef @.str.2, i32 noundef %1880, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 245, ptr noundef %1883, ptr noundef %1886, ptr noundef %1889, i32 noundef %1891) #9
  br label %1910

1893:                                             ; preds = %1871, %1864
  %1894 = load i32, ptr %53, align 4, !tbaa !5
  %1895 = call ptr @__errno_location() #10
  store i32 %1894, ptr %1895, align 4, !tbaa !5
  %1896 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1897 = load i32, ptr @test_count, align 4, !tbaa !5
  %1898 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1899 = load i32, ptr %1898, align 4, !tbaa !5
  %1900 = call ptr @s2n_strerror(i32 noundef %1899, ptr noundef @.str.4)
  %1901 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1902 = load i32, ptr %1901, align 4, !tbaa !5
  %1903 = call ptr @s2n_strerror_debug(i32 noundef %1902, ptr noundef @.str.4)
  %1904 = call ptr @__errno_location() #10
  %1905 = load i32, ptr %1904, align 4, !tbaa !5
  %1906 = call ptr @strerror(i32 noundef %1905) #9
  %1907 = call ptr @__errno_location() #10
  %1908 = load i32, ptr %1907, align 4, !tbaa !5
  %1909 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1896, ptr noundef @.str.5, i32 noundef %1897, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 245, ptr noundef %1900, ptr noundef %1903, ptr noundef %1906, i32 noundef %1908) #9
  br label %1910

1910:                                             ; preds = %1893, %1876
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %1911

1911:                                             ; preds = %1910
  br label %1912

1912:                                             ; preds = %1911
  call void @exit(i32 noundef 1) #11
  unreachable

1913:                                             ; No predecessors!
  br label %1914

1914:                                             ; preds = %1913
  br label %1915

1915:                                             ; preds = %1914, %1856
  br label %1916

1916:                                             ; preds = %1915
  br label %1917

1917:                                             ; preds = %1916
  br label %1918

1918:                                             ; preds = %1917
  %1919 = load i32, ptr @test_count, align 4, !tbaa !5
  %1920 = add nsw i32 %1919, 1
  store i32 %1920, ptr @test_count, align 4, !tbaa !5
  %1921 = load ptr, ptr %49, align 8, !tbaa !9
  %1922 = load ptr, ptr %13, align 8, !tbaa !9
  %1923 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %1921, ptr noundef %1922)
  %1924 = icmp eq i32 %1923, -1
  br i1 %1924, label %1925, label %1978

1925:                                             ; preds = %1918
  br label %1926

1926:                                             ; preds = %1925
  br label %1927

1927:                                             ; preds = %1926
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  %1928 = call ptr @__errno_location() #10
  %1929 = load i32, ptr %1928, align 4, !tbaa !5
  store i32 %1929, ptr %54, align 4, !tbaa !5
  %1930 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1931 = call i32 @s2n_print_stacktrace(ptr noundef %1930)
  %1932 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1933 = trunc i8 %1932 to i1
  br i1 %1933, label %1934, label %1956

1934:                                             ; preds = %1927
  %1935 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1936 = call i32 @fileno(ptr noundef %1935) #9
  %1937 = call i32 @isatty(i32 noundef %1936) #9
  %1938 = icmp ne i32 %1937, 0
  br i1 %1938, label %1939, label %1956

1939:                                             ; preds = %1934
  %1940 = load i32, ptr %54, align 4, !tbaa !5
  %1941 = call ptr @__errno_location() #10
  store i32 %1940, ptr %1941, align 4, !tbaa !5
  %1942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1943 = load i32, ptr @test_count, align 4, !tbaa !5
  %1944 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1945 = load i32, ptr %1944, align 4, !tbaa !5
  %1946 = call ptr @s2n_strerror(i32 noundef %1945, ptr noundef @.str.4)
  %1947 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1948 = load i32, ptr %1947, align 4, !tbaa !5
  %1949 = call ptr @s2n_strerror_debug(i32 noundef %1948, ptr noundef @.str.4)
  %1950 = call ptr @__errno_location() #10
  %1951 = load i32, ptr %1950, align 4, !tbaa !5
  %1952 = call ptr @strerror(i32 noundef %1951) #9
  %1953 = call ptr @__errno_location() #10
  %1954 = load i32, ptr %1953, align 4, !tbaa !5
  %1955 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1942, ptr noundef @.str.2, i32 noundef %1943, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 250, ptr noundef %1946, ptr noundef %1949, ptr noundef %1952, i32 noundef %1954) #9
  br label %1973

1956:                                             ; preds = %1934, %1927
  %1957 = load i32, ptr %54, align 4, !tbaa !5
  %1958 = call ptr @__errno_location() #10
  store i32 %1957, ptr %1958, align 4, !tbaa !5
  %1959 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1960 = load i32, ptr @test_count, align 4, !tbaa !5
  %1961 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1962 = load i32, ptr %1961, align 4, !tbaa !5
  %1963 = call ptr @s2n_strerror(i32 noundef %1962, ptr noundef @.str.4)
  %1964 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1965 = load i32, ptr %1964, align 4, !tbaa !5
  %1966 = call ptr @s2n_strerror_debug(i32 noundef %1965, ptr noundef @.str.4)
  %1967 = call ptr @__errno_location() #10
  %1968 = load i32, ptr %1967, align 4, !tbaa !5
  %1969 = call ptr @strerror(i32 noundef %1968) #9
  %1970 = call ptr @__errno_location() #10
  %1971 = load i32, ptr %1970, align 4, !tbaa !5
  %1972 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1959, ptr noundef @.str.5, i32 noundef %1960, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 250, ptr noundef %1963, ptr noundef %1966, ptr noundef %1969, i32 noundef %1971) #9
  br label %1973

1973:                                             ; preds = %1956, %1939
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %1974

1974:                                             ; preds = %1973
  br label %1975

1975:                                             ; preds = %1974
  call void @exit(i32 noundef 1) #11
  unreachable

1976:                                             ; No predecessors!
  br label %1977

1977:                                             ; preds = %1976
  br label %1978

1978:                                             ; preds = %1977, %1918
  br label %1979

1979:                                             ; preds = %1978
  br label %1980

1980:                                             ; preds = %1979
  br label %1981

1981:                                             ; preds = %1980
  %1982 = load i32, ptr @test_count, align 4, !tbaa !5
  %1983 = add nsw i32 %1982, 1
  store i32 %1983, ptr @test_count, align 4, !tbaa !5
  %1984 = load ptr, ptr %49, align 8, !tbaa !9
  %1985 = load ptr, ptr %20, align 8, !tbaa !9
  %1986 = load i32, ptr %14, align 4, !tbaa !5
  %1987 = call i32 @s2n_do_test_handshake(ptr noundef %1984, ptr noundef %1985, i8 noundef zeroext 33, i32 noundef %1986)
  %1988 = getelementptr inbounds %struct.s2n_result, ptr %55, i32 0, i32 0
  store i32 %1987, ptr %1988, align 4
  %1989 = getelementptr inbounds %struct.s2n_result, ptr %55, i32 0, i32 0
  %1990 = load i32, ptr %1989, align 4
  %1991 = call zeroext i1 @s2n_result_is_ok(i32 %1990)
  br i1 %1991, label %2045, label %1992

1992:                                             ; preds = %1981
  br label %1993

1993:                                             ; preds = %1992
  br label %1994

1994:                                             ; preds = %1993
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  %1995 = call ptr @__errno_location() #10
  %1996 = load i32, ptr %1995, align 4, !tbaa !5
  store i32 %1996, ptr %56, align 4, !tbaa !5
  %1997 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1998 = call i32 @s2n_print_stacktrace(ptr noundef %1997)
  %1999 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2000 = trunc i8 %1999 to i1
  br i1 %2000, label %2001, label %2023

2001:                                             ; preds = %1994
  %2002 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2003 = call i32 @fileno(ptr noundef %2002) #9
  %2004 = call i32 @isatty(i32 noundef %2003) #9
  %2005 = icmp ne i32 %2004, 0
  br i1 %2005, label %2006, label %2023

2006:                                             ; preds = %2001
  %2007 = load i32, ptr %56, align 4, !tbaa !5
  %2008 = call ptr @__errno_location() #10
  store i32 %2007, ptr %2008, align 4, !tbaa !5
  %2009 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2010 = load i32, ptr @test_count, align 4, !tbaa !5
  %2011 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2012 = load i32, ptr %2011, align 4, !tbaa !5
  %2013 = call ptr @s2n_strerror(i32 noundef %2012, ptr noundef @.str.4)
  %2014 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2015 = load i32, ptr %2014, align 4, !tbaa !5
  %2016 = call ptr @s2n_strerror_debug(i32 noundef %2015, ptr noundef @.str.4)
  %2017 = call ptr @__errno_location() #10
  %2018 = load i32, ptr %2017, align 4, !tbaa !5
  %2019 = call ptr @strerror(i32 noundef %2018) #9
  %2020 = call ptr @__errno_location() #10
  %2021 = load i32, ptr %2020, align 4, !tbaa !5
  %2022 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2009, ptr noundef @.str.2, i32 noundef %2010, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 252, ptr noundef %2013, ptr noundef %2016, ptr noundef %2019, i32 noundef %2021) #9
  br label %2040

2023:                                             ; preds = %2001, %1994
  %2024 = load i32, ptr %56, align 4, !tbaa !5
  %2025 = call ptr @__errno_location() #10
  store i32 %2024, ptr %2025, align 4, !tbaa !5
  %2026 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2027 = load i32, ptr @test_count, align 4, !tbaa !5
  %2028 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2029 = load i32, ptr %2028, align 4, !tbaa !5
  %2030 = call ptr @s2n_strerror(i32 noundef %2029, ptr noundef @.str.4)
  %2031 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2032 = load i32, ptr %2031, align 4, !tbaa !5
  %2033 = call ptr @s2n_strerror_debug(i32 noundef %2032, ptr noundef @.str.4)
  %2034 = call ptr @__errno_location() #10
  %2035 = load i32, ptr %2034, align 4, !tbaa !5
  %2036 = call ptr @strerror(i32 noundef %2035) #9
  %2037 = call ptr @__errno_location() #10
  %2038 = load i32, ptr %2037, align 4, !tbaa !5
  %2039 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2026, ptr noundef @.str.5, i32 noundef %2027, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 252, ptr noundef %2030, ptr noundef %2033, ptr noundef %2036, i32 noundef %2038) #9
  br label %2040

2040:                                             ; preds = %2023, %2006
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  br label %2041

2041:                                             ; preds = %2040
  br label %2042

2042:                                             ; preds = %2041
  call void @exit(i32 noundef 1) #11
  unreachable

2043:                                             ; No predecessors!
  br label %2044

2044:                                             ; preds = %2043
  br label %2045

2045:                                             ; preds = %2044, %1981
  br label %2046

2046:                                             ; preds = %2045
  br label %2047

2047:                                             ; preds = %2046
  br label %2048

2048:                                             ; preds = %2047
  %2049 = load i32, ptr @test_count, align 4, !tbaa !5
  %2050 = add nsw i32 %2049, 1
  store i32 %2050, ptr @test_count, align 4, !tbaa !5
  %2051 = load ptr, ptr %49, align 8, !tbaa !9
  %2052 = load ptr, ptr %11, align 8, !tbaa !9
  %2053 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2051, ptr noundef %2052)
  %2054 = icmp eq i32 %2053, -1
  br i1 %2054, label %2055, label %2108

2055:                                             ; preds = %2048
  br label %2056

2056:                                             ; preds = %2055
  br label %2057

2057:                                             ; preds = %2056
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #9
  %2058 = call ptr @__errno_location() #10
  %2059 = load i32, ptr %2058, align 4, !tbaa !5
  store i32 %2059, ptr %57, align 4, !tbaa !5
  %2060 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2061 = call i32 @s2n_print_stacktrace(ptr noundef %2060)
  %2062 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2063 = trunc i8 %2062 to i1
  br i1 %2063, label %2064, label %2086

2064:                                             ; preds = %2057
  %2065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2066 = call i32 @fileno(ptr noundef %2065) #9
  %2067 = call i32 @isatty(i32 noundef %2066) #9
  %2068 = icmp ne i32 %2067, 0
  br i1 %2068, label %2069, label %2086

2069:                                             ; preds = %2064
  %2070 = load i32, ptr %57, align 4, !tbaa !5
  %2071 = call ptr @__errno_location() #10
  store i32 %2070, ptr %2071, align 4, !tbaa !5
  %2072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2073 = load i32, ptr @test_count, align 4, !tbaa !5
  %2074 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2075 = load i32, ptr %2074, align 4, !tbaa !5
  %2076 = call ptr @s2n_strerror(i32 noundef %2075, ptr noundef @.str.4)
  %2077 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2078 = load i32, ptr %2077, align 4, !tbaa !5
  %2079 = call ptr @s2n_strerror_debug(i32 noundef %2078, ptr noundef @.str.4)
  %2080 = call ptr @__errno_location() #10
  %2081 = load i32, ptr %2080, align 4, !tbaa !5
  %2082 = call ptr @strerror(i32 noundef %2081) #9
  %2083 = call ptr @__errno_location() #10
  %2084 = load i32, ptr %2083, align 4, !tbaa !5
  %2085 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2072, ptr noundef @.str.2, i32 noundef %2073, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 255, ptr noundef %2076, ptr noundef %2079, ptr noundef %2082, i32 noundef %2084) #9
  br label %2103

2086:                                             ; preds = %2064, %2057
  %2087 = load i32, ptr %57, align 4, !tbaa !5
  %2088 = call ptr @__errno_location() #10
  store i32 %2087, ptr %2088, align 4, !tbaa !5
  %2089 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2090 = load i32, ptr @test_count, align 4, !tbaa !5
  %2091 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2092 = load i32, ptr %2091, align 4, !tbaa !5
  %2093 = call ptr @s2n_strerror(i32 noundef %2092, ptr noundef @.str.4)
  %2094 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2095 = load i32, ptr %2094, align 4, !tbaa !5
  %2096 = call ptr @s2n_strerror_debug(i32 noundef %2095, ptr noundef @.str.4)
  %2097 = call ptr @__errno_location() #10
  %2098 = load i32, ptr %2097, align 4, !tbaa !5
  %2099 = call ptr @strerror(i32 noundef %2098) #9
  %2100 = call ptr @__errno_location() #10
  %2101 = load i32, ptr %2100, align 4, !tbaa !5
  %2102 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2089, ptr noundef @.str.5, i32 noundef %2090, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 255, ptr noundef %2093, ptr noundef %2096, ptr noundef %2099, i32 noundef %2101) #9
  br label %2103

2103:                                             ; preds = %2086, %2069
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  br label %2104

2104:                                             ; preds = %2103
  br label %2105

2105:                                             ; preds = %2104
  call void @exit(i32 noundef 1) #11
  unreachable

2106:                                             ; No predecessors!
  br label %2107

2107:                                             ; preds = %2106
  br label %2108

2108:                                             ; preds = %2107, %2048
  br label %2109

2109:                                             ; preds = %2108
  br label %2110

2110:                                             ; preds = %2109
  br label %2111

2111:                                             ; preds = %2110
  %2112 = load i32, ptr @test_count, align 4, !tbaa !5
  %2113 = add nsw i32 %2112, 1
  store i32 %2113, ptr @test_count, align 4, !tbaa !5
  %2114 = load ptr, ptr %49, align 8, !tbaa !9
  %2115 = load ptr, ptr %20, align 8, !tbaa !9
  %2116 = load i32, ptr %14, align 4, !tbaa !5
  %2117 = or i32 %2116, 16
  %2118 = call i32 @s2n_do_test_handshake(ptr noundef %2114, ptr noundef %2115, i8 noundef zeroext 33, i32 noundef %2117)
  %2119 = getelementptr inbounds %struct.s2n_result, ptr %58, i32 0, i32 0
  store i32 %2118, ptr %2119, align 4
  %2120 = getelementptr inbounds %struct.s2n_result, ptr %58, i32 0, i32 0
  %2121 = load i32, ptr %2120, align 4
  %2122 = call zeroext i1 @s2n_result_is_ok(i32 %2121)
  br i1 %2122, label %2176, label %2123

2123:                                             ; preds = %2111
  br label %2124

2124:                                             ; preds = %2123
  br label %2125

2125:                                             ; preds = %2124
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #9
  %2126 = call ptr @__errno_location() #10
  %2127 = load i32, ptr %2126, align 4, !tbaa !5
  store i32 %2127, ptr %59, align 4, !tbaa !5
  %2128 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2129 = call i32 @s2n_print_stacktrace(ptr noundef %2128)
  %2130 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2131 = trunc i8 %2130 to i1
  br i1 %2131, label %2132, label %2154

2132:                                             ; preds = %2125
  %2133 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2134 = call i32 @fileno(ptr noundef %2133) #9
  %2135 = call i32 @isatty(i32 noundef %2134) #9
  %2136 = icmp ne i32 %2135, 0
  br i1 %2136, label %2137, label %2154

2137:                                             ; preds = %2132
  %2138 = load i32, ptr %59, align 4, !tbaa !5
  %2139 = call ptr @__errno_location() #10
  store i32 %2138, ptr %2139, align 4, !tbaa !5
  %2140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2141 = load i32, ptr @test_count, align 4, !tbaa !5
  %2142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2143 = load i32, ptr %2142, align 4, !tbaa !5
  %2144 = call ptr @s2n_strerror(i32 noundef %2143, ptr noundef @.str.4)
  %2145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2146 = load i32, ptr %2145, align 4, !tbaa !5
  %2147 = call ptr @s2n_strerror_debug(i32 noundef %2146, ptr noundef @.str.4)
  %2148 = call ptr @__errno_location() #10
  %2149 = load i32, ptr %2148, align 4, !tbaa !5
  %2150 = call ptr @strerror(i32 noundef %2149) #9
  %2151 = call ptr @__errno_location() #10
  %2152 = load i32, ptr %2151, align 4, !tbaa !5
  %2153 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2140, ptr noundef @.str.2, i32 noundef %2141, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 257, ptr noundef %2144, ptr noundef %2147, ptr noundef %2150, i32 noundef %2152) #9
  br label %2171

2154:                                             ; preds = %2132, %2125
  %2155 = load i32, ptr %59, align 4, !tbaa !5
  %2156 = call ptr @__errno_location() #10
  store i32 %2155, ptr %2156, align 4, !tbaa !5
  %2157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2158 = load i32, ptr @test_count, align 4, !tbaa !5
  %2159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2160 = load i32, ptr %2159, align 4, !tbaa !5
  %2161 = call ptr @s2n_strerror(i32 noundef %2160, ptr noundef @.str.4)
  %2162 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2163 = load i32, ptr %2162, align 4, !tbaa !5
  %2164 = call ptr @s2n_strerror_debug(i32 noundef %2163, ptr noundef @.str.4)
  %2165 = call ptr @__errno_location() #10
  %2166 = load i32, ptr %2165, align 4, !tbaa !5
  %2167 = call ptr @strerror(i32 noundef %2166) #9
  %2168 = call ptr @__errno_location() #10
  %2169 = load i32, ptr %2168, align 4, !tbaa !5
  %2170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2157, ptr noundef @.str.5, i32 noundef %2158, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 257, ptr noundef %2161, ptr noundef %2164, ptr noundef %2167, i32 noundef %2169) #9
  br label %2171

2171:                                             ; preds = %2154, %2137
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  br label %2172

2172:                                             ; preds = %2171
  br label %2173

2173:                                             ; preds = %2172
  call void @exit(i32 noundef 1) #11
  unreachable

2174:                                             ; No predecessors!
  br label %2175

2175:                                             ; preds = %2174
  br label %2176

2176:                                             ; preds = %2175, %2111
  br label %2177

2177:                                             ; preds = %2176
  br label %2178

2178:                                             ; preds = %2177
  br label %2179

2179:                                             ; preds = %2178
  %2180 = load i32, ptr @test_count, align 4, !tbaa !5
  %2181 = add nsw i32 %2180, 1
  store i32 %2181, ptr @test_count, align 4, !tbaa !5
  %2182 = load ptr, ptr %49, align 8, !tbaa !9
  %2183 = load ptr, ptr %12, align 8, !tbaa !9
  %2184 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2182, ptr noundef %2183)
  %2185 = icmp eq i32 %2184, -1
  br i1 %2185, label %2186, label %2239

2186:                                             ; preds = %2179
  br label %2187

2187:                                             ; preds = %2186
  br label %2188

2188:                                             ; preds = %2187
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #9
  %2189 = call ptr @__errno_location() #10
  %2190 = load i32, ptr %2189, align 4, !tbaa !5
  store i32 %2190, ptr %60, align 4, !tbaa !5
  %2191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2192 = call i32 @s2n_print_stacktrace(ptr noundef %2191)
  %2193 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2194 = trunc i8 %2193 to i1
  br i1 %2194, label %2195, label %2217

2195:                                             ; preds = %2188
  %2196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2197 = call i32 @fileno(ptr noundef %2196) #9
  %2198 = call i32 @isatty(i32 noundef %2197) #9
  %2199 = icmp ne i32 %2198, 0
  br i1 %2199, label %2200, label %2217

2200:                                             ; preds = %2195
  %2201 = load i32, ptr %60, align 4, !tbaa !5
  %2202 = call ptr @__errno_location() #10
  store i32 %2201, ptr %2202, align 4, !tbaa !5
  %2203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2204 = load i32, ptr @test_count, align 4, !tbaa !5
  %2205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2206 = load i32, ptr %2205, align 4, !tbaa !5
  %2207 = call ptr @s2n_strerror(i32 noundef %2206, ptr noundef @.str.4)
  %2208 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2209 = load i32, ptr %2208, align 4, !tbaa !5
  %2210 = call ptr @s2n_strerror_debug(i32 noundef %2209, ptr noundef @.str.4)
  %2211 = call ptr @__errno_location() #10
  %2212 = load i32, ptr %2211, align 4, !tbaa !5
  %2213 = call ptr @strerror(i32 noundef %2212) #9
  %2214 = call ptr @__errno_location() #10
  %2215 = load i32, ptr %2214, align 4, !tbaa !5
  %2216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2203, ptr noundef @.str.2, i32 noundef %2204, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 260, ptr noundef %2207, ptr noundef %2210, ptr noundef %2213, i32 noundef %2215) #9
  br label %2234

2217:                                             ; preds = %2195, %2188
  %2218 = load i32, ptr %60, align 4, !tbaa !5
  %2219 = call ptr @__errno_location() #10
  store i32 %2218, ptr %2219, align 4, !tbaa !5
  %2220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2221 = load i32, ptr @test_count, align 4, !tbaa !5
  %2222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2223 = load i32, ptr %2222, align 4, !tbaa !5
  %2224 = call ptr @s2n_strerror(i32 noundef %2223, ptr noundef @.str.4)
  %2225 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2226 = load i32, ptr %2225, align 4, !tbaa !5
  %2227 = call ptr @s2n_strerror_debug(i32 noundef %2226, ptr noundef @.str.4)
  %2228 = call ptr @__errno_location() #10
  %2229 = load i32, ptr %2228, align 4, !tbaa !5
  %2230 = call ptr @strerror(i32 noundef %2229) #9
  %2231 = call ptr @__errno_location() #10
  %2232 = load i32, ptr %2231, align 4, !tbaa !5
  %2233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2220, ptr noundef @.str.5, i32 noundef %2221, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 260, ptr noundef %2224, ptr noundef %2227, ptr noundef %2230, i32 noundef %2232) #9
  br label %2234

2234:                                             ; preds = %2217, %2200
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  br label %2235

2235:                                             ; preds = %2234
  br label %2236

2236:                                             ; preds = %2235
  call void @exit(i32 noundef 1) #11
  unreachable

2237:                                             ; No predecessors!
  br label %2238

2238:                                             ; preds = %2237
  br label %2239

2239:                                             ; preds = %2238, %2179
  br label %2240

2240:                                             ; preds = %2239
  br label %2241

2241:                                             ; preds = %2240
  br label %2242

2242:                                             ; preds = %2241
  %2243 = load i32, ptr @test_count, align 4, !tbaa !5
  %2244 = add nsw i32 %2243, 1
  store i32 %2244, ptr @test_count, align 4, !tbaa !5
  %2245 = load ptr, ptr %49, align 8, !tbaa !9
  %2246 = load ptr, ptr %20, align 8, !tbaa !9
  %2247 = call i32 (...) @s2n_get_highest_fully_supported_tls_version()
  %2248 = trunc i32 %2247 to i8
  %2249 = load i32, ptr %17, align 4, !tbaa !5
  %2250 = call i32 @s2n_do_test_handshake(ptr noundef %2245, ptr noundef %2246, i8 noundef zeroext %2248, i32 noundef %2249)
  %2251 = getelementptr inbounds %struct.s2n_result, ptr %61, i32 0, i32 0
  store i32 %2250, ptr %2251, align 4
  %2252 = getelementptr inbounds %struct.s2n_result, ptr %61, i32 0, i32 0
  %2253 = load i32, ptr %2252, align 4
  %2254 = call zeroext i1 @s2n_result_is_ok(i32 %2253)
  br i1 %2254, label %2308, label %2255

2255:                                             ; preds = %2242
  br label %2256

2256:                                             ; preds = %2255
  br label %2257

2257:                                             ; preds = %2256
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #9
  %2258 = call ptr @__errno_location() #10
  %2259 = load i32, ptr %2258, align 4, !tbaa !5
  store i32 %2259, ptr %62, align 4, !tbaa !5
  %2260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2261 = call i32 @s2n_print_stacktrace(ptr noundef %2260)
  %2262 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2263 = trunc i8 %2262 to i1
  br i1 %2263, label %2264, label %2286

2264:                                             ; preds = %2257
  %2265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2266 = call i32 @fileno(ptr noundef %2265) #9
  %2267 = call i32 @isatty(i32 noundef %2266) #9
  %2268 = icmp ne i32 %2267, 0
  br i1 %2268, label %2269, label %2286

2269:                                             ; preds = %2264
  %2270 = load i32, ptr %62, align 4, !tbaa !5
  %2271 = call ptr @__errno_location() #10
  store i32 %2270, ptr %2271, align 4, !tbaa !5
  %2272 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2273 = load i32, ptr @test_count, align 4, !tbaa !5
  %2274 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2275 = load i32, ptr %2274, align 4, !tbaa !5
  %2276 = call ptr @s2n_strerror(i32 noundef %2275, ptr noundef @.str.4)
  %2277 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2278 = load i32, ptr %2277, align 4, !tbaa !5
  %2279 = call ptr @s2n_strerror_debug(i32 noundef %2278, ptr noundef @.str.4)
  %2280 = call ptr @__errno_location() #10
  %2281 = load i32, ptr %2280, align 4, !tbaa !5
  %2282 = call ptr @strerror(i32 noundef %2281) #9
  %2283 = call ptr @__errno_location() #10
  %2284 = load i32, ptr %2283, align 4, !tbaa !5
  %2285 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2272, ptr noundef @.str.2, i32 noundef %2273, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 262, ptr noundef %2276, ptr noundef %2279, ptr noundef %2282, i32 noundef %2284) #9
  br label %2303

2286:                                             ; preds = %2264, %2257
  %2287 = load i32, ptr %62, align 4, !tbaa !5
  %2288 = call ptr @__errno_location() #10
  store i32 %2287, ptr %2288, align 4, !tbaa !5
  %2289 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2290 = load i32, ptr @test_count, align 4, !tbaa !5
  %2291 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2292 = load i32, ptr %2291, align 4, !tbaa !5
  %2293 = call ptr @s2n_strerror(i32 noundef %2292, ptr noundef @.str.4)
  %2294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2295 = load i32, ptr %2294, align 4, !tbaa !5
  %2296 = call ptr @s2n_strerror_debug(i32 noundef %2295, ptr noundef @.str.4)
  %2297 = call ptr @__errno_location() #10
  %2298 = load i32, ptr %2297, align 4, !tbaa !5
  %2299 = call ptr @strerror(i32 noundef %2298) #9
  %2300 = call ptr @__errno_location() #10
  %2301 = load i32, ptr %2300, align 4, !tbaa !5
  %2302 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2289, ptr noundef @.str.5, i32 noundef %2290, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 262, ptr noundef %2293, ptr noundef %2296, ptr noundef %2299, i32 noundef %2301) #9
  br label %2303

2303:                                             ; preds = %2286, %2269
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #9
  br label %2304

2304:                                             ; preds = %2303
  br label %2305

2305:                                             ; preds = %2304
  call void @exit(i32 noundef 1) #11
  unreachable

2306:                                             ; No predecessors!
  br label %2307

2307:                                             ; preds = %2306
  br label %2308

2308:                                             ; preds = %2307, %2242
  br label %2309

2309:                                             ; preds = %2308
  br label %2310

2310:                                             ; preds = %2309
  br label %2311

2311:                                             ; preds = %2310
  %2312 = load i32, ptr @test_count, align 4, !tbaa !5
  %2313 = add nsw i32 %2312, 1
  store i32 %2313, ptr @test_count, align 4, !tbaa !5
  %2314 = load ptr, ptr %49, align 8, !tbaa !9
  %2315 = call i32 @s2n_config_set_client_auth_type(ptr noundef %2314, i32 noundef 1)
  %2316 = icmp eq i32 %2315, -1
  br i1 %2316, label %2317, label %2370

2317:                                             ; preds = %2311
  br label %2318

2318:                                             ; preds = %2317
  br label %2319

2319:                                             ; preds = %2318
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  %2320 = call ptr @__errno_location() #10
  %2321 = load i32, ptr %2320, align 4, !tbaa !5
  store i32 %2321, ptr %63, align 4, !tbaa !5
  %2322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2323 = call i32 @s2n_print_stacktrace(ptr noundef %2322)
  %2324 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2325 = trunc i8 %2324 to i1
  br i1 %2325, label %2326, label %2348

2326:                                             ; preds = %2319
  %2327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2328 = call i32 @fileno(ptr noundef %2327) #9
  %2329 = call i32 @isatty(i32 noundef %2328) #9
  %2330 = icmp ne i32 %2329, 0
  br i1 %2330, label %2331, label %2348

2331:                                             ; preds = %2326
  %2332 = load i32, ptr %63, align 4, !tbaa !5
  %2333 = call ptr @__errno_location() #10
  store i32 %2332, ptr %2333, align 4, !tbaa !5
  %2334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2335 = load i32, ptr @test_count, align 4, !tbaa !5
  %2336 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2337 = load i32, ptr %2336, align 4, !tbaa !5
  %2338 = call ptr @s2n_strerror(i32 noundef %2337, ptr noundef @.str.4)
  %2339 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2340 = load i32, ptr %2339, align 4, !tbaa !5
  %2341 = call ptr @s2n_strerror_debug(i32 noundef %2340, ptr noundef @.str.4)
  %2342 = call ptr @__errno_location() #10
  %2343 = load i32, ptr %2342, align 4, !tbaa !5
  %2344 = call ptr @strerror(i32 noundef %2343) #9
  %2345 = call ptr @__errno_location() #10
  %2346 = load i32, ptr %2345, align 4, !tbaa !5
  %2347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2334, ptr noundef @.str.2, i32 noundef %2335, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 267, ptr noundef %2338, ptr noundef %2341, ptr noundef %2344, i32 noundef %2346) #9
  br label %2365

2348:                                             ; preds = %2326, %2319
  %2349 = load i32, ptr %63, align 4, !tbaa !5
  %2350 = call ptr @__errno_location() #10
  store i32 %2349, ptr %2350, align 4, !tbaa !5
  %2351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2352 = load i32, ptr @test_count, align 4, !tbaa !5
  %2353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2354 = load i32, ptr %2353, align 4, !tbaa !5
  %2355 = call ptr @s2n_strerror(i32 noundef %2354, ptr noundef @.str.4)
  %2356 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2357 = load i32, ptr %2356, align 4, !tbaa !5
  %2358 = call ptr @s2n_strerror_debug(i32 noundef %2357, ptr noundef @.str.4)
  %2359 = call ptr @__errno_location() #10
  %2360 = load i32, ptr %2359, align 4, !tbaa !5
  %2361 = call ptr @strerror(i32 noundef %2360) #9
  %2362 = call ptr @__errno_location() #10
  %2363 = load i32, ptr %2362, align 4, !tbaa !5
  %2364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2351, ptr noundef @.str.5, i32 noundef %2352, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 267, ptr noundef %2355, ptr noundef %2358, ptr noundef %2361, i32 noundef %2363) #9
  br label %2365

2365:                                             ; preds = %2348, %2331
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %2366

2366:                                             ; preds = %2365
  br label %2367

2367:                                             ; preds = %2366
  call void @exit(i32 noundef 1) #11
  unreachable

2368:                                             ; No predecessors!
  br label %2369

2369:                                             ; preds = %2368
  br label %2370

2370:                                             ; preds = %2369, %2311
  br label %2371

2371:                                             ; preds = %2370
  br label %2372

2372:                                             ; preds = %2371
  br label %2373

2373:                                             ; preds = %2372
  %2374 = load i32, ptr @test_count, align 4, !tbaa !5
  %2375 = add nsw i32 %2374, 1
  store i32 %2375, ptr @test_count, align 4, !tbaa !5
  %2376 = load ptr, ptr %49, align 8, !tbaa !9
  %2377 = load ptr, ptr %13, align 8, !tbaa !9
  %2378 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2376, ptr noundef %2377)
  %2379 = icmp eq i32 %2378, -1
  br i1 %2379, label %2380, label %2433

2380:                                             ; preds = %2373
  br label %2381

2381:                                             ; preds = %2380
  br label %2382

2382:                                             ; preds = %2381
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #9
  %2383 = call ptr @__errno_location() #10
  %2384 = load i32, ptr %2383, align 4, !tbaa !5
  store i32 %2384, ptr %64, align 4, !tbaa !5
  %2385 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2386 = call i32 @s2n_print_stacktrace(ptr noundef %2385)
  %2387 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2388 = trunc i8 %2387 to i1
  br i1 %2388, label %2389, label %2411

2389:                                             ; preds = %2382
  %2390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2391 = call i32 @fileno(ptr noundef %2390) #9
  %2392 = call i32 @isatty(i32 noundef %2391) #9
  %2393 = icmp ne i32 %2392, 0
  br i1 %2393, label %2394, label %2411

2394:                                             ; preds = %2389
  %2395 = load i32, ptr %64, align 4, !tbaa !5
  %2396 = call ptr @__errno_location() #10
  store i32 %2395, ptr %2396, align 4, !tbaa !5
  %2397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2398 = load i32, ptr @test_count, align 4, !tbaa !5
  %2399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2400 = load i32, ptr %2399, align 4, !tbaa !5
  %2401 = call ptr @s2n_strerror(i32 noundef %2400, ptr noundef @.str.4)
  %2402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2403 = load i32, ptr %2402, align 4, !tbaa !5
  %2404 = call ptr @s2n_strerror_debug(i32 noundef %2403, ptr noundef @.str.4)
  %2405 = call ptr @__errno_location() #10
  %2406 = load i32, ptr %2405, align 4, !tbaa !5
  %2407 = call ptr @strerror(i32 noundef %2406) #9
  %2408 = call ptr @__errno_location() #10
  %2409 = load i32, ptr %2408, align 4, !tbaa !5
  %2410 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2397, ptr noundef @.str.2, i32 noundef %2398, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 270, ptr noundef %2401, ptr noundef %2404, ptr noundef %2407, i32 noundef %2409) #9
  br label %2428

2411:                                             ; preds = %2389, %2382
  %2412 = load i32, ptr %64, align 4, !tbaa !5
  %2413 = call ptr @__errno_location() #10
  store i32 %2412, ptr %2413, align 4, !tbaa !5
  %2414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2415 = load i32, ptr @test_count, align 4, !tbaa !5
  %2416 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2417 = load i32, ptr %2416, align 4, !tbaa !5
  %2418 = call ptr @s2n_strerror(i32 noundef %2417, ptr noundef @.str.4)
  %2419 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2420 = load i32, ptr %2419, align 4, !tbaa !5
  %2421 = call ptr @s2n_strerror_debug(i32 noundef %2420, ptr noundef @.str.4)
  %2422 = call ptr @__errno_location() #10
  %2423 = load i32, ptr %2422, align 4, !tbaa !5
  %2424 = call ptr @strerror(i32 noundef %2423) #9
  %2425 = call ptr @__errno_location() #10
  %2426 = load i32, ptr %2425, align 4, !tbaa !5
  %2427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2414, ptr noundef @.str.5, i32 noundef %2415, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 270, ptr noundef %2418, ptr noundef %2421, ptr noundef %2424, i32 noundef %2426) #9
  br label %2428

2428:                                             ; preds = %2411, %2394
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #9
  br label %2429

2429:                                             ; preds = %2428
  br label %2430

2430:                                             ; preds = %2429
  call void @exit(i32 noundef 1) #11
  unreachable

2431:                                             ; No predecessors!
  br label %2432

2432:                                             ; preds = %2431
  br label %2433

2433:                                             ; preds = %2432, %2373
  br label %2434

2434:                                             ; preds = %2433
  br label %2435

2435:                                             ; preds = %2434
  br label %2436

2436:                                             ; preds = %2435
  %2437 = load i32, ptr @test_count, align 4, !tbaa !5
  %2438 = add nsw i32 %2437, 1
  store i32 %2438, ptr @test_count, align 4, !tbaa !5
  %2439 = load ptr, ptr %49, align 8, !tbaa !9
  %2440 = load ptr, ptr %20, align 8, !tbaa !9
  %2441 = load i32, ptr %14, align 4, !tbaa !5
  %2442 = or i32 %2441, 4
  %2443 = call i32 @s2n_do_test_handshake(ptr noundef %2439, ptr noundef %2440, i8 noundef zeroext 33, i32 noundef %2442)
  %2444 = getelementptr inbounds %struct.s2n_result, ptr %65, i32 0, i32 0
  store i32 %2443, ptr %2444, align 4
  %2445 = getelementptr inbounds %struct.s2n_result, ptr %65, i32 0, i32 0
  %2446 = load i32, ptr %2445, align 4
  %2447 = call zeroext i1 @s2n_result_is_ok(i32 %2446)
  br i1 %2447, label %2501, label %2448

2448:                                             ; preds = %2436
  br label %2449

2449:                                             ; preds = %2448
  br label %2450

2450:                                             ; preds = %2449
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #9
  %2451 = call ptr @__errno_location() #10
  %2452 = load i32, ptr %2451, align 4, !tbaa !5
  store i32 %2452, ptr %66, align 4, !tbaa !5
  %2453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2454 = call i32 @s2n_print_stacktrace(ptr noundef %2453)
  %2455 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2456 = trunc i8 %2455 to i1
  br i1 %2456, label %2457, label %2479

2457:                                             ; preds = %2450
  %2458 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2459 = call i32 @fileno(ptr noundef %2458) #9
  %2460 = call i32 @isatty(i32 noundef %2459) #9
  %2461 = icmp ne i32 %2460, 0
  br i1 %2461, label %2462, label %2479

2462:                                             ; preds = %2457
  %2463 = load i32, ptr %66, align 4, !tbaa !5
  %2464 = call ptr @__errno_location() #10
  store i32 %2463, ptr %2464, align 4, !tbaa !5
  %2465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2466 = load i32, ptr @test_count, align 4, !tbaa !5
  %2467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2468 = load i32, ptr %2467, align 4, !tbaa !5
  %2469 = call ptr @s2n_strerror(i32 noundef %2468, ptr noundef @.str.4)
  %2470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2471 = load i32, ptr %2470, align 4, !tbaa !5
  %2472 = call ptr @s2n_strerror_debug(i32 noundef %2471, ptr noundef @.str.4)
  %2473 = call ptr @__errno_location() #10
  %2474 = load i32, ptr %2473, align 4, !tbaa !5
  %2475 = call ptr @strerror(i32 noundef %2474) #9
  %2476 = call ptr @__errno_location() #10
  %2477 = load i32, ptr %2476, align 4, !tbaa !5
  %2478 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2465, ptr noundef @.str.2, i32 noundef %2466, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 272, ptr noundef %2469, ptr noundef %2472, ptr noundef %2475, i32 noundef %2477) #9
  br label %2496

2479:                                             ; preds = %2457, %2450
  %2480 = load i32, ptr %66, align 4, !tbaa !5
  %2481 = call ptr @__errno_location() #10
  store i32 %2480, ptr %2481, align 4, !tbaa !5
  %2482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2483 = load i32, ptr @test_count, align 4, !tbaa !5
  %2484 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2485 = load i32, ptr %2484, align 4, !tbaa !5
  %2486 = call ptr @s2n_strerror(i32 noundef %2485, ptr noundef @.str.4)
  %2487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2488 = load i32, ptr %2487, align 4, !tbaa !5
  %2489 = call ptr @s2n_strerror_debug(i32 noundef %2488, ptr noundef @.str.4)
  %2490 = call ptr @__errno_location() #10
  %2491 = load i32, ptr %2490, align 4, !tbaa !5
  %2492 = call ptr @strerror(i32 noundef %2491) #9
  %2493 = call ptr @__errno_location() #10
  %2494 = load i32, ptr %2493, align 4, !tbaa !5
  %2495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2482, ptr noundef @.str.5, i32 noundef %2483, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 272, ptr noundef %2486, ptr noundef %2489, ptr noundef %2492, i32 noundef %2494) #9
  br label %2496

2496:                                             ; preds = %2479, %2462
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  br label %2497

2497:                                             ; preds = %2496
  br label %2498

2498:                                             ; preds = %2497
  call void @exit(i32 noundef 1) #11
  unreachable

2499:                                             ; No predecessors!
  br label %2500

2500:                                             ; preds = %2499
  br label %2501

2501:                                             ; preds = %2500, %2436
  br label %2502

2502:                                             ; preds = %2501
  br label %2503

2503:                                             ; preds = %2502
  br label %2504

2504:                                             ; preds = %2503
  %2505 = load i32, ptr @test_count, align 4, !tbaa !5
  %2506 = add nsw i32 %2505, 1
  store i32 %2506, ptr @test_count, align 4, !tbaa !5
  %2507 = load ptr, ptr %49, align 8, !tbaa !9
  %2508 = load ptr, ptr %11, align 8, !tbaa !9
  %2509 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2507, ptr noundef %2508)
  %2510 = icmp eq i32 %2509, -1
  br i1 %2510, label %2511, label %2564

2511:                                             ; preds = %2504
  br label %2512

2512:                                             ; preds = %2511
  br label %2513

2513:                                             ; preds = %2512
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #9
  %2514 = call ptr @__errno_location() #10
  %2515 = load i32, ptr %2514, align 4, !tbaa !5
  store i32 %2515, ptr %67, align 4, !tbaa !5
  %2516 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2517 = call i32 @s2n_print_stacktrace(ptr noundef %2516)
  %2518 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2519 = trunc i8 %2518 to i1
  br i1 %2519, label %2520, label %2542

2520:                                             ; preds = %2513
  %2521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2522 = call i32 @fileno(ptr noundef %2521) #9
  %2523 = call i32 @isatty(i32 noundef %2522) #9
  %2524 = icmp ne i32 %2523, 0
  br i1 %2524, label %2525, label %2542

2525:                                             ; preds = %2520
  %2526 = load i32, ptr %67, align 4, !tbaa !5
  %2527 = call ptr @__errno_location() #10
  store i32 %2526, ptr %2527, align 4, !tbaa !5
  %2528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2529 = load i32, ptr @test_count, align 4, !tbaa !5
  %2530 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2531 = load i32, ptr %2530, align 4, !tbaa !5
  %2532 = call ptr @s2n_strerror(i32 noundef %2531, ptr noundef @.str.4)
  %2533 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2534 = load i32, ptr %2533, align 4, !tbaa !5
  %2535 = call ptr @s2n_strerror_debug(i32 noundef %2534, ptr noundef @.str.4)
  %2536 = call ptr @__errno_location() #10
  %2537 = load i32, ptr %2536, align 4, !tbaa !5
  %2538 = call ptr @strerror(i32 noundef %2537) #9
  %2539 = call ptr @__errno_location() #10
  %2540 = load i32, ptr %2539, align 4, !tbaa !5
  %2541 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2528, ptr noundef @.str.2, i32 noundef %2529, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 275, ptr noundef %2532, ptr noundef %2535, ptr noundef %2538, i32 noundef %2540) #9
  br label %2559

2542:                                             ; preds = %2520, %2513
  %2543 = load i32, ptr %67, align 4, !tbaa !5
  %2544 = call ptr @__errno_location() #10
  store i32 %2543, ptr %2544, align 4, !tbaa !5
  %2545 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2546 = load i32, ptr @test_count, align 4, !tbaa !5
  %2547 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2548 = load i32, ptr %2547, align 4, !tbaa !5
  %2549 = call ptr @s2n_strerror(i32 noundef %2548, ptr noundef @.str.4)
  %2550 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2551 = load i32, ptr %2550, align 4, !tbaa !5
  %2552 = call ptr @s2n_strerror_debug(i32 noundef %2551, ptr noundef @.str.4)
  %2553 = call ptr @__errno_location() #10
  %2554 = load i32, ptr %2553, align 4, !tbaa !5
  %2555 = call ptr @strerror(i32 noundef %2554) #9
  %2556 = call ptr @__errno_location() #10
  %2557 = load i32, ptr %2556, align 4, !tbaa !5
  %2558 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2545, ptr noundef @.str.5, i32 noundef %2546, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 275, ptr noundef %2549, ptr noundef %2552, ptr noundef %2555, i32 noundef %2557) #9
  br label %2559

2559:                                             ; preds = %2542, %2525
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  br label %2560

2560:                                             ; preds = %2559
  br label %2561

2561:                                             ; preds = %2560
  call void @exit(i32 noundef 1) #11
  unreachable

2562:                                             ; No predecessors!
  br label %2563

2563:                                             ; preds = %2562
  br label %2564

2564:                                             ; preds = %2563, %2504
  br label %2565

2565:                                             ; preds = %2564
  br label %2566

2566:                                             ; preds = %2565
  br label %2567

2567:                                             ; preds = %2566
  %2568 = load i32, ptr @test_count, align 4, !tbaa !5
  %2569 = add nsw i32 %2568, 1
  store i32 %2569, ptr @test_count, align 4, !tbaa !5
  %2570 = load ptr, ptr %49, align 8, !tbaa !9
  %2571 = load ptr, ptr %20, align 8, !tbaa !9
  %2572 = load i32, ptr %14, align 4, !tbaa !5
  %2573 = or i32 %2572, 4
  %2574 = or i32 %2573, 16
  %2575 = call i32 @s2n_do_test_handshake(ptr noundef %2570, ptr noundef %2571, i8 noundef zeroext 33, i32 noundef %2574)
  %2576 = getelementptr inbounds %struct.s2n_result, ptr %68, i32 0, i32 0
  store i32 %2575, ptr %2576, align 4
  %2577 = getelementptr inbounds %struct.s2n_result, ptr %68, i32 0, i32 0
  %2578 = load i32, ptr %2577, align 4
  %2579 = call zeroext i1 @s2n_result_is_ok(i32 %2578)
  br i1 %2579, label %2633, label %2580

2580:                                             ; preds = %2567
  br label %2581

2581:                                             ; preds = %2580
  br label %2582

2582:                                             ; preds = %2581
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #9
  %2583 = call ptr @__errno_location() #10
  %2584 = load i32, ptr %2583, align 4, !tbaa !5
  store i32 %2584, ptr %69, align 4, !tbaa !5
  %2585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2586 = call i32 @s2n_print_stacktrace(ptr noundef %2585)
  %2587 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2588 = trunc i8 %2587 to i1
  br i1 %2588, label %2589, label %2611

2589:                                             ; preds = %2582
  %2590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2591 = call i32 @fileno(ptr noundef %2590) #9
  %2592 = call i32 @isatty(i32 noundef %2591) #9
  %2593 = icmp ne i32 %2592, 0
  br i1 %2593, label %2594, label %2611

2594:                                             ; preds = %2589
  %2595 = load i32, ptr %69, align 4, !tbaa !5
  %2596 = call ptr @__errno_location() #10
  store i32 %2595, ptr %2596, align 4, !tbaa !5
  %2597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2598 = load i32, ptr @test_count, align 4, !tbaa !5
  %2599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2600 = load i32, ptr %2599, align 4, !tbaa !5
  %2601 = call ptr @s2n_strerror(i32 noundef %2600, ptr noundef @.str.4)
  %2602 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2603 = load i32, ptr %2602, align 4, !tbaa !5
  %2604 = call ptr @s2n_strerror_debug(i32 noundef %2603, ptr noundef @.str.4)
  %2605 = call ptr @__errno_location() #10
  %2606 = load i32, ptr %2605, align 4, !tbaa !5
  %2607 = call ptr @strerror(i32 noundef %2606) #9
  %2608 = call ptr @__errno_location() #10
  %2609 = load i32, ptr %2608, align 4, !tbaa !5
  %2610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2597, ptr noundef @.str.2, i32 noundef %2598, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 277, ptr noundef %2601, ptr noundef %2604, ptr noundef %2607, i32 noundef %2609) #9
  br label %2628

2611:                                             ; preds = %2589, %2582
  %2612 = load i32, ptr %69, align 4, !tbaa !5
  %2613 = call ptr @__errno_location() #10
  store i32 %2612, ptr %2613, align 4, !tbaa !5
  %2614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2615 = load i32, ptr @test_count, align 4, !tbaa !5
  %2616 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2617 = load i32, ptr %2616, align 4, !tbaa !5
  %2618 = call ptr @s2n_strerror(i32 noundef %2617, ptr noundef @.str.4)
  %2619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2620 = load i32, ptr %2619, align 4, !tbaa !5
  %2621 = call ptr @s2n_strerror_debug(i32 noundef %2620, ptr noundef @.str.4)
  %2622 = call ptr @__errno_location() #10
  %2623 = load i32, ptr %2622, align 4, !tbaa !5
  %2624 = call ptr @strerror(i32 noundef %2623) #9
  %2625 = call ptr @__errno_location() #10
  %2626 = load i32, ptr %2625, align 4, !tbaa !5
  %2627 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2614, ptr noundef @.str.5, i32 noundef %2615, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 277, ptr noundef %2618, ptr noundef %2621, ptr noundef %2624, i32 noundef %2626) #9
  br label %2628

2628:                                             ; preds = %2611, %2594
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #9
  br label %2629

2629:                                             ; preds = %2628
  br label %2630

2630:                                             ; preds = %2629
  call void @exit(i32 noundef 1) #11
  unreachable

2631:                                             ; No predecessors!
  br label %2632

2632:                                             ; preds = %2631
  br label %2633

2633:                                             ; preds = %2632, %2567
  br label %2634

2634:                                             ; preds = %2633
  br label %2635

2635:                                             ; preds = %2634
  br label %2636

2636:                                             ; preds = %2635
  %2637 = load i32, ptr @test_count, align 4, !tbaa !5
  %2638 = add nsw i32 %2637, 1
  store i32 %2638, ptr @test_count, align 4, !tbaa !5
  %2639 = load ptr, ptr %49, align 8, !tbaa !9
  %2640 = load ptr, ptr %12, align 8, !tbaa !9
  %2641 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2639, ptr noundef %2640)
  %2642 = icmp eq i32 %2641, -1
  br i1 %2642, label %2643, label %2696

2643:                                             ; preds = %2636
  br label %2644

2644:                                             ; preds = %2643
  br label %2645

2645:                                             ; preds = %2644
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #9
  %2646 = call ptr @__errno_location() #10
  %2647 = load i32, ptr %2646, align 4, !tbaa !5
  store i32 %2647, ptr %70, align 4, !tbaa !5
  %2648 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2649 = call i32 @s2n_print_stacktrace(ptr noundef %2648)
  %2650 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2651 = trunc i8 %2650 to i1
  br i1 %2651, label %2652, label %2674

2652:                                             ; preds = %2645
  %2653 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2654 = call i32 @fileno(ptr noundef %2653) #9
  %2655 = call i32 @isatty(i32 noundef %2654) #9
  %2656 = icmp ne i32 %2655, 0
  br i1 %2656, label %2657, label %2674

2657:                                             ; preds = %2652
  %2658 = load i32, ptr %70, align 4, !tbaa !5
  %2659 = call ptr @__errno_location() #10
  store i32 %2658, ptr %2659, align 4, !tbaa !5
  %2660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2661 = load i32, ptr @test_count, align 4, !tbaa !5
  %2662 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2663 = load i32, ptr %2662, align 4, !tbaa !5
  %2664 = call ptr @s2n_strerror(i32 noundef %2663, ptr noundef @.str.4)
  %2665 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2666 = load i32, ptr %2665, align 4, !tbaa !5
  %2667 = call ptr @s2n_strerror_debug(i32 noundef %2666, ptr noundef @.str.4)
  %2668 = call ptr @__errno_location() #10
  %2669 = load i32, ptr %2668, align 4, !tbaa !5
  %2670 = call ptr @strerror(i32 noundef %2669) #9
  %2671 = call ptr @__errno_location() #10
  %2672 = load i32, ptr %2671, align 4, !tbaa !5
  %2673 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2660, ptr noundef @.str.2, i32 noundef %2661, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 280, ptr noundef %2664, ptr noundef %2667, ptr noundef %2670, i32 noundef %2672) #9
  br label %2691

2674:                                             ; preds = %2652, %2645
  %2675 = load i32, ptr %70, align 4, !tbaa !5
  %2676 = call ptr @__errno_location() #10
  store i32 %2675, ptr %2676, align 4, !tbaa !5
  %2677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2678 = load i32, ptr @test_count, align 4, !tbaa !5
  %2679 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2680 = load i32, ptr %2679, align 4, !tbaa !5
  %2681 = call ptr @s2n_strerror(i32 noundef %2680, ptr noundef @.str.4)
  %2682 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2683 = load i32, ptr %2682, align 4, !tbaa !5
  %2684 = call ptr @s2n_strerror_debug(i32 noundef %2683, ptr noundef @.str.4)
  %2685 = call ptr @__errno_location() #10
  %2686 = load i32, ptr %2685, align 4, !tbaa !5
  %2687 = call ptr @strerror(i32 noundef %2686) #9
  %2688 = call ptr @__errno_location() #10
  %2689 = load i32, ptr %2688, align 4, !tbaa !5
  %2690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2677, ptr noundef @.str.5, i32 noundef %2678, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 280, ptr noundef %2681, ptr noundef %2684, ptr noundef %2687, i32 noundef %2689) #9
  br label %2691

2691:                                             ; preds = %2674, %2657
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #9
  br label %2692

2692:                                             ; preds = %2691
  br label %2693

2693:                                             ; preds = %2692
  call void @exit(i32 noundef 1) #11
  unreachable

2694:                                             ; No predecessors!
  br label %2695

2695:                                             ; preds = %2694
  br label %2696

2696:                                             ; preds = %2695, %2636
  br label %2697

2697:                                             ; preds = %2696
  br label %2698

2698:                                             ; preds = %2697
  br label %2699

2699:                                             ; preds = %2698
  %2700 = load i32, ptr @test_count, align 4, !tbaa !5
  %2701 = add nsw i32 %2700, 1
  store i32 %2701, ptr @test_count, align 4, !tbaa !5
  %2702 = load ptr, ptr %49, align 8, !tbaa !9
  %2703 = load ptr, ptr %20, align 8, !tbaa !9
  %2704 = call i32 (...) @s2n_get_highest_fully_supported_tls_version()
  %2705 = trunc i32 %2704 to i8
  %2706 = load i32, ptr %17, align 4, !tbaa !5
  %2707 = or i32 %2706, 4
  %2708 = call i32 @s2n_do_test_handshake(ptr noundef %2702, ptr noundef %2703, i8 noundef zeroext %2705, i32 noundef %2707)
  %2709 = getelementptr inbounds %struct.s2n_result, ptr %71, i32 0, i32 0
  store i32 %2708, ptr %2709, align 4
  %2710 = getelementptr inbounds %struct.s2n_result, ptr %71, i32 0, i32 0
  %2711 = load i32, ptr %2710, align 4
  %2712 = call zeroext i1 @s2n_result_is_ok(i32 %2711)
  br i1 %2712, label %2766, label %2713

2713:                                             ; preds = %2699
  br label %2714

2714:                                             ; preds = %2713
  br label %2715

2715:                                             ; preds = %2714
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #9
  %2716 = call ptr @__errno_location() #10
  %2717 = load i32, ptr %2716, align 4, !tbaa !5
  store i32 %2717, ptr %72, align 4, !tbaa !5
  %2718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2719 = call i32 @s2n_print_stacktrace(ptr noundef %2718)
  %2720 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2721 = trunc i8 %2720 to i1
  br i1 %2721, label %2722, label %2744

2722:                                             ; preds = %2715
  %2723 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2724 = call i32 @fileno(ptr noundef %2723) #9
  %2725 = call i32 @isatty(i32 noundef %2724) #9
  %2726 = icmp ne i32 %2725, 0
  br i1 %2726, label %2727, label %2744

2727:                                             ; preds = %2722
  %2728 = load i32, ptr %72, align 4, !tbaa !5
  %2729 = call ptr @__errno_location() #10
  store i32 %2728, ptr %2729, align 4, !tbaa !5
  %2730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2731 = load i32, ptr @test_count, align 4, !tbaa !5
  %2732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2733 = load i32, ptr %2732, align 4, !tbaa !5
  %2734 = call ptr @s2n_strerror(i32 noundef %2733, ptr noundef @.str.4)
  %2735 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2736 = load i32, ptr %2735, align 4, !tbaa !5
  %2737 = call ptr @s2n_strerror_debug(i32 noundef %2736, ptr noundef @.str.4)
  %2738 = call ptr @__errno_location() #10
  %2739 = load i32, ptr %2738, align 4, !tbaa !5
  %2740 = call ptr @strerror(i32 noundef %2739) #9
  %2741 = call ptr @__errno_location() #10
  %2742 = load i32, ptr %2741, align 4, !tbaa !5
  %2743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2730, ptr noundef @.str.2, i32 noundef %2731, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 282, ptr noundef %2734, ptr noundef %2737, ptr noundef %2740, i32 noundef %2742) #9
  br label %2761

2744:                                             ; preds = %2722, %2715
  %2745 = load i32, ptr %72, align 4, !tbaa !5
  %2746 = call ptr @__errno_location() #10
  store i32 %2745, ptr %2746, align 4, !tbaa !5
  %2747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2748 = load i32, ptr @test_count, align 4, !tbaa !5
  %2749 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2750 = load i32, ptr %2749, align 4, !tbaa !5
  %2751 = call ptr @s2n_strerror(i32 noundef %2750, ptr noundef @.str.4)
  %2752 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2753 = load i32, ptr %2752, align 4, !tbaa !5
  %2754 = call ptr @s2n_strerror_debug(i32 noundef %2753, ptr noundef @.str.4)
  %2755 = call ptr @__errno_location() #10
  %2756 = load i32, ptr %2755, align 4, !tbaa !5
  %2757 = call ptr @strerror(i32 noundef %2756) #9
  %2758 = call ptr @__errno_location() #10
  %2759 = load i32, ptr %2758, align 4, !tbaa !5
  %2760 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2747, ptr noundef @.str.5, i32 noundef %2748, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 282, ptr noundef %2751, ptr noundef %2754, ptr noundef %2757, i32 noundef %2759) #9
  br label %2761

2761:                                             ; preds = %2744, %2727
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #9
  br label %2762

2762:                                             ; preds = %2761
  br label %2763

2763:                                             ; preds = %2762
  call void @exit(i32 noundef 1) #11
  unreachable

2764:                                             ; No predecessors!
  br label %2765

2765:                                             ; preds = %2764
  br label %2766

2766:                                             ; preds = %2765, %2699
  br label %2767

2767:                                             ; preds = %2766
  br label %2768

2768:                                             ; preds = %2767
  br label %2769

2769:                                             ; preds = %2768
  %2770 = load i32, ptr @test_count, align 4, !tbaa !5
  %2771 = add nsw i32 %2770, 1
  store i32 %2771, ptr @test_count, align 4, !tbaa !5
  %2772 = load ptr, ptr %49, align 8, !tbaa !9
  %2773 = call i32 @s2n_config_free(ptr noundef %2772)
  %2774 = icmp eq i32 %2773, -1
  br i1 %2774, label %2775, label %2828

2775:                                             ; preds = %2769
  br label %2776

2776:                                             ; preds = %2775
  br label %2777

2777:                                             ; preds = %2776
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #9
  %2778 = call ptr @__errno_location() #10
  %2779 = load i32, ptr %2778, align 4, !tbaa !5
  store i32 %2779, ptr %73, align 4, !tbaa !5
  %2780 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2781 = call i32 @s2n_print_stacktrace(ptr noundef %2780)
  %2782 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2783 = trunc i8 %2782 to i1
  br i1 %2783, label %2784, label %2806

2784:                                             ; preds = %2777
  %2785 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2786 = call i32 @fileno(ptr noundef %2785) #9
  %2787 = call i32 @isatty(i32 noundef %2786) #9
  %2788 = icmp ne i32 %2787, 0
  br i1 %2788, label %2789, label %2806

2789:                                             ; preds = %2784
  %2790 = load i32, ptr %73, align 4, !tbaa !5
  %2791 = call ptr @__errno_location() #10
  store i32 %2790, ptr %2791, align 4, !tbaa !5
  %2792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2793 = load i32, ptr @test_count, align 4, !tbaa !5
  %2794 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2795 = load i32, ptr %2794, align 4, !tbaa !5
  %2796 = call ptr @s2n_strerror(i32 noundef %2795, ptr noundef @.str.4)
  %2797 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2798 = load i32, ptr %2797, align 4, !tbaa !5
  %2799 = call ptr @s2n_strerror_debug(i32 noundef %2798, ptr noundef @.str.4)
  %2800 = call ptr @__errno_location() #10
  %2801 = load i32, ptr %2800, align 4, !tbaa !5
  %2802 = call ptr @strerror(i32 noundef %2801) #9
  %2803 = call ptr @__errno_location() #10
  %2804 = load i32, ptr %2803, align 4, !tbaa !5
  %2805 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2792, ptr noundef @.str.2, i32 noundef %2793, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 285, ptr noundef %2796, ptr noundef %2799, ptr noundef %2802, i32 noundef %2804) #9
  br label %2823

2806:                                             ; preds = %2784, %2777
  %2807 = load i32, ptr %73, align 4, !tbaa !5
  %2808 = call ptr @__errno_location() #10
  store i32 %2807, ptr %2808, align 4, !tbaa !5
  %2809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2810 = load i32, ptr @test_count, align 4, !tbaa !5
  %2811 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2812 = load i32, ptr %2811, align 4, !tbaa !5
  %2813 = call ptr @s2n_strerror(i32 noundef %2812, ptr noundef @.str.4)
  %2814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2815 = load i32, ptr %2814, align 4, !tbaa !5
  %2816 = call ptr @s2n_strerror_debug(i32 noundef %2815, ptr noundef @.str.4)
  %2817 = call ptr @__errno_location() #10
  %2818 = load i32, ptr %2817, align 4, !tbaa !5
  %2819 = call ptr @strerror(i32 noundef %2818) #9
  %2820 = call ptr @__errno_location() #10
  %2821 = load i32, ptr %2820, align 4, !tbaa !5
  %2822 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2809, ptr noundef @.str.5, i32 noundef %2810, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 285, ptr noundef %2813, ptr noundef %2816, ptr noundef %2819, i32 noundef %2821) #9
  br label %2823

2823:                                             ; preds = %2806, %2789
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #9
  br label %2824

2824:                                             ; preds = %2823
  br label %2825

2825:                                             ; preds = %2824
  call void @exit(i32 noundef 1) #11
  unreachable

2826:                                             ; No predecessors!
  br label %2827

2827:                                             ; preds = %2826
  br label %2828

2828:                                             ; preds = %2827, %2769
  br label %2829

2829:                                             ; preds = %2828
  br label %2830

2830:                                             ; preds = %2829
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %2831

2831:                                             ; preds = %2830
  %2832 = load i32, ptr @test_count, align 4, !tbaa !5
  %2833 = add nsw i32 %2832, 1
  store i32 %2833, ptr @test_count, align 4, !tbaa !5
  %2834 = load ptr, ptr %18, align 8, !tbaa !9
  %2835 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %2834)
  %2836 = icmp eq i32 %2835, -1
  br i1 %2836, label %2837, label %2890

2837:                                             ; preds = %2831
  br label %2838

2838:                                             ; preds = %2837
  br label %2839

2839:                                             ; preds = %2838
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #9
  %2840 = call ptr @__errno_location() #10
  %2841 = load i32, ptr %2840, align 4, !tbaa !5
  store i32 %2841, ptr %74, align 4, !tbaa !5
  %2842 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2843 = call i32 @s2n_print_stacktrace(ptr noundef %2842)
  %2844 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2845 = trunc i8 %2844 to i1
  br i1 %2845, label %2846, label %2868

2846:                                             ; preds = %2839
  %2847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2848 = call i32 @fileno(ptr noundef %2847) #9
  %2849 = call i32 @isatty(i32 noundef %2848) #9
  %2850 = icmp ne i32 %2849, 0
  br i1 %2850, label %2851, label %2868

2851:                                             ; preds = %2846
  %2852 = load i32, ptr %74, align 4, !tbaa !5
  %2853 = call ptr @__errno_location() #10
  store i32 %2852, ptr %2853, align 4, !tbaa !5
  %2854 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2855 = load i32, ptr @test_count, align 4, !tbaa !5
  %2856 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2857 = load i32, ptr %2856, align 4, !tbaa !5
  %2858 = call ptr @s2n_strerror(i32 noundef %2857, ptr noundef @.str.4)
  %2859 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2860 = load i32, ptr %2859, align 4, !tbaa !5
  %2861 = call ptr @s2n_strerror_debug(i32 noundef %2860, ptr noundef @.str.4)
  %2862 = call ptr @__errno_location() #10
  %2863 = load i32, ptr %2862, align 4, !tbaa !5
  %2864 = call ptr @strerror(i32 noundef %2863) #9
  %2865 = call ptr @__errno_location() #10
  %2866 = load i32, ptr %2865, align 4, !tbaa !5
  %2867 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2854, ptr noundef @.str.2, i32 noundef %2855, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 288, ptr noundef %2858, ptr noundef %2861, ptr noundef %2864, i32 noundef %2866) #9
  br label %2885

2868:                                             ; preds = %2846, %2839
  %2869 = load i32, ptr %74, align 4, !tbaa !5
  %2870 = call ptr @__errno_location() #10
  store i32 %2869, ptr %2870, align 4, !tbaa !5
  %2871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2872 = load i32, ptr @test_count, align 4, !tbaa !5
  %2873 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2874 = load i32, ptr %2873, align 4, !tbaa !5
  %2875 = call ptr @s2n_strerror(i32 noundef %2874, ptr noundef @.str.4)
  %2876 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2877 = load i32, ptr %2876, align 4, !tbaa !5
  %2878 = call ptr @s2n_strerror_debug(i32 noundef %2877, ptr noundef @.str.4)
  %2879 = call ptr @__errno_location() #10
  %2880 = load i32, ptr %2879, align 4, !tbaa !5
  %2881 = call ptr @strerror(i32 noundef %2880) #9
  %2882 = call ptr @__errno_location() #10
  %2883 = load i32, ptr %2882, align 4, !tbaa !5
  %2884 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2871, ptr noundef @.str.5, i32 noundef %2872, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 288, ptr noundef %2875, ptr noundef %2878, ptr noundef %2881, i32 noundef %2883) #9
  br label %2885

2885:                                             ; preds = %2868, %2851
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  br label %2886

2886:                                             ; preds = %2885
  br label %2887

2887:                                             ; preds = %2886
  call void @exit(i32 noundef 1) #11
  unreachable

2888:                                             ; No predecessors!
  br label %2889

2889:                                             ; preds = %2888
  br label %2890

2890:                                             ; preds = %2889, %2831
  br label %2891

2891:                                             ; preds = %2890
  br label %2892

2892:                                             ; preds = %2891
  br label %2893

2893:                                             ; preds = %2892
  %2894 = load i32, ptr @test_count, align 4, !tbaa !5
  %2895 = add nsw i32 %2894, 1
  store i32 %2895, ptr @test_count, align 4, !tbaa !5
  %2896 = load ptr, ptr %22, align 8, !tbaa !9
  %2897 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %2896)
  %2898 = icmp eq i32 %2897, -1
  br i1 %2898, label %2899, label %2952

2899:                                             ; preds = %2893
  br label %2900

2900:                                             ; preds = %2899
  br label %2901

2901:                                             ; preds = %2900
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #9
  %2902 = call ptr @__errno_location() #10
  %2903 = load i32, ptr %2902, align 4, !tbaa !5
  store i32 %2903, ptr %75, align 4, !tbaa !5
  %2904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2905 = call i32 @s2n_print_stacktrace(ptr noundef %2904)
  %2906 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2907 = trunc i8 %2906 to i1
  br i1 %2907, label %2908, label %2930

2908:                                             ; preds = %2901
  %2909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2910 = call i32 @fileno(ptr noundef %2909) #9
  %2911 = call i32 @isatty(i32 noundef %2910) #9
  %2912 = icmp ne i32 %2911, 0
  br i1 %2912, label %2913, label %2930

2913:                                             ; preds = %2908
  %2914 = load i32, ptr %75, align 4, !tbaa !5
  %2915 = call ptr @__errno_location() #10
  store i32 %2914, ptr %2915, align 4, !tbaa !5
  %2916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2917 = load i32, ptr @test_count, align 4, !tbaa !5
  %2918 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2919 = load i32, ptr %2918, align 4, !tbaa !5
  %2920 = call ptr @s2n_strerror(i32 noundef %2919, ptr noundef @.str.4)
  %2921 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2922 = load i32, ptr %2921, align 4, !tbaa !5
  %2923 = call ptr @s2n_strerror_debug(i32 noundef %2922, ptr noundef @.str.4)
  %2924 = call ptr @__errno_location() #10
  %2925 = load i32, ptr %2924, align 4, !tbaa !5
  %2926 = call ptr @strerror(i32 noundef %2925) #9
  %2927 = call ptr @__errno_location() #10
  %2928 = load i32, ptr %2927, align 4, !tbaa !5
  %2929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2916, ptr noundef @.str.2, i32 noundef %2917, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 289, ptr noundef %2920, ptr noundef %2923, ptr noundef %2926, i32 noundef %2928) #9
  br label %2947

2930:                                             ; preds = %2908, %2901
  %2931 = load i32, ptr %75, align 4, !tbaa !5
  %2932 = call ptr @__errno_location() #10
  store i32 %2931, ptr %2932, align 4, !tbaa !5
  %2933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2934 = load i32, ptr @test_count, align 4, !tbaa !5
  %2935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2936 = load i32, ptr %2935, align 4, !tbaa !5
  %2937 = call ptr @s2n_strerror(i32 noundef %2936, ptr noundef @.str.4)
  %2938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2939 = load i32, ptr %2938, align 4, !tbaa !5
  %2940 = call ptr @s2n_strerror_debug(i32 noundef %2939, ptr noundef @.str.4)
  %2941 = call ptr @__errno_location() #10
  %2942 = load i32, ptr %2941, align 4, !tbaa !5
  %2943 = call ptr @strerror(i32 noundef %2942) #9
  %2944 = call ptr @__errno_location() #10
  %2945 = load i32, ptr %2944, align 4, !tbaa !5
  %2946 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2933, ptr noundef @.str.5, i32 noundef %2934, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 289, ptr noundef %2937, ptr noundef %2940, ptr noundef %2943, i32 noundef %2945) #9
  br label %2947

2947:                                             ; preds = %2930, %2913
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  br label %2948

2948:                                             ; preds = %2947
  br label %2949

2949:                                             ; preds = %2948
  call void @exit(i32 noundef 1) #11
  unreachable

2950:                                             ; No predecessors!
  br label %2951

2951:                                             ; preds = %2950
  br label %2952

2952:                                             ; preds = %2951, %2893
  br label %2953

2953:                                             ; preds = %2952
  br label %2954

2954:                                             ; preds = %2953
  br label %2955

2955:                                             ; preds = %2954
  %2956 = load i32, ptr @test_count, align 4, !tbaa !5
  %2957 = add nsw i32 %2956, 1
  store i32 %2957, ptr @test_count, align 4, !tbaa !5
  %2958 = load ptr, ptr %20, align 8, !tbaa !9
  %2959 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %2958)
  %2960 = icmp eq i32 %2959, -1
  br i1 %2960, label %2961, label %3014

2961:                                             ; preds = %2955
  br label %2962

2962:                                             ; preds = %2961
  br label %2963

2963:                                             ; preds = %2962
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #9
  %2964 = call ptr @__errno_location() #10
  %2965 = load i32, ptr %2964, align 4, !tbaa !5
  store i32 %2965, ptr %76, align 4, !tbaa !5
  %2966 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2967 = call i32 @s2n_print_stacktrace(ptr noundef %2966)
  %2968 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2969 = trunc i8 %2968 to i1
  br i1 %2969, label %2970, label %2992

2970:                                             ; preds = %2963
  %2971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2972 = call i32 @fileno(ptr noundef %2971) #9
  %2973 = call i32 @isatty(i32 noundef %2972) #9
  %2974 = icmp ne i32 %2973, 0
  br i1 %2974, label %2975, label %2992

2975:                                             ; preds = %2970
  %2976 = load i32, ptr %76, align 4, !tbaa !5
  %2977 = call ptr @__errno_location() #10
  store i32 %2976, ptr %2977, align 4, !tbaa !5
  %2978 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2979 = load i32, ptr @test_count, align 4, !tbaa !5
  %2980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2981 = load i32, ptr %2980, align 4, !tbaa !5
  %2982 = call ptr @s2n_strerror(i32 noundef %2981, ptr noundef @.str.4)
  %2983 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2984 = load i32, ptr %2983, align 4, !tbaa !5
  %2985 = call ptr @s2n_strerror_debug(i32 noundef %2984, ptr noundef @.str.4)
  %2986 = call ptr @__errno_location() #10
  %2987 = load i32, ptr %2986, align 4, !tbaa !5
  %2988 = call ptr @strerror(i32 noundef %2987) #9
  %2989 = call ptr @__errno_location() #10
  %2990 = load i32, ptr %2989, align 4, !tbaa !5
  %2991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2978, ptr noundef @.str.2, i32 noundef %2979, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 290, ptr noundef %2982, ptr noundef %2985, ptr noundef %2988, i32 noundef %2990) #9
  br label %3009

2992:                                             ; preds = %2970, %2963
  %2993 = load i32, ptr %76, align 4, !tbaa !5
  %2994 = call ptr @__errno_location() #10
  store i32 %2993, ptr %2994, align 4, !tbaa !5
  %2995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2996 = load i32, ptr @test_count, align 4, !tbaa !5
  %2997 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2998 = load i32, ptr %2997, align 4, !tbaa !5
  %2999 = call ptr @s2n_strerror(i32 noundef %2998, ptr noundef @.str.4)
  %3000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3001 = load i32, ptr %3000, align 4, !tbaa !5
  %3002 = call ptr @s2n_strerror_debug(i32 noundef %3001, ptr noundef @.str.4)
  %3003 = call ptr @__errno_location() #10
  %3004 = load i32, ptr %3003, align 4, !tbaa !5
  %3005 = call ptr @strerror(i32 noundef %3004) #9
  %3006 = call ptr @__errno_location() #10
  %3007 = load i32, ptr %3006, align 4, !tbaa !5
  %3008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2995, ptr noundef @.str.5, i32 noundef %2996, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 290, ptr noundef %2999, ptr noundef %3002, ptr noundef %3005, i32 noundef %3007) #9
  br label %3009

3009:                                             ; preds = %2992, %2975
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #9
  br label %3010

3010:                                             ; preds = %3009
  br label %3011

3011:                                             ; preds = %3010
  call void @exit(i32 noundef 1) #11
  unreachable

3012:                                             ; No predecessors!
  br label %3013

3013:                                             ; preds = %3012
  br label %3014

3014:                                             ; preds = %3013, %2955
  br label %3015

3015:                                             ; preds = %3014
  br label %3016

3016:                                             ; preds = %3015
  br label %3017

3017:                                             ; preds = %3016
  %3018 = load i32, ptr @test_count, align 4, !tbaa !5
  %3019 = add nsw i32 %3018, 1
  store i32 %3019, ptr @test_count, align 4, !tbaa !5
  %3020 = load ptr, ptr %26, align 8, !tbaa !9
  %3021 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %3020)
  %3022 = icmp eq i32 %3021, -1
  br i1 %3022, label %3023, label %3076

3023:                                             ; preds = %3017
  br label %3024

3024:                                             ; preds = %3023
  br label %3025

3025:                                             ; preds = %3024
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #9
  %3026 = call ptr @__errno_location() #10
  %3027 = load i32, ptr %3026, align 4, !tbaa !5
  store i32 %3027, ptr %77, align 4, !tbaa !5
  %3028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3029 = call i32 @s2n_print_stacktrace(ptr noundef %3028)
  %3030 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3031 = trunc i8 %3030 to i1
  br i1 %3031, label %3032, label %3054

3032:                                             ; preds = %3025
  %3033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3034 = call i32 @fileno(ptr noundef %3033) #9
  %3035 = call i32 @isatty(i32 noundef %3034) #9
  %3036 = icmp ne i32 %3035, 0
  br i1 %3036, label %3037, label %3054

3037:                                             ; preds = %3032
  %3038 = load i32, ptr %77, align 4, !tbaa !5
  %3039 = call ptr @__errno_location() #10
  store i32 %3038, ptr %3039, align 4, !tbaa !5
  %3040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3041 = load i32, ptr @test_count, align 4, !tbaa !5
  %3042 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3043 = load i32, ptr %3042, align 4, !tbaa !5
  %3044 = call ptr @s2n_strerror(i32 noundef %3043, ptr noundef @.str.4)
  %3045 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3046 = load i32, ptr %3045, align 4, !tbaa !5
  %3047 = call ptr @s2n_strerror_debug(i32 noundef %3046, ptr noundef @.str.4)
  %3048 = call ptr @__errno_location() #10
  %3049 = load i32, ptr %3048, align 4, !tbaa !5
  %3050 = call ptr @strerror(i32 noundef %3049) #9
  %3051 = call ptr @__errno_location() #10
  %3052 = load i32, ptr %3051, align 4, !tbaa !5
  %3053 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3040, ptr noundef @.str.2, i32 noundef %3041, ptr noundef @.str.46, ptr noundef @.str.1, i32 noundef 291, ptr noundef %3044, ptr noundef %3047, ptr noundef %3050, i32 noundef %3052) #9
  br label %3071

3054:                                             ; preds = %3032, %3025
  %3055 = load i32, ptr %77, align 4, !tbaa !5
  %3056 = call ptr @__errno_location() #10
  store i32 %3055, ptr %3056, align 4, !tbaa !5
  %3057 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3058 = load i32, ptr @test_count, align 4, !tbaa !5
  %3059 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3060 = load i32, ptr %3059, align 4, !tbaa !5
  %3061 = call ptr @s2n_strerror(i32 noundef %3060, ptr noundef @.str.4)
  %3062 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3063 = load i32, ptr %3062, align 4, !tbaa !5
  %3064 = call ptr @s2n_strerror_debug(i32 noundef %3063, ptr noundef @.str.4)
  %3065 = call ptr @__errno_location() #10
  %3066 = load i32, ptr %3065, align 4, !tbaa !5
  %3067 = call ptr @strerror(i32 noundef %3066) #9
  %3068 = call ptr @__errno_location() #10
  %3069 = load i32, ptr %3068, align 4, !tbaa !5
  %3070 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3057, ptr noundef @.str.5, i32 noundef %3058, ptr noundef @.str.46, ptr noundef @.str.1, i32 noundef 291, ptr noundef %3061, ptr noundef %3064, ptr noundef %3067, i32 noundef %3069) #9
  br label %3071

3071:                                             ; preds = %3054, %3037
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  br label %3072

3072:                                             ; preds = %3071
  br label %3073

3073:                                             ; preds = %3072
  call void @exit(i32 noundef 1) #11
  unreachable

3074:                                             ; No predecessors!
  br label %3075

3075:                                             ; preds = %3074
  br label %3076

3076:                                             ; preds = %3075, %3017
  br label %3077

3077:                                             ; preds = %3076
  br label %3078

3078:                                             ; preds = %3077
  br label %3079

3079:                                             ; preds = %3078
  br label %3080

3080:                                             ; preds = %3079
  %3081 = call i32 @s2n_cleanup()
  %3082 = icmp eq i32 %3081, -1
  br i1 %3082, label %3083, label %3136

3083:                                             ; preds = %3080
  br label %3084

3084:                                             ; preds = %3083
  br label %3085

3085:                                             ; preds = %3084
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #9
  %3086 = call ptr @__errno_location() #10
  %3087 = load i32, ptr %3086, align 4, !tbaa !5
  store i32 %3087, ptr %78, align 4, !tbaa !5
  %3088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3089 = call i32 @s2n_print_stacktrace(ptr noundef %3088)
  %3090 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3091 = trunc i8 %3090 to i1
  br i1 %3091, label %3092, label %3114

3092:                                             ; preds = %3085
  %3093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3094 = call i32 @fileno(ptr noundef %3093) #9
  %3095 = call i32 @isatty(i32 noundef %3094) #9
  %3096 = icmp ne i32 %3095, 0
  br i1 %3096, label %3097, label %3114

3097:                                             ; preds = %3092
  %3098 = load i32, ptr %78, align 4, !tbaa !5
  %3099 = call ptr @__errno_location() #10
  store i32 %3098, ptr %3099, align 4, !tbaa !5
  %3100 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3101 = load i32, ptr @test_count, align 4, !tbaa !5
  %3102 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3103 = load i32, ptr %3102, align 4, !tbaa !5
  %3104 = call ptr @s2n_strerror(i32 noundef %3103, ptr noundef @.str.4)
  %3105 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3106 = load i32, ptr %3105, align 4, !tbaa !5
  %3107 = call ptr @s2n_strerror_debug(i32 noundef %3106, ptr noundef @.str.4)
  %3108 = call ptr @__errno_location() #10
  %3109 = load i32, ptr %3108, align 4, !tbaa !5
  %3110 = call ptr @strerror(i32 noundef %3109) #9
  %3111 = call ptr @__errno_location() #10
  %3112 = load i32, ptr %3111, align 4, !tbaa !5
  %3113 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3100, ptr noundef @.str.2, i32 noundef %3101, ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 293, ptr noundef %3104, ptr noundef %3107, ptr noundef %3110, i32 noundef %3112) #9
  br label %3131

3114:                                             ; preds = %3092, %3085
  %3115 = load i32, ptr %78, align 4, !tbaa !5
  %3116 = call ptr @__errno_location() #10
  store i32 %3115, ptr %3116, align 4, !tbaa !5
  %3117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3118 = load i32, ptr @test_count, align 4, !tbaa !5
  %3119 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3120 = load i32, ptr %3119, align 4, !tbaa !5
  %3121 = call ptr @s2n_strerror(i32 noundef %3120, ptr noundef @.str.4)
  %3122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3123 = load i32, ptr %3122, align 4, !tbaa !5
  %3124 = call ptr @s2n_strerror_debug(i32 noundef %3123, ptr noundef @.str.4)
  %3125 = call ptr @__errno_location() #10
  %3126 = load i32, ptr %3125, align 4, !tbaa !5
  %3127 = call ptr @strerror(i32 noundef %3126) #9
  %3128 = call ptr @__errno_location() #10
  %3129 = load i32, ptr %3128, align 4, !tbaa !5
  %3130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3117, ptr noundef @.str.5, i32 noundef %3118, ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 293, ptr noundef %3121, ptr noundef %3124, ptr noundef %3127, i32 noundef %3129) #9
  br label %3131

3131:                                             ; preds = %3114, %3097
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #9
  br label %3132

3132:                                             ; preds = %3131
  br label %3133

3133:                                             ; preds = %3132
  call void @exit(i32 noundef 1) #11
  unreachable

3134:                                             ; No predecessors!
  br label %3135

3135:                                             ; preds = %3134
  br label %3136

3136:                                             ; preds = %3135, %3080
  br label %3137

3137:                                             ; preds = %3136
  br label %3138

3138:                                             ; preds = %3137
  br label %3139

3139:                                             ; preds = %3138
  br label %3140

3140:                                             ; preds = %3139
  %3141 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %3142 = icmp eq i32 %3141, -1
  br i1 %3142, label %3143, label %3196

3143:                                             ; preds = %3140
  br label %3144

3144:                                             ; preds = %3143
  br label %3145

3145:                                             ; preds = %3144
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #9
  %3146 = call ptr @__errno_location() #10
  %3147 = load i32, ptr %3146, align 4, !tbaa !5
  store i32 %3147, ptr %79, align 4, !tbaa !5
  %3148 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3149 = call i32 @s2n_print_stacktrace(ptr noundef %3148)
  %3150 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3151 = trunc i8 %3150 to i1
  br i1 %3151, label %3152, label %3174

3152:                                             ; preds = %3145
  %3153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3154 = call i32 @fileno(ptr noundef %3153) #9
  %3155 = call i32 @isatty(i32 noundef %3154) #9
  %3156 = icmp ne i32 %3155, 0
  br i1 %3156, label %3157, label %3174

3157:                                             ; preds = %3152
  %3158 = load i32, ptr %79, align 4, !tbaa !5
  %3159 = call ptr @__errno_location() #10
  store i32 %3158, ptr %3159, align 4, !tbaa !5
  %3160 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3161 = load i32, ptr @test_count, align 4, !tbaa !5
  %3162 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3163 = load i32, ptr %3162, align 4, !tbaa !5
  %3164 = call ptr @s2n_strerror(i32 noundef %3163, ptr noundef @.str.4)
  %3165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3166 = load i32, ptr %3165, align 4, !tbaa !5
  %3167 = call ptr @s2n_strerror_debug(i32 noundef %3166, ptr noundef @.str.4)
  %3168 = call ptr @__errno_location() #10
  %3169 = load i32, ptr %3168, align 4, !tbaa !5
  %3170 = call ptr @strerror(i32 noundef %3169) #9
  %3171 = call ptr @__errno_location() #10
  %3172 = load i32, ptr %3171, align 4, !tbaa !5
  %3173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3160, ptr noundef @.str.2, i32 noundef %3161, ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 293, ptr noundef %3164, ptr noundef %3167, ptr noundef %3170, i32 noundef %3172) #9
  br label %3191

3174:                                             ; preds = %3152, %3145
  %3175 = load i32, ptr %79, align 4, !tbaa !5
  %3176 = call ptr @__errno_location() #10
  store i32 %3175, ptr %3176, align 4, !tbaa !5
  %3177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3178 = load i32, ptr @test_count, align 4, !tbaa !5
  %3179 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3180 = load i32, ptr %3179, align 4, !tbaa !5
  %3181 = call ptr @s2n_strerror(i32 noundef %3180, ptr noundef @.str.4)
  %3182 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3183 = load i32, ptr %3182, align 4, !tbaa !5
  %3184 = call ptr @s2n_strerror_debug(i32 noundef %3183, ptr noundef @.str.4)
  %3185 = call ptr @__errno_location() #10
  %3186 = load i32, ptr %3185, align 4, !tbaa !5
  %3187 = call ptr @strerror(i32 noundef %3186) #9
  %3188 = call ptr @__errno_location() #10
  %3189 = load i32, ptr %3188, align 4, !tbaa !5
  %3190 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3177, ptr noundef @.str.5, i32 noundef %3178, ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 293, ptr noundef %3181, ptr noundef %3184, ptr noundef %3187, i32 noundef %3189) #9
  br label %3191

3191:                                             ; preds = %3174, %3157
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #9
  br label %3192

3192:                                             ; preds = %3191
  br label %3193

3193:                                             ; preds = %3192
  call void @exit(i32 noundef 1) #11
  unreachable

3194:                                             ; No predecessors!
  br label %3195

3195:                                             ; preds = %3194
  br label %3196

3196:                                             ; preds = %3195, %3140
  br label %3197

3197:                                             ; preds = %3196
  br label %3198

3198:                                             ; preds = %3197
  %3199 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3200 = trunc i8 %3199 to i1
  br i1 %3200, label %3201, label %3217

3201:                                             ; preds = %3198
  %3202 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3203 = call i32 @fileno(ptr noundef %3202) #9
  %3204 = call i32 @isatty(i32 noundef %3203) #9
  %3205 = icmp ne i32 %3204, 0
  br i1 %3205, label %3206, label %3217

3206:                                             ; preds = %3201
  %3207 = load i32, ptr @test_count, align 4, !tbaa !5
  %3208 = icmp ne i32 %3207, 0
  br i1 %3208, label %3209, label %3213

3209:                                             ; preds = %3206
  %3210 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3211 = load i32, ptr @test_count, align 4, !tbaa !5
  %3212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3210, ptr noundef @.str.49, i32 noundef %3211) #9
  br label %3216

3213:                                             ; preds = %3206
  %3214 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3215 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3214, ptr noundef @.str.50) #9
  br label %3216

3216:                                             ; preds = %3213, %3209
  br label %3228

3217:                                             ; preds = %3201, %3198
  %3218 = load i32, ptr @test_count, align 4, !tbaa !5
  %3219 = icmp ne i32 %3218, 0
  br i1 %3219, label %3220, label %3224

3220:                                             ; preds = %3217
  %3221 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3222 = load i32, ptr @test_count, align 4, !tbaa !5
  %3223 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3221, ptr noundef @.str.51, i32 noundef %3222) #9
  br label %3227

3224:                                             ; preds = %3217
  %3225 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3226 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3225, ptr noundef @.str.52) #9
  br label %3227

3227:                                             ; preds = %3224, %3220
  br label %3228

3228:                                             ; preds = %3227, %3216
  store i32 0, ptr %3, align 4
  store i32 1, ptr %80, align 4
  br label %3233

3229:                                             ; No predecessors!
  br label %3230

3230:                                             ; preds = %3229
  br label %3231

3231:                                             ; preds = %3230
  br label %3232

3232:                                             ; preds = %3231
  store i32 0, ptr %80, align 4
  br label %3233

3233:                                             ; preds = %3232, %3228
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 5000, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  %3234 = load i32, ptr %80, align 4
  switch i32 %3234, label %3237 [
    i32 0, label %3235
    i32 1, label %3235
  ]

3235:                                             ; preds = %3233, %3233
  %3236 = load i32, ptr %3, align 4
  ret i32 %3236

3237:                                             ; preds = %3233
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

declare ptr @s2n_strerror(i32 noundef, ptr noundef) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #5

declare ptr @s2n_strerror_debug(i32 noundef, ptr noundef) #2

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

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

declare zeroext i1 @s2n_is_tls13_fully_supported(...) #2

declare i32 @s2n_test_cert_chain_and_key_new(ptr noundef, ptr noundef, ptr noundef) #2

declare ptr @s2n_cert_chain_and_key_new() #2

declare i32 @s2n_read_test_pem_and_len(ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

declare i32 @s2n_cert_chain_and_key_load_public_pem_bytes(ptr noundef, ptr noundef, i32 noundef) #2

declare ptr @s2n_config_new() #2

declare i32 @s2n_config_set_unsafe_for_testing(ptr noundef) #2

declare i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef, ptr noundef) #2

declare i32 @s2n_config_set_async_pkey_callback(ptr noundef, ptr noundef) #2

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

declare i32 @s2n_config_set_cipher_preferences(ptr noundef, ptr noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @s2n_result_is_ok(i32) #8

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_do_test_handshake(ptr noundef, ptr noundef, i8 noundef zeroext, i32 noundef) #0

declare i32 @s2n_get_highest_fully_supported_tls_version(...) #2

declare i32 @s2n_config_set_client_auth_type(ptr noundef, i32 noundef) #2

declare i32 @s2n_config_free(ptr noundef) #2

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) #2

declare i32 @s2n_cleanup() #2

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 = { 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 = { "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 nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { inlinehint 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 #9 = { nounwind }
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 = !{!"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, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}


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

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [93 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [156 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [205 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [110 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [145 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [136 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [168 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [150 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [182 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [166 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [148 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [180 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca i32, align 4
  %4 = alloca [5000 x i8], align 16
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %7 = load ptr, ptr @stdout, align 8, !tbaa !9
  %8 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #10
  %9 = load ptr, ptr @stdout, align 8, !tbaa !9
  %10 = tail call i32 @fflush(ptr noundef %9)
  %11 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #10
  %12 = icmp eq i32 %11, -1
  br i1 %12, label %13, label %37

13:                                               ; preds = %2
  %14 = tail call ptr @__errno_location() #11
  %15 = load i32, ptr %14, align 4, !tbaa !5
  %16 = load ptr, ptr @stderr, align 8, !tbaa !9
  %17 = tail call i32 @s2n_print_stacktrace(ptr noundef %16) #10
  %18 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %19 = trunc nuw i8 %18 to i1
  br i1 %19, label %20, label %24

20:                                               ; preds = %13
  %21 = load ptr, ptr @stderr, align 8, !tbaa !9
  %22 = tail call i32 @fileno(ptr noundef %21) #10
  %23 = tail call i32 @isatty(i32 noundef %22) #10
  %.not226 = icmp eq i32 %23, 0
  br i1 %.not226, label %24, label %25

24:                                               ; preds = %20, %13
  br label %25

25:                                               ; preds = %20, %24
  %.str.5.sink = phi ptr [ @.str.5, %24 ], [ @.str.2, %20 ]
  store i32 %15, ptr %14, align 4, !tbaa !5
  %26 = load ptr, ptr @stderr, align 8, !tbaa !9
  %27 = load i32, ptr @test_count, align 4, !tbaa !5
  %28 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %29 = load i32, ptr %28, align 4, !tbaa !5
  %30 = tail call ptr @s2n_strerror(i32 noundef %29, ptr noundef nonnull @.str.4) #10
  %31 = load i32, ptr %28, align 4, !tbaa !5
  %32 = tail call ptr @s2n_strerror_debug(i32 noundef %31, ptr noundef nonnull @.str.4) #10
  %33 = load i32, ptr %14, align 4, !tbaa !5
  %34 = tail call ptr @strerror(i32 noundef %33) #10
  %35 = load i32, ptr %14, align 4, !tbaa !5
  %36 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %26, ptr noundef nonnull %.str.5.sink, i32 noundef %27, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 154, ptr noundef %30, ptr noundef %32, ptr noundef %34, i32 noundef %35) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

37:                                               ; preds = %2
  %38 = load i32, ptr @test_count, align 4, !tbaa !5
  %39 = add nsw i32 %38, 1
  store i32 %39, ptr @test_count, align 4, !tbaa !5
  %40 = tail call i32 @s2n_enable_atexit() #10
  %41 = icmp eq i32 %40, -1
  br i1 %41, label %42, label %66

42:                                               ; preds = %37
  %43 = tail call ptr @__errno_location() #11
  %44 = load i32, ptr %43, align 4, !tbaa !5
  %45 = load ptr, ptr @stderr, align 8, !tbaa !9
  %46 = tail call i32 @s2n_print_stacktrace(ptr noundef %45) #10
  %47 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %48 = trunc nuw i8 %47 to i1
  br i1 %48, label %49, label %53

49:                                               ; preds = %42
  %50 = load ptr, ptr @stderr, align 8, !tbaa !9
  %51 = tail call i32 @fileno(ptr noundef %50) #10
  %52 = tail call i32 @isatty(i32 noundef %51) #10
  %.not225 = icmp eq i32 %52, 0
  br i1 %.not225, label %53, label %54

53:                                               ; preds = %49, %42
  br label %54

54:                                               ; preds = %49, %53
  %.str.5.sink237 = phi ptr [ @.str.5, %53 ], [ @.str.2, %49 ]
  store i32 %44, ptr %43, align 4, !tbaa !5
  %55 = load ptr, ptr @stderr, align 8, !tbaa !9
  %56 = load i32, ptr @test_count, align 4, !tbaa !5
  %57 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %58 = load i32, ptr %57, align 4, !tbaa !5
  %59 = tail call ptr @s2n_strerror(i32 noundef %58, ptr noundef nonnull @.str.4) #10
  %60 = load i32, ptr %57, align 4, !tbaa !5
  %61 = tail call ptr @s2n_strerror_debug(i32 noundef %60, ptr noundef nonnull @.str.4) #10
  %62 = load i32, ptr %43, align 4, !tbaa !5
  %63 = tail call ptr @strerror(i32 noundef %62) #10
  %64 = load i32, ptr %43, align 4, !tbaa !5
  %65 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %55, ptr noundef nonnull %.str.5.sink237, i32 noundef %56, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 154, ptr noundef %59, ptr noundef %61, ptr noundef %63, i32 noundef %64) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

66:                                               ; preds = %37
  %67 = tail call i32 @s2n_init() #10
  %68 = icmp eq i32 %67, -1
  br i1 %68, label %69, label %93

69:                                               ; preds = %66
  %70 = tail call ptr @__errno_location() #11
  %71 = load i32, ptr %70, align 4, !tbaa !5
  %72 = load ptr, ptr @stderr, align 8, !tbaa !9
  %73 = tail call i32 @s2n_print_stacktrace(ptr noundef %72) #10
  %74 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %75 = trunc nuw i8 %74 to i1
  br i1 %75, label %76, label %80

76:                                               ; preds = %69
  %77 = load ptr, ptr @stderr, align 8, !tbaa !9
  %78 = tail call i32 @fileno(ptr noundef %77) #10
  %79 = tail call i32 @isatty(i32 noundef %78) #10
  %.not224 = icmp eq i32 %79, 0
  br i1 %.not224, label %80, label %81

80:                                               ; preds = %76, %69
  br label %81

81:                                               ; preds = %76, %80
  %.str.5.sink248 = phi ptr [ @.str.5, %80 ], [ @.str.2, %76 ]
  store i32 %71, ptr %70, align 4, !tbaa !5
  %82 = load ptr, ptr @stderr, align 8, !tbaa !9
  %83 = load i32, ptr @test_count, align 4, !tbaa !5
  %84 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %86 = tail call ptr @s2n_strerror(i32 noundef %85, ptr noundef nonnull @.str.4) #10
  %87 = load i32, ptr %84, align 4, !tbaa !5
  %88 = tail call ptr @s2n_strerror_debug(i32 noundef %87, ptr noundef nonnull @.str.4) #10
  %89 = load i32, ptr %70, align 4, !tbaa !5
  %90 = tail call ptr @strerror(i32 noundef %89) #10
  %91 = load i32, ptr %70, align 4, !tbaa !5
  %92 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %82, ptr noundef nonnull %.str.5.sink248, i32 noundef %83, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 154, ptr noundef %86, ptr noundef %88, ptr noundef %90, i32 noundef %91) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

93:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #10
  store i32 0, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 5000, ptr nonnull %4) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(5000) %4, i8 0, i64 5000, i1 false)
  %94 = tail call zeroext i1 (...) @s2n_is_tls13_fully_supported() #10
  %95 = select i1 %94, i32 35, i32 19
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  store ptr null, ptr %5, align 8, !tbaa !9
  %96 = load i32, ptr @test_count, align 4, !tbaa !5
  %97 = add nsw i32 %96, 1
  store i32 %97, ptr @test_count, align 4, !tbaa !5
  %98 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %5, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12) #10
  %99 = icmp eq i32 %98, -1
  br i1 %99, label %100, label %124

100:                                              ; preds = %93
  %101 = tail call ptr @__errno_location() #11
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %104 = call i32 @s2n_print_stacktrace(ptr noundef %103) #10
  %105 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %106 = trunc nuw i8 %105 to i1
  br i1 %106, label %107, label %111

107:                                              ; preds = %100
  %108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %109 = call i32 @fileno(ptr noundef %108) #10
  %110 = call i32 @isatty(i32 noundef %109) #10
  %.not223 = icmp eq i32 %110, 0
  br i1 %.not223, label %111, label %112

111:                                              ; preds = %107, %100
  br label %112

112:                                              ; preds = %107, %111
  %.str.5.sink259 = phi ptr [ @.str.5, %111 ], [ @.str.2, %107 ]
  store i32 %102, ptr %101, align 4, !tbaa !5
  %113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %114 = load i32, ptr @test_count, align 4, !tbaa !5
  %115 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = call ptr @s2n_strerror(i32 noundef %116, ptr noundef nonnull @.str.4) #10
  %118 = load i32, ptr %115, align 4, !tbaa !5
  %119 = call ptr @s2n_strerror_debug(i32 noundef %118, ptr noundef nonnull @.str.4) #10
  %120 = load i32, ptr %101, align 4, !tbaa !5
  %121 = call ptr @strerror(i32 noundef %120) #10
  %122 = load i32, ptr %101, align 4, !tbaa !5
  %123 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %113, ptr noundef nonnull %.str.5.sink259, i32 noundef %114, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 180, ptr noundef %117, ptr noundef %119, ptr noundef %121, i32 noundef %122) #12
  call void @exit(i32 noundef 1) #13
  unreachable

124:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  store ptr null, ptr %6, align 8, !tbaa !9
  %125 = load i32, ptr @test_count, align 4, !tbaa !5
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr @test_count, align 4, !tbaa !5
  %127 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %6, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15) #10
  %128 = icmp eq i32 %127, -1
  br i1 %128, label %129, label %153

129:                                              ; preds = %124
  %130 = tail call ptr @__errno_location() #11
  %131 = load i32, ptr %130, align 4, !tbaa !5
  %132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %133 = call i32 @s2n_print_stacktrace(ptr noundef %132) #10
  %134 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %135 = trunc nuw i8 %134 to i1
  br i1 %135, label %136, label %140

136:                                              ; preds = %129
  %137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %138 = call i32 @fileno(ptr noundef %137) #10
  %139 = call i32 @isatty(i32 noundef %138) #10
  %.not222 = icmp eq i32 %139, 0
  br i1 %.not222, label %140, label %141

140:                                              ; preds = %136, %129
  br label %141

141:                                              ; preds = %136, %140
  %.str.5.sink270 = phi ptr [ @.str.5, %140 ], [ @.str.2, %136 ]
  store i32 %131, ptr %130, align 4, !tbaa !5
  %142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %143 = load i32, ptr @test_count, align 4, !tbaa !5
  %144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %145 = load i32, ptr %144, align 4, !tbaa !5
  %146 = call ptr @s2n_strerror(i32 noundef %145, ptr noundef nonnull @.str.4) #10
  %147 = load i32, ptr %144, align 4, !tbaa !5
  %148 = call ptr @s2n_strerror_debug(i32 noundef %147, ptr noundef nonnull @.str.4) #10
  %149 = load i32, ptr %130, align 4, !tbaa !5
  %150 = call ptr @strerror(i32 noundef %149) #10
  %151 = load i32, ptr %130, align 4, !tbaa !5
  %152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef nonnull %.str.5.sink270, i32 noundef %143, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 184, ptr noundef %146, ptr noundef %148, ptr noundef %150, i32 noundef %151) #12
  call void @exit(i32 noundef 1) #13
  unreachable

153:                                              ; preds = %124
  %154 = call ptr @s2n_cert_chain_and_key_new() #10
  %155 = load i32, ptr @test_count, align 4, !tbaa !5
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr @test_count, align 4, !tbaa !5
  %157 = icmp eq ptr %154, null
  br i1 %157, label %158, label %182

158:                                              ; preds = %153
  %159 = tail call ptr @__errno_location() #11
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %162 = call i32 @s2n_print_stacktrace(ptr noundef %161) #10
  %163 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %164 = trunc nuw i8 %163 to i1
  br i1 %164, label %165, label %169

165:                                              ; preds = %158
  %166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %167 = call i32 @fileno(ptr noundef %166) #10
  %168 = call i32 @isatty(i32 noundef %167) #10
  %.not221 = icmp eq i32 %168, 0
  br i1 %.not221, label %169, label %170

169:                                              ; preds = %165, %158
  br label %170

170:                                              ; preds = %165, %169
  %.str.5.sink281 = phi ptr [ @.str.5, %169 ], [ @.str.2, %165 ]
  store i32 %160, ptr %159, align 4, !tbaa !5
  %171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %172 = load i32, ptr @test_count, align 4, !tbaa !5
  %173 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %174 = load i32, ptr %173, align 4, !tbaa !5
  %175 = call ptr @s2n_strerror(i32 noundef %174, ptr noundef nonnull @.str.4) #10
  %176 = load i32, ptr %173, align 4, !tbaa !5
  %177 = call ptr @s2n_strerror_debug(i32 noundef %176, ptr noundef nonnull @.str.4) #10
  %178 = load i32, ptr %159, align 4, !tbaa !5
  %179 = call ptr @strerror(i32 noundef %178) #10
  %180 = load i32, ptr %159, align 4, !tbaa !5
  %181 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %171, ptr noundef nonnull %.str.5.sink281, i32 noundef %172, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 191, ptr noundef %175, ptr noundef %177, ptr noundef %179, i32 noundef %180) #12
  call void @exit(i32 noundef 1) #13
  unreachable

182:                                              ; preds = %153
  %183 = add nsw i32 %155, 2
  store i32 %183, ptr @test_count, align 4, !tbaa !5
  %184 = call i32 @s2n_read_test_pem_and_len(ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %3, i64 noundef 5000) #10
  %185 = icmp eq i32 %184, -1
  br i1 %185, label %186, label %210

186:                                              ; preds = %182
  %187 = tail call ptr @__errno_location() #11
  %188 = load i32, ptr %187, align 4, !tbaa !5
  %189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %190 = call i32 @s2n_print_stacktrace(ptr noundef %189) #10
  %191 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %192 = trunc nuw i8 %191 to i1
  br i1 %192, label %193, label %197

193:                                              ; preds = %186
  %194 = load ptr, ptr @stderr, align 8, !tbaa !9
  %195 = call i32 @fileno(ptr noundef %194) #10
  %196 = call i32 @isatty(i32 noundef %195) #10
  %.not220 = icmp eq i32 %196, 0
  br i1 %.not220, label %197, label %198

197:                                              ; preds = %193, %186
  br label %198

198:                                              ; preds = %193, %197
  %.str.5.sink292 = phi ptr [ @.str.5, %197 ], [ @.str.2, %193 ]
  store i32 %188, ptr %187, align 4, !tbaa !5
  %199 = load ptr, ptr @stderr, align 8, !tbaa !9
  %200 = load i32, ptr @test_count, align 4, !tbaa !5
  %201 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %202 = load i32, ptr %201, align 4, !tbaa !5
  %203 = call ptr @s2n_strerror(i32 noundef %202, ptr noundef nonnull @.str.4) #10
  %204 = load i32, ptr %201, align 4, !tbaa !5
  %205 = call ptr @s2n_strerror_debug(i32 noundef %204, ptr noundef nonnull @.str.4) #10
  %206 = load i32, ptr %187, align 4, !tbaa !5
  %207 = call ptr @strerror(i32 noundef %206) #10
  %208 = load i32, ptr %187, align 4, !tbaa !5
  %209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %199, ptr noundef nonnull %.str.5.sink292, i32 noundef %200, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 192, ptr noundef %203, ptr noundef %205, ptr noundef %207, i32 noundef %208) #12
  call void @exit(i32 noundef 1) #13
  unreachable

210:                                              ; preds = %182
  %211 = load i32, ptr @test_count, align 4, !tbaa !5
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr @test_count, align 4, !tbaa !5
  %213 = load i32, ptr %3, align 4, !tbaa !5
  %214 = call i32 @s2n_cert_chain_and_key_load_public_pem_bytes(ptr noundef nonnull %154, ptr noundef nonnull %4, i32 noundef %213) #10
  %215 = icmp eq i32 %214, -1
  br i1 %215, label %216, label %240

216:                                              ; preds = %210
  %217 = tail call ptr @__errno_location() #11
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %220 = call i32 @s2n_print_stacktrace(ptr noundef %219) #10
  %221 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %222 = trunc nuw i8 %221 to i1
  br i1 %222, label %223, label %227

223:                                              ; preds = %216
  %224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %225 = call i32 @fileno(ptr noundef %224) #10
  %226 = call i32 @isatty(i32 noundef %225) #10
  %.not219 = icmp eq i32 %226, 0
  br i1 %.not219, label %227, label %228

227:                                              ; preds = %223, %216
  br label %228

228:                                              ; preds = %223, %227
  %.str.5.sink303 = phi ptr [ @.str.5, %227 ], [ @.str.2, %223 ]
  store i32 %218, ptr %217, align 4, !tbaa !5
  %229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %230 = load i32, ptr @test_count, align 4, !tbaa !5
  %231 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = call ptr @s2n_strerror(i32 noundef %232, ptr noundef nonnull @.str.4) #10
  %234 = load i32, ptr %231, align 4, !tbaa !5
  %235 = call ptr @s2n_strerror_debug(i32 noundef %234, ptr noundef nonnull @.str.4) #10
  %236 = load i32, ptr %217, align 4, !tbaa !5
  %237 = call ptr @strerror(i32 noundef %236) #10
  %238 = load i32, ptr %217, align 4, !tbaa !5
  %239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %229, ptr noundef nonnull %.str.5.sink303, i32 noundef %230, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 193, ptr noundef %233, ptr noundef %235, ptr noundef %237, i32 noundef %238) #12
  call void @exit(i32 noundef 1) #13
  unreachable

240:                                              ; preds = %210
  %241 = call ptr @s2n_cert_chain_and_key_new() #10
  %242 = load i32, ptr @test_count, align 4, !tbaa !5
  %243 = add nsw i32 %242, 1
  store i32 %243, ptr @test_count, align 4, !tbaa !5
  %244 = icmp eq ptr %241, null
  br i1 %244, label %245, label %269

245:                                              ; preds = %240
  %246 = tail call ptr @__errno_location() #11
  %247 = load i32, ptr %246, align 4, !tbaa !5
  %248 = load ptr, ptr @stderr, align 8, !tbaa !9
  %249 = call i32 @s2n_print_stacktrace(ptr noundef %248) #10
  %250 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %251 = trunc nuw i8 %250 to i1
  br i1 %251, label %252, label %256

252:                                              ; preds = %245
  %253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %254 = call i32 @fileno(ptr noundef %253) #10
  %255 = call i32 @isatty(i32 noundef %254) #10
  %.not218 = icmp eq i32 %255, 0
  br i1 %.not218, label %256, label %257

256:                                              ; preds = %252, %245
  br label %257

257:                                              ; preds = %252, %256
  %.str.5.sink314 = phi ptr [ @.str.5, %256 ], [ @.str.2, %252 ]
  store i32 %247, ptr %246, align 4, !tbaa !5
  %258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %259 = load i32, ptr @test_count, align 4, !tbaa !5
  %260 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %261 = load i32, ptr %260, align 4, !tbaa !5
  %262 = call ptr @s2n_strerror(i32 noundef %261, ptr noundef nonnull @.str.4) #10
  %263 = load i32, ptr %260, align 4, !tbaa !5
  %264 = call ptr @s2n_strerror_debug(i32 noundef %263, ptr noundef nonnull @.str.4) #10
  %265 = load i32, ptr %246, align 4, !tbaa !5
  %266 = call ptr @strerror(i32 noundef %265) #10
  %267 = load i32, ptr %246, align 4, !tbaa !5
  %268 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %258, ptr noundef nonnull %.str.5.sink314, i32 noundef %259, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 196, ptr noundef %262, ptr noundef %264, ptr noundef %266, i32 noundef %267) #12
  call void @exit(i32 noundef 1) #13
  unreachable

269:                                              ; preds = %240
  %270 = add nsw i32 %242, 2
  store i32 %270, ptr @test_count, align 4, !tbaa !5
  %271 = call i32 @s2n_read_test_pem_and_len(ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %3, i64 noundef 5000) #10
  %272 = icmp eq i32 %271, -1
  br i1 %272, label %273, label %297

273:                                              ; preds = %269
  %274 = tail call ptr @__errno_location() #11
  %275 = load i32, ptr %274, align 4, !tbaa !5
  %276 = load ptr, ptr @stderr, align 8, !tbaa !9
  %277 = call i32 @s2n_print_stacktrace(ptr noundef %276) #10
  %278 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %279 = trunc nuw i8 %278 to i1
  br i1 %279, label %280, label %284

280:                                              ; preds = %273
  %281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %282 = call i32 @fileno(ptr noundef %281) #10
  %283 = call i32 @isatty(i32 noundef %282) #10
  %.not217 = icmp eq i32 %283, 0
  br i1 %.not217, label %284, label %285

284:                                              ; preds = %280, %273
  br label %285

285:                                              ; preds = %280, %284
  %.str.5.sink325 = phi ptr [ @.str.5, %284 ], [ @.str.2, %280 ]
  store i32 %275, ptr %274, align 4, !tbaa !5
  %286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %287 = load i32, ptr @test_count, align 4, !tbaa !5
  %288 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %289 = load i32, ptr %288, align 4, !tbaa !5
  %290 = call ptr @s2n_strerror(i32 noundef %289, ptr noundef nonnull @.str.4) #10
  %291 = load i32, ptr %288, align 4, !tbaa !5
  %292 = call ptr @s2n_strerror_debug(i32 noundef %291, ptr noundef nonnull @.str.4) #10
  %293 = load i32, ptr %274, align 4, !tbaa !5
  %294 = call ptr @strerror(i32 noundef %293) #10
  %295 = load i32, ptr %274, align 4, !tbaa !5
  %296 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %286, ptr noundef nonnull %.str.5.sink325, i32 noundef %287, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 197, ptr noundef %290, ptr noundef %292, ptr noundef %294, i32 noundef %295) #12
  call void @exit(i32 noundef 1) #13
  unreachable

297:                                              ; preds = %269
  %298 = load i32, ptr @test_count, align 4, !tbaa !5
  %299 = add nsw i32 %298, 1
  store i32 %299, ptr @test_count, align 4, !tbaa !5
  %300 = load i32, ptr %3, align 4, !tbaa !5
  %301 = call i32 @s2n_cert_chain_and_key_load_public_pem_bytes(ptr noundef nonnull %241, ptr noundef nonnull %4, i32 noundef %300) #10
  %302 = icmp eq i32 %301, -1
  br i1 %302, label %303, label %327

303:                                              ; preds = %297
  %304 = tail call ptr @__errno_location() #11
  %305 = load i32, ptr %304, align 4, !tbaa !5
  %306 = load ptr, ptr @stderr, align 8, !tbaa !9
  %307 = call i32 @s2n_print_stacktrace(ptr noundef %306) #10
  %308 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %309 = trunc nuw i8 %308 to i1
  br i1 %309, label %310, label %314

310:                                              ; preds = %303
  %311 = load ptr, ptr @stderr, align 8, !tbaa !9
  %312 = call i32 @fileno(ptr noundef %311) #10
  %313 = call i32 @isatty(i32 noundef %312) #10
  %.not216 = icmp eq i32 %313, 0
  br i1 %.not216, label %314, label %315

314:                                              ; preds = %310, %303
  br label %315

315:                                              ; preds = %310, %314
  %.str.5.sink336 = phi ptr [ @.str.5, %314 ], [ @.str.2, %310 ]
  store i32 %305, ptr %304, align 4, !tbaa !5
  %316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %317 = load i32, ptr @test_count, align 4, !tbaa !5
  %318 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %319 = load i32, ptr %318, align 4, !tbaa !5
  %320 = call ptr @s2n_strerror(i32 noundef %319, ptr noundef nonnull @.str.4) #10
  %321 = load i32, ptr %318, align 4, !tbaa !5
  %322 = call ptr @s2n_strerror_debug(i32 noundef %321, ptr noundef nonnull @.str.4) #10
  %323 = load i32, ptr %304, align 4, !tbaa !5
  %324 = call ptr @strerror(i32 noundef %323) #10
  %325 = load i32, ptr %304, align 4, !tbaa !5
  %326 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %316, ptr noundef nonnull %.str.5.sink336, i32 noundef %317, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 198, ptr noundef %320, ptr noundef %322, ptr noundef %324, i32 noundef %325) #12
  call void @exit(i32 noundef 1) #13
  unreachable

327:                                              ; preds = %297
  %328 = call ptr @s2n_config_new() #10
  %329 = load i32, ptr @test_count, align 4, !tbaa !5
  %330 = add nsw i32 %329, 1
  store i32 %330, ptr @test_count, align 4, !tbaa !5
  %331 = icmp eq ptr %328, null
  br i1 %331, label %332, label %356

332:                                              ; preds = %327
  %333 = tail call ptr @__errno_location() #11
  %334 = load i32, ptr %333, align 4, !tbaa !5
  %335 = load ptr, ptr @stderr, align 8, !tbaa !9
  %336 = call i32 @s2n_print_stacktrace(ptr noundef %335) #10
  %337 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %338 = trunc nuw i8 %337 to i1
  br i1 %338, label %339, label %343

339:                                              ; preds = %332
  %340 = load ptr, ptr @stderr, align 8, !tbaa !9
  %341 = call i32 @fileno(ptr noundef %340) #10
  %342 = call i32 @isatty(i32 noundef %341) #10
  %.not215 = icmp eq i32 %342, 0
  br i1 %.not215, label %343, label %344

343:                                              ; preds = %339, %332
  br label %344

344:                                              ; preds = %339, %343
  %.str.5.sink347 = phi ptr [ @.str.5, %343 ], [ @.str.2, %339 ]
  store i32 %334, ptr %333, align 4, !tbaa !5
  %345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %346 = load i32, ptr @test_count, align 4, !tbaa !5
  %347 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %348 = load i32, ptr %347, align 4, !tbaa !5
  %349 = call ptr @s2n_strerror(i32 noundef %348, ptr noundef nonnull @.str.4) #10
  %350 = load i32, ptr %347, align 4, !tbaa !5
  %351 = call ptr @s2n_strerror_debug(i32 noundef %350, ptr noundef nonnull @.str.4) #10
  %352 = load i32, ptr %333, align 4, !tbaa !5
  %353 = call ptr @strerror(i32 noundef %352) #10
  %354 = load i32, ptr %333, align 4, !tbaa !5
  %355 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %345, ptr noundef nonnull %.str.5.sink347, i32 noundef %346, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 203, ptr noundef %349, ptr noundef %351, ptr noundef %353, i32 noundef %354) #12
  call void @exit(i32 noundef 1) #13
  unreachable

356:                                              ; preds = %327
  %357 = add nsw i32 %329, 2
  store i32 %357, ptr @test_count, align 4, !tbaa !5
  %358 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef nonnull %328) #10
  %359 = icmp eq i32 %358, -1
  br i1 %359, label %360, label %384

360:                                              ; preds = %356
  %361 = tail call ptr @__errno_location() #11
  %362 = load i32, ptr %361, align 4, !tbaa !5
  %363 = load ptr, ptr @stderr, align 8, !tbaa !9
  %364 = call i32 @s2n_print_stacktrace(ptr noundef %363) #10
  %365 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %366 = trunc nuw i8 %365 to i1
  br i1 %366, label %367, label %371

367:                                              ; preds = %360
  %368 = load ptr, ptr @stderr, align 8, !tbaa !9
  %369 = call i32 @fileno(ptr noundef %368) #10
  %370 = call i32 @isatty(i32 noundef %369) #10
  %.not214 = icmp eq i32 %370, 0
  br i1 %.not214, label %371, label %372

371:                                              ; preds = %367, %360
  br label %372

372:                                              ; preds = %367, %371
  %.str.5.sink358 = phi ptr [ @.str.5, %371 ], [ @.str.2, %367 ]
  store i32 %362, ptr %361, align 4, !tbaa !5
  %373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %374 = load i32, ptr @test_count, align 4, !tbaa !5
  %375 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %376 = load i32, ptr %375, align 4, !tbaa !5
  %377 = call ptr @s2n_strerror(i32 noundef %376, ptr noundef nonnull @.str.4) #10
  %378 = load i32, ptr %375, align 4, !tbaa !5
  %379 = call ptr @s2n_strerror_debug(i32 noundef %378, ptr noundef nonnull @.str.4) #10
  %380 = load i32, ptr %361, align 4, !tbaa !5
  %381 = call ptr @strerror(i32 noundef %380) #10
  %382 = load i32, ptr %361, align 4, !tbaa !5
  %383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %373, ptr noundef nonnull %.str.5.sink358, i32 noundef %374, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 204, ptr noundef %377, ptr noundef %379, ptr noundef %381, i32 noundef %382) #12
  call void @exit(i32 noundef 1) #13
  unreachable

384:                                              ; preds = %356
  %385 = load i32, ptr @test_count, align 4, !tbaa !5
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr @test_count, align 4, !tbaa !5
  %387 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %328, ptr noundef nonnull %154) #10
  %388 = icmp eq i32 %387, -1
  br i1 %388, label %389, label %413

389:                                              ; preds = %384
  %390 = tail call ptr @__errno_location() #11
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %393 = call i32 @s2n_print_stacktrace(ptr noundef %392) #10
  %394 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %395 = trunc nuw i8 %394 to i1
  br i1 %395, label %396, label %400

396:                                              ; preds = %389
  %397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %398 = call i32 @fileno(ptr noundef %397) #10
  %399 = call i32 @isatty(i32 noundef %398) #10
  %.not213 = icmp eq i32 %399, 0
  br i1 %.not213, label %400, label %401

400:                                              ; preds = %396, %389
  br label %401

401:                                              ; preds = %396, %400
  %.str.5.sink369 = phi ptr [ @.str.5, %400 ], [ @.str.2, %396 ]
  store i32 %391, ptr %390, align 4, !tbaa !5
  %402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %403 = load i32, ptr @test_count, align 4, !tbaa !5
  %404 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %405 = load i32, ptr %404, align 4, !tbaa !5
  %406 = call ptr @s2n_strerror(i32 noundef %405, ptr noundef nonnull @.str.4) #10
  %407 = load i32, ptr %404, align 4, !tbaa !5
  %408 = call ptr @s2n_strerror_debug(i32 noundef %407, ptr noundef nonnull @.str.4) #10
  %409 = load i32, ptr %390, align 4, !tbaa !5
  %410 = call ptr @strerror(i32 noundef %409) #10
  %411 = load i32, ptr %390, align 4, !tbaa !5
  %412 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %402, ptr noundef nonnull %.str.5.sink369, i32 noundef %403, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 205, ptr noundef %406, ptr noundef %408, ptr noundef %410, i32 noundef %411) #12
  call void @exit(i32 noundef 1) #13
  unreachable

413:                                              ; preds = %384
  %414 = load i32, ptr @test_count, align 4, !tbaa !5
  %415 = add nsw i32 %414, 1
  store i32 %415, ptr @test_count, align 4, !tbaa !5
  %416 = call i32 @s2n_config_set_async_pkey_callback(ptr noundef nonnull %328, ptr noundef nonnull @s2n_test_async_pkey_cb) #10
  %417 = icmp eq i32 %416, -1
  br i1 %417, label %418, label %442

418:                                              ; preds = %413
  %419 = tail call ptr @__errno_location() #11
  %420 = load i32, ptr %419, align 4, !tbaa !5
  %421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %422 = call i32 @s2n_print_stacktrace(ptr noundef %421) #10
  %423 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %424 = trunc nuw i8 %423 to i1
  br i1 %424, label %425, label %429

425:                                              ; preds = %418
  %426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %427 = call i32 @fileno(ptr noundef %426) #10
  %428 = call i32 @isatty(i32 noundef %427) #10
  %.not212 = icmp eq i32 %428, 0
  br i1 %.not212, label %429, label %430

429:                                              ; preds = %425, %418
  br label %430

430:                                              ; preds = %425, %429
  %.str.5.sink380 = phi ptr [ @.str.5, %429 ], [ @.str.2, %425 ]
  store i32 %420, ptr %419, align 4, !tbaa !5
  %431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %432 = load i32, ptr @test_count, align 4, !tbaa !5
  %433 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %434 = load i32, ptr %433, align 4, !tbaa !5
  %435 = call ptr @s2n_strerror(i32 noundef %434, ptr noundef nonnull @.str.4) #10
  %436 = load i32, ptr %433, align 4, !tbaa !5
  %437 = call ptr @s2n_strerror_debug(i32 noundef %436, ptr noundef nonnull @.str.4) #10
  %438 = load i32, ptr %419, align 4, !tbaa !5
  %439 = call ptr @strerror(i32 noundef %438) #10
  %440 = load i32, ptr %419, align 4, !tbaa !5
  %441 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %431, ptr noundef nonnull %.str.5.sink380, i32 noundef %432, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 206, ptr noundef %435, ptr noundef %437, ptr noundef %439, i32 noundef %440) #12
  call void @exit(i32 noundef 1) #13
  unreachable

442:                                              ; preds = %413
  %443 = load i32, ptr @test_count, align 4, !tbaa !5
  %444 = add nsw i32 %443, 1
  store i32 %444, ptr @test_count, align 4, !tbaa !5
  %445 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %328, ptr noundef nonnull @.str.8) #10
  %446 = icmp eq i32 %445, -1
  br i1 %446, label %447, label %471

447:                                              ; preds = %442
  %448 = tail call ptr @__errno_location() #11
  %449 = load i32, ptr %448, align 4, !tbaa !5
  %450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %451 = call i32 @s2n_print_stacktrace(ptr noundef %450) #10
  %452 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %453 = trunc nuw i8 %452 to i1
  br i1 %453, label %454, label %458

454:                                              ; preds = %447
  %455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %456 = call i32 @fileno(ptr noundef %455) #10
  %457 = call i32 @isatty(i32 noundef %456) #10
  %.not211 = icmp eq i32 %457, 0
  br i1 %.not211, label %458, label %459

458:                                              ; preds = %454, %447
  br label %459

459:                                              ; preds = %454, %458
  %.str.5.sink391 = phi ptr [ @.str.5, %458 ], [ @.str.2, %454 ]
  store i32 %449, ptr %448, align 4, !tbaa !5
  %460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %461 = load i32, ptr @test_count, align 4, !tbaa !5
  %462 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %463 = load i32, ptr %462, align 4, !tbaa !5
  %464 = call ptr @s2n_strerror(i32 noundef %463, ptr noundef nonnull @.str.4) #10
  %465 = load i32, ptr %462, align 4, !tbaa !5
  %466 = call ptr @s2n_strerror_debug(i32 noundef %465, ptr noundef nonnull @.str.4) #10
  %467 = load i32, ptr %448, align 4, !tbaa !5
  %468 = call ptr @strerror(i32 noundef %467) #10
  %469 = load i32, ptr %448, align 4, !tbaa !5
  %470 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %460, ptr noundef nonnull %.str.5.sink391, i32 noundef %461, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 211, ptr noundef %464, ptr noundef %466, ptr noundef %468, i32 noundef %469) #12
  call void @exit(i32 noundef 1) #13
  unreachable

471:                                              ; preds = %442
  %472 = load i32, ptr @test_count, align 4, !tbaa !5
  %473 = add nsw i32 %472, 1
  store i32 %473, ptr @test_count, align 4, !tbaa !5
  %474 = load ptr, ptr %5, align 8, !tbaa !9
  %475 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %328, ptr noundef %474, i8 noundef zeroext 33, i32 noundef 19)
  %476 = call zeroext i1 @s2n_result_is_ok(i32 %475)
  br i1 %476, label %501, label %477

477:                                              ; preds = %471
  %478 = tail call ptr @__errno_location() #11
  %479 = load i32, ptr %478, align 4, !tbaa !5
  %480 = load ptr, ptr @stderr, align 8, !tbaa !9
  %481 = call i32 @s2n_print_stacktrace(ptr noundef %480) #10
  %482 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %483 = trunc nuw i8 %482 to i1
  br i1 %483, label %484, label %488

484:                                              ; preds = %477
  %485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %486 = call i32 @fileno(ptr noundef %485) #10
  %487 = call i32 @isatty(i32 noundef %486) #10
  %.not = icmp eq i32 %487, 0
  br i1 %.not, label %488, label %489

488:                                              ; preds = %484, %477
  br label %489

489:                                              ; preds = %484, %488
  %.str.5.sink402 = phi ptr [ @.str.5, %488 ], [ @.str.2, %484 ]
  store i32 %479, ptr %478, align 4, !tbaa !5
  %490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %491 = load i32, ptr @test_count, align 4, !tbaa !5
  %492 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %493 = load i32, ptr %492, align 4, !tbaa !5
  %494 = call ptr @s2n_strerror(i32 noundef %493, ptr noundef nonnull @.str.4) #10
  %495 = load i32, ptr %492, align 4, !tbaa !5
  %496 = call ptr @s2n_strerror_debug(i32 noundef %495, ptr noundef nonnull @.str.4) #10
  %497 = load i32, ptr %478, align 4, !tbaa !5
  %498 = call ptr @strerror(i32 noundef %497) #10
  %499 = load i32, ptr %478, align 4, !tbaa !5
  %500 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %490, ptr noundef nonnull %.str.5.sink402, i32 noundef %491, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 213, ptr noundef %494, ptr noundef %496, ptr noundef %498, i32 noundef %499) #12
  call void @exit(i32 noundef 1) #13
  unreachable

501:                                              ; preds = %471
  %502 = load i32, ptr @test_count, align 4, !tbaa !5
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr @test_count, align 4, !tbaa !5
  %504 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %328, ptr noundef nonnull @.str.9) #10
  %505 = icmp eq i32 %504, -1
  br i1 %505, label %506, label %530

506:                                              ; preds = %501
  %507 = tail call ptr @__errno_location() #11
  %508 = load i32, ptr %507, align 4, !tbaa !5
  %509 = load ptr, ptr @stderr, align 8, !tbaa !9
  %510 = call i32 @s2n_print_stacktrace(ptr noundef %509) #10
  %511 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %512 = trunc nuw i8 %511 to i1
  br i1 %512, label %513, label %517

513:                                              ; preds = %506
  %514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %515 = call i32 @fileno(ptr noundef %514) #10
  %516 = call i32 @isatty(i32 noundef %515) #10
  %.not210 = icmp eq i32 %516, 0
  br i1 %.not210, label %517, label %518

517:                                              ; preds = %513, %506
  br label %518

518:                                              ; preds = %513, %517
  %.str.5.sink413 = phi ptr [ @.str.5, %517 ], [ @.str.2, %513 ]
  store i32 %508, ptr %507, align 4, !tbaa !5
  %519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %520 = load i32, ptr @test_count, align 4, !tbaa !5
  %521 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %522 = load i32, ptr %521, align 4, !tbaa !5
  %523 = call ptr @s2n_strerror(i32 noundef %522, ptr noundef nonnull @.str.4) #10
  %524 = load i32, ptr %521, align 4, !tbaa !5
  %525 = call ptr @s2n_strerror_debug(i32 noundef %524, ptr noundef nonnull @.str.4) #10
  %526 = load i32, ptr %507, align 4, !tbaa !5
  %527 = call ptr @strerror(i32 noundef %526) #10
  %528 = load i32, ptr %507, align 4, !tbaa !5
  %529 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %519, ptr noundef nonnull %.str.5.sink413, i32 noundef %520, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 216, ptr noundef %523, ptr noundef %525, ptr noundef %527, i32 noundef %528) #12
  call void @exit(i32 noundef 1) #13
  unreachable

530:                                              ; preds = %501
  %531 = load i32, ptr @test_count, align 4, !tbaa !5
  %532 = add nsw i32 %531, 1
  store i32 %532, ptr @test_count, align 4, !tbaa !5
  %533 = load ptr, ptr %5, align 8, !tbaa !9
  %534 = call i32 (...) @s2n_get_highest_fully_supported_tls_version() #10
  %535 = trunc i32 %534 to i8
  %536 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %328, ptr noundef %533, i8 noundef zeroext %535, i32 noundef %95)
  %537 = call zeroext i1 @s2n_result_is_ok(i32 %536)
  br i1 %537, label %562, label %538

538:                                              ; preds = %530
  %539 = tail call ptr @__errno_location() #11
  %540 = load i32, ptr %539, align 4, !tbaa !5
  %541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %542 = call i32 @s2n_print_stacktrace(ptr noundef %541) #10
  %543 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %544 = trunc nuw i8 %543 to i1
  br i1 %544, label %545, label %549

545:                                              ; preds = %538
  %546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %547 = call i32 @fileno(ptr noundef %546) #10
  %548 = call i32 @isatty(i32 noundef %547) #10
  %.not176 = icmp eq i32 %548, 0
  br i1 %.not176, label %549, label %550

549:                                              ; preds = %545, %538
  br label %550

550:                                              ; preds = %545, %549
  %.str.5.sink424 = phi ptr [ @.str.5, %549 ], [ @.str.2, %545 ]
  store i32 %540, ptr %539, align 4, !tbaa !5
  %551 = load ptr, ptr @stderr, align 8, !tbaa !9
  %552 = load i32, ptr @test_count, align 4, !tbaa !5
  %553 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %554 = load i32, ptr %553, align 4, !tbaa !5
  %555 = call ptr @s2n_strerror(i32 noundef %554, ptr noundef nonnull @.str.4) #10
  %556 = load i32, ptr %553, align 4, !tbaa !5
  %557 = call ptr @s2n_strerror_debug(i32 noundef %556, ptr noundef nonnull @.str.4) #10
  %558 = load i32, ptr %539, align 4, !tbaa !5
  %559 = call ptr @strerror(i32 noundef %558) #10
  %560 = load i32, ptr %539, align 4, !tbaa !5
  %561 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %551, ptr noundef nonnull %.str.5.sink424, i32 noundef %552, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 218, ptr noundef %555, ptr noundef %557, ptr noundef %559, i32 noundef %560) #12
  call void @exit(i32 noundef 1) #13
  unreachable

562:                                              ; preds = %530
  %563 = load i32, ptr @test_count, align 4, !tbaa !5
  %564 = add nsw i32 %563, 1
  store i32 %564, ptr @test_count, align 4, !tbaa !5
  %565 = call i32 @s2n_config_set_client_auth_type(ptr noundef nonnull %328, i32 noundef 1) #10
  %566 = icmp eq i32 %565, -1
  br i1 %566, label %567, label %591

567:                                              ; preds = %562
  %568 = tail call ptr @__errno_location() #11
  %569 = load i32, ptr %568, align 4, !tbaa !5
  %570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %571 = call i32 @s2n_print_stacktrace(ptr noundef %570) #10
  %572 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %573 = trunc nuw i8 %572 to i1
  br i1 %573, label %574, label %578

574:                                              ; preds = %567
  %575 = load ptr, ptr @stderr, align 8, !tbaa !9
  %576 = call i32 @fileno(ptr noundef %575) #10
  %577 = call i32 @isatty(i32 noundef %576) #10
  %.not209 = icmp eq i32 %577, 0
  br i1 %.not209, label %578, label %579

578:                                              ; preds = %574, %567
  br label %579

579:                                              ; preds = %574, %578
  %.str.5.sink435 = phi ptr [ @.str.5, %578 ], [ @.str.2, %574 ]
  store i32 %569, ptr %568, align 4, !tbaa !5
  %580 = load ptr, ptr @stderr, align 8, !tbaa !9
  %581 = load i32, ptr @test_count, align 4, !tbaa !5
  %582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = call ptr @s2n_strerror(i32 noundef %583, ptr noundef nonnull @.str.4) #10
  %585 = load i32, ptr %582, align 4, !tbaa !5
  %586 = call ptr @s2n_strerror_debug(i32 noundef %585, ptr noundef nonnull @.str.4) #10
  %587 = load i32, ptr %568, align 4, !tbaa !5
  %588 = call ptr @strerror(i32 noundef %587) #10
  %589 = load i32, ptr %568, align 4, !tbaa !5
  %590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %580, ptr noundef nonnull %.str.5.sink435, i32 noundef %581, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 223, ptr noundef %584, ptr noundef %586, ptr noundef %588, i32 noundef %589) #12
  call void @exit(i32 noundef 1) #13
  unreachable

591:                                              ; preds = %562
  %592 = load i32, ptr @test_count, align 4, !tbaa !5
  %593 = add nsw i32 %592, 1
  store i32 %593, ptr @test_count, align 4, !tbaa !5
  %594 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %328, ptr noundef nonnull @.str.8) #10
  %595 = icmp eq i32 %594, -1
  br i1 %595, label %596, label %620

596:                                              ; preds = %591
  %597 = tail call ptr @__errno_location() #11
  %598 = load i32, ptr %597, align 4, !tbaa !5
  %599 = load ptr, ptr @stderr, align 8, !tbaa !9
  %600 = call i32 @s2n_print_stacktrace(ptr noundef %599) #10
  %601 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %602 = trunc nuw i8 %601 to i1
  br i1 %602, label %603, label %607

603:                                              ; preds = %596
  %604 = load ptr, ptr @stderr, align 8, !tbaa !9
  %605 = call i32 @fileno(ptr noundef %604) #10
  %606 = call i32 @isatty(i32 noundef %605) #10
  %.not208 = icmp eq i32 %606, 0
  br i1 %.not208, label %607, label %608

607:                                              ; preds = %603, %596
  br label %608

608:                                              ; preds = %603, %607
  %.str.5.sink446 = phi ptr [ @.str.5, %607 ], [ @.str.2, %603 ]
  store i32 %598, ptr %597, align 4, !tbaa !5
  %609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %610 = load i32, ptr @test_count, align 4, !tbaa !5
  %611 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %612 = load i32, ptr %611, align 4, !tbaa !5
  %613 = call ptr @s2n_strerror(i32 noundef %612, ptr noundef nonnull @.str.4) #10
  %614 = load i32, ptr %611, align 4, !tbaa !5
  %615 = call ptr @s2n_strerror_debug(i32 noundef %614, ptr noundef nonnull @.str.4) #10
  %616 = load i32, ptr %597, align 4, !tbaa !5
  %617 = call ptr @strerror(i32 noundef %616) #10
  %618 = load i32, ptr %597, align 4, !tbaa !5
  %619 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %609, ptr noundef nonnull %.str.5.sink446, i32 noundef %610, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 226, ptr noundef %613, ptr noundef %615, ptr noundef %617, i32 noundef %618) #12
  call void @exit(i32 noundef 1) #13
  unreachable

620:                                              ; preds = %591
  %621 = load i32, ptr @test_count, align 4, !tbaa !5
  %622 = add nsw i32 %621, 1
  store i32 %622, ptr @test_count, align 4, !tbaa !5
  %623 = load ptr, ptr %5, align 8, !tbaa !9
  %624 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %328, ptr noundef %623, i8 noundef zeroext 33, i32 noundef 23)
  %625 = call zeroext i1 @s2n_result_is_ok(i32 %624)
  br i1 %625, label %650, label %626

626:                                              ; preds = %620
  %627 = tail call ptr @__errno_location() #11
  %628 = load i32, ptr %627, align 4, !tbaa !5
  %629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %630 = call i32 @s2n_print_stacktrace(ptr noundef %629) #10
  %631 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %632 = trunc nuw i8 %631 to i1
  br i1 %632, label %633, label %637

633:                                              ; preds = %626
  %634 = load ptr, ptr @stderr, align 8, !tbaa !9
  %635 = call i32 @fileno(ptr noundef %634) #10
  %636 = call i32 @isatty(i32 noundef %635) #10
  %.not177 = icmp eq i32 %636, 0
  br i1 %.not177, label %637, label %638

637:                                              ; preds = %633, %626
  br label %638

638:                                              ; preds = %633, %637
  %.str.5.sink457 = phi ptr [ @.str.5, %637 ], [ @.str.2, %633 ]
  store i32 %628, ptr %627, align 4, !tbaa !5
  %639 = load ptr, ptr @stderr, align 8, !tbaa !9
  %640 = load i32, ptr @test_count, align 4, !tbaa !5
  %641 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %642 = load i32, ptr %641, align 4, !tbaa !5
  %643 = call ptr @s2n_strerror(i32 noundef %642, ptr noundef nonnull @.str.4) #10
  %644 = load i32, ptr %641, align 4, !tbaa !5
  %645 = call ptr @s2n_strerror_debug(i32 noundef %644, ptr noundef nonnull @.str.4) #10
  %646 = load i32, ptr %627, align 4, !tbaa !5
  %647 = call ptr @strerror(i32 noundef %646) #10
  %648 = load i32, ptr %627, align 4, !tbaa !5
  %649 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %639, ptr noundef nonnull %.str.5.sink457, i32 noundef %640, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 228, ptr noundef %643, ptr noundef %645, ptr noundef %647, i32 noundef %648) #12
  call void @exit(i32 noundef 1) #13
  unreachable

650:                                              ; preds = %620
  %651 = load i32, ptr @test_count, align 4, !tbaa !5
  %652 = add nsw i32 %651, 1
  store i32 %652, ptr @test_count, align 4, !tbaa !5
  %653 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %328, ptr noundef nonnull @.str.9) #10
  %654 = icmp eq i32 %653, -1
  br i1 %654, label %655, label %679

655:                                              ; preds = %650
  %656 = tail call ptr @__errno_location() #11
  %657 = load i32, ptr %656, align 4, !tbaa !5
  %658 = load ptr, ptr @stderr, align 8, !tbaa !9
  %659 = call i32 @s2n_print_stacktrace(ptr noundef %658) #10
  %660 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %661 = trunc nuw i8 %660 to i1
  br i1 %661, label %662, label %666

662:                                              ; preds = %655
  %663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %664 = call i32 @fileno(ptr noundef %663) #10
  %665 = call i32 @isatty(i32 noundef %664) #10
  %.not207 = icmp eq i32 %665, 0
  br i1 %.not207, label %666, label %667

666:                                              ; preds = %662, %655
  br label %667

667:                                              ; preds = %662, %666
  %.str.5.sink468 = phi ptr [ @.str.5, %666 ], [ @.str.2, %662 ]
  store i32 %657, ptr %656, align 4, !tbaa !5
  %668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %669 = load i32, ptr @test_count, align 4, !tbaa !5
  %670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %671 = load i32, ptr %670, align 4, !tbaa !5
  %672 = call ptr @s2n_strerror(i32 noundef %671, ptr noundef nonnull @.str.4) #10
  %673 = load i32, ptr %670, align 4, !tbaa !5
  %674 = call ptr @s2n_strerror_debug(i32 noundef %673, ptr noundef nonnull @.str.4) #10
  %675 = load i32, ptr %656, align 4, !tbaa !5
  %676 = call ptr @strerror(i32 noundef %675) #10
  %677 = load i32, ptr %656, align 4, !tbaa !5
  %678 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %668, ptr noundef nonnull %.str.5.sink468, i32 noundef %669, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 231, ptr noundef %672, ptr noundef %674, ptr noundef %676, i32 noundef %677) #12
  call void @exit(i32 noundef 1) #13
  unreachable

679:                                              ; preds = %650
  %680 = load i32, ptr @test_count, align 4, !tbaa !5
  %681 = add nsw i32 %680, 1
  store i32 %681, ptr @test_count, align 4, !tbaa !5
  %682 = load ptr, ptr %5, align 8, !tbaa !9
  %683 = call i32 (...) @s2n_get_highest_fully_supported_tls_version() #10
  %684 = trunc i32 %683 to i8
  %685 = or disjoint i32 %95, 4
  %686 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %328, ptr noundef %682, i8 noundef zeroext %684, i32 noundef %685)
  %687 = call zeroext i1 @s2n_result_is_ok(i32 %686)
  br i1 %687, label %712, label %688

688:                                              ; preds = %679
  %689 = tail call ptr @__errno_location() #11
  %690 = load i32, ptr %689, align 4, !tbaa !5
  %691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %692 = call i32 @s2n_print_stacktrace(ptr noundef %691) #10
  %693 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %694 = trunc nuw i8 %693 to i1
  br i1 %694, label %695, label %699

695:                                              ; preds = %688
  %696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %697 = call i32 @fileno(ptr noundef %696) #10
  %698 = call i32 @isatty(i32 noundef %697) #10
  %.not178 = icmp eq i32 %698, 0
  br i1 %.not178, label %699, label %700

699:                                              ; preds = %695, %688
  br label %700

700:                                              ; preds = %695, %699
  %.str.5.sink479 = phi ptr [ @.str.5, %699 ], [ @.str.2, %695 ]
  store i32 %690, ptr %689, align 4, !tbaa !5
  %701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %702 = load i32, ptr @test_count, align 4, !tbaa !5
  %703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %704 = load i32, ptr %703, align 4, !tbaa !5
  %705 = call ptr @s2n_strerror(i32 noundef %704, ptr noundef nonnull @.str.4) #10
  %706 = load i32, ptr %703, align 4, !tbaa !5
  %707 = call ptr @s2n_strerror_debug(i32 noundef %706, ptr noundef nonnull @.str.4) #10
  %708 = load i32, ptr %689, align 4, !tbaa !5
  %709 = call ptr @strerror(i32 noundef %708) #10
  %710 = load i32, ptr %689, align 4, !tbaa !5
  %711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %701, ptr noundef nonnull %.str.5.sink479, i32 noundef %702, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 233, ptr noundef %705, ptr noundef %707, ptr noundef %709, i32 noundef %710) #12
  call void @exit(i32 noundef 1) #13
  unreachable

712:                                              ; preds = %679
  %713 = load i32, ptr @test_count, align 4, !tbaa !5
  %714 = add nsw i32 %713, 1
  store i32 %714, ptr @test_count, align 4, !tbaa !5
  %715 = call i32 @s2n_config_free(ptr noundef nonnull %328) #10
  %716 = icmp eq i32 %715, -1
  br i1 %716, label %717, label %741

717:                                              ; preds = %712
  %718 = tail call ptr @__errno_location() #11
  %719 = load i32, ptr %718, align 4, !tbaa !5
  %720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %721 = call i32 @s2n_print_stacktrace(ptr noundef %720) #10
  %722 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %723 = trunc nuw i8 %722 to i1
  br i1 %723, label %724, label %728

724:                                              ; preds = %717
  %725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %726 = call i32 @fileno(ptr noundef %725) #10
  %727 = call i32 @isatty(i32 noundef %726) #10
  %.not206 = icmp eq i32 %727, 0
  br i1 %.not206, label %728, label %729

728:                                              ; preds = %724, %717
  br label %729

729:                                              ; preds = %724, %728
  %.str.5.sink490 = phi ptr [ @.str.5, %728 ], [ @.str.2, %724 ]
  store i32 %719, ptr %718, align 4, !tbaa !5
  %730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %731 = load i32, ptr @test_count, align 4, !tbaa !5
  %732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %733 = load i32, ptr %732, align 4, !tbaa !5
  %734 = call ptr @s2n_strerror(i32 noundef %733, ptr noundef nonnull @.str.4) #10
  %735 = load i32, ptr %732, align 4, !tbaa !5
  %736 = call ptr @s2n_strerror_debug(i32 noundef %735, ptr noundef nonnull @.str.4) #10
  %737 = load i32, ptr %718, align 4, !tbaa !5
  %738 = call ptr @strerror(i32 noundef %737) #10
  %739 = load i32, ptr %718, align 4, !tbaa !5
  %740 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %730, ptr noundef nonnull %.str.5.sink490, i32 noundef %731, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 236, ptr noundef %734, ptr noundef %736, ptr noundef %738, i32 noundef %739) #12
  call void @exit(i32 noundef 1) #13
  unreachable

741:                                              ; preds = %712
  %742 = call ptr @s2n_config_new() #10
  %743 = load i32, ptr @test_count, align 4, !tbaa !5
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr @test_count, align 4, !tbaa !5
  %745 = icmp eq ptr %742, null
  br i1 %745, label %746, label %770

746:                                              ; preds = %741
  %747 = tail call ptr @__errno_location() #11
  %748 = load i32, ptr %747, align 4, !tbaa !5
  %749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %750 = call i32 @s2n_print_stacktrace(ptr noundef %749) #10
  %751 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %752 = trunc nuw i8 %751 to i1
  br i1 %752, label %753, label %757

753:                                              ; preds = %746
  %754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %755 = call i32 @fileno(ptr noundef %754) #10
  %756 = call i32 @isatty(i32 noundef %755) #10
  %.not205 = icmp eq i32 %756, 0
  br i1 %.not205, label %757, label %758

757:                                              ; preds = %753, %746
  br label %758

758:                                              ; preds = %753, %757
  %.str.5.sink501 = phi ptr [ @.str.5, %757 ], [ @.str.2, %753 ]
  store i32 %748, ptr %747, align 4, !tbaa !5
  %759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %760 = load i32, ptr @test_count, align 4, !tbaa !5
  %761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %762 = load i32, ptr %761, align 4, !tbaa !5
  %763 = call ptr @s2n_strerror(i32 noundef %762, ptr noundef nonnull @.str.4) #10
  %764 = load i32, ptr %761, align 4, !tbaa !5
  %765 = call ptr @s2n_strerror_debug(i32 noundef %764, ptr noundef nonnull @.str.4) #10
  %766 = load i32, ptr %747, align 4, !tbaa !5
  %767 = call ptr @strerror(i32 noundef %766) #10
  %768 = load i32, ptr %747, align 4, !tbaa !5
  %769 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %759, ptr noundef nonnull %.str.5.sink501, i32 noundef %760, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 242, ptr noundef %763, ptr noundef %765, ptr noundef %767, i32 noundef %768) #12
  call void @exit(i32 noundef 1) #13
  unreachable

770:                                              ; preds = %741
  %771 = add nsw i32 %743, 2
  store i32 %771, ptr @test_count, align 4, !tbaa !5
  %772 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef nonnull %742) #10
  %773 = icmp eq i32 %772, -1
  br i1 %773, label %774, label %798

774:                                              ; preds = %770
  %775 = tail call ptr @__errno_location() #11
  %776 = load i32, ptr %775, align 4, !tbaa !5
  %777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %778 = call i32 @s2n_print_stacktrace(ptr noundef %777) #10
  %779 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %780 = trunc nuw i8 %779 to i1
  br i1 %780, label %781, label %785

781:                                              ; preds = %774
  %782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %783 = call i32 @fileno(ptr noundef %782) #10
  %784 = call i32 @isatty(i32 noundef %783) #10
  %.not204 = icmp eq i32 %784, 0
  br i1 %.not204, label %785, label %786

785:                                              ; preds = %781, %774
  br label %786

786:                                              ; preds = %781, %785
  %.str.5.sink512 = phi ptr [ @.str.5, %785 ], [ @.str.2, %781 ]
  store i32 %776, ptr %775, align 4, !tbaa !5
  %787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %788 = load i32, ptr @test_count, align 4, !tbaa !5
  %789 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %790 = load i32, ptr %789, align 4, !tbaa !5
  %791 = call ptr @s2n_strerror(i32 noundef %790, ptr noundef nonnull @.str.4) #10
  %792 = load i32, ptr %789, align 4, !tbaa !5
  %793 = call ptr @s2n_strerror_debug(i32 noundef %792, ptr noundef nonnull @.str.4) #10
  %794 = load i32, ptr %775, align 4, !tbaa !5
  %795 = call ptr @strerror(i32 noundef %794) #10
  %796 = load i32, ptr %775, align 4, !tbaa !5
  %797 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %787, ptr noundef nonnull %.str.5.sink512, i32 noundef %788, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 243, ptr noundef %791, ptr noundef %793, ptr noundef %795, i32 noundef %796) #12
  call void @exit(i32 noundef 1) #13
  unreachable

798:                                              ; preds = %770
  %799 = load i32, ptr @test_count, align 4, !tbaa !5
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr @test_count, align 4, !tbaa !5
  %801 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %742, ptr noundef nonnull %241) #10
  %802 = icmp eq i32 %801, -1
  br i1 %802, label %803, label %827

803:                                              ; preds = %798
  %804 = tail call ptr @__errno_location() #11
  %805 = load i32, ptr %804, align 4, !tbaa !5
  %806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %807 = call i32 @s2n_print_stacktrace(ptr noundef %806) #10
  %808 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %809 = trunc nuw i8 %808 to i1
  br i1 %809, label %810, label %814

810:                                              ; preds = %803
  %811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %812 = call i32 @fileno(ptr noundef %811) #10
  %813 = call i32 @isatty(i32 noundef %812) #10
  %.not203 = icmp eq i32 %813, 0
  br i1 %.not203, label %814, label %815

814:                                              ; preds = %810, %803
  br label %815

815:                                              ; preds = %810, %814
  %.str.5.sink523 = phi ptr [ @.str.5, %814 ], [ @.str.2, %810 ]
  store i32 %805, ptr %804, align 4, !tbaa !5
  %816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %817 = load i32, ptr @test_count, align 4, !tbaa !5
  %818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %819 = load i32, ptr %818, align 4, !tbaa !5
  %820 = call ptr @s2n_strerror(i32 noundef %819, ptr noundef nonnull @.str.4) #10
  %821 = load i32, ptr %818, align 4, !tbaa !5
  %822 = call ptr @s2n_strerror_debug(i32 noundef %821, ptr noundef nonnull @.str.4) #10
  %823 = load i32, ptr %804, align 4, !tbaa !5
  %824 = call ptr @strerror(i32 noundef %823) #10
  %825 = load i32, ptr %804, align 4, !tbaa !5
  %826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %816, ptr noundef nonnull %.str.5.sink523, i32 noundef %817, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 244, ptr noundef %820, ptr noundef %822, ptr noundef %824, i32 noundef %825) #12
  call void @exit(i32 noundef 1) #13
  unreachable

827:                                              ; preds = %798
  %828 = load i32, ptr @test_count, align 4, !tbaa !5
  %829 = add nsw i32 %828, 1
  store i32 %829, ptr @test_count, align 4, !tbaa !5
  %830 = call i32 @s2n_config_set_async_pkey_callback(ptr noundef nonnull %742, ptr noundef nonnull @s2n_test_async_pkey_cb) #10
  %831 = icmp eq i32 %830, -1
  br i1 %831, label %832, label %856

832:                                              ; preds = %827
  %833 = tail call ptr @__errno_location() #11
  %834 = load i32, ptr %833, align 4, !tbaa !5
  %835 = load ptr, ptr @stderr, align 8, !tbaa !9
  %836 = call i32 @s2n_print_stacktrace(ptr noundef %835) #10
  %837 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %838 = trunc nuw i8 %837 to i1
  br i1 %838, label %839, label %843

839:                                              ; preds = %832
  %840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %841 = call i32 @fileno(ptr noundef %840) #10
  %842 = call i32 @isatty(i32 noundef %841) #10
  %.not202 = icmp eq i32 %842, 0
  br i1 %.not202, label %843, label %844

843:                                              ; preds = %839, %832
  br label %844

844:                                              ; preds = %839, %843
  %.str.5.sink534 = phi ptr [ @.str.5, %843 ], [ @.str.2, %839 ]
  store i32 %834, ptr %833, align 4, !tbaa !5
  %845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %846 = load i32, ptr @test_count, align 4, !tbaa !5
  %847 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %848 = load i32, ptr %847, align 4, !tbaa !5
  %849 = call ptr @s2n_strerror(i32 noundef %848, ptr noundef nonnull @.str.4) #10
  %850 = load i32, ptr %847, align 4, !tbaa !5
  %851 = call ptr @s2n_strerror_debug(i32 noundef %850, ptr noundef nonnull @.str.4) #10
  %852 = load i32, ptr %833, align 4, !tbaa !5
  %853 = call ptr @strerror(i32 noundef %852) #10
  %854 = load i32, ptr %833, align 4, !tbaa !5
  %855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %845, ptr noundef nonnull %.str.5.sink534, i32 noundef %846, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 245, ptr noundef %849, ptr noundef %851, ptr noundef %853, i32 noundef %854) #12
  call void @exit(i32 noundef 1) #13
  unreachable

856:                                              ; preds = %827
  %857 = load i32, ptr @test_count, align 4, !tbaa !5
  %858 = add nsw i32 %857, 1
  store i32 %858, ptr @test_count, align 4, !tbaa !5
  %859 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %742, ptr noundef nonnull @.str.10) #10
  %860 = icmp eq i32 %859, -1
  br i1 %860, label %861, label %885

861:                                              ; preds = %856
  %862 = tail call ptr @__errno_location() #11
  %863 = load i32, ptr %862, align 4, !tbaa !5
  %864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %865 = call i32 @s2n_print_stacktrace(ptr noundef %864) #10
  %866 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %867 = trunc nuw i8 %866 to i1
  br i1 %867, label %868, label %872

868:                                              ; preds = %861
  %869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %870 = call i32 @fileno(ptr noundef %869) #10
  %871 = call i32 @isatty(i32 noundef %870) #10
  %.not201 = icmp eq i32 %871, 0
  br i1 %.not201, label %872, label %873

872:                                              ; preds = %868, %861
  br label %873

873:                                              ; preds = %868, %872
  %.str.5.sink545 = phi ptr [ @.str.5, %872 ], [ @.str.2, %868 ]
  store i32 %863, ptr %862, align 4, !tbaa !5
  %874 = load ptr, ptr @stderr, align 8, !tbaa !9
  %875 = load i32, ptr @test_count, align 4, !tbaa !5
  %876 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %877 = load i32, ptr %876, align 4, !tbaa !5
  %878 = call ptr @s2n_strerror(i32 noundef %877, ptr noundef nonnull @.str.4) #10
  %879 = load i32, ptr %876, align 4, !tbaa !5
  %880 = call ptr @s2n_strerror_debug(i32 noundef %879, ptr noundef nonnull @.str.4) #10
  %881 = load i32, ptr %862, align 4, !tbaa !5
  %882 = call ptr @strerror(i32 noundef %881) #10
  %883 = load i32, ptr %862, align 4, !tbaa !5
  %884 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %874, ptr noundef nonnull %.str.5.sink545, i32 noundef %875, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.1, i32 noundef 250, ptr noundef %878, ptr noundef %880, ptr noundef %882, i32 noundef %883) #12
  call void @exit(i32 noundef 1) #13
  unreachable

885:                                              ; preds = %856
  %886 = load i32, ptr @test_count, align 4, !tbaa !5
  %887 = add nsw i32 %886, 1
  store i32 %887, ptr @test_count, align 4, !tbaa !5
  %888 = load ptr, ptr %6, align 8, !tbaa !9
  %889 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %742, ptr noundef %888, i8 noundef zeroext 33, i32 noundef 3)
  %890 = call zeroext i1 @s2n_result_is_ok(i32 %889)
  br i1 %890, label %915, label %891

891:                                              ; preds = %885
  %892 = tail call ptr @__errno_location() #11
  %893 = load i32, ptr %892, align 4, !tbaa !5
  %894 = load ptr, ptr @stderr, align 8, !tbaa !9
  %895 = call i32 @s2n_print_stacktrace(ptr noundef %894) #10
  %896 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %897 = trunc nuw i8 %896 to i1
  br i1 %897, label %898, label %902

898:                                              ; preds = %891
  %899 = load ptr, ptr @stderr, align 8, !tbaa !9
  %900 = call i32 @fileno(ptr noundef %899) #10
  %901 = call i32 @isatty(i32 noundef %900) #10
  %.not179 = icmp eq i32 %901, 0
  br i1 %.not179, label %902, label %903

902:                                              ; preds = %898, %891
  br label %903

903:                                              ; preds = %898, %902
  %.str.5.sink556 = phi ptr [ @.str.5, %902 ], [ @.str.2, %898 ]
  store i32 %893, ptr %892, align 4, !tbaa !5
  %904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %905 = load i32, ptr @test_count, align 4, !tbaa !5
  %906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %907 = load i32, ptr %906, align 4, !tbaa !5
  %908 = call ptr @s2n_strerror(i32 noundef %907, ptr noundef nonnull @.str.4) #10
  %909 = load i32, ptr %906, align 4, !tbaa !5
  %910 = call ptr @s2n_strerror_debug(i32 noundef %909, ptr noundef nonnull @.str.4) #10
  %911 = load i32, ptr %892, align 4, !tbaa !5
  %912 = call ptr @strerror(i32 noundef %911) #10
  %913 = load i32, ptr %892, align 4, !tbaa !5
  %914 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %904, ptr noundef nonnull %.str.5.sink556, i32 noundef %905, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 252, ptr noundef %908, ptr noundef %910, ptr noundef %912, i32 noundef %913) #12
  call void @exit(i32 noundef 1) #13
  unreachable

915:                                              ; preds = %885
  %916 = load i32, ptr @test_count, align 4, !tbaa !5
  %917 = add nsw i32 %916, 1
  store i32 %917, ptr @test_count, align 4, !tbaa !5
  %918 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %742, ptr noundef nonnull @.str.8) #10
  %919 = icmp eq i32 %918, -1
  br i1 %919, label %920, label %944

920:                                              ; preds = %915
  %921 = tail call ptr @__errno_location() #11
  %922 = load i32, ptr %921, align 4, !tbaa !5
  %923 = load ptr, ptr @stderr, align 8, !tbaa !9
  %924 = call i32 @s2n_print_stacktrace(ptr noundef %923) #10
  %925 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %926 = trunc nuw i8 %925 to i1
  br i1 %926, label %927, label %931

927:                                              ; preds = %920
  %928 = load ptr, ptr @stderr, align 8, !tbaa !9
  %929 = call i32 @fileno(ptr noundef %928) #10
  %930 = call i32 @isatty(i32 noundef %929) #10
  %.not200 = icmp eq i32 %930, 0
  br i1 %.not200, label %931, label %932

931:                                              ; preds = %927, %920
  br label %932

932:                                              ; preds = %927, %931
  %.str.5.sink567 = phi ptr [ @.str.5, %931 ], [ @.str.2, %927 ]
  store i32 %922, ptr %921, align 4, !tbaa !5
  %933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %934 = load i32, ptr @test_count, align 4, !tbaa !5
  %935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %936 = load i32, ptr %935, align 4, !tbaa !5
  %937 = call ptr @s2n_strerror(i32 noundef %936, ptr noundef nonnull @.str.4) #10
  %938 = load i32, ptr %935, align 4, !tbaa !5
  %939 = call ptr @s2n_strerror_debug(i32 noundef %938, ptr noundef nonnull @.str.4) #10
  %940 = load i32, ptr %921, align 4, !tbaa !5
  %941 = call ptr @strerror(i32 noundef %940) #10
  %942 = load i32, ptr %921, align 4, !tbaa !5
  %943 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %933, ptr noundef nonnull %.str.5.sink567, i32 noundef %934, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 255, ptr noundef %937, ptr noundef %939, ptr noundef %941, i32 noundef %942) #12
  call void @exit(i32 noundef 1) #13
  unreachable

944:                                              ; preds = %915
  %945 = load i32, ptr @test_count, align 4, !tbaa !5
  %946 = add nsw i32 %945, 1
  store i32 %946, ptr @test_count, align 4, !tbaa !5
  %947 = load ptr, ptr %6, align 8, !tbaa !9
  %948 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %742, ptr noundef %947, i8 noundef zeroext 33, i32 noundef 19)
  %949 = call zeroext i1 @s2n_result_is_ok(i32 %948)
  br i1 %949, label %974, label %950

950:                                              ; preds = %944
  %951 = tail call ptr @__errno_location() #11
  %952 = load i32, ptr %951, align 4, !tbaa !5
  %953 = load ptr, ptr @stderr, align 8, !tbaa !9
  %954 = call i32 @s2n_print_stacktrace(ptr noundef %953) #10
  %955 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %956 = trunc nuw i8 %955 to i1
  br i1 %956, label %957, label %961

957:                                              ; preds = %950
  %958 = load ptr, ptr @stderr, align 8, !tbaa !9
  %959 = call i32 @fileno(ptr noundef %958) #10
  %960 = call i32 @isatty(i32 noundef %959) #10
  %.not180 = icmp eq i32 %960, 0
  br i1 %.not180, label %961, label %962

961:                                              ; preds = %957, %950
  br label %962

962:                                              ; preds = %957, %961
  %.str.5.sink578 = phi ptr [ @.str.5, %961 ], [ @.str.2, %957 ]
  store i32 %952, ptr %951, align 4, !tbaa !5
  %963 = load ptr, ptr @stderr, align 8, !tbaa !9
  %964 = load i32, ptr @test_count, align 4, !tbaa !5
  %965 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %966 = load i32, ptr %965, align 4, !tbaa !5
  %967 = call ptr @s2n_strerror(i32 noundef %966, ptr noundef nonnull @.str.4) #10
  %968 = load i32, ptr %965, align 4, !tbaa !5
  %969 = call ptr @s2n_strerror_debug(i32 noundef %968, ptr noundef nonnull @.str.4) #10
  %970 = load i32, ptr %951, align 4, !tbaa !5
  %971 = call ptr @strerror(i32 noundef %970) #10
  %972 = load i32, ptr %951, align 4, !tbaa !5
  %973 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %963, ptr noundef nonnull %.str.5.sink578, i32 noundef %964, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 257, ptr noundef %967, ptr noundef %969, ptr noundef %971, i32 noundef %972) #12
  call void @exit(i32 noundef 1) #13
  unreachable

974:                                              ; preds = %944
  %975 = load i32, ptr @test_count, align 4, !tbaa !5
  %976 = add nsw i32 %975, 1
  store i32 %976, ptr @test_count, align 4, !tbaa !5
  %977 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %742, ptr noundef nonnull @.str.9) #10
  %978 = icmp eq i32 %977, -1
  br i1 %978, label %979, label %1003

979:                                              ; preds = %974
  %980 = tail call ptr @__errno_location() #11
  %981 = load i32, ptr %980, align 4, !tbaa !5
  %982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %983 = call i32 @s2n_print_stacktrace(ptr noundef %982) #10
  %984 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %985 = trunc nuw i8 %984 to i1
  br i1 %985, label %986, label %990

986:                                              ; preds = %979
  %987 = load ptr, ptr @stderr, align 8, !tbaa !9
  %988 = call i32 @fileno(ptr noundef %987) #10
  %989 = call i32 @isatty(i32 noundef %988) #10
  %.not199 = icmp eq i32 %989, 0
  br i1 %.not199, label %990, label %991

990:                                              ; preds = %986, %979
  br label %991

991:                                              ; preds = %986, %990
  %.str.5.sink589 = phi ptr [ @.str.5, %990 ], [ @.str.2, %986 ]
  store i32 %981, ptr %980, align 4, !tbaa !5
  %992 = load ptr, ptr @stderr, align 8, !tbaa !9
  %993 = load i32, ptr @test_count, align 4, !tbaa !5
  %994 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %995 = load i32, ptr %994, align 4, !tbaa !5
  %996 = call ptr @s2n_strerror(i32 noundef %995, ptr noundef nonnull @.str.4) #10
  %997 = load i32, ptr %994, align 4, !tbaa !5
  %998 = call ptr @s2n_strerror_debug(i32 noundef %997, ptr noundef nonnull @.str.4) #10
  %999 = load i32, ptr %980, align 4, !tbaa !5
  %1000 = call ptr @strerror(i32 noundef %999) #10
  %1001 = load i32, ptr %980, align 4, !tbaa !5
  %1002 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %992, ptr noundef nonnull %.str.5.sink589, i32 noundef %993, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 260, ptr noundef %996, ptr noundef %998, ptr noundef %1000, i32 noundef %1001) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1003:                                             ; preds = %974
  %1004 = load i32, ptr @test_count, align 4, !tbaa !5
  %1005 = add nsw i32 %1004, 1
  store i32 %1005, ptr @test_count, align 4, !tbaa !5
  %1006 = load ptr, ptr %6, align 8, !tbaa !9
  %1007 = call i32 (...) @s2n_get_highest_fully_supported_tls_version() #10
  %1008 = trunc i32 %1007 to i8
  %1009 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %742, ptr noundef %1006, i8 noundef zeroext %1008, i32 noundef %95)
  %1010 = call zeroext i1 @s2n_result_is_ok(i32 %1009)
  br i1 %1010, label %1035, label %1011

1011:                                             ; preds = %1003
  %1012 = tail call ptr @__errno_location() #11
  %1013 = load i32, ptr %1012, align 4, !tbaa !5
  %1014 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1015 = call i32 @s2n_print_stacktrace(ptr noundef %1014) #10
  %1016 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1017 = trunc nuw i8 %1016 to i1
  br i1 %1017, label %1018, label %1022

1018:                                             ; preds = %1011
  %1019 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1020 = call i32 @fileno(ptr noundef %1019) #10
  %1021 = call i32 @isatty(i32 noundef %1020) #10
  %.not181 = icmp eq i32 %1021, 0
  br i1 %.not181, label %1022, label %1023

1022:                                             ; preds = %1018, %1011
  br label %1023

1023:                                             ; preds = %1018, %1022
  %.str.5.sink600 = phi ptr [ @.str.5, %1022 ], [ @.str.2, %1018 ]
  store i32 %1013, ptr %1012, align 4, !tbaa !5
  %1024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1025 = load i32, ptr @test_count, align 4, !tbaa !5
  %1026 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1027 = load i32, ptr %1026, align 4, !tbaa !5
  %1028 = call ptr @s2n_strerror(i32 noundef %1027, ptr noundef nonnull @.str.4) #10
  %1029 = load i32, ptr %1026, align 4, !tbaa !5
  %1030 = call ptr @s2n_strerror_debug(i32 noundef %1029, ptr noundef nonnull @.str.4) #10
  %1031 = load i32, ptr %1012, align 4, !tbaa !5
  %1032 = call ptr @strerror(i32 noundef %1031) #10
  %1033 = load i32, ptr %1012, align 4, !tbaa !5
  %1034 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1024, ptr noundef nonnull %.str.5.sink600, i32 noundef %1025, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 262, ptr noundef %1028, ptr noundef %1030, ptr noundef %1032, i32 noundef %1033) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1035:                                             ; preds = %1003
  %1036 = load i32, ptr @test_count, align 4, !tbaa !5
  %1037 = add nsw i32 %1036, 1
  store i32 %1037, ptr @test_count, align 4, !tbaa !5
  %1038 = call i32 @s2n_config_set_client_auth_type(ptr noundef nonnull %742, i32 noundef 1) #10
  %1039 = icmp eq i32 %1038, -1
  br i1 %1039, label %1040, label %1064

1040:                                             ; preds = %1035
  %1041 = tail call ptr @__errno_location() #11
  %1042 = load i32, ptr %1041, align 4, !tbaa !5
  %1043 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1044 = call i32 @s2n_print_stacktrace(ptr noundef %1043) #10
  %1045 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1046 = trunc nuw i8 %1045 to i1
  br i1 %1046, label %1047, label %1051

1047:                                             ; preds = %1040
  %1048 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1049 = call i32 @fileno(ptr noundef %1048) #10
  %1050 = call i32 @isatty(i32 noundef %1049) #10
  %.not198 = icmp eq i32 %1050, 0
  br i1 %.not198, label %1051, label %1052

1051:                                             ; preds = %1047, %1040
  br label %1052

1052:                                             ; preds = %1047, %1051
  %.str.5.sink611 = phi ptr [ @.str.5, %1051 ], [ @.str.2, %1047 ]
  store i32 %1042, ptr %1041, align 4, !tbaa !5
  %1053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1054 = load i32, ptr @test_count, align 4, !tbaa !5
  %1055 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1056 = load i32, ptr %1055, align 4, !tbaa !5
  %1057 = call ptr @s2n_strerror(i32 noundef %1056, ptr noundef nonnull @.str.4) #10
  %1058 = load i32, ptr %1055, align 4, !tbaa !5
  %1059 = call ptr @s2n_strerror_debug(i32 noundef %1058, ptr noundef nonnull @.str.4) #10
  %1060 = load i32, ptr %1041, align 4, !tbaa !5
  %1061 = call ptr @strerror(i32 noundef %1060) #10
  %1062 = load i32, ptr %1041, align 4, !tbaa !5
  %1063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1053, ptr noundef nonnull %.str.5.sink611, i32 noundef %1054, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 267, ptr noundef %1057, ptr noundef %1059, ptr noundef %1061, i32 noundef %1062) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1064:                                             ; preds = %1035
  %1065 = load i32, ptr @test_count, align 4, !tbaa !5
  %1066 = add nsw i32 %1065, 1
  store i32 %1066, ptr @test_count, align 4, !tbaa !5
  %1067 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %742, ptr noundef nonnull @.str.10) #10
  %1068 = icmp eq i32 %1067, -1
  br i1 %1068, label %1069, label %1093

1069:                                             ; preds = %1064
  %1070 = tail call ptr @__errno_location() #11
  %1071 = load i32, ptr %1070, align 4, !tbaa !5
  %1072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1073 = call i32 @s2n_print_stacktrace(ptr noundef %1072) #10
  %1074 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1075 = trunc nuw i8 %1074 to i1
  br i1 %1075, label %1076, label %1080

1076:                                             ; preds = %1069
  %1077 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1078 = call i32 @fileno(ptr noundef %1077) #10
  %1079 = call i32 @isatty(i32 noundef %1078) #10
  %.not197 = icmp eq i32 %1079, 0
  br i1 %.not197, label %1080, label %1081

1080:                                             ; preds = %1076, %1069
  br label %1081

1081:                                             ; preds = %1076, %1080
  %.str.5.sink622 = phi ptr [ @.str.5, %1080 ], [ @.str.2, %1076 ]
  store i32 %1071, ptr %1070, align 4, !tbaa !5
  %1082 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1083 = load i32, ptr @test_count, align 4, !tbaa !5
  %1084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1085 = load i32, ptr %1084, align 4, !tbaa !5
  %1086 = call ptr @s2n_strerror(i32 noundef %1085, ptr noundef nonnull @.str.4) #10
  %1087 = load i32, ptr %1084, align 4, !tbaa !5
  %1088 = call ptr @s2n_strerror_debug(i32 noundef %1087, ptr noundef nonnull @.str.4) #10
  %1089 = load i32, ptr %1070, align 4, !tbaa !5
  %1090 = call ptr @strerror(i32 noundef %1089) #10
  %1091 = load i32, ptr %1070, align 4, !tbaa !5
  %1092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1082, ptr noundef nonnull %.str.5.sink622, i32 noundef %1083, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.1, i32 noundef 270, ptr noundef %1086, ptr noundef %1088, ptr noundef %1090, i32 noundef %1091) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1093:                                             ; preds = %1064
  %1094 = load i32, ptr @test_count, align 4, !tbaa !5
  %1095 = add nsw i32 %1094, 1
  store i32 %1095, ptr @test_count, align 4, !tbaa !5
  %1096 = load ptr, ptr %6, align 8, !tbaa !9
  %1097 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %742, ptr noundef %1096, i8 noundef zeroext 33, i32 noundef 7)
  %1098 = call zeroext i1 @s2n_result_is_ok(i32 %1097)
  br i1 %1098, label %1123, label %1099

1099:                                             ; preds = %1093
  %1100 = tail call ptr @__errno_location() #11
  %1101 = load i32, ptr %1100, align 4, !tbaa !5
  %1102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1103 = call i32 @s2n_print_stacktrace(ptr noundef %1102) #10
  %1104 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1105 = trunc nuw i8 %1104 to i1
  br i1 %1105, label %1106, label %1110

1106:                                             ; preds = %1099
  %1107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1108 = call i32 @fileno(ptr noundef %1107) #10
  %1109 = call i32 @isatty(i32 noundef %1108) #10
  %.not182 = icmp eq i32 %1109, 0
  br i1 %.not182, label %1110, label %1111

1110:                                             ; preds = %1106, %1099
  br label %1111

1111:                                             ; preds = %1106, %1110
  %.str.5.sink633 = phi ptr [ @.str.5, %1110 ], [ @.str.2, %1106 ]
  store i32 %1101, ptr %1100, align 4, !tbaa !5
  %1112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1113 = load i32, ptr @test_count, align 4, !tbaa !5
  %1114 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1115 = load i32, ptr %1114, align 4, !tbaa !5
  %1116 = call ptr @s2n_strerror(i32 noundef %1115, ptr noundef nonnull @.str.4) #10
  %1117 = load i32, ptr %1114, align 4, !tbaa !5
  %1118 = call ptr @s2n_strerror_debug(i32 noundef %1117, ptr noundef nonnull @.str.4) #10
  %1119 = load i32, ptr %1100, align 4, !tbaa !5
  %1120 = call ptr @strerror(i32 noundef %1119) #10
  %1121 = load i32, ptr %1100, align 4, !tbaa !5
  %1122 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1112, ptr noundef nonnull %.str.5.sink633, i32 noundef %1113, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 272, ptr noundef %1116, ptr noundef %1118, ptr noundef %1120, i32 noundef %1121) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1123:                                             ; preds = %1093
  %1124 = load i32, ptr @test_count, align 4, !tbaa !5
  %1125 = add nsw i32 %1124, 1
  store i32 %1125, ptr @test_count, align 4, !tbaa !5
  %1126 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %742, ptr noundef nonnull @.str.8) #10
  %1127 = icmp eq i32 %1126, -1
  br i1 %1127, label %1128, label %1152

1128:                                             ; preds = %1123
  %1129 = tail call ptr @__errno_location() #11
  %1130 = load i32, ptr %1129, align 4, !tbaa !5
  %1131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1132 = call i32 @s2n_print_stacktrace(ptr noundef %1131) #10
  %1133 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1134 = trunc nuw i8 %1133 to i1
  br i1 %1134, label %1135, label %1139

1135:                                             ; preds = %1128
  %1136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1137 = call i32 @fileno(ptr noundef %1136) #10
  %1138 = call i32 @isatty(i32 noundef %1137) #10
  %.not196 = icmp eq i32 %1138, 0
  br i1 %.not196, label %1139, label %1140

1139:                                             ; preds = %1135, %1128
  br label %1140

1140:                                             ; preds = %1135, %1139
  %.str.5.sink644 = phi ptr [ @.str.5, %1139 ], [ @.str.2, %1135 ]
  store i32 %1130, ptr %1129, align 4, !tbaa !5
  %1141 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1142 = load i32, ptr @test_count, align 4, !tbaa !5
  %1143 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1144 = load i32, ptr %1143, align 4, !tbaa !5
  %1145 = call ptr @s2n_strerror(i32 noundef %1144, ptr noundef nonnull @.str.4) #10
  %1146 = load i32, ptr %1143, align 4, !tbaa !5
  %1147 = call ptr @s2n_strerror_debug(i32 noundef %1146, ptr noundef nonnull @.str.4) #10
  %1148 = load i32, ptr %1129, align 4, !tbaa !5
  %1149 = call ptr @strerror(i32 noundef %1148) #10
  %1150 = load i32, ptr %1129, align 4, !tbaa !5
  %1151 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1141, ptr noundef nonnull %.str.5.sink644, i32 noundef %1142, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 275, ptr noundef %1145, ptr noundef %1147, ptr noundef %1149, i32 noundef %1150) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1152:                                             ; preds = %1123
  %1153 = load i32, ptr @test_count, align 4, !tbaa !5
  %1154 = add nsw i32 %1153, 1
  store i32 %1154, ptr @test_count, align 4, !tbaa !5
  %1155 = load ptr, ptr %6, align 8, !tbaa !9
  %1156 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %742, ptr noundef %1155, i8 noundef zeroext 33, i32 noundef 23)
  %1157 = call zeroext i1 @s2n_result_is_ok(i32 %1156)
  br i1 %1157, label %1182, label %1158

1158:                                             ; preds = %1152
  %1159 = tail call ptr @__errno_location() #11
  %1160 = load i32, ptr %1159, align 4, !tbaa !5
  %1161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1162 = call i32 @s2n_print_stacktrace(ptr noundef %1161) #10
  %1163 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1164 = trunc nuw i8 %1163 to i1
  br i1 %1164, label %1165, label %1169

1165:                                             ; preds = %1158
  %1166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1167 = call i32 @fileno(ptr noundef %1166) #10
  %1168 = call i32 @isatty(i32 noundef %1167) #10
  %.not183 = icmp eq i32 %1168, 0
  br i1 %.not183, label %1169, label %1170

1169:                                             ; preds = %1165, %1158
  br label %1170

1170:                                             ; preds = %1165, %1169
  %.str.5.sink655 = phi ptr [ @.str.5, %1169 ], [ @.str.2, %1165 ]
  store i32 %1160, ptr %1159, align 4, !tbaa !5
  %1171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1172 = load i32, ptr @test_count, align 4, !tbaa !5
  %1173 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1174 = load i32, ptr %1173, align 4, !tbaa !5
  %1175 = call ptr @s2n_strerror(i32 noundef %1174, ptr noundef nonnull @.str.4) #10
  %1176 = load i32, ptr %1173, align 4, !tbaa !5
  %1177 = call ptr @s2n_strerror_debug(i32 noundef %1176, ptr noundef nonnull @.str.4) #10
  %1178 = load i32, ptr %1159, align 4, !tbaa !5
  %1179 = call ptr @strerror(i32 noundef %1178) #10
  %1180 = load i32, ptr %1159, align 4, !tbaa !5
  %1181 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1171, ptr noundef nonnull %.str.5.sink655, i32 noundef %1172, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.1, i32 noundef 277, ptr noundef %1175, ptr noundef %1177, ptr noundef %1179, i32 noundef %1180) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1182:                                             ; preds = %1152
  %1183 = load i32, ptr @test_count, align 4, !tbaa !5
  %1184 = add nsw i32 %1183, 1
  store i32 %1184, ptr @test_count, align 4, !tbaa !5
  %1185 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %742, ptr noundef nonnull @.str.9) #10
  %1186 = icmp eq i32 %1185, -1
  br i1 %1186, label %1187, label %1211

1187:                                             ; preds = %1182
  %1188 = tail call ptr @__errno_location() #11
  %1189 = load i32, ptr %1188, align 4, !tbaa !5
  %1190 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1191 = call i32 @s2n_print_stacktrace(ptr noundef %1190) #10
  %1192 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1193 = trunc nuw i8 %1192 to i1
  br i1 %1193, label %1194, label %1198

1194:                                             ; preds = %1187
  %1195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1196 = call i32 @fileno(ptr noundef %1195) #10
  %1197 = call i32 @isatty(i32 noundef %1196) #10
  %.not195 = icmp eq i32 %1197, 0
  br i1 %.not195, label %1198, label %1199

1198:                                             ; preds = %1194, %1187
  br label %1199

1199:                                             ; preds = %1194, %1198
  %.str.5.sink666 = phi ptr [ @.str.5, %1198 ], [ @.str.2, %1194 ]
  store i32 %1189, ptr %1188, align 4, !tbaa !5
  %1200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1201 = load i32, ptr @test_count, align 4, !tbaa !5
  %1202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1203 = load i32, ptr %1202, align 4, !tbaa !5
  %1204 = call ptr @s2n_strerror(i32 noundef %1203, ptr noundef nonnull @.str.4) #10
  %1205 = load i32, ptr %1202, align 4, !tbaa !5
  %1206 = call ptr @s2n_strerror_debug(i32 noundef %1205, ptr noundef nonnull @.str.4) #10
  %1207 = load i32, ptr %1188, align 4, !tbaa !5
  %1208 = call ptr @strerror(i32 noundef %1207) #10
  %1209 = load i32, ptr %1188, align 4, !tbaa !5
  %1210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1200, ptr noundef nonnull %.str.5.sink666, i32 noundef %1201, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 280, ptr noundef %1204, ptr noundef %1206, ptr noundef %1208, i32 noundef %1209) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1211:                                             ; preds = %1182
  %1212 = load i32, ptr @test_count, align 4, !tbaa !5
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr @test_count, align 4, !tbaa !5
  %1214 = load ptr, ptr %6, align 8, !tbaa !9
  %1215 = call i32 (...) @s2n_get_highest_fully_supported_tls_version() #10
  %1216 = trunc i32 %1215 to i8
  %1217 = call i32 @s2n_do_test_handshake(ptr noundef nonnull %742, ptr noundef %1214, i8 noundef zeroext %1216, i32 noundef %685)
  %1218 = call zeroext i1 @s2n_result_is_ok(i32 %1217)
  br i1 %1218, label %1243, label %1219

1219:                                             ; preds = %1211
  %1220 = tail call ptr @__errno_location() #11
  %1221 = load i32, ptr %1220, align 4, !tbaa !5
  %1222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1223 = call i32 @s2n_print_stacktrace(ptr noundef %1222) #10
  %1224 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1225 = trunc nuw i8 %1224 to i1
  br i1 %1225, label %1226, label %1230

1226:                                             ; preds = %1219
  %1227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1228 = call i32 @fileno(ptr noundef %1227) #10
  %1229 = call i32 @isatty(i32 noundef %1228) #10
  %.not184 = icmp eq i32 %1229, 0
  br i1 %.not184, label %1230, label %1231

1230:                                             ; preds = %1226, %1219
  br label %1231

1231:                                             ; preds = %1226, %1230
  %.str.5.sink677 = phi ptr [ @.str.5, %1230 ], [ @.str.2, %1226 ]
  store i32 %1221, ptr %1220, align 4, !tbaa !5
  %1232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1233 = load i32, ptr @test_count, align 4, !tbaa !5
  %1234 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1235 = load i32, ptr %1234, align 4, !tbaa !5
  %1236 = call ptr @s2n_strerror(i32 noundef %1235, ptr noundef nonnull @.str.4) #10
  %1237 = load i32, ptr %1234, align 4, !tbaa !5
  %1238 = call ptr @s2n_strerror_debug(i32 noundef %1237, ptr noundef nonnull @.str.4) #10
  %1239 = load i32, ptr %1220, align 4, !tbaa !5
  %1240 = call ptr @strerror(i32 noundef %1239) #10
  %1241 = load i32, ptr %1220, align 4, !tbaa !5
  %1242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1232, ptr noundef nonnull %.str.5.sink677, i32 noundef %1233, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.1, i32 noundef 282, ptr noundef %1236, ptr noundef %1238, ptr noundef %1240, i32 noundef %1241) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1243:                                             ; preds = %1211
  %1244 = load i32, ptr @test_count, align 4, !tbaa !5
  %1245 = add nsw i32 %1244, 1
  store i32 %1245, ptr @test_count, align 4, !tbaa !5
  %1246 = call i32 @s2n_config_free(ptr noundef nonnull %742) #10
  %1247 = icmp eq i32 %1246, -1
  br i1 %1247, label %1248, label %1272

1248:                                             ; preds = %1243
  %1249 = tail call ptr @__errno_location() #11
  %1250 = load i32, ptr %1249, align 4, !tbaa !5
  %1251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1252 = call i32 @s2n_print_stacktrace(ptr noundef %1251) #10
  %1253 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1254 = trunc nuw i8 %1253 to i1
  br i1 %1254, label %1255, label %1259

1255:                                             ; preds = %1248
  %1256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1257 = call i32 @fileno(ptr noundef %1256) #10
  %1258 = call i32 @isatty(i32 noundef %1257) #10
  %.not194 = icmp eq i32 %1258, 0
  br i1 %.not194, label %1259, label %1260

1259:                                             ; preds = %1255, %1248
  br label %1260

1260:                                             ; preds = %1255, %1259
  %.str.5.sink688 = phi ptr [ @.str.5, %1259 ], [ @.str.2, %1255 ]
  store i32 %1250, ptr %1249, align 4, !tbaa !5
  %1261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1262 = load i32, ptr @test_count, align 4, !tbaa !5
  %1263 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1264 = load i32, ptr %1263, align 4, !tbaa !5
  %1265 = call ptr @s2n_strerror(i32 noundef %1264, ptr noundef nonnull @.str.4) #10
  %1266 = load i32, ptr %1263, align 4, !tbaa !5
  %1267 = call ptr @s2n_strerror_debug(i32 noundef %1266, ptr noundef nonnull @.str.4) #10
  %1268 = load i32, ptr %1249, align 4, !tbaa !5
  %1269 = call ptr @strerror(i32 noundef %1268) #10
  %1270 = load i32, ptr %1249, align 4, !tbaa !5
  %1271 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1261, ptr noundef nonnull %.str.5.sink688, i32 noundef %1262, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 285, ptr noundef %1265, ptr noundef %1267, ptr noundef %1269, i32 noundef %1270) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1272:                                             ; preds = %1243
  %1273 = load i32, ptr @test_count, align 4, !tbaa !5
  %1274 = add nsw i32 %1273, 1
  store i32 %1274, ptr @test_count, align 4, !tbaa !5
  %1275 = load ptr, ptr %5, align 8, !tbaa !9
  %1276 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %1275) #10
  %1277 = icmp eq i32 %1276, -1
  br i1 %1277, label %1278, label %1302

1278:                                             ; preds = %1272
  %1279 = tail call ptr @__errno_location() #11
  %1280 = load i32, ptr %1279, align 4, !tbaa !5
  %1281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1282 = call i32 @s2n_print_stacktrace(ptr noundef %1281) #10
  %1283 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1284 = trunc nuw i8 %1283 to i1
  br i1 %1284, label %1285, label %1289

1285:                                             ; preds = %1278
  %1286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1287 = call i32 @fileno(ptr noundef %1286) #10
  %1288 = call i32 @isatty(i32 noundef %1287) #10
  %.not193 = icmp eq i32 %1288, 0
  br i1 %.not193, label %1289, label %1290

1289:                                             ; preds = %1285, %1278
  br label %1290

1290:                                             ; preds = %1285, %1289
  %.str.5.sink699 = phi ptr [ @.str.5, %1289 ], [ @.str.2, %1285 ]
  store i32 %1280, ptr %1279, align 4, !tbaa !5
  %1291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1292 = load i32, ptr @test_count, align 4, !tbaa !5
  %1293 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1294 = load i32, ptr %1293, align 4, !tbaa !5
  %1295 = call ptr @s2n_strerror(i32 noundef %1294, ptr noundef nonnull @.str.4) #10
  %1296 = load i32, ptr %1293, align 4, !tbaa !5
  %1297 = call ptr @s2n_strerror_debug(i32 noundef %1296, ptr noundef nonnull @.str.4) #10
  %1298 = load i32, ptr %1279, align 4, !tbaa !5
  %1299 = call ptr @strerror(i32 noundef %1298) #10
  %1300 = load i32, ptr %1279, align 4, !tbaa !5
  %1301 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1291, ptr noundef nonnull %.str.5.sink699, i32 noundef %1292, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 288, ptr noundef %1295, ptr noundef %1297, ptr noundef %1299, i32 noundef %1300) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1302:                                             ; preds = %1272
  %1303 = load i32, ptr @test_count, align 4, !tbaa !5
  %1304 = add nsw i32 %1303, 1
  store i32 %1304, ptr @test_count, align 4, !tbaa !5
  %1305 = call i32 @s2n_cert_chain_and_key_free(ptr noundef nonnull %154) #10
  %1306 = icmp eq i32 %1305, -1
  br i1 %1306, label %1307, label %1331

1307:                                             ; preds = %1302
  %1308 = tail call ptr @__errno_location() #11
  %1309 = load i32, ptr %1308, align 4, !tbaa !5
  %1310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1311 = call i32 @s2n_print_stacktrace(ptr noundef %1310) #10
  %1312 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1313 = trunc nuw i8 %1312 to i1
  br i1 %1313, label %1314, label %1318

1314:                                             ; preds = %1307
  %1315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1316 = call i32 @fileno(ptr noundef %1315) #10
  %1317 = call i32 @isatty(i32 noundef %1316) #10
  %.not192 = icmp eq i32 %1317, 0
  br i1 %.not192, label %1318, label %1319

1318:                                             ; preds = %1314, %1307
  br label %1319

1319:                                             ; preds = %1314, %1318
  %.str.5.sink710 = phi ptr [ @.str.5, %1318 ], [ @.str.2, %1314 ]
  store i32 %1309, ptr %1308, align 4, !tbaa !5
  %1320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1321 = load i32, ptr @test_count, align 4, !tbaa !5
  %1322 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1323 = load i32, ptr %1322, align 4, !tbaa !5
  %1324 = call ptr @s2n_strerror(i32 noundef %1323, ptr noundef nonnull @.str.4) #10
  %1325 = load i32, ptr %1322, align 4, !tbaa !5
  %1326 = call ptr @s2n_strerror_debug(i32 noundef %1325, ptr noundef nonnull @.str.4) #10
  %1327 = load i32, ptr %1308, align 4, !tbaa !5
  %1328 = call ptr @strerror(i32 noundef %1327) #10
  %1329 = load i32, ptr %1308, align 4, !tbaa !5
  %1330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1320, ptr noundef nonnull %.str.5.sink710, i32 noundef %1321, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 289, ptr noundef %1324, ptr noundef %1326, ptr noundef %1328, i32 noundef %1329) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1331:                                             ; preds = %1302
  %1332 = load i32, ptr @test_count, align 4, !tbaa !5
  %1333 = add nsw i32 %1332, 1
  store i32 %1333, ptr @test_count, align 4, !tbaa !5
  %1334 = load ptr, ptr %6, align 8, !tbaa !9
  %1335 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %1334) #10
  %1336 = icmp eq i32 %1335, -1
  br i1 %1336, label %1337, label %1361

1337:                                             ; preds = %1331
  %1338 = tail call ptr @__errno_location() #11
  %1339 = load i32, ptr %1338, align 4, !tbaa !5
  %1340 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1341 = call i32 @s2n_print_stacktrace(ptr noundef %1340) #10
  %1342 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1343 = trunc nuw i8 %1342 to i1
  br i1 %1343, label %1344, label %1348

1344:                                             ; preds = %1337
  %1345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1346 = call i32 @fileno(ptr noundef %1345) #10
  %1347 = call i32 @isatty(i32 noundef %1346) #10
  %.not191 = icmp eq i32 %1347, 0
  br i1 %.not191, label %1348, label %1349

1348:                                             ; preds = %1344, %1337
  br label %1349

1349:                                             ; preds = %1344, %1348
  %.str.5.sink721 = phi ptr [ @.str.5, %1348 ], [ @.str.2, %1344 ]
  store i32 %1339, ptr %1338, align 4, !tbaa !5
  %1350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1351 = load i32, ptr @test_count, align 4, !tbaa !5
  %1352 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1353 = load i32, ptr %1352, align 4, !tbaa !5
  %1354 = call ptr @s2n_strerror(i32 noundef %1353, ptr noundef nonnull @.str.4) #10
  %1355 = load i32, ptr %1352, align 4, !tbaa !5
  %1356 = call ptr @s2n_strerror_debug(i32 noundef %1355, ptr noundef nonnull @.str.4) #10
  %1357 = load i32, ptr %1338, align 4, !tbaa !5
  %1358 = call ptr @strerror(i32 noundef %1357) #10
  %1359 = load i32, ptr %1338, align 4, !tbaa !5
  %1360 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1350, ptr noundef nonnull %.str.5.sink721, i32 noundef %1351, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 290, ptr noundef %1354, ptr noundef %1356, ptr noundef %1358, i32 noundef %1359) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1361:                                             ; preds = %1331
  %1362 = load i32, ptr @test_count, align 4, !tbaa !5
  %1363 = add nsw i32 %1362, 1
  store i32 %1363, ptr @test_count, align 4, !tbaa !5
  %1364 = call i32 @s2n_cert_chain_and_key_free(ptr noundef nonnull %241) #10
  %1365 = icmp eq i32 %1364, -1
  br i1 %1365, label %1366, label %1390

1366:                                             ; preds = %1361
  %1367 = tail call ptr @__errno_location() #11
  %1368 = load i32, ptr %1367, align 4, !tbaa !5
  %1369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1370 = call i32 @s2n_print_stacktrace(ptr noundef %1369) #10
  %1371 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1372 = trunc nuw i8 %1371 to i1
  br i1 %1372, label %1373, label %1377

1373:                                             ; preds = %1366
  %1374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1375 = call i32 @fileno(ptr noundef %1374) #10
  %1376 = call i32 @isatty(i32 noundef %1375) #10
  %.not190 = icmp eq i32 %1376, 0
  br i1 %.not190, label %1377, label %1378

1377:                                             ; preds = %1373, %1366
  br label %1378

1378:                                             ; preds = %1373, %1377
  %.str.5.sink732 = phi ptr [ @.str.5, %1377 ], [ @.str.2, %1373 ]
  store i32 %1368, ptr %1367, align 4, !tbaa !5
  %1379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1380 = load i32, ptr @test_count, align 4, !tbaa !5
  %1381 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1382 = load i32, ptr %1381, align 4, !tbaa !5
  %1383 = call ptr @s2n_strerror(i32 noundef %1382, ptr noundef nonnull @.str.4) #10
  %1384 = load i32, ptr %1381, align 4, !tbaa !5
  %1385 = call ptr @s2n_strerror_debug(i32 noundef %1384, ptr noundef nonnull @.str.4) #10
  %1386 = load i32, ptr %1367, align 4, !tbaa !5
  %1387 = call ptr @strerror(i32 noundef %1386) #10
  %1388 = load i32, ptr %1367, align 4, !tbaa !5
  %1389 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1379, ptr noundef nonnull %.str.5.sink732, i32 noundef %1380, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.1, i32 noundef 291, ptr noundef %1383, ptr noundef %1385, ptr noundef %1387, i32 noundef %1388) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1390:                                             ; preds = %1361
  %1391 = call i32 @s2n_cleanup() #10
  %1392 = icmp eq i32 %1391, -1
  br i1 %1392, label %1393, label %1417

1393:                                             ; preds = %1390
  %1394 = tail call ptr @__errno_location() #11
  %1395 = load i32, ptr %1394, align 4, !tbaa !5
  %1396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1397 = call i32 @s2n_print_stacktrace(ptr noundef %1396) #10
  %1398 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1399 = trunc nuw i8 %1398 to i1
  br i1 %1399, label %1400, label %1404

1400:                                             ; preds = %1393
  %1401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1402 = call i32 @fileno(ptr noundef %1401) #10
  %1403 = call i32 @isatty(i32 noundef %1402) #10
  %.not189 = icmp eq i32 %1403, 0
  br i1 %.not189, label %1404, label %1405

1404:                                             ; preds = %1400, %1393
  br label %1405

1405:                                             ; preds = %1400, %1404
  %.str.5.sink743 = phi ptr [ @.str.5, %1404 ], [ @.str.2, %1400 ]
  store i32 %1395, ptr %1394, align 4, !tbaa !5
  %1406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1407 = load i32, ptr @test_count, align 4, !tbaa !5
  %1408 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1409 = load i32, ptr %1408, align 4, !tbaa !5
  %1410 = call ptr @s2n_strerror(i32 noundef %1409, ptr noundef nonnull @.str.4) #10
  %1411 = load i32, ptr %1408, align 4, !tbaa !5
  %1412 = call ptr @s2n_strerror_debug(i32 noundef %1411, ptr noundef nonnull @.str.4) #10
  %1413 = load i32, ptr %1394, align 4, !tbaa !5
  %1414 = call ptr @strerror(i32 noundef %1413) #10
  %1415 = load i32, ptr %1394, align 4, !tbaa !5
  %1416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1406, ptr noundef nonnull %.str.5.sink743, i32 noundef %1407, ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.1, i32 noundef 293, ptr noundef %1410, ptr noundef %1412, ptr noundef %1414, i32 noundef %1415) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1417:                                             ; preds = %1390
  %1418 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %1419 = icmp eq i32 %1418, -1
  br i1 %1419, label %1420, label %1444

1420:                                             ; preds = %1417
  %1421 = tail call ptr @__errno_location() #11
  %1422 = load i32, ptr %1421, align 4, !tbaa !5
  %1423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1424 = call i32 @s2n_print_stacktrace(ptr noundef %1423) #10
  %1425 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1426 = trunc nuw i8 %1425 to i1
  br i1 %1426, label %1427, label %1431

1427:                                             ; preds = %1420
  %1428 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1429 = call i32 @fileno(ptr noundef %1428) #10
  %1430 = call i32 @isatty(i32 noundef %1429) #10
  %.not188 = icmp eq i32 %1430, 0
  br i1 %.not188, label %1431, label %1432

1431:                                             ; preds = %1427, %1420
  br label %1432

1432:                                             ; preds = %1427, %1431
  %.str.5.sink754 = phi ptr [ @.str.5, %1431 ], [ @.str.2, %1427 ]
  store i32 %1422, ptr %1421, align 4, !tbaa !5
  %1433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1434 = load i32, ptr @test_count, align 4, !tbaa !5
  %1435 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1436 = load i32, ptr %1435, align 4, !tbaa !5
  %1437 = call ptr @s2n_strerror(i32 noundef %1436, ptr noundef nonnull @.str.4) #10
  %1438 = load i32, ptr %1435, align 4, !tbaa !5
  %1439 = call ptr @s2n_strerror_debug(i32 noundef %1438, ptr noundef nonnull @.str.4) #10
  %1440 = load i32, ptr %1421, align 4, !tbaa !5
  %1441 = call ptr @strerror(i32 noundef %1440) #10
  %1442 = load i32, ptr %1421, align 4, !tbaa !5
  %1443 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1433, ptr noundef nonnull %.str.5.sink754, i32 noundef %1434, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.1, i32 noundef 293, ptr noundef %1437, ptr noundef %1439, ptr noundef %1441, i32 noundef %1442) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1444:                                             ; preds = %1417
  %1445 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1446 = trunc nuw i8 %1445 to i1
  br i1 %1446, label %1447, label %1458

1447:                                             ; preds = %1444
  %1448 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1449 = call i32 @fileno(ptr noundef %1448) #10
  %1450 = call i32 @isatty(i32 noundef %1449) #10
  %.not185 = icmp eq i32 %1450, 0
  br i1 %.not185, label %1458, label %1451

1451:                                             ; preds = %1447
  %1452 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not187 = icmp eq i32 %1452, 0
  %1453 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not187, label %1456, label %1454

1454:                                             ; preds = %1451
  %1455 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1453, ptr noundef nonnull @.str.49, i32 noundef %1452) #10
  br label %1465

1456:                                             ; preds = %1451
  %1457 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1453, ptr noundef nonnull @.str.50) #10
  br label %1465

1458:                                             ; preds = %1447, %1444
  %1459 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not186 = icmp eq i32 %1459, 0
  %1460 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not186, label %1463, label %1461

1461:                                             ; preds = %1458
  %1462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1460, ptr noundef nonnull @.str.51, i32 noundef %1459) #10
  br label %1465

1463:                                             ; preds = %1458
  %1464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1460, ptr noundef nonnull @.str.52) #10
  br label %1465

1465:                                             ; preds = %1461, %1463, %1454, %1456
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 5000, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #10
  ret i32 0
}

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

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

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) local_unnamed_addr #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind
declare i32 @isatty(i32 noundef) local_unnamed_addr #5

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

declare ptr @s2n_strerror(i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #6

declare ptr @s2n_strerror_debug(i32 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

declare zeroext i1 @s2n_is_tls13_fully_supported(...) local_unnamed_addr #2

declare i32 @s2n_test_cert_chain_and_key_new(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @s2n_cert_chain_and_key_new() local_unnamed_addr #2

declare i32 @s2n_read_test_pem_and_len(ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare i32 @s2n_cert_chain_and_key_load_public_pem_bytes(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare ptr @s2n_config_new() local_unnamed_addr #2

declare i32 @s2n_config_set_unsafe_for_testing(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @s2n_config_set_async_pkey_callback(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @s2n_config_set_cipher_preferences(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @s2n_result_is_ok(i32) local_unnamed_addr #9

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_do_test_handshake(ptr noundef, ptr noundef, i8 noundef zeroext, i32 noundef) local_unnamed_addr #0

declare i32 @s2n_get_highest_fully_supported_tls_version(...) local_unnamed_addr #2

declare i32 @s2n_config_set_client_auth_type(ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @s2n_config_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

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 = { 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 = { "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 nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { 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 #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { inlinehint 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 #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(none) }
attributes #12 = { cold nounwind }
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, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}


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