; LLVM IR from aws/s2n-tls :: tests/unit (s2n_security_policy_cert_preferences_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_cert_info = type { i32, i32, i32, i32, i8 }
%struct.s2n_signature_preferences = type { i8, ptr }
%struct.s2n_certificate_key_preferences = type { i8, ptr }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_result = type { i32 }
%struct.s2n_cert = type { i32, %struct.s2n_pkey, %struct.s2n_cert_info, %struct.s2n_blob, ptr }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_cert_chain = type { i32, ptr }
%struct.s2n_cert_chain_and_key = type { ptr, ptr, %struct.s2n_blob, %struct.s2n_blob, ptr, ptr, ptr }
%struct.s2n_config = type { i32, ptr, ptr, %struct.certs_by_type, %struct.s2n_blob, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, i64, ptr, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, %struct.s2n_x509_trust_store, i16, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, i32, i32, ptr, ptr, i32, %struct.s2n_blob }
%struct.certs_by_type = type { [4 x ptr] }
%struct.s2n_x509_trust_store = type { ptr, i8 }

@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 [100 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
@__const.main.valid_info = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@__const.main.test_sig_scheme_list = external hidden unnamed_addr constant [2 x ptr], align 16
@__const.main.test_cert_key_list = external hidden unnamed_addr constant [2 x ptr], align 16
@__const.main.pss_sig_scheme_list = external hidden unnamed_addr constant [6 x ptr], align 16
@__const.main.info = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.8 = external hidden unnamed_addr constant [135 x i8], align 1
@__const.main.info.9 = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.10 = external hidden unnamed_addr constant [138 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [70 x i8], align 1
@__const.main.info.13 = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.14 = external hidden unnamed_addr constant [139 x i8], align 1
@__const.main.info.15 = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.16 = external hidden unnamed_addr constant [129 x i8], align 1
@__const.main.info.17 = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.18 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.57 = 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 i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %struct.s2n_cert_info, align 4
  %18 = alloca [2 x ptr], align 16
  %19 = alloca [2 x ptr], align 16
  %20 = alloca %struct.s2n_signature_preferences, align 8
  %21 = alloca %struct.s2n_certificate_key_preferences, align 8
  %22 = alloca %struct.s2n_security_policy, align 8
  %23 = alloca [6 x ptr], align 16
  %24 = alloca %struct.s2n_signature_preferences, align 8
  %25 = alloca %struct.s2n_security_policy, align 8
  %26 = alloca %struct.s2n_cert_info, align 4
  %27 = alloca %struct.s2n_result, align 4
  %28 = alloca i32, align 4
  %29 = alloca %struct.s2n_cert_info, align 4
  %30 = alloca %struct.s2n_result, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca %struct.s2n_cert_info, align 4
  %35 = alloca %struct.s2n_result, align 4
  %36 = alloca i32, align 4
  %37 = alloca %struct.s2n_cert_info, align 4
  %38 = alloca %struct.s2n_result, align 4
  %39 = alloca i32, align 4
  %40 = alloca %struct.s2n_cert_info, align 4
  %41 = alloca %struct.s2n_result, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca [3 x %struct.s2n_cert], align 16
  %46 = alloca %struct.s2n_cert_chain, align 8
  %47 = alloca %struct.s2n_cert_chain_and_key, align 8
  %48 = alloca %struct.s2n_result, align 4
  %49 = alloca i32, align 4
  %50 = alloca %struct.s2n_result, align 4
  %51 = alloca i32, align 4
  %52 = alloca i64, align 8
  %53 = alloca [3 x %struct.s2n_cert], align 16
  %54 = alloca %struct.s2n_cert_chain, align 8
  %55 = alloca %struct.s2n_cert_chain_and_key, align 8
  %56 = alloca %struct.s2n_result, 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 i32, align 4
  %62 = alloca [3 x %struct.s2n_cert], align 16
  %63 = alloca %struct.s2n_cert_chain, align 8
  %64 = alloca %struct.s2n_cert_chain_and_key, align 8
  %65 = alloca %struct.s2n_result, align 4
  %66 = alloca i32, align 4
  %67 = alloca %struct.s2n_result, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca [3 x %struct.s2n_cert], align 16
  %72 = alloca %struct.s2n_cert_chain, align 8
  %73 = alloca %struct.s2n_cert_chain_and_key, align 8
  %74 = alloca %struct.s2n_result, align 4
  %75 = alloca i32, align 4
  %76 = alloca %struct.s2n_result, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca [3 x %struct.s2n_cert], align 16
  %81 = alloca %struct.s2n_cert_chain, align 8
  %82 = alloca %struct.s2n_cert_chain_and_key, align 8
  %83 = alloca %struct.s2n_result, align 4
  %84 = alloca i32, align 4
  %85 = alloca %struct.s2n_security_policy, align 8
  %86 = alloca %struct.s2n_result, align 4
  %87 = alloca i32, align 4
  %88 = alloca ptr, align 8
  %89 = alloca i32, align 4
  %90 = alloca ptr, align 8
  %91 = alloca i32, align 4
  %92 = alloca ptr, align 8
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca %struct.s2n_result, align 4
  %100 = alloca %struct.s2n_result, align 4
  %101 = alloca %struct.s2n_result, align 4
  %102 = alloca ptr, align 8
  %103 = alloca i32, align 4
  %104 = alloca ptr, align 8
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca %struct.s2n_result, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca %struct.s2n_result, align 4
  %116 = alloca ptr, align 8
  %117 = alloca i32, align 4
  %118 = alloca ptr, align 8
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca %struct.s2n_result, align 4
  %124 = alloca %struct.s2n_result, align 4
  %125 = alloca ptr, align 8
  %126 = alloca i32, align 4
  %127 = alloca ptr, align 8
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = alloca %struct.s2n_result, align 4
  %131 = alloca %struct.s2n_result, align 4
  %132 = alloca i32, align 4
  %133 = alloca i32, align 4
  %134 = 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 %135

135:                                              ; preds = %2
  br label %136

136:                                              ; preds = %135
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %137 = load ptr, ptr @stdout, align 8, !tbaa !9
  %138 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %137, ptr noundef @.str, ptr noundef @.str.1) #10
  %139 = load ptr, ptr @stdout, align 8, !tbaa !9
  %140 = call i32 @fflush(ptr noundef %139)
  br label %141

141:                                              ; preds = %136
  %142 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %143 = icmp eq i32 %142, -1
  br i1 %143, label %144, label %195

144:                                              ; preds = %141
  br label %145

145:                                              ; preds = %144
  br label %146

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

153:                                              ; preds = %146
  %154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %155 = call i32 @fileno(ptr noundef %154) #10
  %156 = call i32 @isatty(i32 noundef %155) #10
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %158, label %175

158:                                              ; preds = %153
  %159 = load i32, ptr %6, align 4, !tbaa !5
  %160 = call ptr @__errno_location() #11
  store i32 %159, ptr %160, align 4, !tbaa !5
  %161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %162 = load i32, ptr @test_count, align 4, !tbaa !5
  %163 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = call ptr @s2n_strerror(i32 noundef %164, ptr noundef @.str.4)
  %166 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %167 = load i32, ptr %166, align 4, !tbaa !5
  %168 = call ptr @s2n_strerror_debug(i32 noundef %167, ptr noundef @.str.4)
  %169 = call ptr @__errno_location() #11
  %170 = load i32, ptr %169, align 4, !tbaa !5
  %171 = call ptr @strerror(i32 noundef %170) #10
  %172 = call ptr @__errno_location() #11
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %174 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %161, ptr noundef @.str.2, i32 noundef %162, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 56, ptr noundef %165, ptr noundef %168, ptr noundef %171, i32 noundef %173) #10
  br label %192

175:                                              ; preds = %153, %146
  %176 = load i32, ptr %6, align 4, !tbaa !5
  %177 = call ptr @__errno_location() #11
  store i32 %176, ptr %177, align 4, !tbaa !5
  %178 = load ptr, ptr @stderr, align 8, !tbaa !9
  %179 = load i32, ptr @test_count, align 4, !tbaa !5
  %180 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %181 = load i32, ptr %180, align 4, !tbaa !5
  %182 = call ptr @s2n_strerror(i32 noundef %181, ptr noundef @.str.4)
  %183 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %184 = load i32, ptr %183, align 4, !tbaa !5
  %185 = call ptr @s2n_strerror_debug(i32 noundef %184, ptr noundef @.str.4)
  %186 = call ptr @__errno_location() #11
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = call ptr @strerror(i32 noundef %187) #10
  %189 = call ptr @__errno_location() #11
  %190 = load i32, ptr %189, align 4, !tbaa !5
  %191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %178, ptr noundef @.str.5, i32 noundef %179, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 56, ptr noundef %182, ptr noundef %185, ptr noundef %188, i32 noundef %190) #10
  br label %192

192:                                              ; preds = %175, %158
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %193

193:                                              ; preds = %192
  call void @exit(i32 noundef 1) #12
  unreachable

194:                                              ; No predecessors!
  br label %195

195:                                              ; preds = %194, %141
  br label %196

196:                                              ; preds = %195
  br label %197

197:                                              ; preds = %196
  %198 = load i32, ptr @test_count, align 4, !tbaa !5
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr @test_count, align 4, !tbaa !5
  %200 = call i32 @s2n_enable_atexit()
  %201 = icmp eq i32 %200, -1
  br i1 %201, label %202, label %253

202:                                              ; preds = %197
  br label %203

203:                                              ; preds = %202
  br label %204

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

211:                                              ; preds = %204
  %212 = load ptr, ptr @stderr, align 8, !tbaa !9
  %213 = call i32 @fileno(ptr noundef %212) #10
  %214 = call i32 @isatty(i32 noundef %213) #10
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %233

216:                                              ; preds = %211
  %217 = load i32, ptr %7, align 4, !tbaa !5
  %218 = call ptr @__errno_location() #11
  store i32 %217, ptr %218, align 4, !tbaa !5
  %219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %220 = load i32, ptr @test_count, align 4, !tbaa !5
  %221 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %222 = load i32, ptr %221, align 4, !tbaa !5
  %223 = call ptr @s2n_strerror(i32 noundef %222, ptr noundef @.str.4)
  %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_debug(i32 noundef %225, ptr noundef @.str.4)
  %227 = call ptr @__errno_location() #11
  %228 = load i32, ptr %227, align 4, !tbaa !5
  %229 = call ptr @strerror(i32 noundef %228) #10
  %230 = call ptr @__errno_location() #11
  %231 = load i32, ptr %230, align 4, !tbaa !5
  %232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %219, ptr noundef @.str.2, i32 noundef %220, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 56, ptr noundef %223, ptr noundef %226, ptr noundef %229, i32 noundef %231) #10
  br label %250

233:                                              ; preds = %211, %204
  %234 = load i32, ptr %7, align 4, !tbaa !5
  %235 = call ptr @__errno_location() #11
  store i32 %234, ptr %235, align 4, !tbaa !5
  %236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %237 = load i32, ptr @test_count, align 4, !tbaa !5
  %238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = call ptr @s2n_strerror(i32 noundef %239, ptr noundef @.str.4)
  %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_debug(i32 noundef %242, ptr noundef @.str.4)
  %244 = call ptr @__errno_location() #11
  %245 = load i32, ptr %244, align 4, !tbaa !5
  %246 = call ptr @strerror(i32 noundef %245) #10
  %247 = call ptr @__errno_location() #11
  %248 = load i32, ptr %247, align 4, !tbaa !5
  %249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %236, ptr noundef @.str.5, i32 noundef %237, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 56, ptr noundef %240, ptr noundef %243, ptr noundef %246, i32 noundef %248) #10
  br label %250

250:                                              ; preds = %233, %216
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %251

251:                                              ; preds = %250
  call void @exit(i32 noundef 1) #12
  unreachable

252:                                              ; No predecessors!
  br label %253

253:                                              ; preds = %252, %197
  br label %254

254:                                              ; preds = %253
  br label %255

255:                                              ; preds = %254
  br label %256

256:                                              ; preds = %255
  %257 = call i32 @s2n_init()
  %258 = icmp eq i32 %257, -1
  br i1 %258, label %259, label %310

259:                                              ; preds = %256
  br label %260

260:                                              ; preds = %259
  br label %261

261:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %262 = call ptr @__errno_location() #11
  %263 = load i32, ptr %262, align 4, !tbaa !5
  store i32 %263, ptr %8, align 4, !tbaa !5
  %264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %265 = call i32 @s2n_print_stacktrace(ptr noundef %264)
  %266 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %267 = trunc i8 %266 to i1
  br i1 %267, label %268, label %290

268:                                              ; preds = %261
  %269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %270 = call i32 @fileno(ptr noundef %269) #10
  %271 = call i32 @isatty(i32 noundef %270) #10
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %273, label %290

273:                                              ; preds = %268
  %274 = load i32, ptr %8, align 4, !tbaa !5
  %275 = call ptr @__errno_location() #11
  store i32 %274, ptr %275, align 4, !tbaa !5
  %276 = load ptr, ptr @stderr, align 8, !tbaa !9
  %277 = load i32, ptr @test_count, align 4, !tbaa !5
  %278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %280 = call ptr @s2n_strerror(i32 noundef %279, ptr noundef @.str.4)
  %281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = call ptr @s2n_strerror_debug(i32 noundef %282, ptr noundef @.str.4)
  %284 = call ptr @__errno_location() #11
  %285 = load i32, ptr %284, align 4, !tbaa !5
  %286 = call ptr @strerror(i32 noundef %285) #10
  %287 = call ptr @__errno_location() #11
  %288 = load i32, ptr %287, align 4, !tbaa !5
  %289 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %276, ptr noundef @.str.2, i32 noundef %277, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 56, ptr noundef %280, ptr noundef %283, ptr noundef %286, i32 noundef %288) #10
  br label %307

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

307:                                              ; preds = %290, %273
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %308

308:                                              ; preds = %307
  call void @exit(i32 noundef 1) #12
  unreachable

309:                                              ; No predecessors!
  br label %310

310:                                              ; preds = %309, %256
  br label %311

311:                                              ; preds = %310
  br label %312

312:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #10
  store i32 794, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  store i32 672, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  store i32 384, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  store i32 715, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  store i32 668, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  store i32 64, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  store i32 256, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  store i32 415, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 20, ptr %17) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 4 @__const.main.valid_info, i64 20, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %18, ptr align 16 @__const.main.test_sig_scheme_list, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %19, ptr align 16 @__const.main.test_cert_key_list, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #10
  %313 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %20, i32 0, i32 0
  store i8 2, ptr %313, align 8, !tbaa !15
  %314 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %20, i32 0, i32 1
  %315 = getelementptr inbounds [2 x ptr], ptr %18, i64 0, i64 0
  store ptr %315, ptr %314, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #10
  %316 = getelementptr inbounds %struct.s2n_certificate_key_preferences, ptr %21, i32 0, i32 0
  store i8 2, ptr %316, align 8, !tbaa !18
  %317 = getelementptr inbounds %struct.s2n_certificate_key_preferences, ptr %21, i32 0, i32 1
  %318 = getelementptr inbounds [2 x ptr], ptr %19, i64 0, i64 0
  store ptr %318, ptr %317, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 64, ptr %22) #10
  %319 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 0
  store i8 0, ptr %319, align 8, !tbaa !21
  %320 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 1
  store ptr null, ptr %320, align 8, !tbaa !23
  %321 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 2
  store ptr null, ptr %321, align 8, !tbaa !24
  %322 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 3
  store ptr null, ptr %322, align 8, !tbaa !25
  %323 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 4
  store ptr %20, ptr %323, align 8, !tbaa !26
  %324 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 5
  store ptr null, ptr %324, align 8, !tbaa !27
  %325 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 6
  store ptr %21, ptr %325, align 8, !tbaa !28
  %326 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 7
  store i8 1, ptr %326, align 8, !tbaa !29
  %327 = getelementptr inbounds %struct.s2n_security_policy, ptr %22, i32 0, i32 8
  call void @llvm.memset.p0.i64(ptr align 1 %327, i8 0, i64 2, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr %23) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %23, ptr align 16 @__const.main.pss_sig_scheme_list, i64 48, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #10
  %328 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %24, i32 0, i32 0
  store i8 6, ptr %328, align 8, !tbaa !15
  %329 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %24, i32 0, i32 1
  %330 = getelementptr inbounds [6 x ptr], ptr %23, i64 0, i64 0
  store ptr %330, ptr %329, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 64, ptr %25) #10
  call void @llvm.memset.p0.i64(ptr align 8 %25, i8 0, i64 64, i1 false)
  %331 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 0
  %332 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 1
  %333 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 2
  %334 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 3
  %335 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 4
  store ptr %24, ptr %335, align 8, !tbaa !26
  %336 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 5
  %337 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 6
  %338 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 7
  %339 = getelementptr inbounds %struct.s2n_security_policy, ptr %25, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 20, ptr %26) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 4 @__const.main.info, i64 20, i1 false)
  br label %340

340:                                              ; preds = %312
  %341 = load i32, ptr @test_count, align 4, !tbaa !5
  %342 = add nsw i32 %341, 1
  store i32 %342, ptr @test_count, align 4, !tbaa !5
  %343 = call i32 @s2n_security_policy_validate_cert_signature(ptr noundef %22, ptr noundef %26, i32 noundef 469762133)
  %344 = getelementptr inbounds %struct.s2n_result, ptr %27, i32 0, i32 0
  store i32 %343, ptr %344, align 4
  %345 = getelementptr inbounds %struct.s2n_result, ptr %27, i32 0, i32 0
  %346 = load i32, ptr %345, align 4
  %347 = call zeroext i1 @s2n_result_is_ok(i32 %346)
  br i1 %347, label %401, label %348

348:                                              ; preds = %340
  br label %349

349:                                              ; preds = %348
  br label %350

350:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  %351 = call ptr @__errno_location() #11
  %352 = load i32, ptr %351, align 4, !tbaa !5
  store i32 %352, ptr %28, align 4, !tbaa !5
  %353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %354 = call i32 @s2n_print_stacktrace(ptr noundef %353)
  %355 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %356 = trunc i8 %355 to i1
  br i1 %356, label %357, label %379

357:                                              ; preds = %350
  %358 = load ptr, ptr @stderr, align 8, !tbaa !9
  %359 = call i32 @fileno(ptr noundef %358) #10
  %360 = call i32 @isatty(i32 noundef %359) #10
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %362, label %379

362:                                              ; preds = %357
  %363 = load i32, ptr %28, align 4, !tbaa !5
  %364 = call ptr @__errno_location() #11
  store i32 %363, ptr %364, align 4, !tbaa !5
  %365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %366 = load i32, ptr @test_count, align 4, !tbaa !5
  %367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = call ptr @s2n_strerror(i32 noundef %368, ptr noundef @.str.4)
  %370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %371 = load i32, ptr %370, align 4, !tbaa !5
  %372 = call ptr @s2n_strerror_debug(i32 noundef %371, ptr noundef @.str.4)
  %373 = call ptr @__errno_location() #11
  %374 = load i32, ptr %373, align 4, !tbaa !5
  %375 = call ptr @strerror(i32 noundef %374) #10
  %376 = call ptr @__errno_location() #11
  %377 = load i32, ptr %376, align 4, !tbaa !5
  %378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %365, ptr noundef @.str.2, i32 noundef %366, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 131, ptr noundef %369, ptr noundef %372, ptr noundef %375, i32 noundef %377) #10
  br label %396

379:                                              ; preds = %357, %350
  %380 = load i32, ptr %28, align 4, !tbaa !5
  %381 = call ptr @__errno_location() #11
  store i32 %380, ptr %381, align 4, !tbaa !5
  %382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %383 = load i32, ptr @test_count, align 4, !tbaa !5
  %384 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %385 = load i32, ptr %384, align 4, !tbaa !5
  %386 = call ptr @s2n_strerror(i32 noundef %385, ptr noundef @.str.4)
  %387 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %388 = load i32, ptr %387, align 4, !tbaa !5
  %389 = call ptr @s2n_strerror_debug(i32 noundef %388, ptr noundef @.str.4)
  %390 = call ptr @__errno_location() #11
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = call ptr @strerror(i32 noundef %391) #10
  %393 = call ptr @__errno_location() #11
  %394 = load i32, ptr %393, align 4, !tbaa !5
  %395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %382, ptr noundef @.str.5, i32 noundef %383, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 131, ptr noundef %386, ptr noundef %389, ptr noundef %392, i32 noundef %394) #10
  br label %396

396:                                              ; preds = %379, %362
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %397

397:                                              ; preds = %396
  br label %398

398:                                              ; preds = %397
  call void @exit(i32 noundef 1) #12
  unreachable

399:                                              ; No predecessors!
  br label %400

400:                                              ; preds = %399
  br label %401

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

402:                                              ; preds = %401
  br label %403

403:                                              ; preds = %402
  call void @llvm.lifetime.end.p0(i64 20, ptr %26) #10
  call void @llvm.lifetime.start.p0(i64 20, ptr %29) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 4 @__const.main.info.9, i64 20, i1 false)
  br label %404

404:                                              ; preds = %403
  br label %405

405:                                              ; preds = %404
  br label %406

406:                                              ; preds = %405
  %407 = load i32, ptr @test_count, align 4, !tbaa !5
  %408 = add nsw i32 %407, 1
  store i32 %408, ptr @test_count, align 4, !tbaa !5
  %409 = call i32 @s2n_security_policy_validate_cert_signature(ptr noundef %22, ptr noundef %29, i32 noundef 469762133)
  %410 = getelementptr inbounds %struct.s2n_result, ptr %30, i32 0, i32 0
  store i32 %409, ptr %410, align 4
  %411 = getelementptr inbounds %struct.s2n_result, ptr %30, i32 0, i32 0
  %412 = load i32, ptr %411, align 4
  %413 = call zeroext i1 @s2n_result_is_error(i32 %412)
  br i1 %413, label %467, label %414

414:                                              ; preds = %406
  br label %415

415:                                              ; preds = %414
  br label %416

416:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  %417 = call ptr @__errno_location() #11
  %418 = load i32, ptr %417, align 4, !tbaa !5
  store i32 %418, ptr %31, align 4, !tbaa !5
  %419 = load ptr, ptr @stderr, align 8, !tbaa !9
  %420 = call i32 @s2n_print_stacktrace(ptr noundef %419)
  %421 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %422 = trunc i8 %421 to i1
  br i1 %422, label %423, label %445

423:                                              ; preds = %416
  %424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %425 = call i32 @fileno(ptr noundef %424) #10
  %426 = call i32 @isatty(i32 noundef %425) #10
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %445

428:                                              ; preds = %423
  %429 = load i32, ptr %31, align 4, !tbaa !5
  %430 = call ptr @__errno_location() #11
  store i32 %429, ptr %430, 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 @.str.4)
  %436 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %437 = load i32, ptr %436, align 4, !tbaa !5
  %438 = call ptr @s2n_strerror_debug(i32 noundef %437, ptr noundef @.str.4)
  %439 = call ptr @__errno_location() #11
  %440 = load i32, ptr %439, align 4, !tbaa !5
  %441 = call ptr @strerror(i32 noundef %440) #10
  %442 = call ptr @__errno_location() #11
  %443 = load i32, ptr %442, align 4, !tbaa !5
  %444 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %431, ptr noundef @.str.2, i32 noundef %432, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 144, ptr noundef %435, ptr noundef %438, ptr noundef %441, i32 noundef %443) #10
  br label %462

445:                                              ; preds = %423, %416
  %446 = load i32, ptr %31, align 4, !tbaa !5
  %447 = call ptr @__errno_location() #11
  store i32 %446, ptr %447, align 4, !tbaa !5
  %448 = load ptr, ptr @stderr, align 8, !tbaa !9
  %449 = load i32, ptr @test_count, align 4, !tbaa !5
  %450 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %451 = load i32, ptr %450, align 4, !tbaa !5
  %452 = call ptr @s2n_strerror(i32 noundef %451, ptr noundef @.str.4)
  %453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %454 = load i32, ptr %453, align 4, !tbaa !5
  %455 = call ptr @s2n_strerror_debug(i32 noundef %454, ptr noundef @.str.4)
  %456 = call ptr @__errno_location() #11
  %457 = load i32, ptr %456, align 4, !tbaa !5
  %458 = call ptr @strerror(i32 noundef %457) #10
  %459 = call ptr @__errno_location() #11
  %460 = load i32, ptr %459, align 4, !tbaa !5
  %461 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %448, ptr noundef @.str.5, i32 noundef %449, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 144, ptr noundef %452, ptr noundef %455, ptr noundef %458, i32 noundef %460) #10
  br label %462

462:                                              ; preds = %445, %428
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %463

463:                                              ; preds = %462
  br label %464

464:                                              ; preds = %463
  call void @exit(i32 noundef 1) #12
  unreachable

465:                                              ; No predecessors!
  br label %466

466:                                              ; preds = %465
  br label %467

467:                                              ; preds = %466, %406
  br label %468

468:                                              ; preds = %467
  br label %469

469:                                              ; preds = %468
  br label %470

470:                                              ; preds = %469
  %471 = load i32, ptr @test_count, align 4, !tbaa !5
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr @test_count, align 4, !tbaa !5
  %473 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %474 = load i32, ptr %473, align 4, !tbaa !5
  %475 = icmp eq i32 %474, 469762133
  br i1 %475, label %529, label %476

476:                                              ; preds = %470
  br label %477

477:                                              ; preds = %476
  br label %478

478:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  %479 = call ptr @__errno_location() #11
  %480 = load i32, ptr %479, align 4, !tbaa !5
  store i32 %480, ptr %32, align 4, !tbaa !5
  %481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %482 = call i32 @s2n_print_stacktrace(ptr noundef %481)
  %483 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %484 = trunc i8 %483 to i1
  br i1 %484, label %485, label %507

485:                                              ; preds = %478
  %486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %487 = call i32 @fileno(ptr noundef %486) #10
  %488 = call i32 @isatty(i32 noundef %487) #10
  %489 = icmp ne i32 %488, 0
  br i1 %489, label %490, label %507

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

507:                                              ; preds = %485, %478
  %508 = load i32, ptr %32, align 4, !tbaa !5
  %509 = call ptr @__errno_location() #11
  store i32 %508, ptr %509, align 4, !tbaa !5
  %510 = load ptr, ptr @stderr, align 8, !tbaa !9
  %511 = load i32, ptr @test_count, align 4, !tbaa !5
  %512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %513 = load i32, ptr %512, align 4, !tbaa !5
  %514 = call ptr @s2n_strerror(i32 noundef %513, ptr noundef @.str.4)
  %515 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %516 = load i32, ptr %515, align 4, !tbaa !5
  %517 = call ptr @s2n_strerror_debug(i32 noundef %516, ptr noundef @.str.4)
  %518 = call ptr @__errno_location() #11
  %519 = load i32, ptr %518, align 4, !tbaa !5
  %520 = call ptr @strerror(i32 noundef %519) #10
  %521 = call ptr @__errno_location() #11
  %522 = load i32, ptr %521, align 4, !tbaa !5
  %523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %510, ptr noundef @.str.5, i32 noundef %511, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 144, ptr noundef %514, ptr noundef %517, ptr noundef %520, i32 noundef %522) #10
  br label %524

524:                                              ; preds = %507, %490
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %525

525:                                              ; preds = %524
  br label %526

526:                                              ; preds = %525
  call void @exit(i32 noundef 1) #12
  unreachable

527:                                              ; No predecessors!
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528, %470
  br label %530

530:                                              ; preds = %529
  br label %531

531:                                              ; preds = %530
  br label %532

532:                                              ; preds = %531
  %533 = load i32, ptr @test_count, align 4, !tbaa !5
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr @test_count, align 4, !tbaa !5
  %535 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = call ptr @s2n_strerror_debug(i32 noundef %536, ptr noundef @.str.4)
  %538 = icmp eq ptr %537, null
  br i1 %538, label %539, label %592

539:                                              ; preds = %532
  br label %540

540:                                              ; preds = %539
  br label %541

541:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  %542 = call ptr @__errno_location() #11
  %543 = load i32, ptr %542, align 4, !tbaa !5
  store i32 %543, ptr %33, align 4, !tbaa !5
  %544 = load ptr, ptr @stderr, align 8, !tbaa !9
  %545 = call i32 @s2n_print_stacktrace(ptr noundef %544)
  %546 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %547 = trunc i8 %546 to i1
  br i1 %547, label %548, label %570

548:                                              ; preds = %541
  %549 = load ptr, ptr @stderr, align 8, !tbaa !9
  %550 = call i32 @fileno(ptr noundef %549) #10
  %551 = call i32 @isatty(i32 noundef %550) #10
  %552 = icmp ne i32 %551, 0
  br i1 %552, label %553, label %570

553:                                              ; preds = %548
  %554 = load i32, ptr %33, align 4, !tbaa !5
  %555 = call ptr @__errno_location() #11
  store i32 %554, ptr %555, align 4, !tbaa !5
  %556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %557 = load i32, ptr @test_count, align 4, !tbaa !5
  %558 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %559 = load i32, ptr %558, align 4, !tbaa !5
  %560 = call ptr @s2n_strerror(i32 noundef %559, ptr noundef @.str.4)
  %561 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %562 = load i32, ptr %561, align 4, !tbaa !5
  %563 = call ptr @s2n_strerror_debug(i32 noundef %562, ptr noundef @.str.4)
  %564 = call ptr @__errno_location() #11
  %565 = load i32, ptr %564, align 4, !tbaa !5
  %566 = call ptr @strerror(i32 noundef %565) #10
  %567 = call ptr @__errno_location() #11
  %568 = load i32, ptr %567, align 4, !tbaa !5
  %569 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %556, ptr noundef @.str.2, i32 noundef %557, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 144, ptr noundef %560, ptr noundef %563, ptr noundef %566, i32 noundef %568) #10
  br label %587

570:                                              ; preds = %548, %541
  %571 = load i32, ptr %33, align 4, !tbaa !5
  %572 = call ptr @__errno_location() #11
  store i32 %571, ptr %572, align 4, !tbaa !5
  %573 = load ptr, ptr @stderr, align 8, !tbaa !9
  %574 = load i32, ptr @test_count, align 4, !tbaa !5
  %575 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %576 = load i32, ptr %575, align 4, !tbaa !5
  %577 = call ptr @s2n_strerror(i32 noundef %576, ptr noundef @.str.4)
  %578 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %579 = load i32, ptr %578, align 4, !tbaa !5
  %580 = call ptr @s2n_strerror_debug(i32 noundef %579, ptr noundef @.str.4)
  %581 = call ptr @__errno_location() #11
  %582 = load i32, ptr %581, align 4, !tbaa !5
  %583 = call ptr @strerror(i32 noundef %582) #10
  %584 = call ptr @__errno_location() #11
  %585 = load i32, ptr %584, align 4, !tbaa !5
  %586 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %573, ptr noundef @.str.5, i32 noundef %574, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 144, ptr noundef %577, ptr noundef %580, ptr noundef %583, i32 noundef %585) #10
  br label %587

587:                                              ; preds = %570, %553
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %588

588:                                              ; preds = %587
  br label %589

589:                                              ; preds = %588
  call void @exit(i32 noundef 1) #12
  unreachable

590:                                              ; No predecessors!
  br label %591

591:                                              ; preds = %590
  br label %592

592:                                              ; preds = %591, %532
  br label %593

593:                                              ; preds = %592
  br label %594

594:                                              ; preds = %593
  br label %595

595:                                              ; preds = %594
  br label %596

596:                                              ; preds = %595
  br label %597

597:                                              ; preds = %596
  %598 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %598, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %599 = call ptr @__errno_location() #11
  store i32 0, ptr %599, align 4, !tbaa !5
  br label %600

600:                                              ; preds = %597
  br label %601

601:                                              ; preds = %600
  br label %602

602:                                              ; preds = %601
  br label %603

603:                                              ; preds = %602
  call void @llvm.lifetime.end.p0(i64 20, ptr %29) #10
  call void @llvm.lifetime.start.p0(i64 20, ptr %34) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 4 @__const.main.info.13, i64 20, i1 false)
  br label %604

604:                                              ; preds = %603
  %605 = load i32, ptr @test_count, align 4, !tbaa !5
  %606 = add nsw i32 %605, 1
  store i32 %606, ptr @test_count, align 4, !tbaa !5
  %607 = call i32 @s2n_security_policy_validate_cert_signature(ptr noundef %25, ptr noundef %34, i32 noundef 469762133)
  %608 = getelementptr inbounds %struct.s2n_result, ptr %35, i32 0, i32 0
  store i32 %607, ptr %608, align 4
  %609 = getelementptr inbounds %struct.s2n_result, ptr %35, i32 0, i32 0
  %610 = load i32, ptr %609, align 4
  %611 = call zeroext i1 @s2n_result_is_ok(i32 %610)
  br i1 %611, label %665, label %612

612:                                              ; preds = %604
  br label %613

613:                                              ; preds = %612
  br label %614

614:                                              ; preds = %613
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  %615 = call ptr @__errno_location() #11
  %616 = load i32, ptr %615, align 4, !tbaa !5
  store i32 %616, ptr %36, align 4, !tbaa !5
  %617 = load ptr, ptr @stderr, align 8, !tbaa !9
  %618 = call i32 @s2n_print_stacktrace(ptr noundef %617)
  %619 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %620 = trunc i8 %619 to i1
  br i1 %620, label %621, label %643

621:                                              ; preds = %614
  %622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %623 = call i32 @fileno(ptr noundef %622) #10
  %624 = call i32 @isatty(i32 noundef %623) #10
  %625 = icmp ne i32 %624, 0
  br i1 %625, label %626, label %643

626:                                              ; preds = %621
  %627 = load i32, ptr %36, align 4, !tbaa !5
  %628 = call ptr @__errno_location() #11
  store i32 %627, ptr %628, align 4, !tbaa !5
  %629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %630 = load i32, ptr @test_count, align 4, !tbaa !5
  %631 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %632 = load i32, ptr %631, align 4, !tbaa !5
  %633 = call ptr @s2n_strerror(i32 noundef %632, ptr noundef @.str.4)
  %634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %635 = load i32, ptr %634, align 4, !tbaa !5
  %636 = call ptr @s2n_strerror_debug(i32 noundef %635, ptr noundef @.str.4)
  %637 = call ptr @__errno_location() #11
  %638 = load i32, ptr %637, align 4, !tbaa !5
  %639 = call ptr @strerror(i32 noundef %638) #10
  %640 = call ptr @__errno_location() #11
  %641 = load i32, ptr %640, align 4, !tbaa !5
  %642 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %629, ptr noundef @.str.2, i32 noundef %630, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 156, ptr noundef %633, ptr noundef %636, ptr noundef %639, i32 noundef %641) #10
  br label %660

643:                                              ; preds = %621, %614
  %644 = load i32, ptr %36, align 4, !tbaa !5
  %645 = call ptr @__errno_location() #11
  store i32 %644, ptr %645, align 4, !tbaa !5
  %646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %647 = load i32, ptr @test_count, align 4, !tbaa !5
  %648 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %649 = load i32, ptr %648, align 4, !tbaa !5
  %650 = call ptr @s2n_strerror(i32 noundef %649, ptr noundef @.str.4)
  %651 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %652 = load i32, ptr %651, align 4, !tbaa !5
  %653 = call ptr @s2n_strerror_debug(i32 noundef %652, ptr noundef @.str.4)
  %654 = call ptr @__errno_location() #11
  %655 = load i32, ptr %654, align 4, !tbaa !5
  %656 = call ptr @strerror(i32 noundef %655) #10
  %657 = call ptr @__errno_location() #11
  %658 = load i32, ptr %657, align 4, !tbaa !5
  %659 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %646, ptr noundef @.str.5, i32 noundef %647, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 156, ptr noundef %650, ptr noundef %653, ptr noundef %656, i32 noundef %658) #10
  br label %660

660:                                              ; preds = %643, %626
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %661

661:                                              ; preds = %660
  br label %662

662:                                              ; preds = %661
  call void @exit(i32 noundef 1) #12
  unreachable

663:                                              ; No predecessors!
  br label %664

664:                                              ; preds = %663
  br label %665

665:                                              ; preds = %664, %604
  br label %666

666:                                              ; preds = %665
  br label %667

667:                                              ; preds = %666
  call void @llvm.lifetime.end.p0(i64 20, ptr %34) #10
  call void @llvm.lifetime.start.p0(i64 20, ptr %37) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 @__const.main.info.15, i64 20, i1 false)
  br label %668

668:                                              ; preds = %667
  %669 = load i32, ptr @test_count, align 4, !tbaa !5
  %670 = add nsw i32 %669, 1
  store i32 %670, ptr @test_count, align 4, !tbaa !5
  %671 = call i32 @s2n_security_policy_validate_cert_key(ptr noundef %22, ptr noundef %37, i32 noundef 469762133)
  %672 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  store i32 %671, ptr %672, align 4
  %673 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  %674 = load i32, ptr %673, align 4
  %675 = call zeroext i1 @s2n_result_is_ok(i32 %674)
  br i1 %675, label %729, label %676

676:                                              ; preds = %668
  br label %677

677:                                              ; preds = %676
  br label %678

678:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %679 = call ptr @__errno_location() #11
  %680 = load i32, ptr %679, align 4, !tbaa !5
  store i32 %680, ptr %39, align 4, !tbaa !5
  %681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %682 = call i32 @s2n_print_stacktrace(ptr noundef %681)
  %683 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %684 = trunc i8 %683 to i1
  br i1 %684, label %685, label %707

685:                                              ; preds = %678
  %686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %687 = call i32 @fileno(ptr noundef %686) #10
  %688 = call i32 @isatty(i32 noundef %687) #10
  %689 = icmp ne i32 %688, 0
  br i1 %689, label %690, label %707

690:                                              ; preds = %685
  %691 = load i32, ptr %39, align 4, !tbaa !5
  %692 = call ptr @__errno_location() #11
  store i32 %691, ptr %692, align 4, !tbaa !5
  %693 = load ptr, ptr @stderr, align 8, !tbaa !9
  %694 = load i32, ptr @test_count, align 4, !tbaa !5
  %695 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %696 = load i32, ptr %695, align 4, !tbaa !5
  %697 = call ptr @s2n_strerror(i32 noundef %696, ptr noundef @.str.4)
  %698 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %699 = load i32, ptr %698, align 4, !tbaa !5
  %700 = call ptr @s2n_strerror_debug(i32 noundef %699, ptr noundef @.str.4)
  %701 = call ptr @__errno_location() #11
  %702 = load i32, ptr %701, align 4, !tbaa !5
  %703 = call ptr @strerror(i32 noundef %702) #10
  %704 = call ptr @__errno_location() #11
  %705 = load i32, ptr %704, align 4, !tbaa !5
  %706 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %693, ptr noundef @.str.2, i32 noundef %694, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 170, ptr noundef %697, ptr noundef %700, ptr noundef %703, i32 noundef %705) #10
  br label %724

707:                                              ; preds = %685, %678
  %708 = load i32, ptr %39, align 4, !tbaa !5
  %709 = call ptr @__errno_location() #11
  store i32 %708, ptr %709, align 4, !tbaa !5
  %710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %711 = load i32, ptr @test_count, align 4, !tbaa !5
  %712 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %713 = load i32, ptr %712, align 4, !tbaa !5
  %714 = call ptr @s2n_strerror(i32 noundef %713, ptr noundef @.str.4)
  %715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %716 = load i32, ptr %715, align 4, !tbaa !5
  %717 = call ptr @s2n_strerror_debug(i32 noundef %716, ptr noundef @.str.4)
  %718 = call ptr @__errno_location() #11
  %719 = load i32, ptr %718, align 4, !tbaa !5
  %720 = call ptr @strerror(i32 noundef %719) #10
  %721 = call ptr @__errno_location() #11
  %722 = load i32, ptr %721, align 4, !tbaa !5
  %723 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %710, ptr noundef @.str.5, i32 noundef %711, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 170, ptr noundef %714, ptr noundef %717, ptr noundef %720, i32 noundef %722) #10
  br label %724

724:                                              ; preds = %707, %690
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %725

725:                                              ; preds = %724
  br label %726

726:                                              ; preds = %725
  call void @exit(i32 noundef 1) #12
  unreachable

727:                                              ; No predecessors!
  br label %728

728:                                              ; preds = %727
  br label %729

729:                                              ; preds = %728, %668
  br label %730

730:                                              ; preds = %729
  br label %731

731:                                              ; preds = %730
  call void @llvm.lifetime.end.p0(i64 20, ptr %37) #10
  call void @llvm.lifetime.start.p0(i64 20, ptr %40) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 4 @__const.main.info.17, i64 20, i1 false)
  br label %732

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  %735 = load i32, ptr @test_count, align 4, !tbaa !5
  %736 = add nsw i32 %735, 1
  store i32 %736, ptr @test_count, align 4, !tbaa !5
  %737 = call i32 @s2n_security_policy_validate_cert_key(ptr noundef %22, ptr noundef %40, i32 noundef 469762133)
  %738 = getelementptr inbounds %struct.s2n_result, ptr %41, i32 0, i32 0
  store i32 %737, ptr %738, align 4
  %739 = getelementptr inbounds %struct.s2n_result, ptr %41, i32 0, i32 0
  %740 = load i32, ptr %739, align 4
  %741 = call zeroext i1 @s2n_result_is_error(i32 %740)
  br i1 %741, label %795, label %742

742:                                              ; preds = %734
  br label %743

743:                                              ; preds = %742
  br label %744

744:                                              ; preds = %743
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  %745 = call ptr @__errno_location() #11
  %746 = load i32, ptr %745, align 4, !tbaa !5
  store i32 %746, ptr %42, align 4, !tbaa !5
  %747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %748 = call i32 @s2n_print_stacktrace(ptr noundef %747)
  %749 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %750 = trunc i8 %749 to i1
  br i1 %750, label %751, label %773

751:                                              ; preds = %744
  %752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %753 = call i32 @fileno(ptr noundef %752) #10
  %754 = call i32 @isatty(i32 noundef %753) #10
  %755 = icmp ne i32 %754, 0
  br i1 %755, label %756, label %773

756:                                              ; preds = %751
  %757 = load i32, ptr %42, align 4, !tbaa !5
  %758 = call ptr @__errno_location() #11
  store i32 %757, ptr %758, 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 @.str.4)
  %764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %765 = load i32, ptr %764, align 4, !tbaa !5
  %766 = call ptr @s2n_strerror_debug(i32 noundef %765, ptr noundef @.str.4)
  %767 = call ptr @__errno_location() #11
  %768 = load i32, ptr %767, align 4, !tbaa !5
  %769 = call ptr @strerror(i32 noundef %768) #10
  %770 = call ptr @__errno_location() #11
  %771 = load i32, ptr %770, align 4, !tbaa !5
  %772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %759, ptr noundef @.str.2, i32 noundef %760, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 182, ptr noundef %763, ptr noundef %766, ptr noundef %769, i32 noundef %771) #10
  br label %790

773:                                              ; preds = %751, %744
  %774 = load i32, ptr %42, align 4, !tbaa !5
  %775 = call ptr @__errno_location() #11
  store i32 %774, ptr %775, align 4, !tbaa !5
  %776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %777 = load i32, ptr @test_count, align 4, !tbaa !5
  %778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %779 = load i32, ptr %778, align 4, !tbaa !5
  %780 = call ptr @s2n_strerror(i32 noundef %779, ptr noundef @.str.4)
  %781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %782 = load i32, ptr %781, align 4, !tbaa !5
  %783 = call ptr @s2n_strerror_debug(i32 noundef %782, ptr noundef @.str.4)
  %784 = call ptr @__errno_location() #11
  %785 = load i32, ptr %784, align 4, !tbaa !5
  %786 = call ptr @strerror(i32 noundef %785) #10
  %787 = call ptr @__errno_location() #11
  %788 = load i32, ptr %787, align 4, !tbaa !5
  %789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %776, ptr noundef @.str.5, i32 noundef %777, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 182, ptr noundef %780, ptr noundef %783, ptr noundef %786, i32 noundef %788) #10
  br label %790

790:                                              ; preds = %773, %756
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %791

791:                                              ; preds = %790
  br label %792

792:                                              ; preds = %791
  call void @exit(i32 noundef 1) #12
  unreachable

793:                                              ; No predecessors!
  br label %794

794:                                              ; preds = %793
  br label %795

795:                                              ; preds = %794, %734
  br label %796

796:                                              ; preds = %795
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797
  %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 align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %802 = load i32, ptr %801, align 4, !tbaa !5
  %803 = icmp eq i32 %802, 469762133
  br i1 %803, label %857, label %804

804:                                              ; preds = %798
  br label %805

805:                                              ; preds = %804
  br label %806

806:                                              ; preds = %805
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %807 = call ptr @__errno_location() #11
  %808 = load i32, ptr %807, align 4, !tbaa !5
  store i32 %808, ptr %43, align 4, !tbaa !5
  %809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %810 = call i32 @s2n_print_stacktrace(ptr noundef %809)
  %811 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %812 = trunc i8 %811 to i1
  br i1 %812, label %813, label %835

813:                                              ; preds = %806
  %814 = load ptr, ptr @stderr, align 8, !tbaa !9
  %815 = call i32 @fileno(ptr noundef %814) #10
  %816 = call i32 @isatty(i32 noundef %815) #10
  %817 = icmp ne i32 %816, 0
  br i1 %817, label %818, label %835

818:                                              ; preds = %813
  %819 = load i32, ptr %43, align 4, !tbaa !5
  %820 = call ptr @__errno_location() #11
  store i32 %819, ptr %820, align 4, !tbaa !5
  %821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %822 = load i32, ptr @test_count, align 4, !tbaa !5
  %823 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %824 = load i32, ptr %823, align 4, !tbaa !5
  %825 = call ptr @s2n_strerror(i32 noundef %824, ptr noundef @.str.4)
  %826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %827 = load i32, ptr %826, align 4, !tbaa !5
  %828 = call ptr @s2n_strerror_debug(i32 noundef %827, ptr noundef @.str.4)
  %829 = call ptr @__errno_location() #11
  %830 = load i32, ptr %829, align 4, !tbaa !5
  %831 = call ptr @strerror(i32 noundef %830) #10
  %832 = call ptr @__errno_location() #11
  %833 = load i32, ptr %832, align 4, !tbaa !5
  %834 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %821, ptr noundef @.str.2, i32 noundef %822, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 182, ptr noundef %825, ptr noundef %828, ptr noundef %831, i32 noundef %833) #10
  br label %852

835:                                              ; preds = %813, %806
  %836 = load i32, ptr %43, align 4, !tbaa !5
  %837 = call ptr @__errno_location() #11
  store i32 %836, ptr %837, align 4, !tbaa !5
  %838 = load ptr, ptr @stderr, align 8, !tbaa !9
  %839 = load i32, ptr @test_count, align 4, !tbaa !5
  %840 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %841 = load i32, ptr %840, align 4, !tbaa !5
  %842 = call ptr @s2n_strerror(i32 noundef %841, ptr noundef @.str.4)
  %843 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %844 = load i32, ptr %843, align 4, !tbaa !5
  %845 = call ptr @s2n_strerror_debug(i32 noundef %844, ptr noundef @.str.4)
  %846 = call ptr @__errno_location() #11
  %847 = load i32, ptr %846, align 4, !tbaa !5
  %848 = call ptr @strerror(i32 noundef %847) #10
  %849 = call ptr @__errno_location() #11
  %850 = load i32, ptr %849, align 4, !tbaa !5
  %851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %838, ptr noundef @.str.5, i32 noundef %839, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 182, ptr noundef %842, ptr noundef %845, ptr noundef %848, i32 noundef %850) #10
  br label %852

852:                                              ; preds = %835, %818
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %853

853:                                              ; preds = %852
  br label %854

854:                                              ; preds = %853
  call void @exit(i32 noundef 1) #12
  unreachable

855:                                              ; No predecessors!
  br label %856

856:                                              ; preds = %855
  br label %857

857:                                              ; preds = %856, %798
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858
  br label %860

860:                                              ; preds = %859
  %861 = load i32, ptr @test_count, align 4, !tbaa !5
  %862 = add nsw i32 %861, 1
  store i32 %862, ptr @test_count, align 4, !tbaa !5
  %863 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %864 = load i32, ptr %863, align 4, !tbaa !5
  %865 = call ptr @s2n_strerror_debug(i32 noundef %864, ptr noundef @.str.4)
  %866 = icmp eq ptr %865, null
  br i1 %866, label %867, label %920

867:                                              ; preds = %860
  br label %868

868:                                              ; preds = %867
  br label %869

869:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  %870 = call ptr @__errno_location() #11
  %871 = load i32, ptr %870, align 4, !tbaa !5
  store i32 %871, ptr %44, align 4, !tbaa !5
  %872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %873 = call i32 @s2n_print_stacktrace(ptr noundef %872)
  %874 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %875 = trunc i8 %874 to i1
  br i1 %875, label %876, label %898

876:                                              ; preds = %869
  %877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %878 = call i32 @fileno(ptr noundef %877) #10
  %879 = call i32 @isatty(i32 noundef %878) #10
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %881, label %898

881:                                              ; preds = %876
  %882 = load i32, ptr %44, align 4, !tbaa !5
  %883 = call ptr @__errno_location() #11
  store i32 %882, ptr %883, align 4, !tbaa !5
  %884 = load ptr, ptr @stderr, align 8, !tbaa !9
  %885 = load i32, ptr @test_count, align 4, !tbaa !5
  %886 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %887 = load i32, ptr %886, align 4, !tbaa !5
  %888 = call ptr @s2n_strerror(i32 noundef %887, ptr noundef @.str.4)
  %889 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %890 = load i32, ptr %889, align 4, !tbaa !5
  %891 = call ptr @s2n_strerror_debug(i32 noundef %890, ptr noundef @.str.4)
  %892 = call ptr @__errno_location() #11
  %893 = load i32, ptr %892, align 4, !tbaa !5
  %894 = call ptr @strerror(i32 noundef %893) #10
  %895 = call ptr @__errno_location() #11
  %896 = load i32, ptr %895, align 4, !tbaa !5
  %897 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %884, ptr noundef @.str.2, i32 noundef %885, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 182, ptr noundef %888, ptr noundef %891, ptr noundef %894, i32 noundef %896) #10
  br label %915

898:                                              ; preds = %876, %869
  %899 = load i32, ptr %44, align 4, !tbaa !5
  %900 = call ptr @__errno_location() #11
  store i32 %899, ptr %900, align 4, !tbaa !5
  %901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %902 = load i32, ptr @test_count, align 4, !tbaa !5
  %903 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %904 = load i32, ptr %903, align 4, !tbaa !5
  %905 = call ptr @s2n_strerror(i32 noundef %904, ptr noundef @.str.4)
  %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_debug(i32 noundef %907, ptr noundef @.str.4)
  %909 = call ptr @__errno_location() #11
  %910 = load i32, ptr %909, align 4, !tbaa !5
  %911 = call ptr @strerror(i32 noundef %910) #10
  %912 = call ptr @__errno_location() #11
  %913 = load i32, ptr %912, align 4, !tbaa !5
  %914 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %901, ptr noundef @.str.5, i32 noundef %902, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 182, ptr noundef %905, ptr noundef %908, ptr noundef %911, i32 noundef %913) #10
  br label %915

915:                                              ; preds = %898, %881
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %916

916:                                              ; preds = %915
  br label %917

917:                                              ; preds = %916
  call void @exit(i32 noundef 1) #12
  unreachable

918:                                              ; No predecessors!
  br label %919

919:                                              ; preds = %918
  br label %920

920:                                              ; preds = %919, %860
  br label %921

921:                                              ; preds = %920
  br label %922

922:                                              ; preds = %921
  br label %923

923:                                              ; preds = %922
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924
  %926 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %926, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %927 = call ptr @__errno_location() #11
  store i32 0, ptr %927, align 4, !tbaa !5
  br label %928

928:                                              ; preds = %925
  br label %929

929:                                              ; preds = %928
  br label %930

930:                                              ; preds = %929
  br label %931

931:                                              ; preds = %930
  call void @llvm.lifetime.end.p0(i64 20, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 336, ptr %45) #10
  call void @llvm.memset.p0.i64(ptr align 16 %45, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #10
  call void @llvm.memset.p0.i64(ptr align 8 %46, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr %47) #10
  call void @llvm.memset.p0.i64(ptr align 8 %47, i8 0, i64 88, i1 false)
  br label %932

932:                                              ; preds = %931
  %933 = load i32, ptr @test_count, align 4, !tbaa !5
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr @test_count, align 4, !tbaa !5
  %935 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %45, i64 0, i64 0
  %936 = call i32 @s2n_test_construct_cert_chain(ptr noundef %935, i64 noundef 3, ptr noundef %46, ptr noundef %47, ptr noundef %17)
  %937 = getelementptr inbounds %struct.s2n_result, ptr %48, i32 0, i32 0
  store i32 %936, ptr %937, align 4
  %938 = getelementptr inbounds %struct.s2n_result, ptr %48, i32 0, i32 0
  %939 = load i32, ptr %938, align 4
  %940 = call zeroext i1 @s2n_result_is_ok(i32 %939)
  br i1 %940, label %994, label %941

941:                                              ; preds = %932
  br label %942

942:                                              ; preds = %941
  br label %943

943:                                              ; preds = %942
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  %944 = call ptr @__errno_location() #11
  %945 = load i32, ptr %944, align 4, !tbaa !5
  store i32 %945, ptr %49, align 4, !tbaa !5
  %946 = load ptr, ptr @stderr, align 8, !tbaa !9
  %947 = call i32 @s2n_print_stacktrace(ptr noundef %946)
  %948 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %949 = trunc i8 %948 to i1
  br i1 %949, label %950, label %972

950:                                              ; preds = %943
  %951 = load ptr, ptr @stderr, align 8, !tbaa !9
  %952 = call i32 @fileno(ptr noundef %951) #10
  %953 = call i32 @isatty(i32 noundef %952) #10
  %954 = icmp ne i32 %953, 0
  br i1 %954, label %955, label %972

955:                                              ; preds = %950
  %956 = load i32, ptr %49, align 4, !tbaa !5
  %957 = call ptr @__errno_location() #11
  store i32 %956, ptr %957, align 4, !tbaa !5
  %958 = load ptr, ptr @stderr, align 8, !tbaa !9
  %959 = load i32, ptr @test_count, align 4, !tbaa !5
  %960 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %961 = load i32, ptr %960, align 4, !tbaa !5
  %962 = call ptr @s2n_strerror(i32 noundef %961, ptr noundef @.str.4)
  %963 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %964 = load i32, ptr %963, align 4, !tbaa !5
  %965 = call ptr @s2n_strerror_debug(i32 noundef %964, ptr noundef @.str.4)
  %966 = call ptr @__errno_location() #11
  %967 = load i32, ptr %966, align 4, !tbaa !5
  %968 = call ptr @strerror(i32 noundef %967) #10
  %969 = call ptr @__errno_location() #11
  %970 = load i32, ptr %969, align 4, !tbaa !5
  %971 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %958, ptr noundef @.str.2, i32 noundef %959, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 193, ptr noundef %962, ptr noundef %965, ptr noundef %968, i32 noundef %970) #10
  br label %989

972:                                              ; preds = %950, %943
  %973 = load i32, ptr %49, align 4, !tbaa !5
  %974 = call ptr @__errno_location() #11
  store i32 %973, ptr %974, align 4, !tbaa !5
  %975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %976 = load i32, ptr @test_count, align 4, !tbaa !5
  %977 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %978 = load i32, ptr %977, align 4, !tbaa !5
  %979 = call ptr @s2n_strerror(i32 noundef %978, ptr noundef @.str.4)
  %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_debug(i32 noundef %981, ptr noundef @.str.4)
  %983 = call ptr @__errno_location() #11
  %984 = load i32, ptr %983, align 4, !tbaa !5
  %985 = call ptr @strerror(i32 noundef %984) #10
  %986 = call ptr @__errno_location() #11
  %987 = load i32, ptr %986, align 4, !tbaa !5
  %988 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %975, ptr noundef @.str.5, i32 noundef %976, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 193, ptr noundef %979, ptr noundef %982, ptr noundef %985, i32 noundef %987) #10
  br label %989

989:                                              ; preds = %972, %955
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %990

990:                                              ; preds = %989
  br label %991

991:                                              ; preds = %990
  call void @exit(i32 noundef 1) #12
  unreachable

992:                                              ; No predecessors!
  br label %993

993:                                              ; preds = %992
  br label %994

994:                                              ; preds = %993, %932
  br label %995

995:                                              ; preds = %994
  br label %996

996:                                              ; preds = %995
  br label %997

997:                                              ; preds = %996
  %998 = load i32, ptr @test_count, align 4, !tbaa !5
  %999 = add nsw i32 %998, 1
  store i32 %999, ptr @test_count, align 4, !tbaa !5
  %1000 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef %22, ptr noundef %47)
  %1001 = getelementptr inbounds %struct.s2n_result, ptr %50, i32 0, i32 0
  store i32 %1000, ptr %1001, align 4
  %1002 = getelementptr inbounds %struct.s2n_result, ptr %50, i32 0, i32 0
  %1003 = load i32, ptr %1002, align 4
  %1004 = call zeroext i1 @s2n_result_is_ok(i32 %1003)
  br i1 %1004, label %1058, label %1005

1005:                                             ; preds = %997
  br label %1006

1006:                                             ; preds = %1005
  br label %1007

1007:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %1008 = call ptr @__errno_location() #11
  %1009 = load i32, ptr %1008, align 4, !tbaa !5
  store i32 %1009, ptr %51, align 4, !tbaa !5
  %1010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1011 = call i32 @s2n_print_stacktrace(ptr noundef %1010)
  %1012 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1013 = trunc i8 %1012 to i1
  br i1 %1013, label %1014, label %1036

1014:                                             ; preds = %1007
  %1015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1016 = call i32 @fileno(ptr noundef %1015) #10
  %1017 = call i32 @isatty(i32 noundef %1016) #10
  %1018 = icmp ne i32 %1017, 0
  br i1 %1018, label %1019, label %1036

1019:                                             ; preds = %1014
  %1020 = load i32, ptr %51, align 4, !tbaa !5
  %1021 = call ptr @__errno_location() #11
  store i32 %1020, ptr %1021, align 4, !tbaa !5
  %1022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1023 = load i32, ptr @test_count, align 4, !tbaa !5
  %1024 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1025 = load i32, ptr %1024, align 4, !tbaa !5
  %1026 = call ptr @s2n_strerror(i32 noundef %1025, ptr noundef @.str.4)
  %1027 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1028 = load i32, ptr %1027, align 4, !tbaa !5
  %1029 = call ptr @s2n_strerror_debug(i32 noundef %1028, ptr noundef @.str.4)
  %1030 = call ptr @__errno_location() #11
  %1031 = load i32, ptr %1030, align 4, !tbaa !5
  %1032 = call ptr @strerror(i32 noundef %1031) #10
  %1033 = call ptr @__errno_location() #11
  %1034 = load i32, ptr %1033, align 4, !tbaa !5
  %1035 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1022, ptr noundef @.str.2, i32 noundef %1023, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 194, ptr noundef %1026, ptr noundef %1029, ptr noundef %1032, i32 noundef %1034) #10
  br label %1053

1036:                                             ; preds = %1014, %1007
  %1037 = load i32, ptr %51, align 4, !tbaa !5
  %1038 = call ptr @__errno_location() #11
  store i32 %1037, ptr %1038, align 4, !tbaa !5
  %1039 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1040 = load i32, ptr @test_count, align 4, !tbaa !5
  %1041 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1042 = load i32, ptr %1041, align 4, !tbaa !5
  %1043 = call ptr @s2n_strerror(i32 noundef %1042, ptr noundef @.str.4)
  %1044 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1045 = load i32, ptr %1044, align 4, !tbaa !5
  %1046 = call ptr @s2n_strerror_debug(i32 noundef %1045, ptr noundef @.str.4)
  %1047 = call ptr @__errno_location() #11
  %1048 = load i32, ptr %1047, align 4, !tbaa !5
  %1049 = call ptr @strerror(i32 noundef %1048) #10
  %1050 = call ptr @__errno_location() #11
  %1051 = load i32, ptr %1050, align 4, !tbaa !5
  %1052 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1039, ptr noundef @.str.5, i32 noundef %1040, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 194, ptr noundef %1043, ptr noundef %1046, ptr noundef %1049, i32 noundef %1051) #10
  br label %1053

1053:                                             ; preds = %1036, %1019
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %1054

1054:                                             ; preds = %1053
  br label %1055

1055:                                             ; preds = %1054
  call void @exit(i32 noundef 1) #12
  unreachable

1056:                                             ; No predecessors!
  br label %1057

1057:                                             ; preds = %1056
  br label %1058

1058:                                             ; preds = %1057, %997
  br label %1059

1059:                                             ; preds = %1058
  br label %1060

1060:                                             ; preds = %1059
  call void @llvm.lifetime.end.p0(i64 88, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 336, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  store i64 0, ptr %52, align 8, !tbaa !30
  br label %1061

1061:                                             ; preds = %2015, %1060
  %1062 = load i64, ptr %52, align 8, !tbaa !30
  %1063 = icmp ult i64 %1062, 3
  br i1 %1063, label %1065, label %1064

1064:                                             ; preds = %1061
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %2018

1065:                                             ; preds = %1061
  call void @llvm.lifetime.start.p0(i64 336, ptr %53) #10
  call void @llvm.memset.p0.i64(ptr align 16 %53, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #10
  call void @llvm.memset.p0.i64(ptr align 8 %54, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr %55) #10
  call void @llvm.memset.p0.i64(ptr align 8 %55, i8 0, i64 88, i1 false)
  br label %1066

1066:                                             ; preds = %1065
  %1067 = load i32, ptr @test_count, align 4, !tbaa !5
  %1068 = add nsw i32 %1067, 1
  store i32 %1068, ptr @test_count, align 4, !tbaa !5
  %1069 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %53, i64 0, i64 0
  %1070 = call i32 @s2n_test_construct_cert_chain(ptr noundef %1069, i64 noundef 3, ptr noundef %54, ptr noundef %55, ptr noundef %17)
  %1071 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  store i32 %1070, ptr %1071, align 4
  %1072 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  %1073 = load i32, ptr %1072, align 4
  %1074 = call zeroext i1 @s2n_result_is_ok(i32 %1073)
  br i1 %1074, label %1128, label %1075

1075:                                             ; preds = %1066
  br label %1076

1076:                                             ; preds = %1075
  br label %1077

1077:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  %1078 = call ptr @__errno_location() #11
  %1079 = load i32, ptr %1078, align 4, !tbaa !5
  store i32 %1079, ptr %57, align 4, !tbaa !5
  %1080 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1081 = call i32 @s2n_print_stacktrace(ptr noundef %1080)
  %1082 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1083 = trunc i8 %1082 to i1
  br i1 %1083, label %1084, label %1106

1084:                                             ; preds = %1077
  %1085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1086 = call i32 @fileno(ptr noundef %1085) #10
  %1087 = call i32 @isatty(i32 noundef %1086) #10
  %1088 = icmp ne i32 %1087, 0
  br i1 %1088, label %1089, label %1106

1089:                                             ; preds = %1084
  %1090 = load i32, ptr %57, align 4, !tbaa !5
  %1091 = call ptr @__errno_location() #11
  store i32 %1090, ptr %1091, align 4, !tbaa !5
  %1092 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1093 = load i32, ptr @test_count, align 4, !tbaa !5
  %1094 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1095 = load i32, ptr %1094, align 4, !tbaa !5
  %1096 = call ptr @s2n_strerror(i32 noundef %1095, ptr noundef @.str.4)
  %1097 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1098 = load i32, ptr %1097, align 4, !tbaa !5
  %1099 = call ptr @s2n_strerror_debug(i32 noundef %1098, ptr noundef @.str.4)
  %1100 = call ptr @__errno_location() #11
  %1101 = load i32, ptr %1100, align 4, !tbaa !5
  %1102 = call ptr @strerror(i32 noundef %1101) #10
  %1103 = call ptr @__errno_location() #11
  %1104 = load i32, ptr %1103, align 4, !tbaa !5
  %1105 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1092, ptr noundef @.str.2, i32 noundef %1093, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 204, ptr noundef %1096, ptr noundef %1099, ptr noundef %1102, i32 noundef %1104) #10
  br label %1123

1106:                                             ; preds = %1084, %1077
  %1107 = load i32, ptr %57, align 4, !tbaa !5
  %1108 = call ptr @__errno_location() #11
  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() #11
  %1118 = load i32, ptr %1117, align 4, !tbaa !5
  %1119 = call ptr @strerror(i32 noundef %1118) #10
  %1120 = call ptr @__errno_location() #11
  %1121 = load i32, ptr %1120, align 4, !tbaa !5
  %1122 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1109, ptr noundef @.str.5, i32 noundef %1110, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 204, ptr noundef %1113, ptr noundef %1116, ptr noundef %1119, i32 noundef %1121) #10
  br label %1123

1123:                                             ; preds = %1106, %1089
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %1124

1124:                                             ; preds = %1123
  br label %1125

1125:                                             ; preds = %1124
  call void @exit(i32 noundef 1) #12
  unreachable

1126:                                             ; No predecessors!
  br label %1127

1127:                                             ; preds = %1126
  br label %1128

1128:                                             ; preds = %1127, %1066
  br label %1129

1129:                                             ; preds = %1128
  br label %1130

1130:                                             ; preds = %1129
  %1131 = load i64, ptr %52, align 8, !tbaa !30
  %1132 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %53, i64 0, i64 %1131
  %1133 = getelementptr inbounds %struct.s2n_cert, ptr %1132, i32 0, i32 2
  %1134 = getelementptr inbounds %struct.s2n_cert_info, ptr %1133, i32 0, i32 0
  store i32 668, ptr %1134, align 8, !tbaa !32
  %1135 = load i64, ptr %52, align 8, !tbaa !30
  %1136 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %53, i64 0, i64 %1135
  %1137 = getelementptr inbounds %struct.s2n_cert, ptr %1136, i32 0, i32 2
  %1138 = getelementptr inbounds %struct.s2n_cert_info, ptr %1137, i32 0, i32 1
  store i32 64, ptr %1138, align 4, !tbaa !37
  br label %1139

1139:                                             ; preds = %1130
  br label %1140

1140:                                             ; preds = %1139
  br label %1141

1141:                                             ; preds = %1140
  %1142 = load i32, ptr @test_count, align 4, !tbaa !5
  %1143 = add nsw i32 %1142, 1
  store i32 %1143, ptr @test_count, align 4, !tbaa !5
  %1144 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef %22, ptr noundef %55)
  %1145 = getelementptr inbounds %struct.s2n_result, ptr %58, i32 0, i32 0
  store i32 %1144, ptr %1145, align 4
  %1146 = getelementptr inbounds %struct.s2n_result, ptr %58, i32 0, i32 0
  %1147 = load i32, ptr %1146, align 4
  %1148 = call zeroext i1 @s2n_result_is_error(i32 %1147)
  br i1 %1148, label %1202, label %1149

1149:                                             ; preds = %1141
  br label %1150

1150:                                             ; preds = %1149
  br label %1151

1151:                                             ; preds = %1150
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  %1152 = call ptr @__errno_location() #11
  %1153 = load i32, ptr %1152, align 4, !tbaa !5
  store i32 %1153, ptr %59, align 4, !tbaa !5
  %1154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1155 = call i32 @s2n_print_stacktrace(ptr noundef %1154)
  %1156 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1157 = trunc i8 %1156 to i1
  br i1 %1157, label %1158, label %1180

1158:                                             ; preds = %1151
  %1159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1160 = call i32 @fileno(ptr noundef %1159) #10
  %1161 = call i32 @isatty(i32 noundef %1160) #10
  %1162 = icmp ne i32 %1161, 0
  br i1 %1162, label %1163, label %1180

1163:                                             ; preds = %1158
  %1164 = load i32, ptr %59, align 4, !tbaa !5
  %1165 = call ptr @__errno_location() #11
  store i32 %1164, ptr %1165, align 4, !tbaa !5
  %1166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1167 = load i32, ptr @test_count, align 4, !tbaa !5
  %1168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1169 = load i32, ptr %1168, align 4, !tbaa !5
  %1170 = call ptr @s2n_strerror(i32 noundef %1169, ptr noundef @.str.4)
  %1171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1172 = load i32, ptr %1171, align 4, !tbaa !5
  %1173 = call ptr @s2n_strerror_debug(i32 noundef %1172, ptr noundef @.str.4)
  %1174 = call ptr @__errno_location() #11
  %1175 = load i32, ptr %1174, align 4, !tbaa !5
  %1176 = call ptr @strerror(i32 noundef %1175) #10
  %1177 = call ptr @__errno_location() #11
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  %1179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1166, ptr noundef @.str.2, i32 noundef %1167, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 208, ptr noundef %1170, ptr noundef %1173, ptr noundef %1176, i32 noundef %1178) #10
  br label %1197

1180:                                             ; preds = %1158, %1151
  %1181 = load i32, ptr %59, align 4, !tbaa !5
  %1182 = call ptr @__errno_location() #11
  store i32 %1181, ptr %1182, align 4, !tbaa !5
  %1183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1184 = load i32, ptr @test_count, align 4, !tbaa !5
  %1185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1186 = load i32, ptr %1185, align 4, !tbaa !5
  %1187 = call ptr @s2n_strerror(i32 noundef %1186, ptr noundef @.str.4)
  %1188 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1189 = load i32, ptr %1188, align 4, !tbaa !5
  %1190 = call ptr @s2n_strerror_debug(i32 noundef %1189, ptr noundef @.str.4)
  %1191 = call ptr @__errno_location() #11
  %1192 = load i32, ptr %1191, align 4, !tbaa !5
  %1193 = call ptr @strerror(i32 noundef %1192) #10
  %1194 = call ptr @__errno_location() #11
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  %1196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1183, ptr noundef @.str.5, i32 noundef %1184, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 208, ptr noundef %1187, ptr noundef %1190, ptr noundef %1193, i32 noundef %1195) #10
  br label %1197

1197:                                             ; preds = %1180, %1163
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %1198

1198:                                             ; preds = %1197
  br label %1199

1199:                                             ; preds = %1198
  call void @exit(i32 noundef 1) #12
  unreachable

1200:                                             ; No predecessors!
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201, %1141
  br label %1203

1203:                                             ; preds = %1202
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204
  %1206 = load i32, ptr @test_count, align 4, !tbaa !5
  %1207 = add nsw i32 %1206, 1
  store i32 %1207, ptr @test_count, align 4, !tbaa !5
  %1208 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1209 = load i32, ptr %1208, align 4, !tbaa !5
  %1210 = icmp eq i32 %1209, 469762133
  br i1 %1210, label %1264, label %1211

1211:                                             ; preds = %1205
  br label %1212

1212:                                             ; preds = %1211
  br label %1213

1213:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #10
  %1214 = call ptr @__errno_location() #11
  %1215 = load i32, ptr %1214, align 4, !tbaa !5
  store i32 %1215, ptr %60, align 4, !tbaa !5
  %1216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1217 = call i32 @s2n_print_stacktrace(ptr noundef %1216)
  %1218 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1219 = trunc i8 %1218 to i1
  br i1 %1219, label %1220, label %1242

1220:                                             ; preds = %1213
  %1221 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1222 = call i32 @fileno(ptr noundef %1221) #10
  %1223 = call i32 @isatty(i32 noundef %1222) #10
  %1224 = icmp ne i32 %1223, 0
  br i1 %1224, label %1225, label %1242

1225:                                             ; preds = %1220
  %1226 = load i32, ptr %60, align 4, !tbaa !5
  %1227 = call ptr @__errno_location() #11
  store i32 %1226, ptr %1227, align 4, !tbaa !5
  %1228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1229 = load i32, ptr @test_count, align 4, !tbaa !5
  %1230 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1231 = load i32, ptr %1230, align 4, !tbaa !5
  %1232 = call ptr @s2n_strerror(i32 noundef %1231, ptr noundef @.str.4)
  %1233 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1234 = load i32, ptr %1233, align 4, !tbaa !5
  %1235 = call ptr @s2n_strerror_debug(i32 noundef %1234, ptr noundef @.str.4)
  %1236 = call ptr @__errno_location() #11
  %1237 = load i32, ptr %1236, align 4, !tbaa !5
  %1238 = call ptr @strerror(i32 noundef %1237) #10
  %1239 = call ptr @__errno_location() #11
  %1240 = load i32, ptr %1239, align 4, !tbaa !5
  %1241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1228, ptr noundef @.str.2, i32 noundef %1229, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 208, ptr noundef %1232, ptr noundef %1235, ptr noundef %1238, i32 noundef %1240) #10
  br label %1259

1242:                                             ; preds = %1220, %1213
  %1243 = load i32, ptr %60, align 4, !tbaa !5
  %1244 = call ptr @__errno_location() #11
  store i32 %1243, ptr %1244, align 4, !tbaa !5
  %1245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1246 = load i32, ptr @test_count, align 4, !tbaa !5
  %1247 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1248 = load i32, ptr %1247, align 4, !tbaa !5
  %1249 = call ptr @s2n_strerror(i32 noundef %1248, ptr noundef @.str.4)
  %1250 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1251 = load i32, ptr %1250, align 4, !tbaa !5
  %1252 = call ptr @s2n_strerror_debug(i32 noundef %1251, ptr noundef @.str.4)
  %1253 = call ptr @__errno_location() #11
  %1254 = load i32, ptr %1253, align 4, !tbaa !5
  %1255 = call ptr @strerror(i32 noundef %1254) #10
  %1256 = call ptr @__errno_location() #11
  %1257 = load i32, ptr %1256, align 4, !tbaa !5
  %1258 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1245, ptr noundef @.str.5, i32 noundef %1246, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 208, ptr noundef %1249, ptr noundef %1252, ptr noundef %1255, i32 noundef %1257) #10
  br label %1259

1259:                                             ; preds = %1242, %1225
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %1260

1260:                                             ; preds = %1259
  br label %1261

1261:                                             ; preds = %1260
  call void @exit(i32 noundef 1) #12
  unreachable

1262:                                             ; No predecessors!
  br label %1263

1263:                                             ; preds = %1262
  br label %1264

1264:                                             ; preds = %1263, %1205
  br label %1265

1265:                                             ; preds = %1264
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

1267:                                             ; preds = %1266
  %1268 = load i32, ptr @test_count, align 4, !tbaa !5
  %1269 = add nsw i32 %1268, 1
  store i32 %1269, ptr @test_count, align 4, !tbaa !5
  %1270 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1271 = load i32, ptr %1270, align 4, !tbaa !5
  %1272 = call ptr @s2n_strerror_debug(i32 noundef %1271, ptr noundef @.str.4)
  %1273 = icmp eq ptr %1272, null
  br i1 %1273, label %1274, label %1327

1274:                                             ; preds = %1267
  br label %1275

1275:                                             ; preds = %1274
  br label %1276

1276:                                             ; preds = %1275
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  %1277 = call ptr @__errno_location() #11
  %1278 = load i32, ptr %1277, align 4, !tbaa !5
  store i32 %1278, ptr %61, align 4, !tbaa !5
  %1279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1280 = call i32 @s2n_print_stacktrace(ptr noundef %1279)
  %1281 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1282 = trunc i8 %1281 to i1
  br i1 %1282, label %1283, label %1305

1283:                                             ; preds = %1276
  %1284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1285 = call i32 @fileno(ptr noundef %1284) #10
  %1286 = call i32 @isatty(i32 noundef %1285) #10
  %1287 = icmp ne i32 %1286, 0
  br i1 %1287, label %1288, label %1305

1288:                                             ; preds = %1283
  %1289 = load i32, ptr %61, align 4, !tbaa !5
  %1290 = call ptr @__errno_location() #11
  store i32 %1289, ptr %1290, 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 @.str.4)
  %1296 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1297 = load i32, ptr %1296, align 4, !tbaa !5
  %1298 = call ptr @s2n_strerror_debug(i32 noundef %1297, ptr noundef @.str.4)
  %1299 = call ptr @__errno_location() #11
  %1300 = load i32, ptr %1299, align 4, !tbaa !5
  %1301 = call ptr @strerror(i32 noundef %1300) #10
  %1302 = call ptr @__errno_location() #11
  %1303 = load i32, ptr %1302, align 4, !tbaa !5
  %1304 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1291, ptr noundef @.str.2, i32 noundef %1292, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 208, ptr noundef %1295, ptr noundef %1298, ptr noundef %1301, i32 noundef %1303) #10
  br label %1322

1305:                                             ; preds = %1283, %1276
  %1306 = load i32, ptr %61, align 4, !tbaa !5
  %1307 = call ptr @__errno_location() #11
  store i32 %1306, ptr %1307, align 4, !tbaa !5
  %1308 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1309 = load i32, ptr @test_count, align 4, !tbaa !5
  %1310 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1311 = load i32, ptr %1310, align 4, !tbaa !5
  %1312 = call ptr @s2n_strerror(i32 noundef %1311, ptr noundef @.str.4)
  %1313 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1314 = load i32, ptr %1313, align 4, !tbaa !5
  %1315 = call ptr @s2n_strerror_debug(i32 noundef %1314, ptr noundef @.str.4)
  %1316 = call ptr @__errno_location() #11
  %1317 = load i32, ptr %1316, align 4, !tbaa !5
  %1318 = call ptr @strerror(i32 noundef %1317) #10
  %1319 = call ptr @__errno_location() #11
  %1320 = load i32, ptr %1319, align 4, !tbaa !5
  %1321 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1308, ptr noundef @.str.5, i32 noundef %1309, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 208, ptr noundef %1312, ptr noundef %1315, ptr noundef %1318, i32 noundef %1320) #10
  br label %1322

1322:                                             ; preds = %1305, %1288
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %1323

1323:                                             ; preds = %1322
  br label %1324

1324:                                             ; preds = %1323
  call void @exit(i32 noundef 1) #12
  unreachable

1325:                                             ; No predecessors!
  br label %1326

1326:                                             ; preds = %1325
  br label %1327

1327:                                             ; preds = %1326, %1267
  br label %1328

1328:                                             ; preds = %1327
  br label %1329

1329:                                             ; preds = %1328
  br label %1330

1330:                                             ; preds = %1329
  br label %1331

1331:                                             ; preds = %1330
  br label %1332

1332:                                             ; preds = %1331
  %1333 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1333, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1334 = call ptr @__errno_location() #11
  store i32 0, ptr %1334, align 4, !tbaa !5
  br label %1335

1335:                                             ; preds = %1332
  br label %1336

1336:                                             ; preds = %1335
  br label %1337

1337:                                             ; preds = %1336
  br label %1338

1338:                                             ; preds = %1337
  call void @llvm.lifetime.end.p0(i64 88, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 336, ptr %53) #10
  call void @llvm.lifetime.start.p0(i64 336, ptr %62) #10
  call void @llvm.memset.p0.i64(ptr align 16 %62, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #10
  call void @llvm.memset.p0.i64(ptr align 8 %63, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr %64) #10
  call void @llvm.memset.p0.i64(ptr align 8 %64, i8 0, i64 88, i1 false)
  br label %1339

1339:                                             ; preds = %1338
  %1340 = load i32, ptr @test_count, align 4, !tbaa !5
  %1341 = add nsw i32 %1340, 1
  store i32 %1341, ptr @test_count, align 4, !tbaa !5
  %1342 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %62, i64 0, i64 0
  %1343 = call i32 @s2n_test_construct_cert_chain(ptr noundef %1342, i64 noundef 3, ptr noundef %63, ptr noundef %64, ptr noundef %17)
  %1344 = getelementptr inbounds %struct.s2n_result, ptr %65, i32 0, i32 0
  store i32 %1343, ptr %1344, align 4
  %1345 = getelementptr inbounds %struct.s2n_result, ptr %65, i32 0, i32 0
  %1346 = load i32, ptr %1345, align 4
  %1347 = call zeroext i1 @s2n_result_is_ok(i32 %1346)
  br i1 %1347, label %1401, label %1348

1348:                                             ; preds = %1339
  br label %1349

1349:                                             ; preds = %1348
  br label %1350

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

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

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

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

1396:                                             ; preds = %1379, %1362
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #10
  br label %1397

1397:                                             ; preds = %1396
  br label %1398

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

1399:                                             ; No predecessors!
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

1401:                                             ; preds = %1400, %1339
  br label %1402

1402:                                             ; preds = %1401
  br label %1403

1403:                                             ; preds = %1402
  %1404 = load i64, ptr %52, align 8, !tbaa !30
  %1405 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %62, i64 0, i64 %1404
  %1406 = getelementptr inbounds %struct.s2n_cert, ptr %1405, i32 0, i32 2
  %1407 = getelementptr inbounds %struct.s2n_cert_info, ptr %1406, i32 0, i32 2
  store i32 415, ptr %1407, align 8, !tbaa !38
  br label %1408

1408:                                             ; preds = %1403
  br label %1409

1409:                                             ; preds = %1408
  br label %1410

1410:                                             ; preds = %1409
  %1411 = load i32, ptr @test_count, align 4, !tbaa !5
  %1412 = add nsw i32 %1411, 1
  store i32 %1412, ptr @test_count, align 4, !tbaa !5
  %1413 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef %22, ptr noundef %64)
  %1414 = getelementptr inbounds %struct.s2n_result, ptr %67, i32 0, i32 0
  store i32 %1413, ptr %1414, align 4
  %1415 = getelementptr inbounds %struct.s2n_result, ptr %67, i32 0, i32 0
  %1416 = load i32, ptr %1415, align 4
  %1417 = call zeroext i1 @s2n_result_is_error(i32 %1416)
  br i1 %1417, label %1471, label %1418

1418:                                             ; preds = %1410
  br label %1419

1419:                                             ; preds = %1418
  br label %1420

1420:                                             ; preds = %1419
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #10
  %1421 = call ptr @__errno_location() #11
  %1422 = load i32, ptr %1421, align 4, !tbaa !5
  store i32 %1422, ptr %68, 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) #10
  %1430 = call i32 @isatty(i32 noundef %1429) #10
  %1431 = icmp ne i32 %1430, 0
  br i1 %1431, label %1432, label %1449

1432:                                             ; preds = %1427
  %1433 = load i32, ptr %68, align 4, !tbaa !5
  %1434 = call ptr @__errno_location() #11
  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() #11
  %1444 = load i32, ptr %1443, align 4, !tbaa !5
  %1445 = call ptr @strerror(i32 noundef %1444) #10
  %1446 = call ptr @__errno_location() #11
  %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.21, ptr noundef @.str.1, i32 noundef 219, ptr noundef %1439, ptr noundef %1442, ptr noundef %1445, i32 noundef %1447) #10
  br label %1466

1449:                                             ; preds = %1427, %1420
  %1450 = load i32, ptr %68, align 4, !tbaa !5
  %1451 = call ptr @__errno_location() #11
  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() #11
  %1461 = load i32, ptr %1460, align 4, !tbaa !5
  %1462 = call ptr @strerror(i32 noundef %1461) #10
  %1463 = call ptr @__errno_location() #11
  %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.21, ptr noundef @.str.1, i32 noundef 219, ptr noundef %1456, ptr noundef %1459, ptr noundef %1462, i32 noundef %1464) #10
  br label %1466

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

1467:                                             ; preds = %1466
  br label %1468

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

1469:                                             ; No predecessors!
  br label %1470

1470:                                             ; preds = %1469
  br label %1471

1471:                                             ; preds = %1470, %1410
  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 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1478 = load i32, ptr %1477, align 4, !tbaa !5
  %1479 = icmp eq i32 %1478, 469762133
  br i1 %1479, label %1533, label %1480

1480:                                             ; preds = %1474
  br label %1481

1481:                                             ; preds = %1480
  br label %1482

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

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

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

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

1528:                                             ; preds = %1511, %1494
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #10
  br label %1529

1529:                                             ; preds = %1528
  br label %1530

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

1531:                                             ; No predecessors!
  br label %1532

1532:                                             ; preds = %1531
  br label %1533

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

1534:                                             ; preds = %1533
  br label %1535

1535:                                             ; preds = %1534
  br label %1536

1536:                                             ; preds = %1535
  %1537 = load i32, ptr @test_count, align 4, !tbaa !5
  %1538 = add nsw i32 %1537, 1
  store i32 %1538, ptr @test_count, align 4, !tbaa !5
  %1539 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1540 = load i32, ptr %1539, align 4, !tbaa !5
  %1541 = call ptr @s2n_strerror_debug(i32 noundef %1540, ptr noundef @.str.4)
  %1542 = icmp eq ptr %1541, null
  br i1 %1542, label %1543, label %1596

1543:                                             ; preds = %1536
  br label %1544

1544:                                             ; preds = %1543
  br label %1545

1545:                                             ; preds = %1544
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #10
  %1546 = call ptr @__errno_location() #11
  %1547 = load i32, ptr %1546, align 4, !tbaa !5
  store i32 %1547, ptr %70, align 4, !tbaa !5
  %1548 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1549 = call i32 @s2n_print_stacktrace(ptr noundef %1548)
  %1550 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1551 = trunc i8 %1550 to i1
  br i1 %1551, label %1552, label %1574

1552:                                             ; preds = %1545
  %1553 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1554 = call i32 @fileno(ptr noundef %1553) #10
  %1555 = call i32 @isatty(i32 noundef %1554) #10
  %1556 = icmp ne i32 %1555, 0
  br i1 %1556, label %1557, label %1574

1557:                                             ; preds = %1552
  %1558 = load i32, ptr %70, align 4, !tbaa !5
  %1559 = call ptr @__errno_location() #11
  store i32 %1558, ptr %1559, align 4, !tbaa !5
  %1560 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1561 = load i32, ptr @test_count, align 4, !tbaa !5
  %1562 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1563 = load i32, ptr %1562, align 4, !tbaa !5
  %1564 = call ptr @s2n_strerror(i32 noundef %1563, ptr noundef @.str.4)
  %1565 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1566 = load i32, ptr %1565, align 4, !tbaa !5
  %1567 = call ptr @s2n_strerror_debug(i32 noundef %1566, ptr noundef @.str.4)
  %1568 = call ptr @__errno_location() #11
  %1569 = load i32, ptr %1568, align 4, !tbaa !5
  %1570 = call ptr @strerror(i32 noundef %1569) #10
  %1571 = call ptr @__errno_location() #11
  %1572 = load i32, ptr %1571, align 4, !tbaa !5
  %1573 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1560, ptr noundef @.str.2, i32 noundef %1561, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 219, ptr noundef %1564, ptr noundef %1567, ptr noundef %1570, i32 noundef %1572) #10
  br label %1591

1574:                                             ; preds = %1552, %1545
  %1575 = load i32, ptr %70, align 4, !tbaa !5
  %1576 = call ptr @__errno_location() #11
  store i32 %1575, ptr %1576, align 4, !tbaa !5
  %1577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1578 = load i32, ptr @test_count, align 4, !tbaa !5
  %1579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1580 = load i32, ptr %1579, align 4, !tbaa !5
  %1581 = call ptr @s2n_strerror(i32 noundef %1580, ptr noundef @.str.4)
  %1582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1583 = load i32, ptr %1582, align 4, !tbaa !5
  %1584 = call ptr @s2n_strerror_debug(i32 noundef %1583, ptr noundef @.str.4)
  %1585 = call ptr @__errno_location() #11
  %1586 = load i32, ptr %1585, align 4, !tbaa !5
  %1587 = call ptr @strerror(i32 noundef %1586) #10
  %1588 = call ptr @__errno_location() #11
  %1589 = load i32, ptr %1588, align 4, !tbaa !5
  %1590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1577, ptr noundef @.str.5, i32 noundef %1578, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 219, ptr noundef %1581, ptr noundef %1584, ptr noundef %1587, i32 noundef %1589) #10
  br label %1591

1591:                                             ; preds = %1574, %1557
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #10
  br label %1592

1592:                                             ; preds = %1591
  br label %1593

1593:                                             ; preds = %1592
  call void @exit(i32 noundef 1) #12
  unreachable

1594:                                             ; No predecessors!
  br label %1595

1595:                                             ; preds = %1594
  br label %1596

1596:                                             ; preds = %1595, %1536
  br label %1597

1597:                                             ; preds = %1596
  br label %1598

1598:                                             ; preds = %1597
  br label %1599

1599:                                             ; preds = %1598
  br label %1600

1600:                                             ; preds = %1599
  br label %1601

1601:                                             ; preds = %1600
  %1602 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1602, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1603 = call ptr @__errno_location() #11
  store i32 0, ptr %1603, align 4, !tbaa !5
  br label %1604

1604:                                             ; preds = %1601
  br label %1605

1605:                                             ; preds = %1604
  br label %1606

1606:                                             ; preds = %1605
  br label %1607

1607:                                             ; preds = %1606
  call void @llvm.lifetime.end.p0(i64 88, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 336, ptr %62) #10
  call void @llvm.lifetime.start.p0(i64 336, ptr %71) #10
  call void @llvm.memset.p0.i64(ptr align 16 %71, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #10
  call void @llvm.memset.p0.i64(ptr align 8 %72, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr %73) #10
  call void @llvm.memset.p0.i64(ptr align 8 %73, i8 0, i64 88, i1 false)
  br label %1608

1608:                                             ; preds = %1607
  %1609 = load i32, ptr @test_count, align 4, !tbaa !5
  %1610 = add nsw i32 %1609, 1
  store i32 %1610, ptr @test_count, align 4, !tbaa !5
  %1611 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %71, i64 0, i64 0
  %1612 = call i32 @s2n_test_construct_cert_chain(ptr noundef %1611, i64 noundef 3, ptr noundef %72, ptr noundef %73, ptr noundef %17)
  %1613 = getelementptr inbounds %struct.s2n_result, ptr %74, i32 0, i32 0
  store i32 %1612, ptr %1613, align 4
  %1614 = getelementptr inbounds %struct.s2n_result, ptr %74, i32 0, i32 0
  %1615 = load i32, ptr %1614, align 4
  %1616 = call zeroext i1 @s2n_result_is_ok(i32 %1615)
  br i1 %1616, label %1670, label %1617

1617:                                             ; preds = %1608
  br label %1618

1618:                                             ; preds = %1617
  br label %1619

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

1626:                                             ; preds = %1619
  %1627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1628 = call i32 @fileno(ptr noundef %1627) #10
  %1629 = call i32 @isatty(i32 noundef %1628) #10
  %1630 = icmp ne i32 %1629, 0
  br i1 %1630, label %1631, label %1648

1631:                                             ; preds = %1626
  %1632 = load i32, ptr %75, align 4, !tbaa !5
  %1633 = call ptr @__errno_location() #11
  store i32 %1632, ptr %1633, align 4, !tbaa !5
  %1634 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1635 = load i32, ptr @test_count, align 4, !tbaa !5
  %1636 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1637 = load i32, ptr %1636, align 4, !tbaa !5
  %1638 = call ptr @s2n_strerror(i32 noundef %1637, ptr noundef @.str.4)
  %1639 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1640 = load i32, ptr %1639, align 4, !tbaa !5
  %1641 = call ptr @s2n_strerror_debug(i32 noundef %1640, ptr noundef @.str.4)
  %1642 = call ptr @__errno_location() #11
  %1643 = load i32, ptr %1642, align 4, !tbaa !5
  %1644 = call ptr @strerror(i32 noundef %1643) #10
  %1645 = call ptr @__errno_location() #11
  %1646 = load i32, ptr %1645, align 4, !tbaa !5
  %1647 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1634, ptr noundef @.str.2, i32 noundef %1635, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 227, ptr noundef %1638, ptr noundef %1641, ptr noundef %1644, i32 noundef %1646) #10
  br label %1665

1648:                                             ; preds = %1626, %1619
  %1649 = load i32, ptr %75, align 4, !tbaa !5
  %1650 = call ptr @__errno_location() #11
  store i32 %1649, ptr %1650, align 4, !tbaa !5
  %1651 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1652 = load i32, ptr @test_count, align 4, !tbaa !5
  %1653 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1654 = load i32, ptr %1653, align 4, !tbaa !5
  %1655 = call ptr @s2n_strerror(i32 noundef %1654, ptr noundef @.str.4)
  %1656 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1657 = load i32, ptr %1656, align 4, !tbaa !5
  %1658 = call ptr @s2n_strerror_debug(i32 noundef %1657, ptr noundef @.str.4)
  %1659 = call ptr @__errno_location() #11
  %1660 = load i32, ptr %1659, align 4, !tbaa !5
  %1661 = call ptr @strerror(i32 noundef %1660) #10
  %1662 = call ptr @__errno_location() #11
  %1663 = load i32, ptr %1662, align 4, !tbaa !5
  %1664 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1651, ptr noundef @.str.5, i32 noundef %1652, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 227, ptr noundef %1655, ptr noundef %1658, ptr noundef %1661, i32 noundef %1663) #10
  br label %1665

1665:                                             ; preds = %1648, %1631
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #10
  br label %1666

1666:                                             ; preds = %1665
  br label %1667

1667:                                             ; preds = %1666
  call void @exit(i32 noundef 1) #12
  unreachable

1668:                                             ; No predecessors!
  br label %1669

1669:                                             ; preds = %1668
  br label %1670

1670:                                             ; preds = %1669, %1608
  br label %1671

1671:                                             ; preds = %1670
  br label %1672

1672:                                             ; preds = %1671
  %1673 = load i64, ptr %52, align 8, !tbaa !30
  %1674 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %71, i64 0, i64 %1673
  %1675 = getelementptr inbounds %struct.s2n_cert, ptr %1674, i32 0, i32 2
  %1676 = getelementptr inbounds %struct.s2n_cert_info, ptr %1675, i32 0, i32 3
  store i32 256, ptr %1676, align 4, !tbaa !39
  br label %1677

1677:                                             ; preds = %1672
  br label %1678

1678:                                             ; preds = %1677
  br label %1679

1679:                                             ; preds = %1678
  %1680 = load i32, ptr @test_count, align 4, !tbaa !5
  %1681 = add nsw i32 %1680, 1
  store i32 %1681, ptr @test_count, align 4, !tbaa !5
  %1682 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef %22, ptr noundef %73)
  %1683 = getelementptr inbounds %struct.s2n_result, ptr %76, i32 0, i32 0
  store i32 %1682, ptr %1683, align 4
  %1684 = getelementptr inbounds %struct.s2n_result, ptr %76, i32 0, i32 0
  %1685 = load i32, ptr %1684, align 4
  %1686 = call zeroext i1 @s2n_result_is_error(i32 %1685)
  br i1 %1686, label %1740, label %1687

1687:                                             ; preds = %1679
  br label %1688

1688:                                             ; preds = %1687
  br label %1689

1689:                                             ; preds = %1688
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #10
  %1690 = call ptr @__errno_location() #11
  %1691 = load i32, ptr %1690, align 4, !tbaa !5
  store i32 %1691, ptr %77, align 4, !tbaa !5
  %1692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1693 = call i32 @s2n_print_stacktrace(ptr noundef %1692)
  %1694 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1695 = trunc i8 %1694 to i1
  br i1 %1695, label %1696, label %1718

1696:                                             ; preds = %1689
  %1697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1698 = call i32 @fileno(ptr noundef %1697) #10
  %1699 = call i32 @isatty(i32 noundef %1698) #10
  %1700 = icmp ne i32 %1699, 0
  br i1 %1700, label %1701, label %1718

1701:                                             ; preds = %1696
  %1702 = load i32, ptr %77, align 4, !tbaa !5
  %1703 = call ptr @__errno_location() #11
  store i32 %1702, ptr %1703, align 4, !tbaa !5
  %1704 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1705 = load i32, ptr @test_count, align 4, !tbaa !5
  %1706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1707 = load i32, ptr %1706, align 4, !tbaa !5
  %1708 = call ptr @s2n_strerror(i32 noundef %1707, ptr noundef @.str.4)
  %1709 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1710 = load i32, ptr %1709, align 4, !tbaa !5
  %1711 = call ptr @s2n_strerror_debug(i32 noundef %1710, ptr noundef @.str.4)
  %1712 = call ptr @__errno_location() #11
  %1713 = load i32, ptr %1712, align 4, !tbaa !5
  %1714 = call ptr @strerror(i32 noundef %1713) #10
  %1715 = call ptr @__errno_location() #11
  %1716 = load i32, ptr %1715, align 4, !tbaa !5
  %1717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1704, ptr noundef @.str.2, i32 noundef %1705, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 230, ptr noundef %1708, ptr noundef %1711, ptr noundef %1714, i32 noundef %1716) #10
  br label %1735

1718:                                             ; preds = %1696, %1689
  %1719 = load i32, ptr %77, align 4, !tbaa !5
  %1720 = call ptr @__errno_location() #11
  store i32 %1719, ptr %1720, align 4, !tbaa !5
  %1721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1722 = load i32, ptr @test_count, align 4, !tbaa !5
  %1723 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1724 = load i32, ptr %1723, align 4, !tbaa !5
  %1725 = call ptr @s2n_strerror(i32 noundef %1724, ptr noundef @.str.4)
  %1726 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1727 = load i32, ptr %1726, align 4, !tbaa !5
  %1728 = call ptr @s2n_strerror_debug(i32 noundef %1727, ptr noundef @.str.4)
  %1729 = call ptr @__errno_location() #11
  %1730 = load i32, ptr %1729, align 4, !tbaa !5
  %1731 = call ptr @strerror(i32 noundef %1730) #10
  %1732 = call ptr @__errno_location() #11
  %1733 = load i32, ptr %1732, align 4, !tbaa !5
  %1734 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1721, ptr noundef @.str.5, i32 noundef %1722, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 230, ptr noundef %1725, ptr noundef %1728, ptr noundef %1731, i32 noundef %1733) #10
  br label %1735

1735:                                             ; preds = %1718, %1701
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  br label %1736

1736:                                             ; preds = %1735
  br label %1737

1737:                                             ; preds = %1736
  call void @exit(i32 noundef 1) #12
  unreachable

1738:                                             ; No predecessors!
  br label %1739

1739:                                             ; preds = %1738
  br label %1740

1740:                                             ; preds = %1739, %1679
  br label %1741

1741:                                             ; preds = %1740
  br label %1742

1742:                                             ; preds = %1741
  br label %1743

1743:                                             ; preds = %1742
  %1744 = load i32, ptr @test_count, align 4, !tbaa !5
  %1745 = add nsw i32 %1744, 1
  store i32 %1745, ptr @test_count, align 4, !tbaa !5
  %1746 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1747 = load i32, ptr %1746, align 4, !tbaa !5
  %1748 = icmp eq i32 %1747, 469762133
  br i1 %1748, label %1802, label %1749

1749:                                             ; preds = %1743
  br label %1750

1750:                                             ; preds = %1749
  br label %1751

1751:                                             ; preds = %1750
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #10
  %1752 = call ptr @__errno_location() #11
  %1753 = load i32, ptr %1752, align 4, !tbaa !5
  store i32 %1753, ptr %78, align 4, !tbaa !5
  %1754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1755 = call i32 @s2n_print_stacktrace(ptr noundef %1754)
  %1756 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1757 = trunc i8 %1756 to i1
  br i1 %1757, label %1758, label %1780

1758:                                             ; preds = %1751
  %1759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1760 = call i32 @fileno(ptr noundef %1759) #10
  %1761 = call i32 @isatty(i32 noundef %1760) #10
  %1762 = icmp ne i32 %1761, 0
  br i1 %1762, label %1763, label %1780

1763:                                             ; preds = %1758
  %1764 = load i32, ptr %78, align 4, !tbaa !5
  %1765 = call ptr @__errno_location() #11
  store i32 %1764, ptr %1765, align 4, !tbaa !5
  %1766 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1767 = load i32, ptr @test_count, align 4, !tbaa !5
  %1768 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1769 = load i32, ptr %1768, align 4, !tbaa !5
  %1770 = call ptr @s2n_strerror(i32 noundef %1769, ptr noundef @.str.4)
  %1771 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1772 = load i32, ptr %1771, align 4, !tbaa !5
  %1773 = call ptr @s2n_strerror_debug(i32 noundef %1772, ptr noundef @.str.4)
  %1774 = call ptr @__errno_location() #11
  %1775 = load i32, ptr %1774, align 4, !tbaa !5
  %1776 = call ptr @strerror(i32 noundef %1775) #10
  %1777 = call ptr @__errno_location() #11
  %1778 = load i32, ptr %1777, align 4, !tbaa !5
  %1779 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1766, ptr noundef @.str.2, i32 noundef %1767, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 230, ptr noundef %1770, ptr noundef %1773, ptr noundef %1776, i32 noundef %1778) #10
  br label %1797

1780:                                             ; preds = %1758, %1751
  %1781 = load i32, ptr %78, align 4, !tbaa !5
  %1782 = call ptr @__errno_location() #11
  store i32 %1781, ptr %1782, align 4, !tbaa !5
  %1783 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1784 = load i32, ptr @test_count, align 4, !tbaa !5
  %1785 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1786 = load i32, ptr %1785, align 4, !tbaa !5
  %1787 = call ptr @s2n_strerror(i32 noundef %1786, ptr noundef @.str.4)
  %1788 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1789 = load i32, ptr %1788, align 4, !tbaa !5
  %1790 = call ptr @s2n_strerror_debug(i32 noundef %1789, ptr noundef @.str.4)
  %1791 = call ptr @__errno_location() #11
  %1792 = load i32, ptr %1791, align 4, !tbaa !5
  %1793 = call ptr @strerror(i32 noundef %1792) #10
  %1794 = call ptr @__errno_location() #11
  %1795 = load i32, ptr %1794, align 4, !tbaa !5
  %1796 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1783, ptr noundef @.str.5, i32 noundef %1784, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 230, ptr noundef %1787, ptr noundef %1790, ptr noundef %1793, i32 noundef %1795) #10
  br label %1797

1797:                                             ; preds = %1780, %1763
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #10
  br label %1798

1798:                                             ; preds = %1797
  br label %1799

1799:                                             ; preds = %1798
  call void @exit(i32 noundef 1) #12
  unreachable

1800:                                             ; No predecessors!
  br label %1801

1801:                                             ; preds = %1800
  br label %1802

1802:                                             ; preds = %1801, %1743
  br label %1803

1803:                                             ; preds = %1802
  br label %1804

1804:                                             ; preds = %1803
  br label %1805

1805:                                             ; preds = %1804
  %1806 = load i32, ptr @test_count, align 4, !tbaa !5
  %1807 = add nsw i32 %1806, 1
  store i32 %1807, ptr @test_count, align 4, !tbaa !5
  %1808 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1809 = load i32, ptr %1808, align 4, !tbaa !5
  %1810 = call ptr @s2n_strerror_debug(i32 noundef %1809, ptr noundef @.str.4)
  %1811 = icmp eq ptr %1810, null
  br i1 %1811, label %1812, label %1865

1812:                                             ; preds = %1805
  br label %1813

1813:                                             ; preds = %1812
  br label %1814

1814:                                             ; preds = %1813
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #10
  %1815 = call ptr @__errno_location() #11
  %1816 = load i32, ptr %1815, align 4, !tbaa !5
  store i32 %1816, ptr %79, align 4, !tbaa !5
  %1817 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1818 = call i32 @s2n_print_stacktrace(ptr noundef %1817)
  %1819 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1820 = trunc i8 %1819 to i1
  br i1 %1820, label %1821, label %1843

1821:                                             ; preds = %1814
  %1822 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1823 = call i32 @fileno(ptr noundef %1822) #10
  %1824 = call i32 @isatty(i32 noundef %1823) #10
  %1825 = icmp ne i32 %1824, 0
  br i1 %1825, label %1826, label %1843

1826:                                             ; preds = %1821
  %1827 = load i32, ptr %79, align 4, !tbaa !5
  %1828 = call ptr @__errno_location() #11
  store i32 %1827, ptr %1828, align 4, !tbaa !5
  %1829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1830 = load i32, ptr @test_count, align 4, !tbaa !5
  %1831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1832 = load i32, ptr %1831, align 4, !tbaa !5
  %1833 = call ptr @s2n_strerror(i32 noundef %1832, ptr noundef @.str.4)
  %1834 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1835 = load i32, ptr %1834, align 4, !tbaa !5
  %1836 = call ptr @s2n_strerror_debug(i32 noundef %1835, ptr noundef @.str.4)
  %1837 = call ptr @__errno_location() #11
  %1838 = load i32, ptr %1837, align 4, !tbaa !5
  %1839 = call ptr @strerror(i32 noundef %1838) #10
  %1840 = call ptr @__errno_location() #11
  %1841 = load i32, ptr %1840, align 4, !tbaa !5
  %1842 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1829, ptr noundef @.str.2, i32 noundef %1830, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 230, ptr noundef %1833, ptr noundef %1836, ptr noundef %1839, i32 noundef %1841) #10
  br label %1860

1843:                                             ; preds = %1821, %1814
  %1844 = load i32, ptr %79, align 4, !tbaa !5
  %1845 = call ptr @__errno_location() #11
  store i32 %1844, ptr %1845, align 4, !tbaa !5
  %1846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1847 = load i32, ptr @test_count, align 4, !tbaa !5
  %1848 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1849 = load i32, ptr %1848, align 4, !tbaa !5
  %1850 = call ptr @s2n_strerror(i32 noundef %1849, ptr noundef @.str.4)
  %1851 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1852 = load i32, ptr %1851, align 4, !tbaa !5
  %1853 = call ptr @s2n_strerror_debug(i32 noundef %1852, ptr noundef @.str.4)
  %1854 = call ptr @__errno_location() #11
  %1855 = load i32, ptr %1854, align 4, !tbaa !5
  %1856 = call ptr @strerror(i32 noundef %1855) #10
  %1857 = call ptr @__errno_location() #11
  %1858 = load i32, ptr %1857, align 4, !tbaa !5
  %1859 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1846, ptr noundef @.str.5, i32 noundef %1847, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 230, ptr noundef %1850, ptr noundef %1853, ptr noundef %1856, i32 noundef %1858) #10
  br label %1860

1860:                                             ; preds = %1843, %1826
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #10
  br label %1861

1861:                                             ; preds = %1860
  br label %1862

1862:                                             ; preds = %1861
  call void @exit(i32 noundef 1) #12
  unreachable

1863:                                             ; No predecessors!
  br label %1864

1864:                                             ; preds = %1863
  br label %1865

1865:                                             ; preds = %1864, %1805
  br label %1866

1866:                                             ; preds = %1865
  br label %1867

1867:                                             ; preds = %1866
  br label %1868

1868:                                             ; preds = %1867
  br label %1869

1869:                                             ; preds = %1868
  br label %1870

1870:                                             ; preds = %1869
  %1871 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1871, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1872 = call ptr @__errno_location() #11
  store i32 0, ptr %1872, align 4, !tbaa !5
  br label %1873

1873:                                             ; preds = %1870
  br label %1874

1874:                                             ; preds = %1873
  br label %1875

1875:                                             ; preds = %1874
  br label %1876

1876:                                             ; preds = %1875
  call void @llvm.lifetime.end.p0(i64 88, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 336, ptr %71) #10
  call void @llvm.lifetime.start.p0(i64 336, ptr %80) #10
  call void @llvm.memset.p0.i64(ptr align 16 %80, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #10
  call void @llvm.memset.p0.i64(ptr align 8 %81, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr %82) #10
  call void @llvm.memset.p0.i64(ptr align 8 %82, i8 0, i64 88, i1 false)
  br label %1877

1877:                                             ; preds = %1876
  %1878 = load i32, ptr @test_count, align 4, !tbaa !5
  %1879 = add nsw i32 %1878, 1
  store i32 %1879, ptr @test_count, align 4, !tbaa !5
  %1880 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %80, i64 0, i64 0
  %1881 = call i32 @s2n_test_construct_cert_chain(ptr noundef %1880, i64 noundef 3, ptr noundef %81, ptr noundef %82, ptr noundef %17)
  %1882 = getelementptr inbounds %struct.s2n_result, ptr %83, i32 0, i32 0
  store i32 %1881, ptr %1882, align 4
  %1883 = getelementptr inbounds %struct.s2n_result, ptr %83, i32 0, i32 0
  %1884 = load i32, ptr %1883, align 4
  %1885 = call zeroext i1 @s2n_result_is_ok(i32 %1884)
  br i1 %1885, label %1939, label %1886

1886:                                             ; preds = %1877
  br label %1887

1887:                                             ; preds = %1886
  br label %1888

1888:                                             ; preds = %1887
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #10
  %1889 = call ptr @__errno_location() #11
  %1890 = load i32, ptr %1889, align 4, !tbaa !5
  store i32 %1890, ptr %84, align 4, !tbaa !5
  %1891 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1892 = call i32 @s2n_print_stacktrace(ptr noundef %1891)
  %1893 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1894 = trunc i8 %1893 to i1
  br i1 %1894, label %1895, label %1917

1895:                                             ; preds = %1888
  %1896 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1897 = call i32 @fileno(ptr noundef %1896) #10
  %1898 = call i32 @isatty(i32 noundef %1897) #10
  %1899 = icmp ne i32 %1898, 0
  br i1 %1899, label %1900, label %1917

1900:                                             ; preds = %1895
  %1901 = load i32, ptr %84, align 4, !tbaa !5
  %1902 = call ptr @__errno_location() #11
  store i32 %1901, ptr %1902, align 4, !tbaa !5
  %1903 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1904 = load i32, ptr @test_count, align 4, !tbaa !5
  %1905 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1906 = load i32, ptr %1905, align 4, !tbaa !5
  %1907 = call ptr @s2n_strerror(i32 noundef %1906, ptr noundef @.str.4)
  %1908 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1909 = load i32, ptr %1908, align 4, !tbaa !5
  %1910 = call ptr @s2n_strerror_debug(i32 noundef %1909, ptr noundef @.str.4)
  %1911 = call ptr @__errno_location() #11
  %1912 = load i32, ptr %1911, align 4, !tbaa !5
  %1913 = call ptr @strerror(i32 noundef %1912) #10
  %1914 = call ptr @__errno_location() #11
  %1915 = load i32, ptr %1914, align 4, !tbaa !5
  %1916 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1903, ptr noundef @.str.2, i32 noundef %1904, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 238, ptr noundef %1907, ptr noundef %1910, ptr noundef %1913, i32 noundef %1915) #10
  br label %1934

1917:                                             ; preds = %1895, %1888
  %1918 = load i32, ptr %84, align 4, !tbaa !5
  %1919 = call ptr @__errno_location() #11
  store i32 %1918, ptr %1919, align 4, !tbaa !5
  %1920 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1921 = load i32, ptr @test_count, align 4, !tbaa !5
  %1922 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1923 = load i32, ptr %1922, align 4, !tbaa !5
  %1924 = call ptr @s2n_strerror(i32 noundef %1923, ptr noundef @.str.4)
  %1925 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1926 = load i32, ptr %1925, align 4, !tbaa !5
  %1927 = call ptr @s2n_strerror_debug(i32 noundef %1926, ptr noundef @.str.4)
  %1928 = call ptr @__errno_location() #11
  %1929 = load i32, ptr %1928, align 4, !tbaa !5
  %1930 = call ptr @strerror(i32 noundef %1929) #10
  %1931 = call ptr @__errno_location() #11
  %1932 = load i32, ptr %1931, align 4, !tbaa !5
  %1933 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1920, ptr noundef @.str.5, i32 noundef %1921, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 238, ptr noundef %1924, ptr noundef %1927, ptr noundef %1930, i32 noundef %1932) #10
  br label %1934

1934:                                             ; preds = %1917, %1900
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #10
  br label %1935

1935:                                             ; preds = %1934
  br label %1936

1936:                                             ; preds = %1935
  call void @exit(i32 noundef 1) #12
  unreachable

1937:                                             ; No predecessors!
  br label %1938

1938:                                             ; preds = %1937
  br label %1939

1939:                                             ; preds = %1938, %1877
  br label %1940

1940:                                             ; preds = %1939
  br label %1941

1941:                                             ; preds = %1940
  call void @llvm.lifetime.start.p0(i64 64, ptr %85) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %85, ptr align 8 %22, i64 64, i1 false), !tbaa.struct !40
  %1942 = getelementptr inbounds %struct.s2n_security_policy, ptr %85, i32 0, i32 7
  store i8 0, ptr %1942, align 8, !tbaa !29
  %1943 = load i64, ptr %52, align 8, !tbaa !30
  %1944 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %80, i64 0, i64 %1943
  %1945 = getelementptr inbounds %struct.s2n_cert, ptr %1944, i32 0, i32 2
  %1946 = getelementptr inbounds %struct.s2n_cert_info, ptr %1945, i32 0, i32 0
  store i32 668, ptr %1946, align 8, !tbaa !32
  %1947 = load i64, ptr %52, align 8, !tbaa !30
  %1948 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %80, i64 0, i64 %1947
  %1949 = getelementptr inbounds %struct.s2n_cert, ptr %1948, i32 0, i32 2
  %1950 = getelementptr inbounds %struct.s2n_cert_info, ptr %1949, i32 0, i32 2
  store i32 415, ptr %1950, align 8, !tbaa !38
  br label %1951

1951:                                             ; preds = %1941
  %1952 = load i32, ptr @test_count, align 4, !tbaa !5
  %1953 = add nsw i32 %1952, 1
  store i32 %1953, ptr @test_count, align 4, !tbaa !5
  %1954 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef %85, ptr noundef %82)
  %1955 = getelementptr inbounds %struct.s2n_result, ptr %86, i32 0, i32 0
  store i32 %1954, ptr %1955, align 4
  %1956 = getelementptr inbounds %struct.s2n_result, ptr %86, i32 0, i32 0
  %1957 = load i32, ptr %1956, align 4
  %1958 = call zeroext i1 @s2n_result_is_ok(i32 %1957)
  br i1 %1958, label %2012, label %1959

1959:                                             ; preds = %1951
  br label %1960

1960:                                             ; preds = %1959
  br label %1961

1961:                                             ; preds = %1960
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #10
  %1962 = call ptr @__errno_location() #11
  %1963 = load i32, ptr %1962, align 4, !tbaa !5
  store i32 %1963, ptr %87, align 4, !tbaa !5
  %1964 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1965 = call i32 @s2n_print_stacktrace(ptr noundef %1964)
  %1966 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1967 = trunc i8 %1966 to i1
  br i1 %1967, label %1968, label %1990

1968:                                             ; preds = %1961
  %1969 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1970 = call i32 @fileno(ptr noundef %1969) #10
  %1971 = call i32 @isatty(i32 noundef %1970) #10
  %1972 = icmp ne i32 %1971, 0
  br i1 %1972, label %1973, label %1990

1973:                                             ; preds = %1968
  %1974 = load i32, ptr %87, align 4, !tbaa !5
  %1975 = call ptr @__errno_location() #11
  store i32 %1974, ptr %1975, align 4, !tbaa !5
  %1976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1977 = load i32, ptr @test_count, align 4, !tbaa !5
  %1978 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1979 = load i32, ptr %1978, align 4, !tbaa !5
  %1980 = call ptr @s2n_strerror(i32 noundef %1979, ptr noundef @.str.4)
  %1981 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1982 = load i32, ptr %1981, align 4, !tbaa !5
  %1983 = call ptr @s2n_strerror_debug(i32 noundef %1982, ptr noundef @.str.4)
  %1984 = call ptr @__errno_location() #11
  %1985 = load i32, ptr %1984, align 4, !tbaa !5
  %1986 = call ptr @strerror(i32 noundef %1985) #10
  %1987 = call ptr @__errno_location() #11
  %1988 = load i32, ptr %1987, align 4, !tbaa !5
  %1989 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1976, ptr noundef @.str.2, i32 noundef %1977, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 245, ptr noundef %1980, ptr noundef %1983, ptr noundef %1986, i32 noundef %1988) #10
  br label %2007

1990:                                             ; preds = %1968, %1961
  %1991 = load i32, ptr %87, align 4, !tbaa !5
  %1992 = call ptr @__errno_location() #11
  store i32 %1991, ptr %1992, align 4, !tbaa !5
  %1993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1994 = load i32, ptr @test_count, align 4, !tbaa !5
  %1995 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1996 = load i32, ptr %1995, align 4, !tbaa !5
  %1997 = call ptr @s2n_strerror(i32 noundef %1996, ptr noundef @.str.4)
  %1998 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1999 = load i32, ptr %1998, align 4, !tbaa !5
  %2000 = call ptr @s2n_strerror_debug(i32 noundef %1999, ptr noundef @.str.4)
  %2001 = call ptr @__errno_location() #11
  %2002 = load i32, ptr %2001, align 4, !tbaa !5
  %2003 = call ptr @strerror(i32 noundef %2002) #10
  %2004 = call ptr @__errno_location() #11
  %2005 = load i32, ptr %2004, align 4, !tbaa !5
  %2006 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1993, ptr noundef @.str.5, i32 noundef %1994, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 245, ptr noundef %1997, ptr noundef %2000, ptr noundef %2003, i32 noundef %2005) #10
  br label %2007

2007:                                             ; preds = %1990, %1973
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #10
  br label %2008

2008:                                             ; preds = %2007
  br label %2009

2009:                                             ; preds = %2008
  call void @exit(i32 noundef 1) #12
  unreachable

2010:                                             ; No predecessors!
  br label %2011

2011:                                             ; preds = %2010
  br label %2012

2012:                                             ; preds = %2011, %1951
  br label %2013

2013:                                             ; preds = %2012
  br label %2014

2014:                                             ; preds = %2013
  call void @llvm.lifetime.end.p0(i64 64, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #10
  call void @llvm.lifetime.end.p0(i64 336, ptr %80) #10
  br label %2015

2015:                                             ; preds = %2014
  %2016 = load i64, ptr %52, align 8, !tbaa !30
  %2017 = add i64 %2016, 1
  store i64 %2017, ptr %52, align 8, !tbaa !30
  br label %1061, !llvm.loop !42

2018:                                             ; preds = %1064
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  store ptr null, ptr %88, align 8, !tbaa !9
  br label %2019

2019:                                             ; preds = %2018
  %2020 = load i32, ptr @test_count, align 4, !tbaa !5
  %2021 = add nsw i32 %2020, 1
  store i32 %2021, ptr @test_count, align 4, !tbaa !5
  %2022 = call i32 @s2n_test_cert_permutation_load_server_chain(ptr noundef %88, ptr noundef @.str.23, ptr noundef @.str.24, ptr noundef @.str.25, ptr noundef @.str.26)
  %2023 = icmp eq i32 %2022, -1
  br i1 %2023, label %2024, label %2077

2024:                                             ; preds = %2019
  br label %2025

2025:                                             ; preds = %2024
  br label %2026

2026:                                             ; preds = %2025
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #10
  %2027 = call ptr @__errno_location() #11
  %2028 = load i32, ptr %2027, align 4, !tbaa !5
  store i32 %2028, ptr %89, align 4, !tbaa !5
  %2029 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2030 = call i32 @s2n_print_stacktrace(ptr noundef %2029)
  %2031 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2032 = trunc i8 %2031 to i1
  br i1 %2032, label %2033, label %2055

2033:                                             ; preds = %2026
  %2034 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2035 = call i32 @fileno(ptr noundef %2034) #10
  %2036 = call i32 @isatty(i32 noundef %2035) #10
  %2037 = icmp ne i32 %2036, 0
  br i1 %2037, label %2038, label %2055

2038:                                             ; preds = %2033
  %2039 = load i32, ptr %89, align 4, !tbaa !5
  %2040 = call ptr @__errno_location() #11
  store i32 %2039, ptr %2040, align 4, !tbaa !5
  %2041 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2042 = load i32, ptr @test_count, align 4, !tbaa !5
  %2043 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2044 = load i32, ptr %2043, align 4, !tbaa !5
  %2045 = call ptr @s2n_strerror(i32 noundef %2044, ptr noundef @.str.4)
  %2046 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2047 = load i32, ptr %2046, align 4, !tbaa !5
  %2048 = call ptr @s2n_strerror_debug(i32 noundef %2047, ptr noundef @.str.4)
  %2049 = call ptr @__errno_location() #11
  %2050 = load i32, ptr %2049, align 4, !tbaa !5
  %2051 = call ptr @strerror(i32 noundef %2050) #10
  %2052 = call ptr @__errno_location() #11
  %2053 = load i32, ptr %2052, align 4, !tbaa !5
  %2054 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2041, ptr noundef @.str.2, i32 noundef %2042, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 253, ptr noundef %2045, ptr noundef %2048, ptr noundef %2051, i32 noundef %2053) #10
  br label %2072

2055:                                             ; preds = %2033, %2026
  %2056 = load i32, ptr %89, align 4, !tbaa !5
  %2057 = call ptr @__errno_location() #11
  store i32 %2056, ptr %2057, align 4, !tbaa !5
  %2058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2059 = load i32, ptr @test_count, align 4, !tbaa !5
  %2060 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2061 = load i32, ptr %2060, align 4, !tbaa !5
  %2062 = call ptr @s2n_strerror(i32 noundef %2061, ptr noundef @.str.4)
  %2063 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2064 = load i32, ptr %2063, align 4, !tbaa !5
  %2065 = call ptr @s2n_strerror_debug(i32 noundef %2064, ptr noundef @.str.4)
  %2066 = call ptr @__errno_location() #11
  %2067 = load i32, ptr %2066, align 4, !tbaa !5
  %2068 = call ptr @strerror(i32 noundef %2067) #10
  %2069 = call ptr @__errno_location() #11
  %2070 = load i32, ptr %2069, align 4, !tbaa !5
  %2071 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2058, ptr noundef @.str.5, i32 noundef %2059, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 253, ptr noundef %2062, ptr noundef %2065, ptr noundef %2068, i32 noundef %2070) #10
  br label %2072

2072:                                             ; preds = %2055, %2038
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #10
  br label %2073

2073:                                             ; preds = %2072
  br label %2074

2074:                                             ; preds = %2073
  call void @exit(i32 noundef 1) #12
  unreachable

2075:                                             ; No predecessors!
  br label %2076

2076:                                             ; preds = %2075
  br label %2077

2077:                                             ; preds = %2076, %2019
  br label %2078

2078:                                             ; preds = %2077
  br label %2079

2079:                                             ; preds = %2078
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  %2080 = call ptr @s2n_config_new()
  store ptr %2080, ptr %90, align 8, !tbaa !9
  br label %2081

2081:                                             ; preds = %2079
  %2082 = load i32, ptr @test_count, align 4, !tbaa !5
  %2083 = add nsw i32 %2082, 1
  store i32 %2083, ptr @test_count, align 4, !tbaa !5
  %2084 = load ptr, ptr %90, align 8, !tbaa !9
  %2085 = icmp eq ptr %2084, null
  br i1 %2085, label %2086, label %2139

2086:                                             ; preds = %2081
  br label %2087

2087:                                             ; preds = %2086
  br label %2088

2088:                                             ; preds = %2087
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #10
  %2089 = call ptr @__errno_location() #11
  %2090 = load i32, ptr %2089, align 4, !tbaa !5
  store i32 %2090, ptr %91, align 4, !tbaa !5
  %2091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2092 = call i32 @s2n_print_stacktrace(ptr noundef %2091)
  %2093 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2094 = trunc i8 %2093 to i1
  br i1 %2094, label %2095, label %2117

2095:                                             ; preds = %2088
  %2096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2097 = call i32 @fileno(ptr noundef %2096) #10
  %2098 = call i32 @isatty(i32 noundef %2097) #10
  %2099 = icmp ne i32 %2098, 0
  br i1 %2099, label %2100, label %2117

2100:                                             ; preds = %2095
  %2101 = load i32, ptr %91, align 4, !tbaa !5
  %2102 = call ptr @__errno_location() #11
  store i32 %2101, ptr %2102, align 4, !tbaa !5
  %2103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2104 = load i32, ptr @test_count, align 4, !tbaa !5
  %2105 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2106 = load i32, ptr %2105, align 4, !tbaa !5
  %2107 = call ptr @s2n_strerror(i32 noundef %2106, ptr noundef @.str.4)
  %2108 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2109 = load i32, ptr %2108, align 4, !tbaa !5
  %2110 = call ptr @s2n_strerror_debug(i32 noundef %2109, ptr noundef @.str.4)
  %2111 = call ptr @__errno_location() #11
  %2112 = load i32, ptr %2111, align 4, !tbaa !5
  %2113 = call ptr @strerror(i32 noundef %2112) #10
  %2114 = call ptr @__errno_location() #11
  %2115 = load i32, ptr %2114, align 4, !tbaa !5
  %2116 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2103, ptr noundef @.str.2, i32 noundef %2104, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 260, ptr noundef %2107, ptr noundef %2110, ptr noundef %2113, i32 noundef %2115) #10
  br label %2134

2117:                                             ; preds = %2095, %2088
  %2118 = load i32, ptr %91, align 4, !tbaa !5
  %2119 = call ptr @__errno_location() #11
  store i32 %2118, ptr %2119, align 4, !tbaa !5
  %2120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2121 = load i32, ptr @test_count, align 4, !tbaa !5
  %2122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2123 = load i32, ptr %2122, align 4, !tbaa !5
  %2124 = call ptr @s2n_strerror(i32 noundef %2123, ptr noundef @.str.4)
  %2125 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2126 = load i32, ptr %2125, align 4, !tbaa !5
  %2127 = call ptr @s2n_strerror_debug(i32 noundef %2126, ptr noundef @.str.4)
  %2128 = call ptr @__errno_location() #11
  %2129 = load i32, ptr %2128, align 4, !tbaa !5
  %2130 = call ptr @strerror(i32 noundef %2129) #10
  %2131 = call ptr @__errno_location() #11
  %2132 = load i32, ptr %2131, align 4, !tbaa !5
  %2133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2120, ptr noundef @.str.5, i32 noundef %2121, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 260, ptr noundef %2124, ptr noundef %2127, ptr noundef %2130, i32 noundef %2132) #10
  br label %2134

2134:                                             ; preds = %2117, %2100
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #10
  br label %2135

2135:                                             ; preds = %2134
  br label %2136

2136:                                             ; preds = %2135
  call void @exit(i32 noundef 1) #12
  unreachable

2137:                                             ; No predecessors!
  br label %2138

2138:                                             ; preds = %2137
  br label %2139

2139:                                             ; preds = %2138, %2081
  br label %2140

2140:                                             ; preds = %2139
  br label %2141

2141:                                             ; preds = %2140
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #10
  %2142 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %2142, ptr %92, align 8, !tbaa !9
  br label %2143

2143:                                             ; preds = %2141
  %2144 = load i32, ptr @test_count, align 4, !tbaa !5
  %2145 = add nsw i32 %2144, 1
  store i32 %2145, ptr @test_count, align 4, !tbaa !5
  %2146 = load ptr, ptr %92, align 8, !tbaa !9
  %2147 = icmp eq ptr %2146, null
  br i1 %2147, label %2148, label %2201

2148:                                             ; preds = %2143
  br label %2149

2149:                                             ; preds = %2148
  br label %2150

2150:                                             ; preds = %2149
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #10
  %2151 = call ptr @__errno_location() #11
  %2152 = load i32, ptr %2151, align 4, !tbaa !5
  store i32 %2152, ptr %93, align 4, !tbaa !5
  %2153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2154 = call i32 @s2n_print_stacktrace(ptr noundef %2153)
  %2155 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2156 = trunc i8 %2155 to i1
  br i1 %2156, label %2157, label %2179

2157:                                             ; preds = %2150
  %2158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2159 = call i32 @fileno(ptr noundef %2158) #10
  %2160 = call i32 @isatty(i32 noundef %2159) #10
  %2161 = icmp ne i32 %2160, 0
  br i1 %2161, label %2162, label %2179

2162:                                             ; preds = %2157
  %2163 = load i32, ptr %93, align 4, !tbaa !5
  %2164 = call ptr @__errno_location() #11
  store i32 %2163, ptr %2164, align 4, !tbaa !5
  %2165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2166 = load i32, ptr @test_count, align 4, !tbaa !5
  %2167 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2168 = load i32, ptr %2167, align 4, !tbaa !5
  %2169 = call ptr @s2n_strerror(i32 noundef %2168, ptr noundef @.str.4)
  %2170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2171 = load i32, ptr %2170, align 4, !tbaa !5
  %2172 = call ptr @s2n_strerror_debug(i32 noundef %2171, ptr noundef @.str.4)
  %2173 = call ptr @__errno_location() #11
  %2174 = load i32, ptr %2173, align 4, !tbaa !5
  %2175 = call ptr @strerror(i32 noundef %2174) #10
  %2176 = call ptr @__errno_location() #11
  %2177 = load i32, ptr %2176, align 4, !tbaa !5
  %2178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2165, ptr noundef @.str.2, i32 noundef %2166, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 262, ptr noundef %2169, ptr noundef %2172, ptr noundef %2175, i32 noundef %2177) #10
  br label %2196

2179:                                             ; preds = %2157, %2150
  %2180 = load i32, ptr %93, align 4, !tbaa !5
  %2181 = call ptr @__errno_location() #11
  store i32 %2180, ptr %2181, align 4, !tbaa !5
  %2182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2183 = load i32, ptr @test_count, align 4, !tbaa !5
  %2184 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2185 = load i32, ptr %2184, align 4, !tbaa !5
  %2186 = call ptr @s2n_strerror(i32 noundef %2185, ptr noundef @.str.4)
  %2187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2188 = load i32, ptr %2187, align 4, !tbaa !5
  %2189 = call ptr @s2n_strerror_debug(i32 noundef %2188, ptr noundef @.str.4)
  %2190 = call ptr @__errno_location() #11
  %2191 = load i32, ptr %2190, align 4, !tbaa !5
  %2192 = call ptr @strerror(i32 noundef %2191) #10
  %2193 = call ptr @__errno_location() #11
  %2194 = load i32, ptr %2193, align 4, !tbaa !5
  %2195 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2182, ptr noundef @.str.5, i32 noundef %2183, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 262, ptr noundef %2186, ptr noundef %2189, ptr noundef %2192, i32 noundef %2194) #10
  br label %2196

2196:                                             ; preds = %2179, %2162
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #10
  br label %2197

2197:                                             ; preds = %2196
  br label %2198

2198:                                             ; preds = %2197
  call void @exit(i32 noundef 1) #12
  unreachable

2199:                                             ; No predecessors!
  br label %2200

2200:                                             ; preds = %2199
  br label %2201

2201:                                             ; preds = %2200, %2143
  br label %2202

2202:                                             ; preds = %2201
  br label %2203

2203:                                             ; preds = %2202
  br label %2204

2204:                                             ; preds = %2203
  %2205 = load i32, ptr @test_count, align 4, !tbaa !5
  %2206 = add nsw i32 %2205, 1
  store i32 %2206, ptr @test_count, align 4, !tbaa !5
  %2207 = load ptr, ptr %90, align 8, !tbaa !9
  %2208 = load ptr, ptr %88, align 8, !tbaa !9
  %2209 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %2207, ptr noundef %2208)
  %2210 = icmp eq i32 %2209, -1
  br i1 %2210, label %2211, label %2264

2211:                                             ; preds = %2204
  br label %2212

2212:                                             ; preds = %2211
  br label %2213

2213:                                             ; preds = %2212
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #10
  %2214 = call ptr @__errno_location() #11
  %2215 = load i32, ptr %2214, align 4, !tbaa !5
  store i32 %2215, ptr %94, align 4, !tbaa !5
  %2216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2217 = call i32 @s2n_print_stacktrace(ptr noundef %2216)
  %2218 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2219 = trunc i8 %2218 to i1
  br i1 %2219, label %2220, label %2242

2220:                                             ; preds = %2213
  %2221 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2222 = call i32 @fileno(ptr noundef %2221) #10
  %2223 = call i32 @isatty(i32 noundef %2222) #10
  %2224 = icmp ne i32 %2223, 0
  br i1 %2224, label %2225, label %2242

2225:                                             ; preds = %2220
  %2226 = load i32, ptr %94, align 4, !tbaa !5
  %2227 = call ptr @__errno_location() #11
  store i32 %2226, ptr %2227, align 4, !tbaa !5
  %2228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2229 = load i32, ptr @test_count, align 4, !tbaa !5
  %2230 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2231 = load i32, ptr %2230, align 4, !tbaa !5
  %2232 = call ptr @s2n_strerror(i32 noundef %2231, ptr noundef @.str.4)
  %2233 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2234 = load i32, ptr %2233, align 4, !tbaa !5
  %2235 = call ptr @s2n_strerror_debug(i32 noundef %2234, ptr noundef @.str.4)
  %2236 = call ptr @__errno_location() #11
  %2237 = load i32, ptr %2236, align 4, !tbaa !5
  %2238 = call ptr @strerror(i32 noundef %2237) #10
  %2239 = call ptr @__errno_location() #11
  %2240 = load i32, ptr %2239, align 4, !tbaa !5
  %2241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2228, ptr noundef @.str.2, i32 noundef %2229, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 263, ptr noundef %2232, ptr noundef %2235, ptr noundef %2238, i32 noundef %2240) #10
  br label %2259

2242:                                             ; preds = %2220, %2213
  %2243 = load i32, ptr %94, align 4, !tbaa !5
  %2244 = call ptr @__errno_location() #11
  store i32 %2243, ptr %2244, align 4, !tbaa !5
  %2245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2246 = load i32, ptr @test_count, align 4, !tbaa !5
  %2247 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2248 = load i32, ptr %2247, align 4, !tbaa !5
  %2249 = call ptr @s2n_strerror(i32 noundef %2248, ptr noundef @.str.4)
  %2250 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2251 = load i32, ptr %2250, align 4, !tbaa !5
  %2252 = call ptr @s2n_strerror_debug(i32 noundef %2251, ptr noundef @.str.4)
  %2253 = call ptr @__errno_location() #11
  %2254 = load i32, ptr %2253, align 4, !tbaa !5
  %2255 = call ptr @strerror(i32 noundef %2254) #10
  %2256 = call ptr @__errno_location() #11
  %2257 = load i32, ptr %2256, align 4, !tbaa !5
  %2258 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2245, ptr noundef @.str.5, i32 noundef %2246, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 263, ptr noundef %2249, ptr noundef %2252, ptr noundef %2255, i32 noundef %2257) #10
  br label %2259

2259:                                             ; preds = %2242, %2225
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #10
  br label %2260

2260:                                             ; preds = %2259
  br label %2261

2261:                                             ; preds = %2260
  call void @exit(i32 noundef 1) #12
  unreachable

2262:                                             ; No predecessors!
  br label %2263

2263:                                             ; preds = %2262
  br label %2264

2264:                                             ; preds = %2263, %2204
  br label %2265

2265:                                             ; preds = %2264
  br label %2266

2266:                                             ; preds = %2265
  br label %2267

2267:                                             ; preds = %2266
  %2268 = load i32, ptr @test_count, align 4, !tbaa !5
  %2269 = add nsw i32 %2268, 1
  store i32 %2269, ptr @test_count, align 4, !tbaa !5
  %2270 = load ptr, ptr %92, align 8, !tbaa !9
  %2271 = load ptr, ptr %90, align 8, !tbaa !9
  %2272 = call i32 @s2n_connection_set_config(ptr noundef %2270, ptr noundef %2271)
  %2273 = icmp eq i32 %2272, -1
  br i1 %2273, label %2274, label %2327

2274:                                             ; preds = %2267
  br label %2275

2275:                                             ; preds = %2274
  br label %2276

2276:                                             ; preds = %2275
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #10
  %2277 = call ptr @__errno_location() #11
  %2278 = load i32, ptr %2277, align 4, !tbaa !5
  store i32 %2278, ptr %95, align 4, !tbaa !5
  %2279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2280 = call i32 @s2n_print_stacktrace(ptr noundef %2279)
  %2281 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2282 = trunc i8 %2281 to i1
  br i1 %2282, label %2283, label %2305

2283:                                             ; preds = %2276
  %2284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2285 = call i32 @fileno(ptr noundef %2284) #10
  %2286 = call i32 @isatty(i32 noundef %2285) #10
  %2287 = icmp ne i32 %2286, 0
  br i1 %2287, label %2288, label %2305

2288:                                             ; preds = %2283
  %2289 = load i32, ptr %95, align 4, !tbaa !5
  %2290 = call ptr @__errno_location() #11
  store i32 %2289, ptr %2290, align 4, !tbaa !5
  %2291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2292 = load i32, ptr @test_count, align 4, !tbaa !5
  %2293 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2294 = load i32, ptr %2293, align 4, !tbaa !5
  %2295 = call ptr @s2n_strerror(i32 noundef %2294, ptr noundef @.str.4)
  %2296 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2297 = load i32, ptr %2296, align 4, !tbaa !5
  %2298 = call ptr @s2n_strerror_debug(i32 noundef %2297, ptr noundef @.str.4)
  %2299 = call ptr @__errno_location() #11
  %2300 = load i32, ptr %2299, align 4, !tbaa !5
  %2301 = call ptr @strerror(i32 noundef %2300) #10
  %2302 = call ptr @__errno_location() #11
  %2303 = load i32, ptr %2302, align 4, !tbaa !5
  %2304 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2291, ptr noundef @.str.2, i32 noundef %2292, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 264, ptr noundef %2295, ptr noundef %2298, ptr noundef %2301, i32 noundef %2303) #10
  br label %2322

2305:                                             ; preds = %2283, %2276
  %2306 = load i32, ptr %95, align 4, !tbaa !5
  %2307 = call ptr @__errno_location() #11
  store i32 %2306, ptr %2307, align 4, !tbaa !5
  %2308 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2309 = load i32, ptr @test_count, align 4, !tbaa !5
  %2310 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2311 = load i32, ptr %2310, align 4, !tbaa !5
  %2312 = call ptr @s2n_strerror(i32 noundef %2311, ptr noundef @.str.4)
  %2313 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2314 = load i32, ptr %2313, align 4, !tbaa !5
  %2315 = call ptr @s2n_strerror_debug(i32 noundef %2314, ptr noundef @.str.4)
  %2316 = call ptr @__errno_location() #11
  %2317 = load i32, ptr %2316, align 4, !tbaa !5
  %2318 = call ptr @strerror(i32 noundef %2317) #10
  %2319 = call ptr @__errno_location() #11
  %2320 = load i32, ptr %2319, align 4, !tbaa !5
  %2321 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2308, ptr noundef @.str.5, i32 noundef %2309, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 264, ptr noundef %2312, ptr noundef %2315, ptr noundef %2318, i32 noundef %2320) #10
  br label %2322

2322:                                             ; preds = %2305, %2288
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #10
  br label %2323

2323:                                             ; preds = %2322
  br label %2324

2324:                                             ; preds = %2323
  call void @exit(i32 noundef 1) #12
  unreachable

2325:                                             ; No predecessors!
  br label %2326

2326:                                             ; preds = %2325
  br label %2327

2327:                                             ; preds = %2326, %2267
  br label %2328

2328:                                             ; preds = %2327
  br label %2329

2329:                                             ; preds = %2328
  br label %2330

2330:                                             ; preds = %2329
  br label %2331

2331:                                             ; preds = %2330
  br label %2332

2332:                                             ; preds = %2331
  %2333 = load i32, ptr @test_count, align 4, !tbaa !5
  %2334 = add nsw i32 %2333, 1
  store i32 %2334, ptr @test_count, align 4, !tbaa !5
  %2335 = load ptr, ptr %92, align 8, !tbaa !9
  %2336 = call i32 @s2n_connection_set_cipher_preferences(ptr noundef %2335, ptr noundef @.str.32)
  %2337 = icmp eq i32 %2336, -1
  br i1 %2337, label %2391, label %2338

2338:                                             ; preds = %2332
  br label %2339

2339:                                             ; preds = %2338
  br label %2340

2340:                                             ; preds = %2339
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #10
  %2341 = call ptr @__errno_location() #11
  %2342 = load i32, ptr %2341, align 4, !tbaa !5
  store i32 %2342, ptr %96, align 4, !tbaa !5
  %2343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2344 = call i32 @s2n_print_stacktrace(ptr noundef %2343)
  %2345 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2346 = trunc i8 %2345 to i1
  br i1 %2346, label %2347, label %2369

2347:                                             ; preds = %2340
  %2348 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2349 = call i32 @fileno(ptr noundef %2348) #10
  %2350 = call i32 @isatty(i32 noundef %2349) #10
  %2351 = icmp ne i32 %2350, 0
  br i1 %2351, label %2352, label %2369

2352:                                             ; preds = %2347
  %2353 = load i32, ptr %96, align 4, !tbaa !5
  %2354 = call ptr @__errno_location() #11
  store i32 %2353, ptr %2354, align 4, !tbaa !5
  %2355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2356 = load i32, ptr @test_count, align 4, !tbaa !5
  %2357 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2358 = load i32, ptr %2357, align 4, !tbaa !5
  %2359 = call ptr @s2n_strerror(i32 noundef %2358, ptr noundef @.str.4)
  %2360 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2361 = load i32, ptr %2360, align 4, !tbaa !5
  %2362 = call ptr @s2n_strerror_debug(i32 noundef %2361, ptr noundef @.str.4)
  %2363 = call ptr @__errno_location() #11
  %2364 = load i32, ptr %2363, align 4, !tbaa !5
  %2365 = call ptr @strerror(i32 noundef %2364) #10
  %2366 = call ptr @__errno_location() #11
  %2367 = load i32, ptr %2366, align 4, !tbaa !5
  %2368 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2355, ptr noundef @.str.2, i32 noundef %2356, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 266, ptr noundef %2359, ptr noundef %2362, ptr noundef %2365, i32 noundef %2367) #10
  br label %2386

2369:                                             ; preds = %2347, %2340
  %2370 = load i32, ptr %96, align 4, !tbaa !5
  %2371 = call ptr @__errno_location() #11
  store i32 %2370, ptr %2371, align 4, !tbaa !5
  %2372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2373 = load i32, ptr @test_count, align 4, !tbaa !5
  %2374 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2375 = load i32, ptr %2374, align 4, !tbaa !5
  %2376 = call ptr @s2n_strerror(i32 noundef %2375, ptr noundef @.str.4)
  %2377 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2378 = load i32, ptr %2377, align 4, !tbaa !5
  %2379 = call ptr @s2n_strerror_debug(i32 noundef %2378, ptr noundef @.str.4)
  %2380 = call ptr @__errno_location() #11
  %2381 = load i32, ptr %2380, align 4, !tbaa !5
  %2382 = call ptr @strerror(i32 noundef %2381) #10
  %2383 = call ptr @__errno_location() #11
  %2384 = load i32, ptr %2383, align 4, !tbaa !5
  %2385 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2372, ptr noundef @.str.5, i32 noundef %2373, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 266, ptr noundef %2376, ptr noundef %2379, ptr noundef %2382, i32 noundef %2384) #10
  br label %2386

2386:                                             ; preds = %2369, %2352
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #10
  br label %2387

2387:                                             ; preds = %2386
  br label %2388

2388:                                             ; preds = %2387
  call void @exit(i32 noundef 1) #12
  unreachable

2389:                                             ; No predecessors!
  br label %2390

2390:                                             ; preds = %2389
  br label %2391

2391:                                             ; preds = %2390, %2332
  br label %2392

2392:                                             ; preds = %2391
  br label %2393

2393:                                             ; preds = %2392
  br label %2394

2394:                                             ; preds = %2393
  %2395 = load i32, ptr @test_count, align 4, !tbaa !5
  %2396 = add nsw i32 %2395, 1
  store i32 %2396, ptr @test_count, align 4, !tbaa !5
  %2397 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2398 = load i32, ptr %2397, align 4, !tbaa !5
  %2399 = icmp eq i32 %2398, 469762133
  br i1 %2399, label %2453, label %2400

2400:                                             ; preds = %2394
  br label %2401

2401:                                             ; preds = %2400
  br label %2402

2402:                                             ; preds = %2401
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #10
  %2403 = call ptr @__errno_location() #11
  %2404 = load i32, ptr %2403, align 4, !tbaa !5
  store i32 %2404, ptr %97, align 4, !tbaa !5
  %2405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2406 = call i32 @s2n_print_stacktrace(ptr noundef %2405)
  %2407 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2408 = trunc i8 %2407 to i1
  br i1 %2408, label %2409, label %2431

2409:                                             ; preds = %2402
  %2410 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2411 = call i32 @fileno(ptr noundef %2410) #10
  %2412 = call i32 @isatty(i32 noundef %2411) #10
  %2413 = icmp ne i32 %2412, 0
  br i1 %2413, label %2414, label %2431

2414:                                             ; preds = %2409
  %2415 = load i32, ptr %97, align 4, !tbaa !5
  %2416 = call ptr @__errno_location() #11
  store i32 %2415, ptr %2416, align 4, !tbaa !5
  %2417 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2418 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %2420, ptr noundef @.str.4)
  %2422 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2423 = load i32, ptr %2422, align 4, !tbaa !5
  %2424 = call ptr @s2n_strerror_debug(i32 noundef %2423, ptr noundef @.str.4)
  %2425 = call ptr @__errno_location() #11
  %2426 = load i32, ptr %2425, align 4, !tbaa !5
  %2427 = call ptr @strerror(i32 noundef %2426) #10
  %2428 = call ptr @__errno_location() #11
  %2429 = load i32, ptr %2428, align 4, !tbaa !5
  %2430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2417, ptr noundef @.str.2, i32 noundef %2418, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 266, ptr noundef %2421, ptr noundef %2424, ptr noundef %2427, i32 noundef %2429) #10
  br label %2448

2431:                                             ; preds = %2409, %2402
  %2432 = load i32, ptr %97, align 4, !tbaa !5
  %2433 = call ptr @__errno_location() #11
  store i32 %2432, ptr %2433, align 4, !tbaa !5
  %2434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2435 = load i32, ptr @test_count, align 4, !tbaa !5
  %2436 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2437 = load i32, ptr %2436, align 4, !tbaa !5
  %2438 = call ptr @s2n_strerror(i32 noundef %2437, ptr noundef @.str.4)
  %2439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2440 = load i32, ptr %2439, align 4, !tbaa !5
  %2441 = call ptr @s2n_strerror_debug(i32 noundef %2440, ptr noundef @.str.4)
  %2442 = call ptr @__errno_location() #11
  %2443 = load i32, ptr %2442, align 4, !tbaa !5
  %2444 = call ptr @strerror(i32 noundef %2443) #10
  %2445 = call ptr @__errno_location() #11
  %2446 = load i32, ptr %2445, align 4, !tbaa !5
  %2447 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2434, ptr noundef @.str.5, i32 noundef %2435, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 266, ptr noundef %2438, ptr noundef %2441, ptr noundef %2444, i32 noundef %2446) #10
  br label %2448

2448:                                             ; preds = %2431, %2414
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #10
  br label %2449

2449:                                             ; preds = %2448
  br label %2450

2450:                                             ; preds = %2449
  call void @exit(i32 noundef 1) #12
  unreachable

2451:                                             ; No predecessors!
  br label %2452

2452:                                             ; preds = %2451
  br label %2453

2453:                                             ; preds = %2452, %2394
  br label %2454

2454:                                             ; preds = %2453
  br label %2455

2455:                                             ; preds = %2454
  br label %2456

2456:                                             ; preds = %2455
  %2457 = load i32, ptr @test_count, align 4, !tbaa !5
  %2458 = add nsw i32 %2457, 1
  store i32 %2458, ptr @test_count, align 4, !tbaa !5
  %2459 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2460 = load i32, ptr %2459, align 4, !tbaa !5
  %2461 = call ptr @s2n_strerror_debug(i32 noundef %2460, ptr noundef @.str.4)
  %2462 = icmp eq ptr %2461, null
  br i1 %2462, label %2463, label %2516

2463:                                             ; preds = %2456
  br label %2464

2464:                                             ; preds = %2463
  br label %2465

2465:                                             ; preds = %2464
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #10
  %2466 = call ptr @__errno_location() #11
  %2467 = load i32, ptr %2466, align 4, !tbaa !5
  store i32 %2467, ptr %98, align 4, !tbaa !5
  %2468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2469 = call i32 @s2n_print_stacktrace(ptr noundef %2468)
  %2470 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2471 = trunc i8 %2470 to i1
  br i1 %2471, label %2472, label %2494

2472:                                             ; preds = %2465
  %2473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2474 = call i32 @fileno(ptr noundef %2473) #10
  %2475 = call i32 @isatty(i32 noundef %2474) #10
  %2476 = icmp ne i32 %2475, 0
  br i1 %2476, label %2477, label %2494

2477:                                             ; preds = %2472
  %2478 = load i32, ptr %98, align 4, !tbaa !5
  %2479 = call ptr @__errno_location() #11
  store i32 %2478, ptr %2479, align 4, !tbaa !5
  %2480 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2481 = load i32, ptr @test_count, align 4, !tbaa !5
  %2482 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2483 = load i32, ptr %2482, align 4, !tbaa !5
  %2484 = call ptr @s2n_strerror(i32 noundef %2483, ptr noundef @.str.4)
  %2485 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2486 = load i32, ptr %2485, align 4, !tbaa !5
  %2487 = call ptr @s2n_strerror_debug(i32 noundef %2486, ptr noundef @.str.4)
  %2488 = call ptr @__errno_location() #11
  %2489 = load i32, ptr %2488, align 4, !tbaa !5
  %2490 = call ptr @strerror(i32 noundef %2489) #10
  %2491 = call ptr @__errno_location() #11
  %2492 = load i32, ptr %2491, align 4, !tbaa !5
  %2493 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2480, ptr noundef @.str.2, i32 noundef %2481, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 266, ptr noundef %2484, ptr noundef %2487, ptr noundef %2490, i32 noundef %2492) #10
  br label %2511

2494:                                             ; preds = %2472, %2465
  %2495 = load i32, ptr %98, align 4, !tbaa !5
  %2496 = call ptr @__errno_location() #11
  store i32 %2495, ptr %2496, align 4, !tbaa !5
  %2497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2498 = load i32, ptr @test_count, align 4, !tbaa !5
  %2499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2500 = load i32, ptr %2499, align 4, !tbaa !5
  %2501 = call ptr @s2n_strerror(i32 noundef %2500, ptr noundef @.str.4)
  %2502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2503 = load i32, ptr %2502, align 4, !tbaa !5
  %2504 = call ptr @s2n_strerror_debug(i32 noundef %2503, ptr noundef @.str.4)
  %2505 = call ptr @__errno_location() #11
  %2506 = load i32, ptr %2505, align 4, !tbaa !5
  %2507 = call ptr @strerror(i32 noundef %2506) #10
  %2508 = call ptr @__errno_location() #11
  %2509 = load i32, ptr %2508, align 4, !tbaa !5
  %2510 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2497, ptr noundef @.str.5, i32 noundef %2498, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 266, ptr noundef %2501, ptr noundef %2504, ptr noundef %2507, i32 noundef %2509) #10
  br label %2511

2511:                                             ; preds = %2494, %2477
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #10
  br label %2512

2512:                                             ; preds = %2511
  br label %2513

2513:                                             ; preds = %2512
  call void @exit(i32 noundef 1) #12
  unreachable

2514:                                             ; No predecessors!
  br label %2515

2515:                                             ; preds = %2514
  br label %2516

2516:                                             ; preds = %2515, %2456
  br label %2517

2517:                                             ; preds = %2516
  br label %2518

2518:                                             ; preds = %2517
  br label %2519

2519:                                             ; preds = %2518
  br label %2520

2520:                                             ; preds = %2519
  br label %2521

2521:                                             ; preds = %2520
  %2522 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %2522, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %2523 = call ptr @__errno_location() #11
  store i32 0, ptr %2523, align 4, !tbaa !5
  br label %2524

2524:                                             ; preds = %2521
  br label %2525

2525:                                             ; preds = %2524
  br label %2526

2526:                                             ; preds = %2525
  br label %2527

2527:                                             ; preds = %2526
  %2528 = call i32 @s2n_connection_ptr_free(ptr noundef %92)
  %2529 = getelementptr inbounds %struct.s2n_result, ptr %99, i32 0, i32 0
  store i32 %2528, ptr %2529, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  %2530 = call i32 @s2n_config_ptr_free(ptr noundef %90)
  %2531 = getelementptr inbounds %struct.s2n_result, ptr %100, i32 0, i32 0
  store i32 %2530, ptr %2531, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  %2532 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %88)
  %2533 = getelementptr inbounds %struct.s2n_result, ptr %101, i32 0, i32 0
  store i32 %2532, ptr %2533, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #10
  store ptr null, ptr %102, align 8, !tbaa !9
  br label %2534

2534:                                             ; preds = %2527
  %2535 = load i32, ptr @test_count, align 4, !tbaa !5
  %2536 = add nsw i32 %2535, 1
  store i32 %2536, ptr @test_count, align 4, !tbaa !5
  %2537 = call i32 @s2n_test_cert_permutation_load_server_chain(ptr noundef %102, ptr noundef @.str.34, ptr noundef @.str.35, ptr noundef @.str.36, ptr noundef @.str.37)
  %2538 = icmp eq i32 %2537, -1
  br i1 %2538, label %2539, label %2592

2539:                                             ; preds = %2534
  br label %2540

2540:                                             ; preds = %2539
  br label %2541

2541:                                             ; preds = %2540
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #10
  %2542 = call ptr @__errno_location() #11
  %2543 = load i32, ptr %2542, align 4, !tbaa !5
  store i32 %2543, ptr %103, align 4, !tbaa !5
  %2544 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2545 = call i32 @s2n_print_stacktrace(ptr noundef %2544)
  %2546 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2547 = trunc i8 %2546 to i1
  br i1 %2547, label %2548, label %2570

2548:                                             ; preds = %2541
  %2549 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2550 = call i32 @fileno(ptr noundef %2549) #10
  %2551 = call i32 @isatty(i32 noundef %2550) #10
  %2552 = icmp ne i32 %2551, 0
  br i1 %2552, label %2553, label %2570

2553:                                             ; preds = %2548
  %2554 = load i32, ptr %103, align 4, !tbaa !5
  %2555 = call ptr @__errno_location() #11
  store i32 %2554, ptr %2555, align 4, !tbaa !5
  %2556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2557 = load i32, ptr @test_count, align 4, !tbaa !5
  %2558 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2559 = load i32, ptr %2558, align 4, !tbaa !5
  %2560 = call ptr @s2n_strerror(i32 noundef %2559, ptr noundef @.str.4)
  %2561 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2562 = load i32, ptr %2561, align 4, !tbaa !5
  %2563 = call ptr @s2n_strerror_debug(i32 noundef %2562, ptr noundef @.str.4)
  %2564 = call ptr @__errno_location() #11
  %2565 = load i32, ptr %2564, align 4, !tbaa !5
  %2566 = call ptr @strerror(i32 noundef %2565) #10
  %2567 = call ptr @__errno_location() #11
  %2568 = load i32, ptr %2567, align 4, !tbaa !5
  %2569 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2556, ptr noundef @.str.2, i32 noundef %2557, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 274, ptr noundef %2560, ptr noundef %2563, ptr noundef %2566, i32 noundef %2568) #10
  br label %2587

2570:                                             ; preds = %2548, %2541
  %2571 = load i32, ptr %103, align 4, !tbaa !5
  %2572 = call ptr @__errno_location() #11
  store i32 %2571, ptr %2572, align 4, !tbaa !5
  %2573 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2574 = load i32, ptr @test_count, align 4, !tbaa !5
  %2575 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2576 = load i32, ptr %2575, align 4, !tbaa !5
  %2577 = call ptr @s2n_strerror(i32 noundef %2576, ptr noundef @.str.4)
  %2578 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2579 = load i32, ptr %2578, align 4, !tbaa !5
  %2580 = call ptr @s2n_strerror_debug(i32 noundef %2579, ptr noundef @.str.4)
  %2581 = call ptr @__errno_location() #11
  %2582 = load i32, ptr %2581, align 4, !tbaa !5
  %2583 = call ptr @strerror(i32 noundef %2582) #10
  %2584 = call ptr @__errno_location() #11
  %2585 = load i32, ptr %2584, align 4, !tbaa !5
  %2586 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2573, ptr noundef @.str.5, i32 noundef %2574, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 274, ptr noundef %2577, ptr noundef %2580, ptr noundef %2583, i32 noundef %2585) #10
  br label %2587

2587:                                             ; preds = %2570, %2553
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #10
  br label %2588

2588:                                             ; preds = %2587
  br label %2589

2589:                                             ; preds = %2588
  call void @exit(i32 noundef 1) #12
  unreachable

2590:                                             ; No predecessors!
  br label %2591

2591:                                             ; preds = %2590
  br label %2592

2592:                                             ; preds = %2591, %2534
  br label %2593

2593:                                             ; preds = %2592
  br label %2594

2594:                                             ; preds = %2593
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #10
  %2595 = call ptr @s2n_config_new()
  store ptr %2595, ptr %104, align 8, !tbaa !9
  br label %2596

2596:                                             ; preds = %2594
  %2597 = load i32, ptr @test_count, align 4, !tbaa !5
  %2598 = add nsw i32 %2597, 1
  store i32 %2598, ptr @test_count, align 4, !tbaa !5
  %2599 = load ptr, ptr %104, align 8, !tbaa !9
  %2600 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2599, ptr noundef @.str.32)
  %2601 = icmp eq i32 %2600, -1
  br i1 %2601, label %2602, label %2655

2602:                                             ; preds = %2596
  br label %2603

2603:                                             ; preds = %2602
  br label %2604

2604:                                             ; preds = %2603
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #10
  %2605 = call ptr @__errno_location() #11
  %2606 = load i32, ptr %2605, align 4, !tbaa !5
  store i32 %2606, ptr %105, align 4, !tbaa !5
  %2607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2608 = call i32 @s2n_print_stacktrace(ptr noundef %2607)
  %2609 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2610 = trunc i8 %2609 to i1
  br i1 %2610, label %2611, label %2633

2611:                                             ; preds = %2604
  %2612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2613 = call i32 @fileno(ptr noundef %2612) #10
  %2614 = call i32 @isatty(i32 noundef %2613) #10
  %2615 = icmp ne i32 %2614, 0
  br i1 %2615, label %2616, label %2633

2616:                                             ; preds = %2611
  %2617 = load i32, ptr %105, align 4, !tbaa !5
  %2618 = call ptr @__errno_location() #11
  store i32 %2617, ptr %2618, align 4, !tbaa !5
  %2619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2620 = load i32, ptr @test_count, align 4, !tbaa !5
  %2621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2622 = load i32, ptr %2621, align 4, !tbaa !5
  %2623 = call ptr @s2n_strerror(i32 noundef %2622, ptr noundef @.str.4)
  %2624 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2625 = load i32, ptr %2624, align 4, !tbaa !5
  %2626 = call ptr @s2n_strerror_debug(i32 noundef %2625, ptr noundef @.str.4)
  %2627 = call ptr @__errno_location() #11
  %2628 = load i32, ptr %2627, align 4, !tbaa !5
  %2629 = call ptr @strerror(i32 noundef %2628) #10
  %2630 = call ptr @__errno_location() #11
  %2631 = load i32, ptr %2630, align 4, !tbaa !5
  %2632 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2619, ptr noundef @.str.2, i32 noundef %2620, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 279, ptr noundef %2623, ptr noundef %2626, ptr noundef %2629, i32 noundef %2631) #10
  br label %2650

2633:                                             ; preds = %2611, %2604
  %2634 = load i32, ptr %105, align 4, !tbaa !5
  %2635 = call ptr @__errno_location() #11
  store i32 %2634, ptr %2635, align 4, !tbaa !5
  %2636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2637 = load i32, ptr @test_count, align 4, !tbaa !5
  %2638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2639 = load i32, ptr %2638, align 4, !tbaa !5
  %2640 = call ptr @s2n_strerror(i32 noundef %2639, ptr noundef @.str.4)
  %2641 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2642 = load i32, ptr %2641, align 4, !tbaa !5
  %2643 = call ptr @s2n_strerror_debug(i32 noundef %2642, ptr noundef @.str.4)
  %2644 = call ptr @__errno_location() #11
  %2645 = load i32, ptr %2644, align 4, !tbaa !5
  %2646 = call ptr @strerror(i32 noundef %2645) #10
  %2647 = call ptr @__errno_location() #11
  %2648 = load i32, ptr %2647, align 4, !tbaa !5
  %2649 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2636, ptr noundef @.str.5, i32 noundef %2637, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 279, ptr noundef %2640, ptr noundef %2643, ptr noundef %2646, i32 noundef %2648) #10
  br label %2650

2650:                                             ; preds = %2633, %2616
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #10
  br label %2651

2651:                                             ; preds = %2650
  br label %2652

2652:                                             ; preds = %2651
  call void @exit(i32 noundef 1) #12
  unreachable

2653:                                             ; No predecessors!
  br label %2654

2654:                                             ; preds = %2653
  br label %2655

2655:                                             ; preds = %2654, %2596
  br label %2656

2656:                                             ; preds = %2655
  br label %2657

2657:                                             ; preds = %2656
  br label %2658

2658:                                             ; preds = %2657
  br label %2659

2659:                                             ; preds = %2658
  br label %2660

2660:                                             ; preds = %2659
  %2661 = load i32, ptr @test_count, align 4, !tbaa !5
  %2662 = add nsw i32 %2661, 1
  store i32 %2662, ptr @test_count, align 4, !tbaa !5
  %2663 = load ptr, ptr %104, align 8, !tbaa !9
  %2664 = load ptr, ptr %102, align 8, !tbaa !9
  %2665 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %2663, ptr noundef %2664)
  %2666 = icmp eq i32 %2665, -1
  br i1 %2666, label %2720, label %2667

2667:                                             ; preds = %2660
  br label %2668

2668:                                             ; preds = %2667
  br label %2669

2669:                                             ; preds = %2668
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #10
  %2670 = call ptr @__errno_location() #11
  %2671 = load i32, ptr %2670, align 4, !tbaa !5
  store i32 %2671, ptr %106, align 4, !tbaa !5
  %2672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2673 = call i32 @s2n_print_stacktrace(ptr noundef %2672)
  %2674 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2675 = trunc i8 %2674 to i1
  br i1 %2675, label %2676, label %2698

2676:                                             ; preds = %2669
  %2677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2678 = call i32 @fileno(ptr noundef %2677) #10
  %2679 = call i32 @isatty(i32 noundef %2678) #10
  %2680 = icmp ne i32 %2679, 0
  br i1 %2680, label %2681, label %2698

2681:                                             ; preds = %2676
  %2682 = load i32, ptr %106, align 4, !tbaa !5
  %2683 = call ptr @__errno_location() #11
  store i32 %2682, ptr %2683, align 4, !tbaa !5
  %2684 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2685 = load i32, ptr @test_count, align 4, !tbaa !5
  %2686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2687 = load i32, ptr %2686, align 4, !tbaa !5
  %2688 = call ptr @s2n_strerror(i32 noundef %2687, ptr noundef @.str.4)
  %2689 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2690 = load i32, ptr %2689, align 4, !tbaa !5
  %2691 = call ptr @s2n_strerror_debug(i32 noundef %2690, ptr noundef @.str.4)
  %2692 = call ptr @__errno_location() #11
  %2693 = load i32, ptr %2692, align 4, !tbaa !5
  %2694 = call ptr @strerror(i32 noundef %2693) #10
  %2695 = call ptr @__errno_location() #11
  %2696 = load i32, ptr %2695, align 4, !tbaa !5
  %2697 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2684, ptr noundef @.str.2, i32 noundef %2685, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 282, ptr noundef %2688, ptr noundef %2691, ptr noundef %2694, i32 noundef %2696) #10
  br label %2715

2698:                                             ; preds = %2676, %2669
  %2699 = load i32, ptr %106, align 4, !tbaa !5
  %2700 = call ptr @__errno_location() #11
  store i32 %2699, ptr %2700, align 4, !tbaa !5
  %2701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2702 = load i32, ptr @test_count, align 4, !tbaa !5
  %2703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2704 = load i32, ptr %2703, align 4, !tbaa !5
  %2705 = call ptr @s2n_strerror(i32 noundef %2704, ptr noundef @.str.4)
  %2706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2707 = load i32, ptr %2706, align 4, !tbaa !5
  %2708 = call ptr @s2n_strerror_debug(i32 noundef %2707, ptr noundef @.str.4)
  %2709 = call ptr @__errno_location() #11
  %2710 = load i32, ptr %2709, align 4, !tbaa !5
  %2711 = call ptr @strerror(i32 noundef %2710) #10
  %2712 = call ptr @__errno_location() #11
  %2713 = load i32, ptr %2712, align 4, !tbaa !5
  %2714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2701, ptr noundef @.str.5, i32 noundef %2702, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 282, ptr noundef %2705, ptr noundef %2708, ptr noundef %2711, i32 noundef %2713) #10
  br label %2715

2715:                                             ; preds = %2698, %2681
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #10
  br label %2716

2716:                                             ; preds = %2715
  br label %2717

2717:                                             ; preds = %2716
  call void @exit(i32 noundef 1) #12
  unreachable

2718:                                             ; No predecessors!
  br label %2719

2719:                                             ; preds = %2718
  br label %2720

2720:                                             ; preds = %2719, %2660
  br label %2721

2721:                                             ; preds = %2720
  br label %2722

2722:                                             ; preds = %2721
  br label %2723

2723:                                             ; preds = %2722
  %2724 = load i32, ptr @test_count, align 4, !tbaa !5
  %2725 = add nsw i32 %2724, 1
  store i32 %2725, ptr @test_count, align 4, !tbaa !5
  %2726 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2727 = load i32, ptr %2726, align 4, !tbaa !5
  %2728 = icmp eq i32 %2727, 469762133
  br i1 %2728, label %2782, label %2729

2729:                                             ; preds = %2723
  br label %2730

2730:                                             ; preds = %2729
  br label %2731

2731:                                             ; preds = %2730
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #10
  %2732 = call ptr @__errno_location() #11
  %2733 = load i32, ptr %2732, align 4, !tbaa !5
  store i32 %2733, ptr %107, align 4, !tbaa !5
  %2734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2735 = call i32 @s2n_print_stacktrace(ptr noundef %2734)
  %2736 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2737 = trunc i8 %2736 to i1
  br i1 %2737, label %2738, label %2760

2738:                                             ; preds = %2731
  %2739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2740 = call i32 @fileno(ptr noundef %2739) #10
  %2741 = call i32 @isatty(i32 noundef %2740) #10
  %2742 = icmp ne i32 %2741, 0
  br i1 %2742, label %2743, label %2760

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

2760:                                             ; preds = %2738, %2731
  %2761 = load i32, ptr %107, align 4, !tbaa !5
  %2762 = call ptr @__errno_location() #11
  store i32 %2761, ptr %2762, align 4, !tbaa !5
  %2763 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2764 = load i32, ptr @test_count, align 4, !tbaa !5
  %2765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2766 = load i32, ptr %2765, align 4, !tbaa !5
  %2767 = call ptr @s2n_strerror(i32 noundef %2766, ptr noundef @.str.4)
  %2768 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2769 = load i32, ptr %2768, align 4, !tbaa !5
  %2770 = call ptr @s2n_strerror_debug(i32 noundef %2769, ptr noundef @.str.4)
  %2771 = call ptr @__errno_location() #11
  %2772 = load i32, ptr %2771, align 4, !tbaa !5
  %2773 = call ptr @strerror(i32 noundef %2772) #10
  %2774 = call ptr @__errno_location() #11
  %2775 = load i32, ptr %2774, align 4, !tbaa !5
  %2776 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2763, ptr noundef @.str.5, i32 noundef %2764, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 282, ptr noundef %2767, ptr noundef %2770, ptr noundef %2773, i32 noundef %2775) #10
  br label %2777

2777:                                             ; preds = %2760, %2743
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #10
  br label %2778

2778:                                             ; preds = %2777
  br label %2779

2779:                                             ; preds = %2778
  call void @exit(i32 noundef 1) #12
  unreachable

2780:                                             ; No predecessors!
  br label %2781

2781:                                             ; preds = %2780
  br label %2782

2782:                                             ; preds = %2781, %2723
  br label %2783

2783:                                             ; preds = %2782
  br label %2784

2784:                                             ; preds = %2783
  br label %2785

2785:                                             ; preds = %2784
  %2786 = load i32, ptr @test_count, align 4, !tbaa !5
  %2787 = add nsw i32 %2786, 1
  store i32 %2787, ptr @test_count, align 4, !tbaa !5
  %2788 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2789 = load i32, ptr %2788, align 4, !tbaa !5
  %2790 = call ptr @s2n_strerror_debug(i32 noundef %2789, ptr noundef @.str.4)
  %2791 = icmp eq ptr %2790, null
  br i1 %2791, label %2792, label %2845

2792:                                             ; preds = %2785
  br label %2793

2793:                                             ; preds = %2792
  br label %2794

2794:                                             ; preds = %2793
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #10
  %2795 = call ptr @__errno_location() #11
  %2796 = load i32, ptr %2795, align 4, !tbaa !5
  store i32 %2796, ptr %108, align 4, !tbaa !5
  %2797 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2798 = call i32 @s2n_print_stacktrace(ptr noundef %2797)
  %2799 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2800 = trunc i8 %2799 to i1
  br i1 %2800, label %2801, label %2823

2801:                                             ; preds = %2794
  %2802 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2803 = call i32 @fileno(ptr noundef %2802) #10
  %2804 = call i32 @isatty(i32 noundef %2803) #10
  %2805 = icmp ne i32 %2804, 0
  br i1 %2805, label %2806, label %2823

2806:                                             ; preds = %2801
  %2807 = load i32, ptr %108, align 4, !tbaa !5
  %2808 = call ptr @__errno_location() #11
  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() #11
  %2818 = load i32, ptr %2817, align 4, !tbaa !5
  %2819 = call ptr @strerror(i32 noundef %2818) #10
  %2820 = call ptr @__errno_location() #11
  %2821 = load i32, ptr %2820, align 4, !tbaa !5
  %2822 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2809, ptr noundef @.str.2, i32 noundef %2810, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 282, ptr noundef %2813, ptr noundef %2816, ptr noundef %2819, i32 noundef %2821) #10
  br label %2840

2823:                                             ; preds = %2801, %2794
  %2824 = load i32, ptr %108, align 4, !tbaa !5
  %2825 = call ptr @__errno_location() #11
  store i32 %2824, ptr %2825, align 4, !tbaa !5
  %2826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2827 = load i32, ptr @test_count, align 4, !tbaa !5
  %2828 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2829 = load i32, ptr %2828, align 4, !tbaa !5
  %2830 = call ptr @s2n_strerror(i32 noundef %2829, ptr noundef @.str.4)
  %2831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2832 = load i32, ptr %2831, align 4, !tbaa !5
  %2833 = call ptr @s2n_strerror_debug(i32 noundef %2832, ptr noundef @.str.4)
  %2834 = call ptr @__errno_location() #11
  %2835 = load i32, ptr %2834, align 4, !tbaa !5
  %2836 = call ptr @strerror(i32 noundef %2835) #10
  %2837 = call ptr @__errno_location() #11
  %2838 = load i32, ptr %2837, align 4, !tbaa !5
  %2839 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2826, ptr noundef @.str.5, i32 noundef %2827, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 282, ptr noundef %2830, ptr noundef %2833, ptr noundef %2836, i32 noundef %2838) #10
  br label %2840

2840:                                             ; preds = %2823, %2806
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #10
  br label %2841

2841:                                             ; preds = %2840
  br label %2842

2842:                                             ; preds = %2841
  call void @exit(i32 noundef 1) #12
  unreachable

2843:                                             ; No predecessors!
  br label %2844

2844:                                             ; preds = %2843
  br label %2845

2845:                                             ; preds = %2844, %2785
  br label %2846

2846:                                             ; preds = %2845
  br label %2847

2847:                                             ; preds = %2846
  br label %2848

2848:                                             ; preds = %2847
  br label %2849

2849:                                             ; preds = %2848
  br label %2850

2850:                                             ; preds = %2849
  %2851 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %2851, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %2852 = call ptr @__errno_location() #11
  store i32 0, ptr %2852, align 4, !tbaa !5
  br label %2853

2853:                                             ; preds = %2850
  br label %2854

2854:                                             ; preds = %2853
  br label %2855

2855:                                             ; preds = %2854
  br label %2856

2856:                                             ; preds = %2855
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #10
  store i32 0, ptr %109, align 4, !tbaa !5
  br label %2857

2857:                                             ; preds = %2856
  %2858 = load i32, ptr @test_count, align 4, !tbaa !5
  %2859 = add nsw i32 %2858, 1
  store i32 %2859, ptr @test_count, align 4, !tbaa !5
  %2860 = load ptr, ptr %104, align 8, !tbaa !9
  %2861 = call i32 @s2n_config_get_num_default_certs(ptr noundef %2860)
  %2862 = icmp eq i32 %2861, 0
  br i1 %2862, label %2916, label %2863

2863:                                             ; preds = %2857
  br label %2864

2864:                                             ; preds = %2863
  br label %2865

2865:                                             ; preds = %2864
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #10
  %2866 = call ptr @__errno_location() #11
  %2867 = load i32, ptr %2866, align 4, !tbaa !5
  store i32 %2867, ptr %110, align 4, !tbaa !5
  %2868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2869 = call i32 @s2n_print_stacktrace(ptr noundef %2868)
  %2870 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2871 = trunc i8 %2870 to i1
  br i1 %2871, label %2872, label %2894

2872:                                             ; preds = %2865
  %2873 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2874 = call i32 @fileno(ptr noundef %2873) #10
  %2875 = call i32 @isatty(i32 noundef %2874) #10
  %2876 = icmp ne i32 %2875, 0
  br i1 %2876, label %2877, label %2894

2877:                                             ; preds = %2872
  %2878 = load i32, ptr %110, align 4, !tbaa !5
  %2879 = call ptr @__errno_location() #11
  store i32 %2878, ptr %2879, align 4, !tbaa !5
  %2880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2881 = load i32, ptr @test_count, align 4, !tbaa !5
  %2882 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2883 = load i32, ptr %2882, align 4, !tbaa !5
  %2884 = call ptr @s2n_strerror(i32 noundef %2883, ptr noundef @.str.4)
  %2885 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2886 = load i32, ptr %2885, align 4, !tbaa !5
  %2887 = call ptr @s2n_strerror_debug(i32 noundef %2886, ptr noundef @.str.4)
  %2888 = call ptr @__errno_location() #11
  %2889 = load i32, ptr %2888, align 4, !tbaa !5
  %2890 = call ptr @strerror(i32 noundef %2889) #10
  %2891 = call ptr @__errno_location() #11
  %2892 = load i32, ptr %2891, align 4, !tbaa !5
  %2893 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2880, ptr noundef @.str.2, i32 noundef %2881, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 286, ptr noundef %2884, ptr noundef %2887, ptr noundef %2890, i32 noundef %2892) #10
  br label %2911

2894:                                             ; preds = %2872, %2865
  %2895 = load i32, ptr %110, align 4, !tbaa !5
  %2896 = call ptr @__errno_location() #11
  store i32 %2895, ptr %2896, align 4, !tbaa !5
  %2897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2898 = load i32, ptr @test_count, align 4, !tbaa !5
  %2899 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2900 = load i32, ptr %2899, align 4, !tbaa !5
  %2901 = call ptr @s2n_strerror(i32 noundef %2900, ptr noundef @.str.4)
  %2902 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2903 = load i32, ptr %2902, align 4, !tbaa !5
  %2904 = call ptr @s2n_strerror_debug(i32 noundef %2903, ptr noundef @.str.4)
  %2905 = call ptr @__errno_location() #11
  %2906 = load i32, ptr %2905, align 4, !tbaa !5
  %2907 = call ptr @strerror(i32 noundef %2906) #10
  %2908 = call ptr @__errno_location() #11
  %2909 = load i32, ptr %2908, align 4, !tbaa !5
  %2910 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2897, ptr noundef @.str.5, i32 noundef %2898, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 286, ptr noundef %2901, ptr noundef %2904, ptr noundef %2907, i32 noundef %2909) #10
  br label %2911

2911:                                             ; preds = %2894, %2877
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #10
  br label %2912

2912:                                             ; preds = %2911
  br label %2913

2913:                                             ; preds = %2912
  call void @exit(i32 noundef 1) #12
  unreachable

2914:                                             ; No predecessors!
  br label %2915

2915:                                             ; preds = %2914
  br label %2916

2916:                                             ; preds = %2915, %2857
  br label %2917

2917:                                             ; preds = %2916
  br label %2918

2918:                                             ; preds = %2917
  br label %2919

2919:                                             ; preds = %2918
  %2920 = load i32, ptr @test_count, align 4, !tbaa !5
  %2921 = add nsw i32 %2920, 1
  store i32 %2921, ptr @test_count, align 4, !tbaa !5
  %2922 = load ptr, ptr %104, align 8, !tbaa !9
  %2923 = getelementptr inbounds %struct.s2n_config, ptr %2922, i32 0, i32 2
  %2924 = load ptr, ptr %2923, align 8, !tbaa !44
  %2925 = call i32 @s2n_map_size(ptr noundef %2924, ptr noundef %109)
  %2926 = getelementptr inbounds %struct.s2n_result, ptr %111, i32 0, i32 0
  store i32 %2925, ptr %2926, align 4
  %2927 = getelementptr inbounds %struct.s2n_result, ptr %111, i32 0, i32 0
  %2928 = load i32, ptr %2927, align 4
  %2929 = call zeroext i1 @s2n_result_is_ok(i32 %2928)
  br i1 %2929, label %2983, label %2930

2930:                                             ; preds = %2919
  br label %2931

2931:                                             ; preds = %2930
  br label %2932

2932:                                             ; preds = %2931
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #10
  %2933 = call ptr @__errno_location() #11
  %2934 = load i32, ptr %2933, align 4, !tbaa !5
  store i32 %2934, ptr %112, align 4, !tbaa !5
  %2935 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2936 = call i32 @s2n_print_stacktrace(ptr noundef %2935)
  %2937 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2938 = trunc i8 %2937 to i1
  br i1 %2938, label %2939, label %2961

2939:                                             ; preds = %2932
  %2940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2941 = call i32 @fileno(ptr noundef %2940) #10
  %2942 = call i32 @isatty(i32 noundef %2941) #10
  %2943 = icmp ne i32 %2942, 0
  br i1 %2943, label %2944, label %2961

2944:                                             ; preds = %2939
  %2945 = load i32, ptr %112, align 4, !tbaa !5
  %2946 = call ptr @__errno_location() #11
  store i32 %2945, ptr %2946, align 4, !tbaa !5
  %2947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2948 = load i32, ptr @test_count, align 4, !tbaa !5
  %2949 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2950 = load i32, ptr %2949, align 4, !tbaa !5
  %2951 = call ptr @s2n_strerror(i32 noundef %2950, ptr noundef @.str.4)
  %2952 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2953 = load i32, ptr %2952, align 4, !tbaa !5
  %2954 = call ptr @s2n_strerror_debug(i32 noundef %2953, ptr noundef @.str.4)
  %2955 = call ptr @__errno_location() #11
  %2956 = load i32, ptr %2955, align 4, !tbaa !5
  %2957 = call ptr @strerror(i32 noundef %2956) #10
  %2958 = call ptr @__errno_location() #11
  %2959 = load i32, ptr %2958, align 4, !tbaa !5
  %2960 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2947, ptr noundef @.str.2, i32 noundef %2948, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 287, ptr noundef %2951, ptr noundef %2954, ptr noundef %2957, i32 noundef %2959) #10
  br label %2978

2961:                                             ; preds = %2939, %2932
  %2962 = load i32, ptr %112, align 4, !tbaa !5
  %2963 = call ptr @__errno_location() #11
  store i32 %2962, ptr %2963, align 4, !tbaa !5
  %2964 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2965 = load i32, ptr @test_count, align 4, !tbaa !5
  %2966 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2967 = load i32, ptr %2966, align 4, !tbaa !5
  %2968 = call ptr @s2n_strerror(i32 noundef %2967, ptr noundef @.str.4)
  %2969 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2970 = load i32, ptr %2969, align 4, !tbaa !5
  %2971 = call ptr @s2n_strerror_debug(i32 noundef %2970, ptr noundef @.str.4)
  %2972 = call ptr @__errno_location() #11
  %2973 = load i32, ptr %2972, align 4, !tbaa !5
  %2974 = call ptr @strerror(i32 noundef %2973) #10
  %2975 = call ptr @__errno_location() #11
  %2976 = load i32, ptr %2975, align 4, !tbaa !5
  %2977 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2964, ptr noundef @.str.5, i32 noundef %2965, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 287, ptr noundef %2968, ptr noundef %2971, ptr noundef %2974, i32 noundef %2976) #10
  br label %2978

2978:                                             ; preds = %2961, %2944
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #10
  br label %2979

2979:                                             ; preds = %2978
  br label %2980

2980:                                             ; preds = %2979
  call void @exit(i32 noundef 1) #12
  unreachable

2981:                                             ; No predecessors!
  br label %2982

2982:                                             ; preds = %2981
  br label %2983

2983:                                             ; preds = %2982, %2919
  br label %2984

2984:                                             ; preds = %2983
  br label %2985

2985:                                             ; preds = %2984
  br label %2986

2986:                                             ; preds = %2985
  %2987 = load i32, ptr @test_count, align 4, !tbaa !5
  %2988 = add nsw i32 %2987, 1
  store i32 %2988, ptr @test_count, align 4, !tbaa !5
  %2989 = load i32, ptr %109, align 4, !tbaa !5
  %2990 = icmp eq i32 %2989, 0
  br i1 %2990, label %3044, label %2991

2991:                                             ; preds = %2986
  br label %2992

2992:                                             ; preds = %2991
  br label %2993

2993:                                             ; preds = %2992
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #10
  %2994 = call ptr @__errno_location() #11
  %2995 = load i32, ptr %2994, align 4, !tbaa !5
  store i32 %2995, ptr %113, align 4, !tbaa !5
  %2996 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2997 = call i32 @s2n_print_stacktrace(ptr noundef %2996)
  %2998 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2999 = trunc i8 %2998 to i1
  br i1 %2999, label %3000, label %3022

3000:                                             ; preds = %2993
  %3001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3002 = call i32 @fileno(ptr noundef %3001) #10
  %3003 = call i32 @isatty(i32 noundef %3002) #10
  %3004 = icmp ne i32 %3003, 0
  br i1 %3004, label %3005, label %3022

3005:                                             ; preds = %3000
  %3006 = load i32, ptr %113, align 4, !tbaa !5
  %3007 = call ptr @__errno_location() #11
  store i32 %3006, ptr %3007, align 4, !tbaa !5
  %3008 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3009 = load i32, ptr @test_count, align 4, !tbaa !5
  %3010 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3011 = load i32, ptr %3010, align 4, !tbaa !5
  %3012 = call ptr @s2n_strerror(i32 noundef %3011, ptr noundef @.str.4)
  %3013 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3014 = load i32, ptr %3013, align 4, !tbaa !5
  %3015 = call ptr @s2n_strerror_debug(i32 noundef %3014, ptr noundef @.str.4)
  %3016 = call ptr @__errno_location() #11
  %3017 = load i32, ptr %3016, align 4, !tbaa !5
  %3018 = call ptr @strerror(i32 noundef %3017) #10
  %3019 = call ptr @__errno_location() #11
  %3020 = load i32, ptr %3019, align 4, !tbaa !5
  %3021 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3008, ptr noundef @.str.2, i32 noundef %3009, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 288, ptr noundef %3012, ptr noundef %3015, ptr noundef %3018, i32 noundef %3020) #10
  br label %3039

3022:                                             ; preds = %3000, %2993
  %3023 = load i32, ptr %113, align 4, !tbaa !5
  %3024 = call ptr @__errno_location() #11
  store i32 %3023, ptr %3024, align 4, !tbaa !5
  %3025 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3026 = load i32, ptr @test_count, align 4, !tbaa !5
  %3027 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3028 = load i32, ptr %3027, align 4, !tbaa !5
  %3029 = call ptr @s2n_strerror(i32 noundef %3028, ptr noundef @.str.4)
  %3030 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3031 = load i32, ptr %3030, align 4, !tbaa !5
  %3032 = call ptr @s2n_strerror_debug(i32 noundef %3031, ptr noundef @.str.4)
  %3033 = call ptr @__errno_location() #11
  %3034 = load i32, ptr %3033, align 4, !tbaa !5
  %3035 = call ptr @strerror(i32 noundef %3034) #10
  %3036 = call ptr @__errno_location() #11
  %3037 = load i32, ptr %3036, align 4, !tbaa !5
  %3038 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3025, ptr noundef @.str.5, i32 noundef %3026, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 288, ptr noundef %3029, ptr noundef %3032, ptr noundef %3035, i32 noundef %3037) #10
  br label %3039

3039:                                             ; preds = %3022, %3005
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #10
  br label %3040

3040:                                             ; preds = %3039
  br label %3041

3041:                                             ; preds = %3040
  call void @exit(i32 noundef 1) #12
  unreachable

3042:                                             ; No predecessors!
  br label %3043

3043:                                             ; preds = %3042
  br label %3044

3044:                                             ; preds = %3043, %2986
  br label %3045

3045:                                             ; preds = %3044
  br label %3046

3046:                                             ; preds = %3045
  br label %3047

3047:                                             ; preds = %3046
  %3048 = load i32, ptr @test_count, align 4, !tbaa !5
  %3049 = add nsw i32 %3048, 1
  store i32 %3049, ptr @test_count, align 4, !tbaa !5
  %3050 = load ptr, ptr %104, align 8, !tbaa !9
  %3051 = call i32 @s2n_config_get_num_default_certs(ptr noundef %3050)
  %3052 = icmp eq i32 %3051, 0
  br i1 %3052, label %3106, label %3053

3053:                                             ; preds = %3047
  br label %3054

3054:                                             ; preds = %3053
  br label %3055

3055:                                             ; preds = %3054
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #10
  %3056 = call ptr @__errno_location() #11
  %3057 = load i32, ptr %3056, align 4, !tbaa !5
  store i32 %3057, ptr %114, align 4, !tbaa !5
  %3058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3059 = call i32 @s2n_print_stacktrace(ptr noundef %3058)
  %3060 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3061 = trunc i8 %3060 to i1
  br i1 %3061, label %3062, label %3084

3062:                                             ; preds = %3055
  %3063 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3064 = call i32 @fileno(ptr noundef %3063) #10
  %3065 = call i32 @isatty(i32 noundef %3064) #10
  %3066 = icmp ne i32 %3065, 0
  br i1 %3066, label %3067, label %3084

3067:                                             ; preds = %3062
  %3068 = load i32, ptr %114, align 4, !tbaa !5
  %3069 = call ptr @__errno_location() #11
  store i32 %3068, ptr %3069, align 4, !tbaa !5
  %3070 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3071 = load i32, ptr @test_count, align 4, !tbaa !5
  %3072 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3073 = load i32, ptr %3072, align 4, !tbaa !5
  %3074 = call ptr @s2n_strerror(i32 noundef %3073, ptr noundef @.str.4)
  %3075 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3076 = load i32, ptr %3075, align 4, !tbaa !5
  %3077 = call ptr @s2n_strerror_debug(i32 noundef %3076, ptr noundef @.str.4)
  %3078 = call ptr @__errno_location() #11
  %3079 = load i32, ptr %3078, align 4, !tbaa !5
  %3080 = call ptr @strerror(i32 noundef %3079) #10
  %3081 = call ptr @__errno_location() #11
  %3082 = load i32, ptr %3081, align 4, !tbaa !5
  %3083 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3070, ptr noundef @.str.2, i32 noundef %3071, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 289, ptr noundef %3074, ptr noundef %3077, ptr noundef %3080, i32 noundef %3082) #10
  br label %3101

3084:                                             ; preds = %3062, %3055
  %3085 = load i32, ptr %114, align 4, !tbaa !5
  %3086 = call ptr @__errno_location() #11
  store i32 %3085, ptr %3086, align 4, !tbaa !5
  %3087 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3088 = load i32, ptr @test_count, align 4, !tbaa !5
  %3089 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3090 = load i32, ptr %3089, align 4, !tbaa !5
  %3091 = call ptr @s2n_strerror(i32 noundef %3090, ptr noundef @.str.4)
  %3092 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3093 = load i32, ptr %3092, align 4, !tbaa !5
  %3094 = call ptr @s2n_strerror_debug(i32 noundef %3093, ptr noundef @.str.4)
  %3095 = call ptr @__errno_location() #11
  %3096 = load i32, ptr %3095, align 4, !tbaa !5
  %3097 = call ptr @strerror(i32 noundef %3096) #10
  %3098 = call ptr @__errno_location() #11
  %3099 = load i32, ptr %3098, align 4, !tbaa !5
  %3100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3087, ptr noundef @.str.5, i32 noundef %3088, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 289, ptr noundef %3091, ptr noundef %3094, ptr noundef %3097, i32 noundef %3099) #10
  br label %3101

3101:                                             ; preds = %3084, %3067
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #10
  br label %3102

3102:                                             ; preds = %3101
  br label %3103

3103:                                             ; preds = %3102
  call void @exit(i32 noundef 1) #12
  unreachable

3104:                                             ; No predecessors!
  br label %3105

3105:                                             ; preds = %3104
  br label %3106

3106:                                             ; preds = %3105, %3047
  br label %3107

3107:                                             ; preds = %3106
  br label %3108

3108:                                             ; preds = %3107
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #10
  %3109 = call i32 @s2n_config_ptr_free(ptr noundef %104)
  %3110 = getelementptr inbounds %struct.s2n_result, ptr %115, i32 0, i32 0
  store i32 %3109, ptr %3110, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #10
  %3111 = call ptr @s2n_config_new()
  store ptr %3111, ptr %116, align 8, !tbaa !9
  br label %3112

3112:                                             ; preds = %3108
  %3113 = load i32, ptr @test_count, align 4, !tbaa !5
  %3114 = add nsw i32 %3113, 1
  store i32 %3114, ptr @test_count, align 4, !tbaa !5
  %3115 = load ptr, ptr %116, align 8, !tbaa !9
  %3116 = load ptr, ptr %102, align 8, !tbaa !9
  %3117 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %3115, ptr noundef %3116)
  %3118 = icmp eq i32 %3117, -1
  br i1 %3118, label %3119, label %3172

3119:                                             ; preds = %3112
  br label %3120

3120:                                             ; preds = %3119
  br label %3121

3121:                                             ; preds = %3120
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #10
  %3122 = call ptr @__errno_location() #11
  %3123 = load i32, ptr %3122, align 4, !tbaa !5
  store i32 %3123, ptr %117, align 4, !tbaa !5
  %3124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3125 = call i32 @s2n_print_stacktrace(ptr noundef %3124)
  %3126 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3127 = trunc i8 %3126 to i1
  br i1 %3127, label %3128, label %3150

3128:                                             ; preds = %3121
  %3129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3130 = call i32 @fileno(ptr noundef %3129) #10
  %3131 = call i32 @isatty(i32 noundef %3130) #10
  %3132 = icmp ne i32 %3131, 0
  br i1 %3132, label %3133, label %3150

3133:                                             ; preds = %3128
  %3134 = load i32, ptr %117, align 4, !tbaa !5
  %3135 = call ptr @__errno_location() #11
  store i32 %3134, ptr %3135, align 4, !tbaa !5
  %3136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3137 = load i32, ptr @test_count, align 4, !tbaa !5
  %3138 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3139 = load i32, ptr %3138, align 4, !tbaa !5
  %3140 = call ptr @s2n_strerror(i32 noundef %3139, ptr noundef @.str.4)
  %3141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3142 = load i32, ptr %3141, align 4, !tbaa !5
  %3143 = call ptr @s2n_strerror_debug(i32 noundef %3142, ptr noundef @.str.4)
  %3144 = call ptr @__errno_location() #11
  %3145 = load i32, ptr %3144, align 4, !tbaa !5
  %3146 = call ptr @strerror(i32 noundef %3145) #10
  %3147 = call ptr @__errno_location() #11
  %3148 = load i32, ptr %3147, align 4, !tbaa !5
  %3149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3136, ptr noundef @.str.2, i32 noundef %3137, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 295, ptr noundef %3140, ptr noundef %3143, ptr noundef %3146, i32 noundef %3148) #10
  br label %3167

3150:                                             ; preds = %3128, %3121
  %3151 = load i32, ptr %117, align 4, !tbaa !5
  %3152 = call ptr @__errno_location() #11
  store i32 %3151, ptr %3152, align 4, !tbaa !5
  %3153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3154 = load i32, ptr @test_count, align 4, !tbaa !5
  %3155 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3156 = load i32, ptr %3155, align 4, !tbaa !5
  %3157 = call ptr @s2n_strerror(i32 noundef %3156, ptr noundef @.str.4)
  %3158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3159 = load i32, ptr %3158, align 4, !tbaa !5
  %3160 = call ptr @s2n_strerror_debug(i32 noundef %3159, ptr noundef @.str.4)
  %3161 = call ptr @__errno_location() #11
  %3162 = load i32, ptr %3161, align 4, !tbaa !5
  %3163 = call ptr @strerror(i32 noundef %3162) #10
  %3164 = call ptr @__errno_location() #11
  %3165 = load i32, ptr %3164, align 4, !tbaa !5
  %3166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3153, ptr noundef @.str.5, i32 noundef %3154, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 295, ptr noundef %3157, ptr noundef %3160, ptr noundef %3163, i32 noundef %3165) #10
  br label %3167

3167:                                             ; preds = %3150, %3133
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #10
  br label %3168

3168:                                             ; preds = %3167
  br label %3169

3169:                                             ; preds = %3168
  call void @exit(i32 noundef 1) #12
  unreachable

3170:                                             ; No predecessors!
  br label %3171

3171:                                             ; preds = %3170
  br label %3172

3172:                                             ; preds = %3171, %3112
  br label %3173

3173:                                             ; preds = %3172
  br label %3174

3174:                                             ; preds = %3173
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #10
  %3175 = load ptr, ptr %116, align 8, !tbaa !9
  %3176 = getelementptr inbounds %struct.s2n_config, ptr %3175, i32 0, i32 7
  %3177 = load ptr, ptr %3176, align 8, !tbaa !49
  store ptr %3177, ptr %118, align 8, !tbaa !9
  br label %3178

3178:                                             ; preds = %3174
  br label %3179

3179:                                             ; preds = %3178
  br label %3180

3180:                                             ; preds = %3179
  %3181 = load i32, ptr @test_count, align 4, !tbaa !5
  %3182 = add nsw i32 %3181, 1
  store i32 %3182, ptr @test_count, align 4, !tbaa !5
  %3183 = load ptr, ptr %116, align 8, !tbaa !9
  %3184 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %3183, ptr noundef @.str.32)
  %3185 = icmp eq i32 %3184, -1
  br i1 %3185, label %3239, label %3186

3186:                                             ; preds = %3180
  br label %3187

3187:                                             ; preds = %3186
  br label %3188

3188:                                             ; preds = %3187
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #10
  %3189 = call ptr @__errno_location() #11
  %3190 = load i32, ptr %3189, align 4, !tbaa !5
  store i32 %3190, ptr %119, align 4, !tbaa !5
  %3191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3192 = call i32 @s2n_print_stacktrace(ptr noundef %3191)
  %3193 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3194 = trunc i8 %3193 to i1
  br i1 %3194, label %3195, label %3217

3195:                                             ; preds = %3188
  %3196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3197 = call i32 @fileno(ptr noundef %3196) #10
  %3198 = call i32 @isatty(i32 noundef %3197) #10
  %3199 = icmp ne i32 %3198, 0
  br i1 %3199, label %3200, label %3217

3200:                                             ; preds = %3195
  %3201 = load i32, ptr %119, align 4, !tbaa !5
  %3202 = call ptr @__errno_location() #11
  store i32 %3201, ptr %3202, align 4, !tbaa !5
  %3203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3204 = load i32, ptr @test_count, align 4, !tbaa !5
  %3205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3206 = load i32, ptr %3205, align 4, !tbaa !5
  %3207 = call ptr @s2n_strerror(i32 noundef %3206, ptr noundef @.str.4)
  %3208 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3209 = load i32, ptr %3208, align 4, !tbaa !5
  %3210 = call ptr @s2n_strerror_debug(i32 noundef %3209, ptr noundef @.str.4)
  %3211 = call ptr @__errno_location() #11
  %3212 = load i32, ptr %3211, align 4, !tbaa !5
  %3213 = call ptr @strerror(i32 noundef %3212) #10
  %3214 = call ptr @__errno_location() #11
  %3215 = load i32, ptr %3214, align 4, !tbaa !5
  %3216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3203, ptr noundef @.str.2, i32 noundef %3204, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 298, ptr noundef %3207, ptr noundef %3210, ptr noundef %3213, i32 noundef %3215) #10
  br label %3234

3217:                                             ; preds = %3195, %3188
  %3218 = load i32, ptr %119, align 4, !tbaa !5
  %3219 = call ptr @__errno_location() #11
  store i32 %3218, ptr %3219, align 4, !tbaa !5
  %3220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3221 = load i32, ptr @test_count, align 4, !tbaa !5
  %3222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3223 = load i32, ptr %3222, align 4, !tbaa !5
  %3224 = call ptr @s2n_strerror(i32 noundef %3223, ptr noundef @.str.4)
  %3225 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3226 = load i32, ptr %3225, align 4, !tbaa !5
  %3227 = call ptr @s2n_strerror_debug(i32 noundef %3226, ptr noundef @.str.4)
  %3228 = call ptr @__errno_location() #11
  %3229 = load i32, ptr %3228, align 4, !tbaa !5
  %3230 = call ptr @strerror(i32 noundef %3229) #10
  %3231 = call ptr @__errno_location() #11
  %3232 = load i32, ptr %3231, align 4, !tbaa !5
  %3233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3220, ptr noundef @.str.5, i32 noundef %3221, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 298, ptr noundef %3224, ptr noundef %3227, ptr noundef %3230, i32 noundef %3232) #10
  br label %3234

3234:                                             ; preds = %3217, %3200
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #10
  br label %3235

3235:                                             ; preds = %3234
  br label %3236

3236:                                             ; preds = %3235
  call void @exit(i32 noundef 1) #12
  unreachable

3237:                                             ; No predecessors!
  br label %3238

3238:                                             ; preds = %3237
  br label %3239

3239:                                             ; preds = %3238, %3180
  br label %3240

3240:                                             ; preds = %3239
  br label %3241

3241:                                             ; preds = %3240
  br label %3242

3242:                                             ; preds = %3241
  %3243 = load i32, ptr @test_count, align 4, !tbaa !5
  %3244 = add nsw i32 %3243, 1
  store i32 %3244, ptr @test_count, align 4, !tbaa !5
  %3245 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3246 = load i32, ptr %3245, align 4, !tbaa !5
  %3247 = icmp eq i32 %3246, 469762133
  br i1 %3247, label %3301, label %3248

3248:                                             ; preds = %3242
  br label %3249

3249:                                             ; preds = %3248
  br label %3250

3250:                                             ; preds = %3249
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #10
  %3251 = call ptr @__errno_location() #11
  %3252 = load i32, ptr %3251, align 4, !tbaa !5
  store i32 %3252, ptr %120, align 4, !tbaa !5
  %3253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3254 = call i32 @s2n_print_stacktrace(ptr noundef %3253)
  %3255 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3256 = trunc i8 %3255 to i1
  br i1 %3256, label %3257, label %3279

3257:                                             ; preds = %3250
  %3258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3259 = call i32 @fileno(ptr noundef %3258) #10
  %3260 = call i32 @isatty(i32 noundef %3259) #10
  %3261 = icmp ne i32 %3260, 0
  br i1 %3261, label %3262, label %3279

3262:                                             ; preds = %3257
  %3263 = load i32, ptr %120, align 4, !tbaa !5
  %3264 = call ptr @__errno_location() #11
  store i32 %3263, ptr %3264, align 4, !tbaa !5
  %3265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3266 = load i32, ptr @test_count, align 4, !tbaa !5
  %3267 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3268 = load i32, ptr %3267, align 4, !tbaa !5
  %3269 = call ptr @s2n_strerror(i32 noundef %3268, ptr noundef @.str.4)
  %3270 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3271 = load i32, ptr %3270, align 4, !tbaa !5
  %3272 = call ptr @s2n_strerror_debug(i32 noundef %3271, ptr noundef @.str.4)
  %3273 = call ptr @__errno_location() #11
  %3274 = load i32, ptr %3273, align 4, !tbaa !5
  %3275 = call ptr @strerror(i32 noundef %3274) #10
  %3276 = call ptr @__errno_location() #11
  %3277 = load i32, ptr %3276, align 4, !tbaa !5
  %3278 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3265, ptr noundef @.str.2, i32 noundef %3266, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 298, ptr noundef %3269, ptr noundef %3272, ptr noundef %3275, i32 noundef %3277) #10
  br label %3296

3279:                                             ; preds = %3257, %3250
  %3280 = load i32, ptr %120, align 4, !tbaa !5
  %3281 = call ptr @__errno_location() #11
  store i32 %3280, ptr %3281, align 4, !tbaa !5
  %3282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3283 = load i32, ptr @test_count, align 4, !tbaa !5
  %3284 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3285 = load i32, ptr %3284, align 4, !tbaa !5
  %3286 = call ptr @s2n_strerror(i32 noundef %3285, ptr noundef @.str.4)
  %3287 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3288 = load i32, ptr %3287, align 4, !tbaa !5
  %3289 = call ptr @s2n_strerror_debug(i32 noundef %3288, ptr noundef @.str.4)
  %3290 = call ptr @__errno_location() #11
  %3291 = load i32, ptr %3290, align 4, !tbaa !5
  %3292 = call ptr @strerror(i32 noundef %3291) #10
  %3293 = call ptr @__errno_location() #11
  %3294 = load i32, ptr %3293, align 4, !tbaa !5
  %3295 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3282, ptr noundef @.str.5, i32 noundef %3283, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 298, ptr noundef %3286, ptr noundef %3289, ptr noundef %3292, i32 noundef %3294) #10
  br label %3296

3296:                                             ; preds = %3279, %3262
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #10
  br label %3297

3297:                                             ; preds = %3296
  br label %3298

3298:                                             ; preds = %3297
  call void @exit(i32 noundef 1) #12
  unreachable

3299:                                             ; No predecessors!
  br label %3300

3300:                                             ; preds = %3299
  br label %3301

3301:                                             ; preds = %3300, %3242
  br label %3302

3302:                                             ; preds = %3301
  br label %3303

3303:                                             ; preds = %3302
  br label %3304

3304:                                             ; preds = %3303
  %3305 = load i32, ptr @test_count, align 4, !tbaa !5
  %3306 = add nsw i32 %3305, 1
  store i32 %3306, ptr @test_count, align 4, !tbaa !5
  %3307 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3308 = load i32, ptr %3307, align 4, !tbaa !5
  %3309 = call ptr @s2n_strerror_debug(i32 noundef %3308, ptr noundef @.str.4)
  %3310 = icmp eq ptr %3309, null
  br i1 %3310, label %3311, label %3364

3311:                                             ; preds = %3304
  br label %3312

3312:                                             ; preds = %3311
  br label %3313

3313:                                             ; preds = %3312
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #10
  %3314 = call ptr @__errno_location() #11
  %3315 = load i32, ptr %3314, align 4, !tbaa !5
  store i32 %3315, ptr %121, align 4, !tbaa !5
  %3316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3317 = call i32 @s2n_print_stacktrace(ptr noundef %3316)
  %3318 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3319 = trunc i8 %3318 to i1
  br i1 %3319, label %3320, label %3342

3320:                                             ; preds = %3313
  %3321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3322 = call i32 @fileno(ptr noundef %3321) #10
  %3323 = call i32 @isatty(i32 noundef %3322) #10
  %3324 = icmp ne i32 %3323, 0
  br i1 %3324, label %3325, label %3342

3325:                                             ; preds = %3320
  %3326 = load i32, ptr %121, align 4, !tbaa !5
  %3327 = call ptr @__errno_location() #11
  store i32 %3326, ptr %3327, align 4, !tbaa !5
  %3328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3329 = load i32, ptr @test_count, align 4, !tbaa !5
  %3330 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3331 = load i32, ptr %3330, align 4, !tbaa !5
  %3332 = call ptr @s2n_strerror(i32 noundef %3331, ptr noundef @.str.4)
  %3333 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3334 = load i32, ptr %3333, align 4, !tbaa !5
  %3335 = call ptr @s2n_strerror_debug(i32 noundef %3334, ptr noundef @.str.4)
  %3336 = call ptr @__errno_location() #11
  %3337 = load i32, ptr %3336, align 4, !tbaa !5
  %3338 = call ptr @strerror(i32 noundef %3337) #10
  %3339 = call ptr @__errno_location() #11
  %3340 = load i32, ptr %3339, align 4, !tbaa !5
  %3341 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3328, ptr noundef @.str.2, i32 noundef %3329, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 298, ptr noundef %3332, ptr noundef %3335, ptr noundef %3338, i32 noundef %3340) #10
  br label %3359

3342:                                             ; preds = %3320, %3313
  %3343 = load i32, ptr %121, align 4, !tbaa !5
  %3344 = call ptr @__errno_location() #11
  store i32 %3343, ptr %3344, align 4, !tbaa !5
  %3345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3346 = load i32, ptr @test_count, align 4, !tbaa !5
  %3347 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3348 = load i32, ptr %3347, align 4, !tbaa !5
  %3349 = call ptr @s2n_strerror(i32 noundef %3348, ptr noundef @.str.4)
  %3350 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3351 = load i32, ptr %3350, align 4, !tbaa !5
  %3352 = call ptr @s2n_strerror_debug(i32 noundef %3351, ptr noundef @.str.4)
  %3353 = call ptr @__errno_location() #11
  %3354 = load i32, ptr %3353, align 4, !tbaa !5
  %3355 = call ptr @strerror(i32 noundef %3354) #10
  %3356 = call ptr @__errno_location() #11
  %3357 = load i32, ptr %3356, align 4, !tbaa !5
  %3358 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3345, ptr noundef @.str.5, i32 noundef %3346, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 298, ptr noundef %3349, ptr noundef %3352, ptr noundef %3355, i32 noundef %3357) #10
  br label %3359

3359:                                             ; preds = %3342, %3325
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #10
  br label %3360

3360:                                             ; preds = %3359
  br label %3361

3361:                                             ; preds = %3360
  call void @exit(i32 noundef 1) #12
  unreachable

3362:                                             ; No predecessors!
  br label %3363

3363:                                             ; preds = %3362
  br label %3364

3364:                                             ; preds = %3363, %3304
  br label %3365

3365:                                             ; preds = %3364
  br label %3366

3366:                                             ; preds = %3365
  br label %3367

3367:                                             ; preds = %3366
  br label %3368

3368:                                             ; preds = %3367
  br label %3369

3369:                                             ; preds = %3368
  %3370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %3370, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %3371 = call ptr @__errno_location() #11
  store i32 0, ptr %3371, align 4, !tbaa !5
  br label %3372

3372:                                             ; preds = %3369
  br label %3373

3373:                                             ; preds = %3372
  br label %3374

3374:                                             ; preds = %3373
  br label %3375

3375:                                             ; preds = %3374
  br label %3376

3376:                                             ; preds = %3375
  %3377 = load i32, ptr @test_count, align 4, !tbaa !5
  %3378 = add nsw i32 %3377, 1
  store i32 %3378, ptr @test_count, align 4, !tbaa !5
  %3379 = load ptr, ptr %116, align 8, !tbaa !9
  %3380 = getelementptr inbounds %struct.s2n_config, ptr %3379, i32 0, i32 7
  %3381 = load ptr, ptr %3380, align 8, !tbaa !49
  %3382 = load ptr, ptr %118, align 8, !tbaa !9
  %3383 = icmp eq ptr %3381, %3382
  br i1 %3383, label %3437, label %3384

3384:                                             ; preds = %3376
  br label %3385

3385:                                             ; preds = %3384
  br label %3386

3386:                                             ; preds = %3385
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #10
  %3387 = call ptr @__errno_location() #11
  %3388 = load i32, ptr %3387, align 4, !tbaa !5
  store i32 %3388, ptr %122, align 4, !tbaa !5
  %3389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3390 = call i32 @s2n_print_stacktrace(ptr noundef %3389)
  %3391 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3392 = trunc i8 %3391 to i1
  br i1 %3392, label %3393, label %3415

3393:                                             ; preds = %3386
  %3394 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3395 = call i32 @fileno(ptr noundef %3394) #10
  %3396 = call i32 @isatty(i32 noundef %3395) #10
  %3397 = icmp ne i32 %3396, 0
  br i1 %3397, label %3398, label %3415

3398:                                             ; preds = %3393
  %3399 = load i32, ptr %122, align 4, !tbaa !5
  %3400 = call ptr @__errno_location() #11
  store i32 %3399, ptr %3400, align 4, !tbaa !5
  %3401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3402 = load i32, ptr @test_count, align 4, !tbaa !5
  %3403 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3404 = load i32, ptr %3403, align 4, !tbaa !5
  %3405 = call ptr @s2n_strerror(i32 noundef %3404, ptr noundef @.str.4)
  %3406 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3407 = load i32, ptr %3406, align 4, !tbaa !5
  %3408 = call ptr @s2n_strerror_debug(i32 noundef %3407, ptr noundef @.str.4)
  %3409 = call ptr @__errno_location() #11
  %3410 = load i32, ptr %3409, align 4, !tbaa !5
  %3411 = call ptr @strerror(i32 noundef %3410) #10
  %3412 = call ptr @__errno_location() #11
  %3413 = load i32, ptr %3412, align 4, !tbaa !5
  %3414 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3401, ptr noundef @.str.2, i32 noundef %3402, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 301, ptr noundef %3405, ptr noundef %3408, ptr noundef %3411, i32 noundef %3413) #10
  br label %3432

3415:                                             ; preds = %3393, %3386
  %3416 = load i32, ptr %122, align 4, !tbaa !5
  %3417 = call ptr @__errno_location() #11
  store i32 %3416, ptr %3417, align 4, !tbaa !5
  %3418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3419 = load i32, ptr @test_count, align 4, !tbaa !5
  %3420 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3421 = load i32, ptr %3420, align 4, !tbaa !5
  %3422 = call ptr @s2n_strerror(i32 noundef %3421, ptr noundef @.str.4)
  %3423 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3424 = load i32, ptr %3423, align 4, !tbaa !5
  %3425 = call ptr @s2n_strerror_debug(i32 noundef %3424, ptr noundef @.str.4)
  %3426 = call ptr @__errno_location() #11
  %3427 = load i32, ptr %3426, align 4, !tbaa !5
  %3428 = call ptr @strerror(i32 noundef %3427) #10
  %3429 = call ptr @__errno_location() #11
  %3430 = load i32, ptr %3429, align 4, !tbaa !5
  %3431 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3418, ptr noundef @.str.5, i32 noundef %3419, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 301, ptr noundef %3422, ptr noundef %3425, ptr noundef %3428, i32 noundef %3430) #10
  br label %3432

3432:                                             ; preds = %3415, %3398
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #10
  br label %3433

3433:                                             ; preds = %3432
  br label %3434

3434:                                             ; preds = %3433
  call void @exit(i32 noundef 1) #12
  unreachable

3435:                                             ; No predecessors!
  br label %3436

3436:                                             ; preds = %3435
  br label %3437

3437:                                             ; preds = %3436, %3376
  br label %3438

3438:                                             ; preds = %3437
  br label %3439

3439:                                             ; preds = %3438
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  %3440 = call i32 @s2n_config_ptr_free(ptr noundef %116)
  %3441 = getelementptr inbounds %struct.s2n_result, ptr %123, i32 0, i32 0
  store i32 %3440, ptr %3441, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  %3442 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %102)
  %3443 = getelementptr inbounds %struct.s2n_result, ptr %124, i32 0, i32 0
  store i32 %3442, ptr %3443, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  %3444 = call zeroext i1 @s2n_libcrypto_is_openssl_fips()
  br i1 %3444, label %3637, label %3445

3445:                                             ; preds = %3439
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #10
  store ptr null, ptr %125, align 8, !tbaa !9
  br label %3446

3446:                                             ; preds = %3445
  %3447 = load i32, ptr @test_count, align 4, !tbaa !5
  %3448 = add nsw i32 %3447, 1
  store i32 %3448, ptr @test_count, align 4, !tbaa !5
  %3449 = call i32 @s2n_test_cert_permutation_load_server_chain(ptr noundef %125, ptr noundef @.str.23, ptr noundef @.str.46, ptr noundef @.str.47, ptr noundef @.str.48)
  %3450 = icmp eq i32 %3449, -1
  br i1 %3450, label %3451, label %3504

3451:                                             ; preds = %3446
  br label %3452

3452:                                             ; preds = %3451
  br label %3453

3453:                                             ; preds = %3452
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #10
  %3454 = call ptr @__errno_location() #11
  %3455 = load i32, ptr %3454, align 4, !tbaa !5
  store i32 %3455, ptr %126, align 4, !tbaa !5
  %3456 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3457 = call i32 @s2n_print_stacktrace(ptr noundef %3456)
  %3458 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3459 = trunc i8 %3458 to i1
  br i1 %3459, label %3460, label %3482

3460:                                             ; preds = %3453
  %3461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3462 = call i32 @fileno(ptr noundef %3461) #10
  %3463 = call i32 @isatty(i32 noundef %3462) #10
  %3464 = icmp ne i32 %3463, 0
  br i1 %3464, label %3465, label %3482

3465:                                             ; preds = %3460
  %3466 = load i32, ptr %126, align 4, !tbaa !5
  %3467 = call ptr @__errno_location() #11
  store i32 %3466, ptr %3467, align 4, !tbaa !5
  %3468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3469 = load i32, ptr @test_count, align 4, !tbaa !5
  %3470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3471 = load i32, ptr %3470, align 4, !tbaa !5
  %3472 = call ptr @s2n_strerror(i32 noundef %3471, ptr noundef @.str.4)
  %3473 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3474 = load i32, ptr %3473, align 4, !tbaa !5
  %3475 = call ptr @s2n_strerror_debug(i32 noundef %3474, ptr noundef @.str.4)
  %3476 = call ptr @__errno_location() #11
  %3477 = load i32, ptr %3476, align 4, !tbaa !5
  %3478 = call ptr @strerror(i32 noundef %3477) #10
  %3479 = call ptr @__errno_location() #11
  %3480 = load i32, ptr %3479, align 4, !tbaa !5
  %3481 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3468, ptr noundef @.str.2, i32 noundef %3469, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 321, ptr noundef %3472, ptr noundef %3475, ptr noundef %3478, i32 noundef %3480) #10
  br label %3499

3482:                                             ; preds = %3460, %3453
  %3483 = load i32, ptr %126, align 4, !tbaa !5
  %3484 = call ptr @__errno_location() #11
  store i32 %3483, ptr %3484, align 4, !tbaa !5
  %3485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3486 = load i32, ptr @test_count, align 4, !tbaa !5
  %3487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3488 = load i32, ptr %3487, align 4, !tbaa !5
  %3489 = call ptr @s2n_strerror(i32 noundef %3488, ptr noundef @.str.4)
  %3490 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3491 = load i32, ptr %3490, align 4, !tbaa !5
  %3492 = call ptr @s2n_strerror_debug(i32 noundef %3491, ptr noundef @.str.4)
  %3493 = call ptr @__errno_location() #11
  %3494 = load i32, ptr %3493, align 4, !tbaa !5
  %3495 = call ptr @strerror(i32 noundef %3494) #10
  %3496 = call ptr @__errno_location() #11
  %3497 = load i32, ptr %3496, align 4, !tbaa !5
  %3498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3485, ptr noundef @.str.5, i32 noundef %3486, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 321, ptr noundef %3489, ptr noundef %3492, ptr noundef %3495, i32 noundef %3497) #10
  br label %3499

3499:                                             ; preds = %3482, %3465
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #10
  br label %3500

3500:                                             ; preds = %3499
  br label %3501

3501:                                             ; preds = %3500
  call void @exit(i32 noundef 1) #12
  unreachable

3502:                                             ; No predecessors!
  br label %3503

3503:                                             ; preds = %3502
  br label %3504

3504:                                             ; preds = %3503, %3446
  br label %3505

3505:                                             ; preds = %3504
  br label %3506

3506:                                             ; preds = %3505
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #10
  %3507 = call ptr @s2n_config_new()
  store ptr %3507, ptr %127, align 8, !tbaa !9
  br label %3508

3508:                                             ; preds = %3506
  %3509 = load i32, ptr @test_count, align 4, !tbaa !5
  %3510 = add nsw i32 %3509, 1
  store i32 %3510, ptr @test_count, align 4, !tbaa !5
  %3511 = load ptr, ptr %127, align 8, !tbaa !9
  %3512 = load ptr, ptr %125, align 8, !tbaa !9
  %3513 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %3511, ptr noundef %3512)
  %3514 = icmp eq i32 %3513, -1
  br i1 %3514, label %3515, label %3568

3515:                                             ; preds = %3508
  br label %3516

3516:                                             ; preds = %3515
  br label %3517

3517:                                             ; preds = %3516
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #10
  %3518 = call ptr @__errno_location() #11
  %3519 = load i32, ptr %3518, align 4, !tbaa !5
  store i32 %3519, ptr %128, align 4, !tbaa !5
  %3520 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3521 = call i32 @s2n_print_stacktrace(ptr noundef %3520)
  %3522 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3523 = trunc i8 %3522 to i1
  br i1 %3523, label %3524, label %3546

3524:                                             ; preds = %3517
  %3525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3526 = call i32 @fileno(ptr noundef %3525) #10
  %3527 = call i32 @isatty(i32 noundef %3526) #10
  %3528 = icmp ne i32 %3527, 0
  br i1 %3528, label %3529, label %3546

3529:                                             ; preds = %3524
  %3530 = load i32, ptr %128, align 4, !tbaa !5
  %3531 = call ptr @__errno_location() #11
  store i32 %3530, ptr %3531, align 4, !tbaa !5
  %3532 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3533 = load i32, ptr @test_count, align 4, !tbaa !5
  %3534 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3535 = load i32, ptr %3534, align 4, !tbaa !5
  %3536 = call ptr @s2n_strerror(i32 noundef %3535, ptr noundef @.str.4)
  %3537 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3538 = load i32, ptr %3537, align 4, !tbaa !5
  %3539 = call ptr @s2n_strerror_debug(i32 noundef %3538, ptr noundef @.str.4)
  %3540 = call ptr @__errno_location() #11
  %3541 = load i32, ptr %3540, align 4, !tbaa !5
  %3542 = call ptr @strerror(i32 noundef %3541) #10
  %3543 = call ptr @__errno_location() #11
  %3544 = load i32, ptr %3543, align 4, !tbaa !5
  %3545 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3532, ptr noundef @.str.2, i32 noundef %3533, ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 324, ptr noundef %3536, ptr noundef %3539, ptr noundef %3542, i32 noundef %3544) #10
  br label %3563

3546:                                             ; preds = %3524, %3517
  %3547 = load i32, ptr %128, align 4, !tbaa !5
  %3548 = call ptr @__errno_location() #11
  store i32 %3547, ptr %3548, align 4, !tbaa !5
  %3549 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3550 = load i32, ptr @test_count, align 4, !tbaa !5
  %3551 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3552 = load i32, ptr %3551, align 4, !tbaa !5
  %3553 = call ptr @s2n_strerror(i32 noundef %3552, ptr noundef @.str.4)
  %3554 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3555 = load i32, ptr %3554, align 4, !tbaa !5
  %3556 = call ptr @s2n_strerror_debug(i32 noundef %3555, ptr noundef @.str.4)
  %3557 = call ptr @__errno_location() #11
  %3558 = load i32, ptr %3557, align 4, !tbaa !5
  %3559 = call ptr @strerror(i32 noundef %3558) #10
  %3560 = call ptr @__errno_location() #11
  %3561 = load i32, ptr %3560, align 4, !tbaa !5
  %3562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3549, ptr noundef @.str.5, i32 noundef %3550, ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 324, ptr noundef %3553, ptr noundef %3556, ptr noundef %3559, i32 noundef %3561) #10
  br label %3563

3563:                                             ; preds = %3546, %3529
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #10
  br label %3564

3564:                                             ; preds = %3563
  br label %3565

3565:                                             ; preds = %3564
  call void @exit(i32 noundef 1) #12
  unreachable

3566:                                             ; No predecessors!
  br label %3567

3567:                                             ; preds = %3566
  br label %3568

3568:                                             ; preds = %3567, %3508
  br label %3569

3569:                                             ; preds = %3568
  br label %3570

3570:                                             ; preds = %3569
  br label %3571

3571:                                             ; preds = %3570
  %3572 = load i32, ptr @test_count, align 4, !tbaa !5
  %3573 = add nsw i32 %3572, 1
  store i32 %3573, ptr @test_count, align 4, !tbaa !5
  %3574 = load ptr, ptr %127, align 8, !tbaa !9
  %3575 = call i32 @s2n_config_get_num_default_certs(ptr noundef %3574)
  %3576 = icmp eq i32 %3575, 1
  br i1 %3576, label %3630, label %3577

3577:                                             ; preds = %3571
  br label %3578

3578:                                             ; preds = %3577
  br label %3579

3579:                                             ; preds = %3578
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #10
  %3580 = call ptr @__errno_location() #11
  %3581 = load i32, ptr %3580, align 4, !tbaa !5
  store i32 %3581, ptr %129, align 4, !tbaa !5
  %3582 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3583 = call i32 @s2n_print_stacktrace(ptr noundef %3582)
  %3584 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3585 = trunc i8 %3584 to i1
  br i1 %3585, label %3586, label %3608

3586:                                             ; preds = %3579
  %3587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3588 = call i32 @fileno(ptr noundef %3587) #10
  %3589 = call i32 @isatty(i32 noundef %3588) #10
  %3590 = icmp ne i32 %3589, 0
  br i1 %3590, label %3591, label %3608

3591:                                             ; preds = %3586
  %3592 = load i32, ptr %129, align 4, !tbaa !5
  %3593 = call ptr @__errno_location() #11
  store i32 %3592, ptr %3593, align 4, !tbaa !5
  %3594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3595 = load i32, ptr @test_count, align 4, !tbaa !5
  %3596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3597 = load i32, ptr %3596, align 4, !tbaa !5
  %3598 = call ptr @s2n_strerror(i32 noundef %3597, ptr noundef @.str.4)
  %3599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3600 = load i32, ptr %3599, align 4, !tbaa !5
  %3601 = call ptr @s2n_strerror_debug(i32 noundef %3600, ptr noundef @.str.4)
  %3602 = call ptr @__errno_location() #11
  %3603 = load i32, ptr %3602, align 4, !tbaa !5
  %3604 = call ptr @strerror(i32 noundef %3603) #10
  %3605 = call ptr @__errno_location() #11
  %3606 = load i32, ptr %3605, align 4, !tbaa !5
  %3607 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3594, ptr noundef @.str.2, i32 noundef %3595, ptr noundef @.str.51, ptr noundef @.str.1, i32 noundef 325, ptr noundef %3598, ptr noundef %3601, ptr noundef %3604, i32 noundef %3606) #10
  br label %3625

3608:                                             ; preds = %3586, %3579
  %3609 = load i32, ptr %129, align 4, !tbaa !5
  %3610 = call ptr @__errno_location() #11
  store i32 %3609, ptr %3610, align 4, !tbaa !5
  %3611 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3612 = load i32, ptr @test_count, align 4, !tbaa !5
  %3613 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3614 = load i32, ptr %3613, align 4, !tbaa !5
  %3615 = call ptr @s2n_strerror(i32 noundef %3614, ptr noundef @.str.4)
  %3616 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3617 = load i32, ptr %3616, align 4, !tbaa !5
  %3618 = call ptr @s2n_strerror_debug(i32 noundef %3617, ptr noundef @.str.4)
  %3619 = call ptr @__errno_location() #11
  %3620 = load i32, ptr %3619, align 4, !tbaa !5
  %3621 = call ptr @strerror(i32 noundef %3620) #10
  %3622 = call ptr @__errno_location() #11
  %3623 = load i32, ptr %3622, align 4, !tbaa !5
  %3624 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3611, ptr noundef @.str.5, i32 noundef %3612, ptr noundef @.str.51, ptr noundef @.str.1, i32 noundef 325, ptr noundef %3615, ptr noundef %3618, ptr noundef %3621, i32 noundef %3623) #10
  br label %3625

3625:                                             ; preds = %3608, %3591
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #10
  br label %3626

3626:                                             ; preds = %3625
  br label %3627

3627:                                             ; preds = %3626
  call void @exit(i32 noundef 1) #12
  unreachable

3628:                                             ; No predecessors!
  br label %3629

3629:                                             ; preds = %3628
  br label %3630

3630:                                             ; preds = %3629, %3571
  br label %3631

3631:                                             ; preds = %3630
  br label %3632

3632:                                             ; preds = %3631
  %3633 = call i32 @s2n_config_ptr_free(ptr noundef %127)
  %3634 = getelementptr inbounds %struct.s2n_result, ptr %130, i32 0, i32 0
  store i32 %3633, ptr %3634, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  %3635 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %125)
  %3636 = getelementptr inbounds %struct.s2n_result, ptr %131, i32 0, i32 0
  store i32 %3635, ptr %3636, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #10
  br label %3637

3637:                                             ; preds = %3632, %3439
  br label %3638

3638:                                             ; preds = %3637
  br label %3639

3639:                                             ; preds = %3638
  %3640 = call i32 @s2n_cleanup()
  %3641 = icmp eq i32 %3640, -1
  br i1 %3641, label %3642, label %3695

3642:                                             ; preds = %3639
  br label %3643

3643:                                             ; preds = %3642
  br label %3644

3644:                                             ; preds = %3643
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #10
  %3645 = call ptr @__errno_location() #11
  %3646 = load i32, ptr %3645, align 4, !tbaa !5
  store i32 %3646, ptr %132, align 4, !tbaa !5
  %3647 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3648 = call i32 @s2n_print_stacktrace(ptr noundef %3647)
  %3649 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3650 = trunc i8 %3649 to i1
  br i1 %3650, label %3651, label %3673

3651:                                             ; preds = %3644
  %3652 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3653 = call i32 @fileno(ptr noundef %3652) #10
  %3654 = call i32 @isatty(i32 noundef %3653) #10
  %3655 = icmp ne i32 %3654, 0
  br i1 %3655, label %3656, label %3673

3656:                                             ; preds = %3651
  %3657 = load i32, ptr %132, align 4, !tbaa !5
  %3658 = call ptr @__errno_location() #11
  store i32 %3657, ptr %3658, align 4, !tbaa !5
  %3659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3660 = load i32, ptr @test_count, align 4, !tbaa !5
  %3661 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3662 = load i32, ptr %3661, align 4, !tbaa !5
  %3663 = call ptr @s2n_strerror(i32 noundef %3662, ptr noundef @.str.4)
  %3664 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3665 = load i32, ptr %3664, align 4, !tbaa !5
  %3666 = call ptr @s2n_strerror_debug(i32 noundef %3665, ptr noundef @.str.4)
  %3667 = call ptr @__errno_location() #11
  %3668 = load i32, ptr %3667, align 4, !tbaa !5
  %3669 = call ptr @strerror(i32 noundef %3668) #10
  %3670 = call ptr @__errno_location() #11
  %3671 = load i32, ptr %3670, align 4, !tbaa !5
  %3672 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3659, ptr noundef @.str.2, i32 noundef %3660, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 328, ptr noundef %3663, ptr noundef %3666, ptr noundef %3669, i32 noundef %3671) #10
  br label %3690

3673:                                             ; preds = %3651, %3644
  %3674 = load i32, ptr %132, align 4, !tbaa !5
  %3675 = call ptr @__errno_location() #11
  store i32 %3674, ptr %3675, align 4, !tbaa !5
  %3676 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3677 = load i32, ptr @test_count, align 4, !tbaa !5
  %3678 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3679 = load i32, ptr %3678, align 4, !tbaa !5
  %3680 = call ptr @s2n_strerror(i32 noundef %3679, ptr noundef @.str.4)
  %3681 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3682 = load i32, ptr %3681, align 4, !tbaa !5
  %3683 = call ptr @s2n_strerror_debug(i32 noundef %3682, ptr noundef @.str.4)
  %3684 = call ptr @__errno_location() #11
  %3685 = load i32, ptr %3684, align 4, !tbaa !5
  %3686 = call ptr @strerror(i32 noundef %3685) #10
  %3687 = call ptr @__errno_location() #11
  %3688 = load i32, ptr %3687, align 4, !tbaa !5
  %3689 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3676, ptr noundef @.str.5, i32 noundef %3677, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 328, ptr noundef %3680, ptr noundef %3683, ptr noundef %3686, i32 noundef %3688) #10
  br label %3690

3690:                                             ; preds = %3673, %3656
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #10
  br label %3691

3691:                                             ; preds = %3690
  br label %3692

3692:                                             ; preds = %3691
  call void @exit(i32 noundef 1) #12
  unreachable

3693:                                             ; No predecessors!
  br label %3694

3694:                                             ; preds = %3693
  br label %3695

3695:                                             ; preds = %3694, %3639
  br label %3696

3696:                                             ; preds = %3695
  br label %3697

3697:                                             ; preds = %3696
  br label %3698

3698:                                             ; preds = %3697
  br label %3699

3699:                                             ; preds = %3698
  %3700 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %3701 = icmp eq i32 %3700, -1
  br i1 %3701, label %3702, label %3755

3702:                                             ; preds = %3699
  br label %3703

3703:                                             ; preds = %3702
  br label %3704

3704:                                             ; preds = %3703
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #10
  %3705 = call ptr @__errno_location() #11
  %3706 = load i32, ptr %3705, align 4, !tbaa !5
  store i32 %3706, ptr %133, align 4, !tbaa !5
  %3707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3708 = call i32 @s2n_print_stacktrace(ptr noundef %3707)
  %3709 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3710 = trunc i8 %3709 to i1
  br i1 %3710, label %3711, label %3733

3711:                                             ; preds = %3704
  %3712 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3713 = call i32 @fileno(ptr noundef %3712) #10
  %3714 = call i32 @isatty(i32 noundef %3713) #10
  %3715 = icmp ne i32 %3714, 0
  br i1 %3715, label %3716, label %3733

3716:                                             ; preds = %3711
  %3717 = load i32, ptr %133, align 4, !tbaa !5
  %3718 = call ptr @__errno_location() #11
  store i32 %3717, ptr %3718, align 4, !tbaa !5
  %3719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3720 = load i32, ptr @test_count, align 4, !tbaa !5
  %3721 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3722 = load i32, ptr %3721, align 4, !tbaa !5
  %3723 = call ptr @s2n_strerror(i32 noundef %3722, ptr noundef @.str.4)
  %3724 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3725 = load i32, ptr %3724, align 4, !tbaa !5
  %3726 = call ptr @s2n_strerror_debug(i32 noundef %3725, ptr noundef @.str.4)
  %3727 = call ptr @__errno_location() #11
  %3728 = load i32, ptr %3727, align 4, !tbaa !5
  %3729 = call ptr @strerror(i32 noundef %3728) #10
  %3730 = call ptr @__errno_location() #11
  %3731 = load i32, ptr %3730, align 4, !tbaa !5
  %3732 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3719, ptr noundef @.str.2, i32 noundef %3720, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 328, ptr noundef %3723, ptr noundef %3726, ptr noundef %3729, i32 noundef %3731) #10
  br label %3750

3733:                                             ; preds = %3711, %3704
  %3734 = load i32, ptr %133, align 4, !tbaa !5
  %3735 = call ptr @__errno_location() #11
  store i32 %3734, ptr %3735, align 4, !tbaa !5
  %3736 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3737 = load i32, ptr @test_count, align 4, !tbaa !5
  %3738 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3739 = load i32, ptr %3738, align 4, !tbaa !5
  %3740 = call ptr @s2n_strerror(i32 noundef %3739, ptr noundef @.str.4)
  %3741 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3742 = load i32, ptr %3741, align 4, !tbaa !5
  %3743 = call ptr @s2n_strerror_debug(i32 noundef %3742, ptr noundef @.str.4)
  %3744 = call ptr @__errno_location() #11
  %3745 = load i32, ptr %3744, align 4, !tbaa !5
  %3746 = call ptr @strerror(i32 noundef %3745) #10
  %3747 = call ptr @__errno_location() #11
  %3748 = load i32, ptr %3747, align 4, !tbaa !5
  %3749 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3736, ptr noundef @.str.5, i32 noundef %3737, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 328, ptr noundef %3740, ptr noundef %3743, ptr noundef %3746, i32 noundef %3748) #10
  br label %3750

3750:                                             ; preds = %3733, %3716
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #10
  br label %3751

3751:                                             ; preds = %3750
  br label %3752

3752:                                             ; preds = %3751
  call void @exit(i32 noundef 1) #12
  unreachable

3753:                                             ; No predecessors!
  br label %3754

3754:                                             ; preds = %3753
  br label %3755

3755:                                             ; preds = %3754, %3699
  br label %3756

3756:                                             ; preds = %3755
  br label %3757

3757:                                             ; preds = %3756
  %3758 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3759 = trunc i8 %3758 to i1
  br i1 %3759, label %3760, label %3776

3760:                                             ; preds = %3757
  %3761 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3762 = call i32 @fileno(ptr noundef %3761) #10
  %3763 = call i32 @isatty(i32 noundef %3762) #10
  %3764 = icmp ne i32 %3763, 0
  br i1 %3764, label %3765, label %3776

3765:                                             ; preds = %3760
  %3766 = load i32, ptr @test_count, align 4, !tbaa !5
  %3767 = icmp ne i32 %3766, 0
  br i1 %3767, label %3768, label %3772

3768:                                             ; preds = %3765
  %3769 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3770 = load i32, ptr @test_count, align 4, !tbaa !5
  %3771 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3769, ptr noundef @.str.54, i32 noundef %3770) #10
  br label %3775

3772:                                             ; preds = %3765
  %3773 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3774 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3773, ptr noundef @.str.55) #10
  br label %3775

3775:                                             ; preds = %3772, %3768
  br label %3787

3776:                                             ; preds = %3760, %3757
  %3777 = load i32, ptr @test_count, align 4, !tbaa !5
  %3778 = icmp ne i32 %3777, 0
  br i1 %3778, label %3779, label %3783

3779:                                             ; preds = %3776
  %3780 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3781 = load i32, ptr @test_count, align 4, !tbaa !5
  %3782 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3780, ptr noundef @.str.56, i32 noundef %3781) #10
  br label %3786

3783:                                             ; preds = %3776
  %3784 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3785 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3784, ptr noundef @.str.57) #10
  br label %3786

3786:                                             ; preds = %3783, %3779
  br label %3787

3787:                                             ; preds = %3786, %3775
  store i32 0, ptr %3, align 4
  store i32 1, ptr %134, align 4
  br label %3792

3788:                                             ; No predecessors!
  br label %3789

3789:                                             ; preds = %3788
  br label %3790

3790:                                             ; preds = %3789
  br label %3791

3791:                                             ; preds = %3790
  store i32 0, ptr %3, align 4
  store i32 1, ptr %134, align 4
  br label %3792

3792:                                             ; preds = %3791, %3787
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #10
  %3793 = load i32, ptr %3, align 4
  ret i32 %3793
}

; 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: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

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

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

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

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

declare void @s2n_debug_info_reset() #2

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

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

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

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) #2

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

declare ptr @s2n_config_new() #2

declare i32 @s2n_config_ptr_free(ptr noundef) #2

declare ptr @s2n_connection_new(i32 noundef) #2

declare i32 @s2n_connection_ptr_free(ptr noundef) #2

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

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

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

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

declare i32 @s2n_config_get_num_default_certs(ptr noundef) #2

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

declare zeroext i1 @s2n_libcrypto_is_openssl_fips() #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: readwrite) }
attributes #8 = { 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 = { 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 = !{}
!15 = !{!16, !7, i64 0}
!16 = !{!"s2n_signature_preferences", !7, i64 0, !10, i64 8}
!17 = !{!16, !10, i64 8}
!18 = !{!19, !7, i64 0}
!19 = !{!"s2n_certificate_key_preferences", !7, i64 0, !10, i64 8}
!20 = !{!19, !10, i64 8}
!21 = !{!22, !7, i64 0}
!22 = !{!"s2n_security_policy", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !12, i64 56, !7, i64 57}
!23 = !{!22, !10, i64 8}
!24 = !{!22, !10, i64 16}
!25 = !{!22, !10, i64 24}
!26 = !{!22, !10, i64 32}
!27 = !{!22, !10, i64 40}
!28 = !{!22, !10, i64 48}
!29 = !{!22, !12, i64 56}
!30 = !{!31, !31, i64 0}
!31 = !{!"long", !7, i64 0}
!32 = !{!33, !6, i64 56}
!33 = !{!"s2n_cert", !6, i64 0, !34, i64 8, !35, i64 56, !36, i64 80, !10, i64 104}
!34 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!35 = !{!"s2n_cert_info", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !12, i64 16}
!36 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!37 = !{!33, !6, i64 60}
!38 = !{!33, !6, i64 64}
!39 = !{!33, !6, i64 68}
!40 = !{i64 0, i64 1, !41, i64 8, i64 8, !9, i64 16, i64 8, !9, i64 24, i64 8, !9, i64 32, i64 8, !9, i64 40, i64 8, !9, i64 48, i64 8, !9, i64 56, i64 1, !11, i64 57, i64 2, !41}
!41 = !{!7, !7, i64 0}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!45, !10, i64 16}
!45 = !{!"s2n_config", !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 2, !6, i64 2, !6, i64 2, !6, i64 2, !10, i64 8, !10, i64 16, !46, i64 24, !36, i64 56, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !6, i64 128, !6, i64 132, !10, i64 136, !31, i64 144, !10, i64 152, !31, i64 160, !31, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !6, i64 224, !7, i64 228, !6, i64 232, !6, i64 236, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !7, i64 296, !7, i64 297, !47, i64 304, !48, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360, !10, i64 368, !10, i64 376, !10, i64 384, !6, i64 392, !6, i64 396, !6, i64 400, !10, i64 408, !6, i64 416, !6, i64 420, !10, i64 424, !10, i64 432, !6, i64 440, !36, i64 448}
!46 = !{!"certs_by_type", !7, i64 0}
!47 = !{!"s2n_x509_trust_store", !10, i64 0, !6, i64 8}
!48 = !{!"short", !7, i64 0}
!49 = !{!45, !10, i64 96}


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

%struct.s2n_cert_info = type { i32, i32, i32, i32, i8 }
%struct.s2n_signature_preferences = type { i8, ptr }
%struct.s2n_certificate_key_preferences = type { i8, ptr }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_cert = type { i32, %struct.s2n_pkey, %struct.s2n_cert_info, %struct.s2n_blob, ptr }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_cert_chain = type { i32, ptr }
%struct.s2n_cert_chain_and_key = type { ptr, ptr, %struct.s2n_blob, %struct.s2n_blob, ptr, ptr, ptr }

@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 [100 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
@__const.main.valid_info = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@__const.main.test_sig_scheme_list = external hidden unnamed_addr constant [2 x ptr], align 16
@__const.main.test_cert_key_list = external hidden unnamed_addr constant [2 x ptr], align 16
@__const.main.pss_sig_scheme_list = external hidden unnamed_addr constant [6 x ptr], align 16
@__const.main.info = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.8 = external hidden unnamed_addr constant [135 x i8], align 1
@__const.main.info.9 = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.10 = external hidden unnamed_addr constant [138 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [70 x i8], align 1
@__const.main.info.13 = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.14 = external hidden unnamed_addr constant [139 x i8], align 1
@__const.main.info.15 = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.16 = external hidden unnamed_addr constant [129 x i8], align 1
@__const.main.info.17 = external hidden unnamed_addr constant %struct.s2n_cert_info, align 4
@.str.18 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.57 = 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 %struct.s2n_cert_info, align 4
  %4 = alloca [2 x ptr], align 16
  %5 = alloca [2 x ptr], align 16
  %6 = alloca %struct.s2n_signature_preferences, align 8
  %7 = alloca %struct.s2n_certificate_key_preferences, align 8
  %8 = alloca %struct.s2n_security_policy, align 8
  %9 = alloca [6 x ptr], align 16
  %10 = alloca %struct.s2n_signature_preferences, align 8
  %11 = alloca %struct.s2n_security_policy, align 8
  %12 = alloca %struct.s2n_cert_info, align 4
  %13 = alloca %struct.s2n_cert_info, align 4
  %14 = alloca %struct.s2n_cert_info, align 4
  %15 = alloca %struct.s2n_cert_info, align 4
  %16 = alloca %struct.s2n_cert_info, align 4
  %17 = alloca [3 x %struct.s2n_cert], align 16
  %18 = alloca %struct.s2n_cert_chain, align 8
  %19 = alloca %struct.s2n_cert_chain_and_key, align 8
  %20 = alloca [3 x %struct.s2n_cert], align 16
  %21 = alloca %struct.s2n_cert_chain, align 8
  %22 = alloca %struct.s2n_cert_chain_and_key, align 8
  %23 = alloca [3 x %struct.s2n_cert], align 16
  %24 = alloca %struct.s2n_cert_chain, align 8
  %25 = alloca %struct.s2n_cert_chain_and_key, align 8
  %26 = alloca [3 x %struct.s2n_cert], align 16
  %27 = alloca %struct.s2n_cert_chain, align 8
  %28 = alloca %struct.s2n_cert_chain_and_key, align 8
  %29 = alloca [3 x %struct.s2n_cert], align 16
  %30 = alloca %struct.s2n_cert_chain, align 8
  %31 = alloca %struct.s2n_cert_chain_and_key, align 8
  %32 = alloca %struct.s2n_security_policy, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %42 = load ptr, ptr @stdout, align 8, !tbaa !9
  %43 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %42, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #11
  %44 = load ptr, ptr @stdout, align 8, !tbaa !9
  %45 = tail call i32 @fflush(ptr noundef %44)
  %46 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #11
  %47 = icmp eq i32 %46, -1
  br i1 %47, label %48, label %72

48:                                               ; preds = %2
  %49 = tail call ptr @__errno_location() #12
  %50 = load i32, ptr %49, align 4, !tbaa !5
  %51 = load ptr, ptr @stderr, align 8, !tbaa !9
  %52 = tail call i32 @s2n_print_stacktrace(ptr noundef %51) #11
  %53 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %54 = trunc nuw i8 %53 to i1
  br i1 %54, label %55, label %59

55:                                               ; preds = %48
  %56 = load ptr, ptr @stderr, align 8, !tbaa !9
  %57 = tail call i32 @fileno(ptr noundef %56) #11
  %58 = tail call i32 @isatty(i32 noundef %57) #11
  %.not200 = icmp eq i32 %58, 0
  br i1 %.not200, label %59, label %60

59:                                               ; preds = %55, %48
  br label %60

60:                                               ; preds = %55, %59
  %.str.5.sink = phi ptr [ @.str.5, %59 ], [ @.str.2, %55 ]
  store i32 %50, ptr %49, align 4, !tbaa !5
  %61 = load ptr, ptr @stderr, align 8, !tbaa !9
  %62 = load i32, ptr @test_count, align 4, !tbaa !5
  %63 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %64 = load i32, ptr %63, align 4, !tbaa !5
  %65 = tail call ptr @s2n_strerror(i32 noundef %64, ptr noundef nonnull @.str.4) #11
  %66 = load i32, ptr %63, align 4, !tbaa !5
  %67 = tail call ptr @s2n_strerror_debug(i32 noundef %66, ptr noundef nonnull @.str.4) #11
  %68 = load i32, ptr %49, align 4, !tbaa !5
  %69 = tail call ptr @strerror(i32 noundef %68) #11
  %70 = load i32, ptr %49, align 4, !tbaa !5
  %71 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %61, ptr noundef nonnull %.str.5.sink, i32 noundef %62, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 56, ptr noundef %65, ptr noundef %67, ptr noundef %69, i32 noundef %70) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

72:                                               ; preds = %2
  %73 = load i32, ptr @test_count, align 4, !tbaa !5
  %74 = add nsw i32 %73, 1
  store i32 %74, ptr @test_count, align 4, !tbaa !5
  %75 = tail call i32 @s2n_enable_atexit() #11
  %76 = icmp eq i32 %75, -1
  br i1 %76, label %77, label %101

77:                                               ; preds = %72
  %78 = tail call ptr @__errno_location() #12
  %79 = load i32, ptr %78, align 4, !tbaa !5
  %80 = load ptr, ptr @stderr, align 8, !tbaa !9
  %81 = tail call i32 @s2n_print_stacktrace(ptr noundef %80) #11
  %82 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %83 = trunc nuw i8 %82 to i1
  br i1 %83, label %84, label %88

84:                                               ; preds = %77
  %85 = load ptr, ptr @stderr, align 8, !tbaa !9
  %86 = tail call i32 @fileno(ptr noundef %85) #11
  %87 = tail call i32 @isatty(i32 noundef %86) #11
  %.not199 = icmp eq i32 %87, 0
  br i1 %.not199, label %88, label %89

88:                                               ; preds = %84, %77
  br label %89

89:                                               ; preds = %84, %88
  %.str.5.sink212 = phi ptr [ @.str.5, %88 ], [ @.str.2, %84 ]
  store i32 %79, ptr %78, align 4, !tbaa !5
  %90 = load ptr, ptr @stderr, align 8, !tbaa !9
  %91 = load i32, ptr @test_count, align 4, !tbaa !5
  %92 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %93 = load i32, ptr %92, align 4, !tbaa !5
  %94 = tail call ptr @s2n_strerror(i32 noundef %93, ptr noundef nonnull @.str.4) #11
  %95 = load i32, ptr %92, align 4, !tbaa !5
  %96 = tail call ptr @s2n_strerror_debug(i32 noundef %95, ptr noundef nonnull @.str.4) #11
  %97 = load i32, ptr %78, align 4, !tbaa !5
  %98 = tail call ptr @strerror(i32 noundef %97) #11
  %99 = load i32, ptr %78, align 4, !tbaa !5
  %100 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %90, ptr noundef nonnull %.str.5.sink212, i32 noundef %91, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 56, ptr noundef %94, ptr noundef %96, ptr noundef %98, i32 noundef %99) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

101:                                              ; preds = %72
  %102 = tail call i32 @s2n_init() #11
  %103 = icmp eq i32 %102, -1
  br i1 %103, label %104, label %128

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

111:                                              ; preds = %104
  %112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %113 = tail call i32 @fileno(ptr noundef %112) #11
  %114 = tail call i32 @isatty(i32 noundef %113) #11
  %.not198 = icmp eq i32 %114, 0
  br i1 %.not198, label %115, label %116

115:                                              ; preds = %111, %104
  br label %116

116:                                              ; preds = %111, %115
  %.str.5.sink223 = phi ptr [ @.str.5, %115 ], [ @.str.2, %111 ]
  store i32 %106, ptr %105, align 4, !tbaa !5
  %117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %118 = load i32, ptr @test_count, align 4, !tbaa !5
  %119 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %120 = load i32, ptr %119, align 4, !tbaa !5
  %121 = tail call ptr @s2n_strerror(i32 noundef %120, ptr noundef nonnull @.str.4) #11
  %122 = load i32, ptr %119, align 4, !tbaa !5
  %123 = tail call ptr @s2n_strerror_debug(i32 noundef %122, ptr noundef nonnull @.str.4) #11
  %124 = load i32, ptr %105, align 4, !tbaa !5
  %125 = tail call ptr @strerror(i32 noundef %124) #11
  %126 = load i32, ptr %105, align 4, !tbaa !5
  %127 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %117, ptr noundef nonnull %.str.5.sink223, i32 noundef %118, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 56, ptr noundef %121, ptr noundef %123, ptr noundef %125, i32 noundef %126) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

128:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %3) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %3, ptr noundef nonnull align 4 dereferenceable(20) @__const.main.valid_info, i64 20, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %4, ptr noundef nonnull align 16 dereferenceable(16) @__const.main.test_sig_scheme_list, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %5, ptr noundef nonnull align 16 dereferenceable(16) @__const.main.test_cert_key_list, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #11
  store i8 2, ptr %6, align 8, !tbaa !15
  %129 = getelementptr inbounds i8, ptr %6, i64 8
  store ptr %4, ptr %129, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #11
  store i8 2, ptr %7, align 8, !tbaa !18
  %130 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr %5, ptr %130, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #11
  store i8 0, ptr %8, align 8, !tbaa !21
  %131 = getelementptr inbounds i8, ptr %8, i64 8
  %132 = getelementptr inbounds i8, ptr %8, i64 32
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %131, i8 0, i64 24, i1 false)
  store ptr %6, ptr %132, align 8, !tbaa !23
  %133 = getelementptr inbounds i8, ptr %8, i64 40
  store ptr null, ptr %133, align 8, !tbaa !24
  %134 = getelementptr inbounds i8, ptr %8, i64 48
  store ptr %7, ptr %134, align 8, !tbaa !25
  %135 = getelementptr inbounds i8, ptr %8, i64 56
  store i8 1, ptr %135, align 8, !tbaa !26
  %136 = getelementptr inbounds i8, ptr %8, i64 57
  store i16 0, ptr %136, align 1
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %9, ptr noundef nonnull align 16 dereferenceable(48) @__const.main.pss_sig_scheme_list, i64 48, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #11
  store i8 6, ptr %10, align 8, !tbaa !15
  %137 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %9, ptr %137, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  %138 = getelementptr inbounds i8, ptr %11, i64 32
  store ptr %10, ptr %138, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %12) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %12, ptr noundef nonnull align 4 dereferenceable(20) @__const.main.info, i64 20, i1 false)
  %139 = load i32, ptr @test_count, align 4, !tbaa !5
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr @test_count, align 4, !tbaa !5
  %141 = call i32 @s2n_security_policy_validate_cert_signature(ptr noundef nonnull %8, ptr noundef nonnull %12, i32 noundef 469762133) #11
  %142 = call zeroext i1 @s2n_result_is_ok(i32 %141)
  br i1 %142, label %167, label %143

143:                                              ; preds = %128
  %144 = tail call ptr @__errno_location() #12
  %145 = load i32, ptr %144, align 4, !tbaa !5
  %146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %147 = call i32 @s2n_print_stacktrace(ptr noundef %146) #11
  %148 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %150, label %154

150:                                              ; preds = %143
  %151 = load ptr, ptr @stderr, align 8, !tbaa !9
  %152 = call i32 @fileno(ptr noundef %151) #11
  %153 = call i32 @isatty(i32 noundef %152) #11
  %.not = icmp eq i32 %153, 0
  br i1 %.not, label %154, label %155

154:                                              ; preds = %150, %143
  br label %155

155:                                              ; preds = %150, %154
  %.str.5.sink234 = phi ptr [ @.str.5, %154 ], [ @.str.2, %150 ]
  store i32 %145, ptr %144, align 4, !tbaa !5
  %156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %157 = load i32, ptr @test_count, align 4, !tbaa !5
  %158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %159 = load i32, ptr %158, align 4, !tbaa !5
  %160 = call ptr @s2n_strerror(i32 noundef %159, ptr noundef nonnull @.str.4) #11
  %161 = load i32, ptr %158, align 4, !tbaa !5
  %162 = call ptr @s2n_strerror_debug(i32 noundef %161, ptr noundef nonnull @.str.4) #11
  %163 = load i32, ptr %144, align 4, !tbaa !5
  %164 = call ptr @strerror(i32 noundef %163) #11
  %165 = load i32, ptr %144, align 4, !tbaa !5
  %166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %156, ptr noundef nonnull %.str.5.sink234, i32 noundef %157, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 131, ptr noundef %160, ptr noundef %162, ptr noundef %164, i32 noundef %165) #13
  call void @exit(i32 noundef 1) #14
  unreachable

167:                                              ; preds = %128
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %12) #11
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %13) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %13, ptr noundef nonnull align 4 dereferenceable(20) @__const.main.info.9, i64 20, i1 false)
  %168 = load i32, ptr @test_count, align 4, !tbaa !5
  %169 = add nsw i32 %168, 1
  store i32 %169, ptr @test_count, align 4, !tbaa !5
  %170 = call i32 @s2n_security_policy_validate_cert_signature(ptr noundef nonnull %8, ptr noundef nonnull %13, i32 noundef 469762133) #11
  %171 = call zeroext i1 @s2n_result_is_error(i32 %170)
  br i1 %171, label %196, label %172

172:                                              ; preds = %167
  %173 = tail call ptr @__errno_location() #12
  %174 = load i32, ptr %173, align 4, !tbaa !5
  %175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %176 = call i32 @s2n_print_stacktrace(ptr noundef %175) #11
  %177 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %178 = trunc nuw i8 %177 to i1
  br i1 %178, label %179, label %183

179:                                              ; preds = %172
  %180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %181 = call i32 @fileno(ptr noundef %180) #11
  %182 = call i32 @isatty(i32 noundef %181) #11
  %.not144 = icmp eq i32 %182, 0
  br i1 %.not144, label %183, label %184

183:                                              ; preds = %179, %172
  br label %184

184:                                              ; preds = %179, %183
  %.str.5.sink245 = phi ptr [ @.str.5, %183 ], [ @.str.2, %179 ]
  store i32 %174, ptr %173, align 4, !tbaa !5
  %185 = load ptr, ptr @stderr, align 8, !tbaa !9
  %186 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %188, ptr noundef nonnull @.str.4) #11
  %190 = load i32, ptr %187, align 4, !tbaa !5
  %191 = call ptr @s2n_strerror_debug(i32 noundef %190, ptr noundef nonnull @.str.4) #11
  %192 = load i32, ptr %173, align 4, !tbaa !5
  %193 = call ptr @strerror(i32 noundef %192) #11
  %194 = load i32, ptr %173, align 4, !tbaa !5
  %195 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %185, ptr noundef nonnull %.str.5.sink245, i32 noundef %186, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 144, ptr noundef %189, ptr noundef %191, ptr noundef %193, i32 noundef %194) #13
  call void @exit(i32 noundef 1) #14
  unreachable

196:                                              ; preds = %167
  %197 = load i32, ptr @test_count, align 4, !tbaa !5
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr @test_count, align 4, !tbaa !5
  %199 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %200 = load i32, ptr %199, align 4, !tbaa !5
  %201 = icmp eq i32 %200, 469762133
  br i1 %201, label %225, label %202

202:                                              ; preds = %196
  %203 = tail call ptr @__errno_location() #12
  %204 = load i32, ptr %203, align 4, !tbaa !5
  %205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %206 = call i32 @s2n_print_stacktrace(ptr noundef %205) #11
  %207 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %208 = trunc nuw i8 %207 to i1
  br i1 %208, label %209, label %213

209:                                              ; preds = %202
  %210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %211 = call i32 @fileno(ptr noundef %210) #11
  %212 = call i32 @isatty(i32 noundef %211) #11
  %.not145 = icmp eq i32 %212, 0
  br i1 %.not145, label %213, label %214

213:                                              ; preds = %209, %202
  br label %214

214:                                              ; preds = %209, %213
  %.str.5.sink256 = phi ptr [ @.str.5, %213 ], [ @.str.2, %209 ]
  store i32 %204, ptr %203, align 4, !tbaa !5
  %215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %216 = load i32, ptr @test_count, align 4, !tbaa !5
  %217 = load i32, ptr %199, align 4, !tbaa !5
  %218 = call ptr @s2n_strerror(i32 noundef %217, ptr noundef nonnull @.str.4) #11
  %219 = load i32, ptr %199, align 4, !tbaa !5
  %220 = call ptr @s2n_strerror_debug(i32 noundef %219, ptr noundef nonnull @.str.4) #11
  %221 = load i32, ptr %203, align 4, !tbaa !5
  %222 = call ptr @strerror(i32 noundef %221) #11
  %223 = load i32, ptr %203, align 4, !tbaa !5
  %224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %215, ptr noundef nonnull %.str.5.sink256, i32 noundef %216, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 144, ptr noundef %218, ptr noundef %220, ptr noundef %222, i32 noundef %223) #13
  call void @exit(i32 noundef 1) #14
  unreachable

225:                                              ; preds = %196
  %226 = add nsw i32 %197, 2
  store i32 %226, ptr @test_count, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror_debug(i32 noundef 469762133, ptr noundef nonnull @.str.4) #11
  %228 = icmp eq ptr %227, null
  br i1 %228, label %229, label %252

229:                                              ; preds = %225
  %230 = tail call ptr @__errno_location() #12
  %231 = load i32, ptr %230, align 4, !tbaa !5
  %232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %233 = call i32 @s2n_print_stacktrace(ptr noundef %232) #11
  %234 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %235 = trunc nuw i8 %234 to i1
  br i1 %235, label %236, label %240

236:                                              ; preds = %229
  %237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %238 = call i32 @fileno(ptr noundef %237) #11
  %239 = call i32 @isatty(i32 noundef %238) #11
  %.not197 = icmp eq i32 %239, 0
  br i1 %.not197, label %240, label %241

240:                                              ; preds = %236, %229
  br label %241

241:                                              ; preds = %236, %240
  %.str.5.sink265 = phi ptr [ @.str.5, %240 ], [ @.str.2, %236 ]
  store i32 %231, ptr %230, align 4, !tbaa !5
  %242 = load ptr, ptr @stderr, align 8, !tbaa !9
  %243 = load i32, ptr @test_count, align 4, !tbaa !5
  %244 = load i32, ptr %199, align 4, !tbaa !5
  %245 = call ptr @s2n_strerror(i32 noundef %244, ptr noundef nonnull @.str.4) #11
  %246 = load i32, ptr %199, align 4, !tbaa !5
  %247 = call ptr @s2n_strerror_debug(i32 noundef %246, ptr noundef nonnull @.str.4) #11
  %248 = load i32, ptr %230, align 4, !tbaa !5
  %249 = call ptr @strerror(i32 noundef %248) #11
  %250 = load i32, ptr %230, align 4, !tbaa !5
  %251 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %242, ptr noundef nonnull %.str.5.sink265, i32 noundef %243, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 144, ptr noundef %245, ptr noundef %247, ptr noundef %249, i32 noundef %250) #13
  call void @exit(i32 noundef 1) #14
  unreachable

252:                                              ; preds = %225
  store i32 0, ptr %199, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  %253 = tail call ptr @__errno_location() #12
  store i32 0, ptr %253, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %13) #11
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %14) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %14, ptr noundef nonnull align 4 dereferenceable(20) @__const.main.info.13, i64 20, i1 false)
  %254 = load i32, ptr @test_count, align 4, !tbaa !5
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr @test_count, align 4, !tbaa !5
  %256 = call i32 @s2n_security_policy_validate_cert_signature(ptr noundef nonnull %11, ptr noundef nonnull %14, i32 noundef 469762133) #11
  %257 = call zeroext i1 @s2n_result_is_ok(i32 %256)
  br i1 %257, label %280, label %258

258:                                              ; preds = %252
  %259 = load i32, ptr %253, align 4, !tbaa !5
  %260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %261 = call i32 @s2n_print_stacktrace(ptr noundef %260) #11
  %262 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %263 = trunc nuw i8 %262 to i1
  br i1 %263, label %264, label %268

264:                                              ; preds = %258
  %265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %266 = call i32 @fileno(ptr noundef %265) #11
  %267 = call i32 @isatty(i32 noundef %266) #11
  %.not146 = icmp eq i32 %267, 0
  br i1 %.not146, label %268, label %269

268:                                              ; preds = %264, %258
  br label %269

269:                                              ; preds = %264, %268
  %.str.5.sink274 = phi ptr [ @.str.5, %268 ], [ @.str.2, %264 ]
  store i32 %259, ptr %253, align 4, !tbaa !5
  %270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %271 = load i32, ptr @test_count, align 4, !tbaa !5
  %272 = load i32, ptr %199, align 4, !tbaa !5
  %273 = call ptr @s2n_strerror(i32 noundef %272, ptr noundef nonnull @.str.4) #11
  %274 = load i32, ptr %199, align 4, !tbaa !5
  %275 = call ptr @s2n_strerror_debug(i32 noundef %274, ptr noundef nonnull @.str.4) #11
  %276 = load i32, ptr %253, align 4, !tbaa !5
  %277 = call ptr @strerror(i32 noundef %276) #11
  %278 = load i32, ptr %253, align 4, !tbaa !5
  %279 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %270, ptr noundef nonnull %.str.5.sink274, i32 noundef %271, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 156, ptr noundef %273, ptr noundef %275, ptr noundef %277, i32 noundef %278) #13
  call void @exit(i32 noundef 1) #14
  unreachable

280:                                              ; preds = %252
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %14) #11
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %15) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %15, ptr noundef nonnull align 4 dereferenceable(20) @__const.main.info.15, i64 20, i1 false)
  %281 = load i32, ptr @test_count, align 4, !tbaa !5
  %282 = add nsw i32 %281, 1
  store i32 %282, ptr @test_count, align 4, !tbaa !5
  %283 = call i32 @s2n_security_policy_validate_cert_key(ptr noundef nonnull %8, ptr noundef nonnull %15, i32 noundef 469762133) #11
  %284 = call zeroext i1 @s2n_result_is_ok(i32 %283)
  br i1 %284, label %307, label %285

285:                                              ; preds = %280
  %286 = load i32, ptr %253, align 4, !tbaa !5
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = call i32 @s2n_print_stacktrace(ptr noundef %287) #11
  %289 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %290 = trunc nuw i8 %289 to i1
  br i1 %290, label %291, label %295

291:                                              ; preds = %285
  %292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %293 = call i32 @fileno(ptr noundef %292) #11
  %294 = call i32 @isatty(i32 noundef %293) #11
  %.not147 = icmp eq i32 %294, 0
  br i1 %.not147, label %295, label %296

295:                                              ; preds = %291, %285
  br label %296

296:                                              ; preds = %291, %295
  %.str.5.sink283 = phi ptr [ @.str.5, %295 ], [ @.str.2, %291 ]
  store i32 %286, ptr %253, align 4, !tbaa !5
  %297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %298 = load i32, ptr @test_count, align 4, !tbaa !5
  %299 = load i32, ptr %199, align 4, !tbaa !5
  %300 = call ptr @s2n_strerror(i32 noundef %299, ptr noundef nonnull @.str.4) #11
  %301 = load i32, ptr %199, align 4, !tbaa !5
  %302 = call ptr @s2n_strerror_debug(i32 noundef %301, ptr noundef nonnull @.str.4) #11
  %303 = load i32, ptr %253, align 4, !tbaa !5
  %304 = call ptr @strerror(i32 noundef %303) #11
  %305 = load i32, ptr %253, align 4, !tbaa !5
  %306 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %297, ptr noundef nonnull %.str.5.sink283, i32 noundef %298, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 170, ptr noundef %300, ptr noundef %302, ptr noundef %304, i32 noundef %305) #13
  call void @exit(i32 noundef 1) #14
  unreachable

307:                                              ; preds = %280
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %15) #11
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %16) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %16, ptr noundef nonnull align 4 dereferenceable(20) @__const.main.info.17, i64 20, i1 false)
  %308 = load i32, ptr @test_count, align 4, !tbaa !5
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr @test_count, align 4, !tbaa !5
  %310 = call i32 @s2n_security_policy_validate_cert_key(ptr noundef nonnull %8, ptr noundef nonnull %16, i32 noundef 469762133) #11
  %311 = call zeroext i1 @s2n_result_is_error(i32 %310)
  br i1 %311, label %334, label %312

312:                                              ; preds = %307
  %313 = load i32, ptr %253, align 4, !tbaa !5
  %314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %315 = call i32 @s2n_print_stacktrace(ptr noundef %314) #11
  %316 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %317 = trunc nuw i8 %316 to i1
  br i1 %317, label %318, label %322

318:                                              ; preds = %312
  %319 = load ptr, ptr @stderr, align 8, !tbaa !9
  %320 = call i32 @fileno(ptr noundef %319) #11
  %321 = call i32 @isatty(i32 noundef %320) #11
  %.not148 = icmp eq i32 %321, 0
  br i1 %.not148, label %322, label %323

322:                                              ; preds = %318, %312
  br label %323

323:                                              ; preds = %318, %322
  %.str.5.sink292 = phi ptr [ @.str.5, %322 ], [ @.str.2, %318 ]
  store i32 %313, ptr %253, align 4, !tbaa !5
  %324 = load ptr, ptr @stderr, align 8, !tbaa !9
  %325 = load i32, ptr @test_count, align 4, !tbaa !5
  %326 = load i32, ptr %199, align 4, !tbaa !5
  %327 = call ptr @s2n_strerror(i32 noundef %326, ptr noundef nonnull @.str.4) #11
  %328 = load i32, ptr %199, align 4, !tbaa !5
  %329 = call ptr @s2n_strerror_debug(i32 noundef %328, ptr noundef nonnull @.str.4) #11
  %330 = load i32, ptr %253, align 4, !tbaa !5
  %331 = call ptr @strerror(i32 noundef %330) #11
  %332 = load i32, ptr %253, align 4, !tbaa !5
  %333 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %324, ptr noundef nonnull %.str.5.sink292, i32 noundef %325, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 182, ptr noundef %327, ptr noundef %329, ptr noundef %331, i32 noundef %332) #13
  call void @exit(i32 noundef 1) #14
  unreachable

334:                                              ; preds = %307
  %335 = load i32, ptr @test_count, align 4, !tbaa !5
  %336 = add nsw i32 %335, 1
  store i32 %336, ptr @test_count, align 4, !tbaa !5
  %337 = load i32, ptr %199, align 4, !tbaa !5
  %338 = icmp eq i32 %337, 469762133
  br i1 %338, label %361, label %339

339:                                              ; preds = %334
  %340 = load i32, ptr %253, align 4, !tbaa !5
  %341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %342 = call i32 @s2n_print_stacktrace(ptr noundef %341) #11
  %343 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %344 = trunc nuw i8 %343 to i1
  br i1 %344, label %345, label %349

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

349:                                              ; preds = %345, %339
  br label %350

350:                                              ; preds = %345, %349
  %.str.5.sink301 = phi ptr [ @.str.5, %349 ], [ @.str.2, %345 ]
  store i32 %340, ptr %253, align 4, !tbaa !5
  %351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %352 = load i32, ptr @test_count, align 4, !tbaa !5
  %353 = load i32, ptr %199, align 4, !tbaa !5
  %354 = call ptr @s2n_strerror(i32 noundef %353, ptr noundef nonnull @.str.4) #11
  %355 = load i32, ptr %199, align 4, !tbaa !5
  %356 = call ptr @s2n_strerror_debug(i32 noundef %355, ptr noundef nonnull @.str.4) #11
  %357 = load i32, ptr %253, align 4, !tbaa !5
  %358 = call ptr @strerror(i32 noundef %357) #11
  %359 = load i32, ptr %253, align 4, !tbaa !5
  %360 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %351, ptr noundef nonnull %.str.5.sink301, i32 noundef %352, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 182, ptr noundef %354, ptr noundef %356, ptr noundef %358, i32 noundef %359) #13
  call void @exit(i32 noundef 1) #14
  unreachable

361:                                              ; preds = %334
  %362 = add nsw i32 %335, 2
  store i32 %362, ptr @test_count, align 4, !tbaa !5
  %363 = call ptr @s2n_strerror_debug(i32 noundef 469762133, ptr noundef nonnull @.str.4) #11
  %364 = icmp eq ptr %363, null
  br i1 %364, label %365, label %387

365:                                              ; preds = %361
  %366 = load i32, ptr %253, align 4, !tbaa !5
  %367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %368 = call i32 @s2n_print_stacktrace(ptr noundef %367) #11
  %369 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %370 = trunc nuw i8 %369 to i1
  br i1 %370, label %371, label %375

371:                                              ; preds = %365
  %372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %373 = call i32 @fileno(ptr noundef %372) #11
  %374 = call i32 @isatty(i32 noundef %373) #11
  %.not196 = icmp eq i32 %374, 0
  br i1 %.not196, label %375, label %376

375:                                              ; preds = %371, %365
  br label %376

376:                                              ; preds = %371, %375
  %.str.5.sink310 = phi ptr [ @.str.5, %375 ], [ @.str.2, %371 ]
  store i32 %366, ptr %253, align 4, !tbaa !5
  %377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %378 = load i32, ptr @test_count, align 4, !tbaa !5
  %379 = load i32, ptr %199, align 4, !tbaa !5
  %380 = call ptr @s2n_strerror(i32 noundef %379, ptr noundef nonnull @.str.4) #11
  %381 = load i32, ptr %199, align 4, !tbaa !5
  %382 = call ptr @s2n_strerror_debug(i32 noundef %381, ptr noundef nonnull @.str.4) #11
  %383 = load i32, ptr %253, align 4, !tbaa !5
  %384 = call ptr @strerror(i32 noundef %383) #11
  %385 = load i32, ptr %253, align 4, !tbaa !5
  %386 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %377, ptr noundef nonnull %.str.5.sink310, i32 noundef %378, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 182, ptr noundef %380, ptr noundef %382, ptr noundef %384, i32 noundef %385) #13
  call void @exit(i32 noundef 1) #14
  unreachable

387:                                              ; preds = %361
  store i32 0, ptr %199, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %253, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %16) #11
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %17) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(336) %17, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %18, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %19) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %19, i8 0, i64 88, i1 false)
  %388 = load i32, ptr @test_count, align 4, !tbaa !5
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr @test_count, align 4, !tbaa !5
  %390 = call i32 @s2n_test_construct_cert_chain(ptr noundef nonnull %17, i64 noundef 3, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %3)
  %391 = call zeroext i1 @s2n_result_is_ok(i32 %390)
  br i1 %391, label %414, label %392

392:                                              ; preds = %387
  %393 = load i32, ptr %253, align 4, !tbaa !5
  %394 = load ptr, ptr @stderr, align 8, !tbaa !9
  %395 = call i32 @s2n_print_stacktrace(ptr noundef %394) #11
  %396 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %397 = trunc nuw i8 %396 to i1
  br i1 %397, label %398, label %402

398:                                              ; preds = %392
  %399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %400 = call i32 @fileno(ptr noundef %399) #11
  %401 = call i32 @isatty(i32 noundef %400) #11
  %.not150 = icmp eq i32 %401, 0
  br i1 %.not150, label %402, label %403

402:                                              ; preds = %398, %392
  br label %403

403:                                              ; preds = %398, %402
  %.str.5.sink319 = phi ptr [ @.str.5, %402 ], [ @.str.2, %398 ]
  store i32 %393, ptr %253, align 4, !tbaa !5
  %404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %405 = load i32, ptr @test_count, align 4, !tbaa !5
  %406 = load i32, ptr %199, align 4, !tbaa !5
  %407 = call ptr @s2n_strerror(i32 noundef %406, ptr noundef nonnull @.str.4) #11
  %408 = load i32, ptr %199, align 4, !tbaa !5
  %409 = call ptr @s2n_strerror_debug(i32 noundef %408, ptr noundef nonnull @.str.4) #11
  %410 = load i32, ptr %253, align 4, !tbaa !5
  %411 = call ptr @strerror(i32 noundef %410) #11
  %412 = load i32, ptr %253, align 4, !tbaa !5
  %413 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %404, ptr noundef nonnull %.str.5.sink319, i32 noundef %405, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 193, ptr noundef %407, ptr noundef %409, ptr noundef %411, i32 noundef %412) #13
  call void @exit(i32 noundef 1) #14
  unreachable

414:                                              ; preds = %387
  %415 = load i32, ptr @test_count, align 4, !tbaa !5
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr @test_count, align 4, !tbaa !5
  %417 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef nonnull %8, ptr noundef nonnull %19) #11
  %418 = call zeroext i1 @s2n_result_is_ok(i32 %417)
  br i1 %418, label %441, label %419

419:                                              ; preds = %414
  %420 = load i32, ptr %253, align 4, !tbaa !5
  %421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %422 = call i32 @s2n_print_stacktrace(ptr noundef %421) #11
  %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 = %419
  %426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %427 = call i32 @fileno(ptr noundef %426) #11
  %428 = call i32 @isatty(i32 noundef %427) #11
  %.not151 = icmp eq i32 %428, 0
  br i1 %.not151, label %429, label %430

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

430:                                              ; preds = %425, %429
  %.str.5.sink328 = phi ptr [ @.str.5, %429 ], [ @.str.2, %425 ]
  store i32 %420, ptr %253, align 4, !tbaa !5
  %431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %432 = load i32, ptr @test_count, align 4, !tbaa !5
  %433 = load i32, ptr %199, align 4, !tbaa !5
  %434 = call ptr @s2n_strerror(i32 noundef %433, ptr noundef nonnull @.str.4) #11
  %435 = load i32, ptr %199, align 4, !tbaa !5
  %436 = call ptr @s2n_strerror_debug(i32 noundef %435, ptr noundef nonnull @.str.4) #11
  %437 = load i32, ptr %253, align 4, !tbaa !5
  %438 = call ptr @strerror(i32 noundef %437) #11
  %439 = load i32, ptr %253, align 4, !tbaa !5
  %440 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %431, ptr noundef nonnull %.str.5.sink328, i32 noundef %432, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 194, ptr noundef %434, ptr noundef %436, ptr noundef %438, i32 noundef %439) #13
  call void @exit(i32 noundef 1) #14
  unreachable

441:                                              ; preds = %414
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %17) #11
  %442 = getelementptr inbounds i8, ptr %32, i64 56
  br label %448

443:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #11
  store ptr null, ptr %33, align 8, !tbaa !9
  %444 = load i32, ptr @test_count, align 4, !tbaa !5
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr @test_count, align 4, !tbaa !5
  %446 = call i32 @s2n_test_cert_permutation_load_server_chain(ptr noundef nonnull %33, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26) #11
  %447 = icmp eq i32 %446, -1
  br i1 %447, label %831, label %853

448:                                              ; preds = %441, %829
  %.0201 = phi i64 [ 0, %441 ], [ %830, %829 ]
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %20) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(336) %20, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %21, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %22) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %22, i8 0, i64 88, i1 false)
  %449 = load i32, ptr @test_count, align 4, !tbaa !5
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr @test_count, align 4, !tbaa !5
  %451 = call i32 @s2n_test_construct_cert_chain(ptr noundef nonnull %20, i64 noundef 3, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %3)
  %452 = call zeroext i1 @s2n_result_is_ok(i32 %451)
  br i1 %452, label %475, label %453

453:                                              ; preds = %448
  %454 = load i32, ptr %253, align 4, !tbaa !5
  %455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %456 = call i32 @s2n_print_stacktrace(ptr noundef %455) #11
  %457 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %458 = trunc nuw i8 %457 to i1
  br i1 %458, label %459, label %463

459:                                              ; preds = %453
  %460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %461 = call i32 @fileno(ptr noundef %460) #11
  %462 = call i32 @isatty(i32 noundef %461) #11
  %.not182 = icmp eq i32 %462, 0
  br i1 %.not182, label %463, label %464

463:                                              ; preds = %459, %453
  br label %464

464:                                              ; preds = %459, %463
  %.str.5.sink337 = phi ptr [ @.str.5, %463 ], [ @.str.2, %459 ]
  store i32 %454, ptr %253, align 4, !tbaa !5
  %465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %466 = load i32, ptr @test_count, align 4, !tbaa !5
  %467 = load i32, ptr %199, align 4, !tbaa !5
  %468 = call ptr @s2n_strerror(i32 noundef %467, ptr noundef nonnull @.str.4) #11
  %469 = load i32, ptr %199, align 4, !tbaa !5
  %470 = call ptr @s2n_strerror_debug(i32 noundef %469, ptr noundef nonnull @.str.4) #11
  %471 = load i32, ptr %253, align 4, !tbaa !5
  %472 = call ptr @strerror(i32 noundef %471) #11
  %473 = load i32, ptr %253, align 4, !tbaa !5
  %474 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %465, ptr noundef nonnull %.str.5.sink337, i32 noundef %466, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 204, ptr noundef %468, ptr noundef %470, ptr noundef %472, i32 noundef %473) #13
  call void @exit(i32 noundef 1) #14
  unreachable

475:                                              ; preds = %448
  %476 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %20, i64 0, i64 %.0201, i32 2
  store i32 668, ptr %476, align 8, !tbaa !27
  %477 = getelementptr inbounds i8, ptr %476, i64 4
  store i32 64, ptr %477, align 4, !tbaa !32
  %478 = load i32, ptr @test_count, align 4, !tbaa !5
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr @test_count, align 4, !tbaa !5
  %480 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef nonnull %8, ptr noundef nonnull %22) #11
  %481 = call zeroext i1 @s2n_result_is_error(i32 %480)
  br i1 %481, label %504, label %482

482:                                              ; preds = %475
  %483 = load i32, ptr %253, align 4, !tbaa !5
  %484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %485 = call i32 @s2n_print_stacktrace(ptr noundef %484) #11
  %486 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %487 = trunc nuw i8 %486 to i1
  br i1 %487, label %488, label %492

488:                                              ; preds = %482
  %489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %490 = call i32 @fileno(ptr noundef %489) #11
  %491 = call i32 @isatty(i32 noundef %490) #11
  %.not183 = icmp eq i32 %491, 0
  br i1 %.not183, label %492, label %493

492:                                              ; preds = %488, %482
  br label %493

493:                                              ; preds = %488, %492
  %.str.5.sink346 = phi ptr [ @.str.5, %492 ], [ @.str.2, %488 ]
  store i32 %483, ptr %253, align 4, !tbaa !5
  %494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %495 = load i32, ptr @test_count, align 4, !tbaa !5
  %496 = load i32, ptr %199, align 4, !tbaa !5
  %497 = call ptr @s2n_strerror(i32 noundef %496, ptr noundef nonnull @.str.4) #11
  %498 = load i32, ptr %199, align 4, !tbaa !5
  %499 = call ptr @s2n_strerror_debug(i32 noundef %498, ptr noundef nonnull @.str.4) #11
  %500 = load i32, ptr %253, align 4, !tbaa !5
  %501 = call ptr @strerror(i32 noundef %500) #11
  %502 = load i32, ptr %253, align 4, !tbaa !5
  %503 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %494, ptr noundef nonnull %.str.5.sink346, i32 noundef %495, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 208, ptr noundef %497, ptr noundef %499, ptr noundef %501, i32 noundef %502) #13
  call void @exit(i32 noundef 1) #14
  unreachable

504:                                              ; preds = %475
  %505 = load i32, ptr @test_count, align 4, !tbaa !5
  %506 = add nsw i32 %505, 1
  store i32 %506, ptr @test_count, align 4, !tbaa !5
  %507 = load i32, ptr %199, align 4, !tbaa !5
  %508 = icmp eq i32 %507, 469762133
  br i1 %508, label %531, label %509

509:                                              ; preds = %504
  %510 = load i32, ptr %253, align 4, !tbaa !5
  %511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %512 = call i32 @s2n_print_stacktrace(ptr noundef %511) #11
  %513 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %514 = trunc nuw i8 %513 to i1
  br i1 %514, label %515, label %519

515:                                              ; preds = %509
  %516 = load ptr, ptr @stderr, align 8, !tbaa !9
  %517 = call i32 @fileno(ptr noundef %516) #11
  %518 = call i32 @isatty(i32 noundef %517) #11
  %.not184 = icmp eq i32 %518, 0
  br i1 %.not184, label %519, label %520

519:                                              ; preds = %515, %509
  br label %520

520:                                              ; preds = %515, %519
  %.str.5.sink355 = phi ptr [ @.str.5, %519 ], [ @.str.2, %515 ]
  store i32 %510, ptr %253, align 4, !tbaa !5
  %521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %522 = load i32, ptr @test_count, align 4, !tbaa !5
  %523 = load i32, ptr %199, align 4, !tbaa !5
  %524 = call ptr @s2n_strerror(i32 noundef %523, ptr noundef nonnull @.str.4) #11
  %525 = load i32, ptr %199, align 4, !tbaa !5
  %526 = call ptr @s2n_strerror_debug(i32 noundef %525, ptr noundef nonnull @.str.4) #11
  %527 = load i32, ptr %253, align 4, !tbaa !5
  %528 = call ptr @strerror(i32 noundef %527) #11
  %529 = load i32, ptr %253, align 4, !tbaa !5
  %530 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %521, ptr noundef nonnull %.str.5.sink355, i32 noundef %522, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 208, ptr noundef %524, ptr noundef %526, ptr noundef %528, i32 noundef %529) #13
  call void @exit(i32 noundef 1) #14
  unreachable

531:                                              ; preds = %504
  %532 = add nsw i32 %505, 2
  store i32 %532, ptr @test_count, align 4, !tbaa !5
  %533 = call ptr @s2n_strerror_debug(i32 noundef 469762133, ptr noundef nonnull @.str.4) #11
  %534 = icmp eq ptr %533, null
  br i1 %534, label %535, label %557

535:                                              ; preds = %531
  %536 = load i32, ptr %253, align 4, !tbaa !5
  %537 = load ptr, ptr @stderr, align 8, !tbaa !9
  %538 = call i32 @s2n_print_stacktrace(ptr noundef %537) #11
  %539 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %540 = trunc nuw i8 %539 to i1
  br i1 %540, label %541, label %545

541:                                              ; preds = %535
  %542 = load ptr, ptr @stderr, align 8, !tbaa !9
  %543 = call i32 @fileno(ptr noundef %542) #11
  %544 = call i32 @isatty(i32 noundef %543) #11
  %.not195 = icmp eq i32 %544, 0
  br i1 %.not195, label %545, label %546

545:                                              ; preds = %541, %535
  br label %546

546:                                              ; preds = %541, %545
  %.str.5.sink364 = phi ptr [ @.str.5, %545 ], [ @.str.2, %541 ]
  store i32 %536, ptr %253, align 4, !tbaa !5
  %547 = load ptr, ptr @stderr, align 8, !tbaa !9
  %548 = load i32, ptr @test_count, align 4, !tbaa !5
  %549 = load i32, ptr %199, align 4, !tbaa !5
  %550 = call ptr @s2n_strerror(i32 noundef %549, ptr noundef nonnull @.str.4) #11
  %551 = load i32, ptr %199, align 4, !tbaa !5
  %552 = call ptr @s2n_strerror_debug(i32 noundef %551, ptr noundef nonnull @.str.4) #11
  %553 = load i32, ptr %253, align 4, !tbaa !5
  %554 = call ptr @strerror(i32 noundef %553) #11
  %555 = load i32, ptr %253, align 4, !tbaa !5
  %556 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %547, ptr noundef nonnull %.str.5.sink364, i32 noundef %548, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 208, ptr noundef %550, ptr noundef %552, ptr noundef %554, i32 noundef %555) #13
  call void @exit(i32 noundef 1) #14
  unreachable

557:                                              ; preds = %531
  store i32 0, ptr %199, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %253, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %20) #11
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %23) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(336) %23, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %25) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %25, i8 0, i64 88, i1 false)
  %558 = load i32, ptr @test_count, align 4, !tbaa !5
  %559 = add nsw i32 %558, 1
  store i32 %559, ptr @test_count, align 4, !tbaa !5
  %560 = call i32 @s2n_test_construct_cert_chain(ptr noundef nonnull %23, i64 noundef 3, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %3)
  %561 = call zeroext i1 @s2n_result_is_ok(i32 %560)
  br i1 %561, label %584, label %562

562:                                              ; preds = %557
  %563 = load i32, ptr %253, align 4, !tbaa !5
  %564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %565 = call i32 @s2n_print_stacktrace(ptr noundef %564) #11
  %566 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %567 = trunc nuw i8 %566 to i1
  br i1 %567, label %568, label %572

568:                                              ; preds = %562
  %569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %570 = call i32 @fileno(ptr noundef %569) #11
  %571 = call i32 @isatty(i32 noundef %570) #11
  %.not185 = icmp eq i32 %571, 0
  br i1 %.not185, label %572, label %573

572:                                              ; preds = %568, %562
  br label %573

573:                                              ; preds = %568, %572
  %.str.5.sink373 = phi ptr [ @.str.5, %572 ], [ @.str.2, %568 ]
  store i32 %563, ptr %253, align 4, !tbaa !5
  %574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %575 = load i32, ptr @test_count, align 4, !tbaa !5
  %576 = load i32, ptr %199, align 4, !tbaa !5
  %577 = call ptr @s2n_strerror(i32 noundef %576, ptr noundef nonnull @.str.4) #11
  %578 = load i32, ptr %199, align 4, !tbaa !5
  %579 = call ptr @s2n_strerror_debug(i32 noundef %578, ptr noundef nonnull @.str.4) #11
  %580 = load i32, ptr %253, align 4, !tbaa !5
  %581 = call ptr @strerror(i32 noundef %580) #11
  %582 = load i32, ptr %253, align 4, !tbaa !5
  %583 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %574, ptr noundef nonnull %.str.5.sink373, i32 noundef %575, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 216, ptr noundef %577, ptr noundef %579, ptr noundef %581, i32 noundef %582) #13
  call void @exit(i32 noundef 1) #14
  unreachable

584:                                              ; preds = %557
  %585 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %23, i64 0, i64 %.0201, i32 2, i32 2
  store i32 415, ptr %585, align 16, !tbaa !33
  %586 = load i32, ptr @test_count, align 4, !tbaa !5
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr @test_count, align 4, !tbaa !5
  %588 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef nonnull %8, ptr noundef nonnull %25) #11
  %589 = call zeroext i1 @s2n_result_is_error(i32 %588)
  br i1 %589, label %612, label %590

590:                                              ; preds = %584
  %591 = load i32, ptr %253, align 4, !tbaa !5
  %592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %593 = call i32 @s2n_print_stacktrace(ptr noundef %592) #11
  %594 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %595 = trunc nuw i8 %594 to i1
  br i1 %595, label %596, label %600

596:                                              ; preds = %590
  %597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %598 = call i32 @fileno(ptr noundef %597) #11
  %599 = call i32 @isatty(i32 noundef %598) #11
  %.not186 = icmp eq i32 %599, 0
  br i1 %.not186, label %600, label %601

600:                                              ; preds = %596, %590
  br label %601

601:                                              ; preds = %596, %600
  %.str.5.sink382 = phi ptr [ @.str.5, %600 ], [ @.str.2, %596 ]
  store i32 %591, ptr %253, align 4, !tbaa !5
  %602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %603 = load i32, ptr @test_count, align 4, !tbaa !5
  %604 = load i32, ptr %199, align 4, !tbaa !5
  %605 = call ptr @s2n_strerror(i32 noundef %604, ptr noundef nonnull @.str.4) #11
  %606 = load i32, ptr %199, align 4, !tbaa !5
  %607 = call ptr @s2n_strerror_debug(i32 noundef %606, ptr noundef nonnull @.str.4) #11
  %608 = load i32, ptr %253, align 4, !tbaa !5
  %609 = call ptr @strerror(i32 noundef %608) #11
  %610 = load i32, ptr %253, align 4, !tbaa !5
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %602, ptr noundef nonnull %.str.5.sink382, i32 noundef %603, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 219, ptr noundef %605, ptr noundef %607, ptr noundef %609, i32 noundef %610) #13
  call void @exit(i32 noundef 1) #14
  unreachable

612:                                              ; preds = %584
  %613 = load i32, ptr @test_count, align 4, !tbaa !5
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr @test_count, align 4, !tbaa !5
  %615 = load i32, ptr %199, align 4, !tbaa !5
  %616 = icmp eq i32 %615, 469762133
  br i1 %616, label %639, label %617

617:                                              ; preds = %612
  %618 = load i32, ptr %253, align 4, !tbaa !5
  %619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %620 = call i32 @s2n_print_stacktrace(ptr noundef %619) #11
  %621 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %622 = trunc nuw i8 %621 to i1
  br i1 %622, label %623, label %627

623:                                              ; preds = %617
  %624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %625 = call i32 @fileno(ptr noundef %624) #11
  %626 = call i32 @isatty(i32 noundef %625) #11
  %.not187 = icmp eq i32 %626, 0
  br i1 %.not187, label %627, label %628

627:                                              ; preds = %623, %617
  br label %628

628:                                              ; preds = %623, %627
  %.str.5.sink391 = phi ptr [ @.str.5, %627 ], [ @.str.2, %623 ]
  store i32 %618, ptr %253, align 4, !tbaa !5
  %629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %630 = load i32, ptr @test_count, align 4, !tbaa !5
  %631 = load i32, ptr %199, align 4, !tbaa !5
  %632 = call ptr @s2n_strerror(i32 noundef %631, ptr noundef nonnull @.str.4) #11
  %633 = load i32, ptr %199, align 4, !tbaa !5
  %634 = call ptr @s2n_strerror_debug(i32 noundef %633, ptr noundef nonnull @.str.4) #11
  %635 = load i32, ptr %253, align 4, !tbaa !5
  %636 = call ptr @strerror(i32 noundef %635) #11
  %637 = load i32, ptr %253, align 4, !tbaa !5
  %638 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %629, ptr noundef nonnull %.str.5.sink391, i32 noundef %630, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 219, ptr noundef %632, ptr noundef %634, ptr noundef %636, i32 noundef %637) #13
  call void @exit(i32 noundef 1) #14
  unreachable

639:                                              ; preds = %612
  %640 = add nsw i32 %613, 2
  store i32 %640, ptr @test_count, align 4, !tbaa !5
  %641 = call ptr @s2n_strerror_debug(i32 noundef 469762133, ptr noundef nonnull @.str.4) #11
  %642 = icmp eq ptr %641, null
  br i1 %642, label %643, label %665

643:                                              ; preds = %639
  %644 = load i32, ptr %253, align 4, !tbaa !5
  %645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %646 = call i32 @s2n_print_stacktrace(ptr noundef %645) #11
  %647 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %648 = trunc nuw i8 %647 to i1
  br i1 %648, label %649, label %653

649:                                              ; preds = %643
  %650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %651 = call i32 @fileno(ptr noundef %650) #11
  %652 = call i32 @isatty(i32 noundef %651) #11
  %.not194 = icmp eq i32 %652, 0
  br i1 %.not194, label %653, label %654

653:                                              ; preds = %649, %643
  br label %654

654:                                              ; preds = %649, %653
  %.str.5.sink400 = phi ptr [ @.str.5, %653 ], [ @.str.2, %649 ]
  store i32 %644, ptr %253, align 4, !tbaa !5
  %655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %656 = load i32, ptr @test_count, align 4, !tbaa !5
  %657 = load i32, ptr %199, align 4, !tbaa !5
  %658 = call ptr @s2n_strerror(i32 noundef %657, ptr noundef nonnull @.str.4) #11
  %659 = load i32, ptr %199, align 4, !tbaa !5
  %660 = call ptr @s2n_strerror_debug(i32 noundef %659, ptr noundef nonnull @.str.4) #11
  %661 = load i32, ptr %253, align 4, !tbaa !5
  %662 = call ptr @strerror(i32 noundef %661) #11
  %663 = load i32, ptr %253, align 4, !tbaa !5
  %664 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %655, ptr noundef nonnull %.str.5.sink400, i32 noundef %656, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 219, ptr noundef %658, ptr noundef %660, ptr noundef %662, i32 noundef %663) #13
  call void @exit(i32 noundef 1) #14
  unreachable

665:                                              ; preds = %639
  store i32 0, ptr %199, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %253, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %23) #11
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %26) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(336) %26, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %27, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %28) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %28, i8 0, i64 88, i1 false)
  %666 = load i32, ptr @test_count, align 4, !tbaa !5
  %667 = add nsw i32 %666, 1
  store i32 %667, ptr @test_count, align 4, !tbaa !5
  %668 = call i32 @s2n_test_construct_cert_chain(ptr noundef nonnull %26, i64 noundef 3, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %3)
  %669 = call zeroext i1 @s2n_result_is_ok(i32 %668)
  br i1 %669, label %692, label %670

670:                                              ; preds = %665
  %671 = load i32, ptr %253, align 4, !tbaa !5
  %672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %673 = call i32 @s2n_print_stacktrace(ptr noundef %672) #11
  %674 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %675 = trunc nuw i8 %674 to i1
  br i1 %675, label %676, label %680

676:                                              ; preds = %670
  %677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %678 = call i32 @fileno(ptr noundef %677) #11
  %679 = call i32 @isatty(i32 noundef %678) #11
  %.not188 = icmp eq i32 %679, 0
  br i1 %.not188, label %680, label %681

680:                                              ; preds = %676, %670
  br label %681

681:                                              ; preds = %676, %680
  %.str.5.sink409 = phi ptr [ @.str.5, %680 ], [ @.str.2, %676 ]
  store i32 %671, ptr %253, align 4, !tbaa !5
  %682 = load ptr, ptr @stderr, align 8, !tbaa !9
  %683 = load i32, ptr @test_count, align 4, !tbaa !5
  %684 = load i32, ptr %199, align 4, !tbaa !5
  %685 = call ptr @s2n_strerror(i32 noundef %684, ptr noundef nonnull @.str.4) #11
  %686 = load i32, ptr %199, align 4, !tbaa !5
  %687 = call ptr @s2n_strerror_debug(i32 noundef %686, ptr noundef nonnull @.str.4) #11
  %688 = load i32, ptr %253, align 4, !tbaa !5
  %689 = call ptr @strerror(i32 noundef %688) #11
  %690 = load i32, ptr %253, align 4, !tbaa !5
  %691 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %682, ptr noundef nonnull %.str.5.sink409, i32 noundef %683, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 227, ptr noundef %685, ptr noundef %687, ptr noundef %689, i32 noundef %690) #13
  call void @exit(i32 noundef 1) #14
  unreachable

692:                                              ; preds = %665
  %693 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %26, i64 0, i64 %.0201, i32 2, i32 3
  store i32 256, ptr %693, align 4, !tbaa !34
  %694 = load i32, ptr @test_count, align 4, !tbaa !5
  %695 = add nsw i32 %694, 1
  store i32 %695, ptr @test_count, align 4, !tbaa !5
  %696 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef nonnull %8, ptr noundef nonnull %28) #11
  %697 = call zeroext i1 @s2n_result_is_error(i32 %696)
  br i1 %697, label %720, label %698

698:                                              ; preds = %692
  %699 = load i32, ptr %253, align 4, !tbaa !5
  %700 = load ptr, ptr @stderr, align 8, !tbaa !9
  %701 = call i32 @s2n_print_stacktrace(ptr noundef %700) #11
  %702 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %703 = trunc nuw i8 %702 to i1
  br i1 %703, label %704, label %708

704:                                              ; preds = %698
  %705 = load ptr, ptr @stderr, align 8, !tbaa !9
  %706 = call i32 @fileno(ptr noundef %705) #11
  %707 = call i32 @isatty(i32 noundef %706) #11
  %.not189 = icmp eq i32 %707, 0
  br i1 %.not189, label %708, label %709

708:                                              ; preds = %704, %698
  br label %709

709:                                              ; preds = %704, %708
  %.str.5.sink418 = phi ptr [ @.str.5, %708 ], [ @.str.2, %704 ]
  store i32 %699, ptr %253, align 4, !tbaa !5
  %710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %711 = load i32, ptr @test_count, align 4, !tbaa !5
  %712 = load i32, ptr %199, align 4, !tbaa !5
  %713 = call ptr @s2n_strerror(i32 noundef %712, ptr noundef nonnull @.str.4) #11
  %714 = load i32, ptr %199, align 4, !tbaa !5
  %715 = call ptr @s2n_strerror_debug(i32 noundef %714, ptr noundef nonnull @.str.4) #11
  %716 = load i32, ptr %253, align 4, !tbaa !5
  %717 = call ptr @strerror(i32 noundef %716) #11
  %718 = load i32, ptr %253, align 4, !tbaa !5
  %719 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %710, ptr noundef nonnull %.str.5.sink418, i32 noundef %711, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 230, ptr noundef %713, ptr noundef %715, ptr noundef %717, i32 noundef %718) #13
  call void @exit(i32 noundef 1) #14
  unreachable

720:                                              ; preds = %692
  %721 = load i32, ptr @test_count, align 4, !tbaa !5
  %722 = add nsw i32 %721, 1
  store i32 %722, ptr @test_count, align 4, !tbaa !5
  %723 = load i32, ptr %199, align 4, !tbaa !5
  %724 = icmp eq i32 %723, 469762133
  br i1 %724, label %747, label %725

725:                                              ; preds = %720
  %726 = load i32, ptr %253, align 4, !tbaa !5
  %727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %728 = call i32 @s2n_print_stacktrace(ptr noundef %727) #11
  %729 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %730 = trunc nuw i8 %729 to i1
  br i1 %730, label %731, label %735

731:                                              ; preds = %725
  %732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %733 = call i32 @fileno(ptr noundef %732) #11
  %734 = call i32 @isatty(i32 noundef %733) #11
  %.not190 = icmp eq i32 %734, 0
  br i1 %.not190, label %735, label %736

735:                                              ; preds = %731, %725
  br label %736

736:                                              ; preds = %731, %735
  %.str.5.sink427 = phi ptr [ @.str.5, %735 ], [ @.str.2, %731 ]
  store i32 %726, ptr %253, align 4, !tbaa !5
  %737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %738 = load i32, ptr @test_count, align 4, !tbaa !5
  %739 = load i32, ptr %199, align 4, !tbaa !5
  %740 = call ptr @s2n_strerror(i32 noundef %739, ptr noundef nonnull @.str.4) #11
  %741 = load i32, ptr %199, align 4, !tbaa !5
  %742 = call ptr @s2n_strerror_debug(i32 noundef %741, ptr noundef nonnull @.str.4) #11
  %743 = load i32, ptr %253, align 4, !tbaa !5
  %744 = call ptr @strerror(i32 noundef %743) #11
  %745 = load i32, ptr %253, align 4, !tbaa !5
  %746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %737, ptr noundef nonnull %.str.5.sink427, i32 noundef %738, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 230, ptr noundef %740, ptr noundef %742, ptr noundef %744, i32 noundef %745) #13
  call void @exit(i32 noundef 1) #14
  unreachable

747:                                              ; preds = %720
  %748 = add nsw i32 %721, 2
  store i32 %748, ptr @test_count, align 4, !tbaa !5
  %749 = call ptr @s2n_strerror_debug(i32 noundef 469762133, ptr noundef nonnull @.str.4) #11
  %750 = icmp eq ptr %749, null
  br i1 %750, label %751, label %773

751:                                              ; preds = %747
  %752 = load i32, ptr %253, align 4, !tbaa !5
  %753 = load ptr, ptr @stderr, align 8, !tbaa !9
  %754 = call i32 @s2n_print_stacktrace(ptr noundef %753) #11
  %755 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %756 = trunc nuw i8 %755 to i1
  br i1 %756, label %757, label %761

757:                                              ; preds = %751
  %758 = load ptr, ptr @stderr, align 8, !tbaa !9
  %759 = call i32 @fileno(ptr noundef %758) #11
  %760 = call i32 @isatty(i32 noundef %759) #11
  %.not193 = icmp eq i32 %760, 0
  br i1 %.not193, label %761, label %762

761:                                              ; preds = %757, %751
  br label %762

762:                                              ; preds = %757, %761
  %.str.5.sink436 = phi ptr [ @.str.5, %761 ], [ @.str.2, %757 ]
  store i32 %752, ptr %253, align 4, !tbaa !5
  %763 = load ptr, ptr @stderr, align 8, !tbaa !9
  %764 = load i32, ptr @test_count, align 4, !tbaa !5
  %765 = load i32, ptr %199, align 4, !tbaa !5
  %766 = call ptr @s2n_strerror(i32 noundef %765, ptr noundef nonnull @.str.4) #11
  %767 = load i32, ptr %199, align 4, !tbaa !5
  %768 = call ptr @s2n_strerror_debug(i32 noundef %767, ptr noundef nonnull @.str.4) #11
  %769 = load i32, ptr %253, align 4, !tbaa !5
  %770 = call ptr @strerror(i32 noundef %769) #11
  %771 = load i32, ptr %253, align 4, !tbaa !5
  %772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %763, ptr noundef nonnull %.str.5.sink436, i32 noundef %764, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 230, ptr noundef %766, ptr noundef %768, ptr noundef %770, i32 noundef %771) #13
  call void @exit(i32 noundef 1) #14
  unreachable

773:                                              ; preds = %747
  store i32 0, ptr %199, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %253, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %29) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(336) %29, i8 0, i64 336, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %30, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %31) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %31, i8 0, i64 88, i1 false)
  %774 = load i32, ptr @test_count, align 4, !tbaa !5
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr @test_count, align 4, !tbaa !5
  %776 = call i32 @s2n_test_construct_cert_chain(ptr noundef nonnull %29, i64 noundef 3, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %3)
  %777 = call zeroext i1 @s2n_result_is_ok(i32 %776)
  br i1 %777, label %800, label %778

778:                                              ; preds = %773
  %779 = load i32, ptr %253, align 4, !tbaa !5
  %780 = load ptr, ptr @stderr, align 8, !tbaa !9
  %781 = call i32 @s2n_print_stacktrace(ptr noundef %780) #11
  %782 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %783 = trunc nuw i8 %782 to i1
  br i1 %783, label %784, label %788

784:                                              ; preds = %778
  %785 = load ptr, ptr @stderr, align 8, !tbaa !9
  %786 = call i32 @fileno(ptr noundef %785) #11
  %787 = call i32 @isatty(i32 noundef %786) #11
  %.not191 = icmp eq i32 %787, 0
  br i1 %.not191, label %788, label %789

788:                                              ; preds = %784, %778
  br label %789

789:                                              ; preds = %784, %788
  %.str.5.sink445 = phi ptr [ @.str.5, %788 ], [ @.str.2, %784 ]
  store i32 %779, ptr %253, align 4, !tbaa !5
  %790 = load ptr, ptr @stderr, align 8, !tbaa !9
  %791 = load i32, ptr @test_count, align 4, !tbaa !5
  %792 = load i32, ptr %199, align 4, !tbaa !5
  %793 = call ptr @s2n_strerror(i32 noundef %792, ptr noundef nonnull @.str.4) #11
  %794 = load i32, ptr %199, align 4, !tbaa !5
  %795 = call ptr @s2n_strerror_debug(i32 noundef %794, ptr noundef nonnull @.str.4) #11
  %796 = load i32, ptr %253, align 4, !tbaa !5
  %797 = call ptr @strerror(i32 noundef %796) #11
  %798 = load i32, ptr %253, align 4, !tbaa !5
  %799 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %790, ptr noundef nonnull %.str.5.sink445, i32 noundef %791, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 238, ptr noundef %793, ptr noundef %795, ptr noundef %797, i32 noundef %798) #13
  call void @exit(i32 noundef 1) #14
  unreachable

800:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %32) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %32, ptr noundef nonnull align 8 dereferenceable(64) %8, i64 64, i1 false), !tbaa.struct !35
  store i8 0, ptr %442, align 8, !tbaa !26
  %801 = getelementptr inbounds [3 x %struct.s2n_cert], ptr %29, i64 0, i64 %.0201, i32 2
  store i32 668, ptr %801, align 8, !tbaa !27
  %802 = getelementptr inbounds i8, ptr %801, i64 8
  store i32 415, ptr %802, align 16, !tbaa !33
  %803 = load i32, ptr @test_count, align 4, !tbaa !5
  %804 = add nsw i32 %803, 1
  store i32 %804, ptr @test_count, align 4, !tbaa !5
  %805 = call i32 @s2n_security_policy_validate_certificate_chain(ptr noundef nonnull %32, ptr noundef nonnull %31) #11
  %806 = call zeroext i1 @s2n_result_is_ok(i32 %805)
  br i1 %806, label %829, label %807

807:                                              ; preds = %800
  %808 = load i32, ptr %253, align 4, !tbaa !5
  %809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %810 = call i32 @s2n_print_stacktrace(ptr noundef %809) #11
  %811 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %812 = trunc nuw i8 %811 to i1
  br i1 %812, label %813, label %817

813:                                              ; preds = %807
  %814 = load ptr, ptr @stderr, align 8, !tbaa !9
  %815 = call i32 @fileno(ptr noundef %814) #11
  %816 = call i32 @isatty(i32 noundef %815) #11
  %.not192 = icmp eq i32 %816, 0
  br i1 %.not192, label %817, label %818

817:                                              ; preds = %813, %807
  br label %818

818:                                              ; preds = %813, %817
  %.str.5.sink454 = phi ptr [ @.str.5, %817 ], [ @.str.2, %813 ]
  store i32 %808, ptr %253, align 4, !tbaa !5
  %819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %820 = load i32, ptr @test_count, align 4, !tbaa !5
  %821 = load i32, ptr %199, align 4, !tbaa !5
  %822 = call ptr @s2n_strerror(i32 noundef %821, ptr noundef nonnull @.str.4) #11
  %823 = load i32, ptr %199, align 4, !tbaa !5
  %824 = call ptr @s2n_strerror_debug(i32 noundef %823, ptr noundef nonnull @.str.4) #11
  %825 = load i32, ptr %253, align 4, !tbaa !5
  %826 = call ptr @strerror(i32 noundef %825) #11
  %827 = load i32, ptr %253, align 4, !tbaa !5
  %828 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %819, ptr noundef nonnull %.str.5.sink454, i32 noundef %820, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 245, ptr noundef %822, ptr noundef %824, ptr noundef %826, i32 noundef %827) #13
  call void @exit(i32 noundef 1) #14
  unreachable

829:                                              ; preds = %800
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %29) #11
  %830 = add nuw nsw i64 %.0201, 1
  %exitcond.not = icmp eq i64 %830, 3
  br i1 %exitcond.not, label %443, label %448, !llvm.loop !37

831:                                              ; preds = %443
  %832 = load i32, ptr %253, align 4, !tbaa !5
  %833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %834 = call i32 @s2n_print_stacktrace(ptr noundef %833) #11
  %835 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %836 = trunc nuw i8 %835 to i1
  br i1 %836, label %837, label %841

837:                                              ; preds = %831
  %838 = load ptr, ptr @stderr, align 8, !tbaa !9
  %839 = call i32 @fileno(ptr noundef %838) #11
  %840 = call i32 @isatty(i32 noundef %839) #11
  %.not181 = icmp eq i32 %840, 0
  br i1 %.not181, label %841, label %842

841:                                              ; preds = %837, %831
  br label %842

842:                                              ; preds = %837, %841
  %.str.5.sink463 = phi ptr [ @.str.5, %841 ], [ @.str.2, %837 ]
  store i32 %832, ptr %253, align 4, !tbaa !5
  %843 = load ptr, ptr @stderr, align 8, !tbaa !9
  %844 = load i32, ptr @test_count, align 4, !tbaa !5
  %845 = load i32, ptr %199, align 4, !tbaa !5
  %846 = call ptr @s2n_strerror(i32 noundef %845, ptr noundef nonnull @.str.4) #11
  %847 = load i32, ptr %199, align 4, !tbaa !5
  %848 = call ptr @s2n_strerror_debug(i32 noundef %847, ptr noundef nonnull @.str.4) #11
  %849 = load i32, ptr %253, align 4, !tbaa !5
  %850 = call ptr @strerror(i32 noundef %849) #11
  %851 = load i32, ptr %253, align 4, !tbaa !5
  %852 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %843, ptr noundef nonnull %.str.5.sink463, i32 noundef %844, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 253, ptr noundef %846, ptr noundef %848, ptr noundef %850, i32 noundef %851) #13
  call void @exit(i32 noundef 1) #14
  unreachable

853:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #11
  %854 = call ptr @s2n_config_new() #11
  store ptr %854, ptr %34, align 8, !tbaa !9
  %855 = load i32, ptr @test_count, align 4, !tbaa !5
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr @test_count, align 4, !tbaa !5
  %857 = icmp eq ptr %854, null
  br i1 %857, label %858, label %880

858:                                              ; preds = %853
  %859 = load i32, ptr %253, align 4, !tbaa !5
  %860 = load ptr, ptr @stderr, align 8, !tbaa !9
  %861 = call i32 @s2n_print_stacktrace(ptr noundef %860) #11
  %862 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %863 = trunc nuw i8 %862 to i1
  br i1 %863, label %864, label %868

864:                                              ; preds = %858
  %865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %866 = call i32 @fileno(ptr noundef %865) #11
  %867 = call i32 @isatty(i32 noundef %866) #11
  %.not180 = icmp eq i32 %867, 0
  br i1 %.not180, label %868, label %869

868:                                              ; preds = %864, %858
  br label %869

869:                                              ; preds = %864, %868
  %.str.5.sink472 = phi ptr [ @.str.5, %868 ], [ @.str.2, %864 ]
  store i32 %859, ptr %253, align 4, !tbaa !5
  %870 = load ptr, ptr @stderr, align 8, !tbaa !9
  %871 = load i32, ptr @test_count, align 4, !tbaa !5
  %872 = load i32, ptr %199, align 4, !tbaa !5
  %873 = call ptr @s2n_strerror(i32 noundef %872, ptr noundef nonnull @.str.4) #11
  %874 = load i32, ptr %199, align 4, !tbaa !5
  %875 = call ptr @s2n_strerror_debug(i32 noundef %874, ptr noundef nonnull @.str.4) #11
  %876 = load i32, ptr %253, align 4, !tbaa !5
  %877 = call ptr @strerror(i32 noundef %876) #11
  %878 = load i32, ptr %253, align 4, !tbaa !5
  %879 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %870, ptr noundef nonnull %.str.5.sink472, i32 noundef %871, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 260, ptr noundef %873, ptr noundef %875, ptr noundef %877, i32 noundef %878) #13
  call void @exit(i32 noundef 1) #14
  unreachable

880:                                              ; preds = %853
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #11
  %881 = call ptr @s2n_connection_new(i32 noundef 0) #11
  store ptr %881, ptr %35, align 8, !tbaa !9
  %882 = load i32, ptr @test_count, align 4, !tbaa !5
  %883 = add nsw i32 %882, 1
  store i32 %883, ptr @test_count, align 4, !tbaa !5
  %884 = icmp eq ptr %881, null
  br i1 %884, label %885, label %907

885:                                              ; preds = %880
  %886 = load i32, ptr %253, align 4, !tbaa !5
  %887 = load ptr, ptr @stderr, align 8, !tbaa !9
  %888 = call i32 @s2n_print_stacktrace(ptr noundef %887) #11
  %889 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %890 = trunc nuw i8 %889 to i1
  br i1 %890, label %891, label %895

891:                                              ; preds = %885
  %892 = load ptr, ptr @stderr, align 8, !tbaa !9
  %893 = call i32 @fileno(ptr noundef %892) #11
  %894 = call i32 @isatty(i32 noundef %893) #11
  %.not179 = icmp eq i32 %894, 0
  br i1 %.not179, label %895, label %896

895:                                              ; preds = %891, %885
  br label %896

896:                                              ; preds = %891, %895
  %.str.5.sink481 = phi ptr [ @.str.5, %895 ], [ @.str.2, %891 ]
  store i32 %886, ptr %253, align 4, !tbaa !5
  %897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %898 = load i32, ptr @test_count, align 4, !tbaa !5
  %899 = load i32, ptr %199, align 4, !tbaa !5
  %900 = call ptr @s2n_strerror(i32 noundef %899, ptr noundef nonnull @.str.4) #11
  %901 = load i32, ptr %199, align 4, !tbaa !5
  %902 = call ptr @s2n_strerror_debug(i32 noundef %901, ptr noundef nonnull @.str.4) #11
  %903 = load i32, ptr %253, align 4, !tbaa !5
  %904 = call ptr @strerror(i32 noundef %903) #11
  %905 = load i32, ptr %253, align 4, !tbaa !5
  %906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %897, ptr noundef nonnull %.str.5.sink481, i32 noundef %898, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 262, ptr noundef %900, ptr noundef %902, ptr noundef %904, i32 noundef %905) #13
  call void @exit(i32 noundef 1) #14
  unreachable

907:                                              ; preds = %880
  %908 = add nsw i32 %882, 2
  store i32 %908, ptr @test_count, align 4, !tbaa !5
  %909 = load ptr, ptr %34, align 8, !tbaa !9
  %910 = load ptr, ptr %33, align 8, !tbaa !9
  %911 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %909, ptr noundef %910) #11
  %912 = icmp eq i32 %911, -1
  br i1 %912, label %913, label %935

913:                                              ; preds = %907
  %914 = load i32, ptr %253, align 4, !tbaa !5
  %915 = load ptr, ptr @stderr, align 8, !tbaa !9
  %916 = call i32 @s2n_print_stacktrace(ptr noundef %915) #11
  %917 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %918 = trunc nuw i8 %917 to i1
  br i1 %918, label %919, label %923

919:                                              ; preds = %913
  %920 = load ptr, ptr @stderr, align 8, !tbaa !9
  %921 = call i32 @fileno(ptr noundef %920) #11
  %922 = call i32 @isatty(i32 noundef %921) #11
  %.not178 = icmp eq i32 %922, 0
  br i1 %.not178, label %923, label %924

923:                                              ; preds = %919, %913
  br label %924

924:                                              ; preds = %919, %923
  %.str.5.sink490 = phi ptr [ @.str.5, %923 ], [ @.str.2, %919 ]
  store i32 %914, ptr %253, align 4, !tbaa !5
  %925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %926 = load i32, ptr @test_count, align 4, !tbaa !5
  %927 = load i32, ptr %199, align 4, !tbaa !5
  %928 = call ptr @s2n_strerror(i32 noundef %927, ptr noundef nonnull @.str.4) #11
  %929 = load i32, ptr %199, align 4, !tbaa !5
  %930 = call ptr @s2n_strerror_debug(i32 noundef %929, ptr noundef nonnull @.str.4) #11
  %931 = load i32, ptr %253, align 4, !tbaa !5
  %932 = call ptr @strerror(i32 noundef %931) #11
  %933 = load i32, ptr %253, align 4, !tbaa !5
  %934 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %925, ptr noundef nonnull %.str.5.sink490, i32 noundef %926, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 263, ptr noundef %928, ptr noundef %930, ptr noundef %932, i32 noundef %933) #13
  call void @exit(i32 noundef 1) #14
  unreachable

935:                                              ; preds = %907
  %936 = load i32, ptr @test_count, align 4, !tbaa !5
  %937 = add nsw i32 %936, 1
  store i32 %937, ptr @test_count, align 4, !tbaa !5
  %938 = load ptr, ptr %35, align 8, !tbaa !9
  %939 = load ptr, ptr %34, align 8, !tbaa !9
  %940 = call i32 @s2n_connection_set_config(ptr noundef %938, ptr noundef %939) #11
  %941 = icmp eq i32 %940, -1
  br i1 %941, label %942, label %964

942:                                              ; preds = %935
  %943 = load i32, ptr %253, align 4, !tbaa !5
  %944 = load ptr, ptr @stderr, align 8, !tbaa !9
  %945 = call i32 @s2n_print_stacktrace(ptr noundef %944) #11
  %946 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %947 = trunc nuw i8 %946 to i1
  br i1 %947, label %948, label %952

948:                                              ; preds = %942
  %949 = load ptr, ptr @stderr, align 8, !tbaa !9
  %950 = call i32 @fileno(ptr noundef %949) #11
  %951 = call i32 @isatty(i32 noundef %950) #11
  %.not177 = icmp eq i32 %951, 0
  br i1 %.not177, label %952, label %953

952:                                              ; preds = %948, %942
  br label %953

953:                                              ; preds = %948, %952
  %.str.5.sink499 = phi ptr [ @.str.5, %952 ], [ @.str.2, %948 ]
  store i32 %943, ptr %253, align 4, !tbaa !5
  %954 = load ptr, ptr @stderr, align 8, !tbaa !9
  %955 = load i32, ptr @test_count, align 4, !tbaa !5
  %956 = load i32, ptr %199, align 4, !tbaa !5
  %957 = call ptr @s2n_strerror(i32 noundef %956, ptr noundef nonnull @.str.4) #11
  %958 = load i32, ptr %199, align 4, !tbaa !5
  %959 = call ptr @s2n_strerror_debug(i32 noundef %958, ptr noundef nonnull @.str.4) #11
  %960 = load i32, ptr %253, align 4, !tbaa !5
  %961 = call ptr @strerror(i32 noundef %960) #11
  %962 = load i32, ptr %253, align 4, !tbaa !5
  %963 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %954, ptr noundef nonnull %.str.5.sink499, i32 noundef %955, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 264, ptr noundef %957, ptr noundef %959, ptr noundef %961, i32 noundef %962) #13
  call void @exit(i32 noundef 1) #14
  unreachable

964:                                              ; preds = %935
  %965 = load i32, ptr @test_count, align 4, !tbaa !5
  %966 = add nsw i32 %965, 1
  store i32 %966, ptr @test_count, align 4, !tbaa !5
  %967 = load ptr, ptr %35, align 8, !tbaa !9
  %968 = call i32 @s2n_connection_set_cipher_preferences(ptr noundef %967, ptr noundef nonnull @.str.32) #11
  %969 = icmp eq i32 %968, -1
  br i1 %969, label %992, label %970

970:                                              ; preds = %964
  %971 = load i32, ptr %253, align 4, !tbaa !5
  %972 = load ptr, ptr @stderr, align 8, !tbaa !9
  %973 = call i32 @s2n_print_stacktrace(ptr noundef %972) #11
  %974 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %975 = trunc nuw i8 %974 to i1
  br i1 %975, label %976, label %980

976:                                              ; preds = %970
  %977 = load ptr, ptr @stderr, align 8, !tbaa !9
  %978 = call i32 @fileno(ptr noundef %977) #11
  %979 = call i32 @isatty(i32 noundef %978) #11
  %.not152 = icmp eq i32 %979, 0
  br i1 %.not152, label %980, label %981

980:                                              ; preds = %976, %970
  br label %981

981:                                              ; preds = %976, %980
  %.str.5.sink508 = phi ptr [ @.str.5, %980 ], [ @.str.2, %976 ]
  store i32 %971, ptr %253, align 4, !tbaa !5
  %982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %983 = load i32, ptr @test_count, align 4, !tbaa !5
  %984 = load i32, ptr %199, align 4, !tbaa !5
  %985 = call ptr @s2n_strerror(i32 noundef %984, ptr noundef nonnull @.str.4) #11
  %986 = load i32, ptr %199, align 4, !tbaa !5
  %987 = call ptr @s2n_strerror_debug(i32 noundef %986, ptr noundef nonnull @.str.4) #11
  %988 = load i32, ptr %253, align 4, !tbaa !5
  %989 = call ptr @strerror(i32 noundef %988) #11
  %990 = load i32, ptr %253, align 4, !tbaa !5
  %991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %982, ptr noundef nonnull %.str.5.sink508, i32 noundef %983, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 266, ptr noundef %985, ptr noundef %987, ptr noundef %989, i32 noundef %990) #13
  call void @exit(i32 noundef 1) #14
  unreachable

992:                                              ; preds = %964
  %993 = load i32, ptr @test_count, align 4, !tbaa !5
  %994 = add nsw i32 %993, 1
  store i32 %994, ptr @test_count, align 4, !tbaa !5
  %995 = load i32, ptr %199, align 4, !tbaa !5
  %996 = icmp eq i32 %995, 469762133
  br i1 %996, label %1019, label %997

997:                                              ; preds = %992
  %998 = load i32, ptr %253, align 4, !tbaa !5
  %999 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1000 = call i32 @s2n_print_stacktrace(ptr noundef %999) #11
  %1001 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1002 = trunc nuw i8 %1001 to i1
  br i1 %1002, label %1003, label %1007

1003:                                             ; preds = %997
  %1004 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1005 = call i32 @fileno(ptr noundef %1004) #11
  %1006 = call i32 @isatty(i32 noundef %1005) #11
  %.not153 = icmp eq i32 %1006, 0
  br i1 %.not153, label %1007, label %1008

1007:                                             ; preds = %1003, %997
  br label %1008

1008:                                             ; preds = %1003, %1007
  %.str.5.sink517 = phi ptr [ @.str.5, %1007 ], [ @.str.2, %1003 ]
  store i32 %998, ptr %253, align 4, !tbaa !5
  %1009 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1010 = load i32, ptr @test_count, align 4, !tbaa !5
  %1011 = load i32, ptr %199, align 4, !tbaa !5
  %1012 = call ptr @s2n_strerror(i32 noundef %1011, ptr noundef nonnull @.str.4) #11
  %1013 = load i32, ptr %199, align 4, !tbaa !5
  %1014 = call ptr @s2n_strerror_debug(i32 noundef %1013, ptr noundef nonnull @.str.4) #11
  %1015 = load i32, ptr %253, align 4, !tbaa !5
  %1016 = call ptr @strerror(i32 noundef %1015) #11
  %1017 = load i32, ptr %253, align 4, !tbaa !5
  %1018 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1009, ptr noundef nonnull %.str.5.sink517, i32 noundef %1010, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 266, ptr noundef %1012, ptr noundef %1014, ptr noundef %1016, i32 noundef %1017) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1019:                                             ; preds = %992
  %1020 = add nsw i32 %993, 2
  store i32 %1020, ptr @test_count, align 4, !tbaa !5
  %1021 = call ptr @s2n_strerror_debug(i32 noundef 469762133, ptr noundef nonnull @.str.4) #11
  %1022 = icmp eq ptr %1021, null
  br i1 %1022, label %1023, label %1045

1023:                                             ; preds = %1019
  %1024 = load i32, ptr %253, align 4, !tbaa !5
  %1025 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1026 = call i32 @s2n_print_stacktrace(ptr noundef %1025) #11
  %1027 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1028 = trunc nuw i8 %1027 to i1
  br i1 %1028, label %1029, label %1033

1029:                                             ; preds = %1023
  %1030 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1031 = call i32 @fileno(ptr noundef %1030) #11
  %1032 = call i32 @isatty(i32 noundef %1031) #11
  %.not176 = icmp eq i32 %1032, 0
  br i1 %.not176, label %1033, label %1034

1033:                                             ; preds = %1029, %1023
  br label %1034

1034:                                             ; preds = %1029, %1033
  %.str.5.sink526 = phi ptr [ @.str.5, %1033 ], [ @.str.2, %1029 ]
  store i32 %1024, ptr %253, align 4, !tbaa !5
  %1035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1036 = load i32, ptr @test_count, align 4, !tbaa !5
  %1037 = load i32, ptr %199, align 4, !tbaa !5
  %1038 = call ptr @s2n_strerror(i32 noundef %1037, ptr noundef nonnull @.str.4) #11
  %1039 = load i32, ptr %199, align 4, !tbaa !5
  %1040 = call ptr @s2n_strerror_debug(i32 noundef %1039, ptr noundef nonnull @.str.4) #11
  %1041 = load i32, ptr %253, align 4, !tbaa !5
  %1042 = call ptr @strerror(i32 noundef %1041) #11
  %1043 = load i32, ptr %253, align 4, !tbaa !5
  %1044 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1035, ptr noundef nonnull %.str.5.sink526, i32 noundef %1036, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 266, ptr noundef %1038, ptr noundef %1040, ptr noundef %1042, i32 noundef %1043) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1045:                                             ; preds = %1019
  store i32 0, ptr %199, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %253, align 4, !tbaa !5
  %1046 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #11
  %1047 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %34) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #11
  %1048 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #11
  store ptr null, ptr %36, align 8, !tbaa !9
  %1049 = load i32, ptr @test_count, align 4, !tbaa !5
  %1050 = add nsw i32 %1049, 1
  store i32 %1050, ptr @test_count, align 4, !tbaa !5
  %1051 = call i32 @s2n_test_cert_permutation_load_server_chain(ptr noundef nonnull %36, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.37) #11
  %1052 = icmp eq i32 %1051, -1
  br i1 %1052, label %1053, label %1075

1053:                                             ; preds = %1045
  %1054 = load i32, ptr %253, align 4, !tbaa !5
  %1055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1056 = call i32 @s2n_print_stacktrace(ptr noundef %1055) #11
  %1057 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1058 = trunc nuw i8 %1057 to i1
  br i1 %1058, label %1059, label %1063

1059:                                             ; preds = %1053
  %1060 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1061 = call i32 @fileno(ptr noundef %1060) #11
  %1062 = call i32 @isatty(i32 noundef %1061) #11
  %.not175 = icmp eq i32 %1062, 0
  br i1 %.not175, label %1063, label %1064

1063:                                             ; preds = %1059, %1053
  br label %1064

1064:                                             ; preds = %1059, %1063
  %.str.5.sink535 = phi ptr [ @.str.5, %1063 ], [ @.str.2, %1059 ]
  store i32 %1054, ptr %253, align 4, !tbaa !5
  %1065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1066 = load i32, ptr @test_count, align 4, !tbaa !5
  %1067 = load i32, ptr %199, align 4, !tbaa !5
  %1068 = call ptr @s2n_strerror(i32 noundef %1067, ptr noundef nonnull @.str.4) #11
  %1069 = load i32, ptr %199, align 4, !tbaa !5
  %1070 = call ptr @s2n_strerror_debug(i32 noundef %1069, ptr noundef nonnull @.str.4) #11
  %1071 = load i32, ptr %253, align 4, !tbaa !5
  %1072 = call ptr @strerror(i32 noundef %1071) #11
  %1073 = load i32, ptr %253, align 4, !tbaa !5
  %1074 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1065, ptr noundef nonnull %.str.5.sink535, i32 noundef %1066, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 274, ptr noundef %1068, ptr noundef %1070, ptr noundef %1072, i32 noundef %1073) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1075:                                             ; preds = %1045
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #11
  %1076 = call ptr @s2n_config_new() #11
  store ptr %1076, ptr %37, align 8, !tbaa !9
  %1077 = load i32, ptr @test_count, align 4, !tbaa !5
  %1078 = add nsw i32 %1077, 1
  store i32 %1078, ptr @test_count, align 4, !tbaa !5
  %1079 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %1076, ptr noundef nonnull @.str.32) #11
  %1080 = icmp eq i32 %1079, -1
  br i1 %1080, label %1081, label %1103

1081:                                             ; preds = %1075
  %1082 = load i32, ptr %253, align 4, !tbaa !5
  %1083 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1084 = call i32 @s2n_print_stacktrace(ptr noundef %1083) #11
  %1085 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1086 = trunc nuw i8 %1085 to i1
  br i1 %1086, label %1087, label %1091

1087:                                             ; preds = %1081
  %1088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1089 = call i32 @fileno(ptr noundef %1088) #11
  %1090 = call i32 @isatty(i32 noundef %1089) #11
  %.not174 = icmp eq i32 %1090, 0
  br i1 %.not174, label %1091, label %1092

1091:                                             ; preds = %1087, %1081
  br label %1092

1092:                                             ; preds = %1087, %1091
  %.str.5.sink544 = phi ptr [ @.str.5, %1091 ], [ @.str.2, %1087 ]
  store i32 %1082, ptr %253, align 4, !tbaa !5
  %1093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1094 = load i32, ptr @test_count, align 4, !tbaa !5
  %1095 = load i32, ptr %199, align 4, !tbaa !5
  %1096 = call ptr @s2n_strerror(i32 noundef %1095, ptr noundef nonnull @.str.4) #11
  %1097 = load i32, ptr %199, align 4, !tbaa !5
  %1098 = call ptr @s2n_strerror_debug(i32 noundef %1097, ptr noundef nonnull @.str.4) #11
  %1099 = load i32, ptr %253, align 4, !tbaa !5
  %1100 = call ptr @strerror(i32 noundef %1099) #11
  %1101 = load i32, ptr %253, align 4, !tbaa !5
  %1102 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1093, ptr noundef nonnull %.str.5.sink544, i32 noundef %1094, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 279, ptr noundef %1096, ptr noundef %1098, ptr noundef %1100, i32 noundef %1101) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1103:                                             ; preds = %1075
  %1104 = load i32, ptr @test_count, align 4, !tbaa !5
  %1105 = add nsw i32 %1104, 1
  store i32 %1105, ptr @test_count, align 4, !tbaa !5
  %1106 = load ptr, ptr %37, align 8, !tbaa !9
  %1107 = load ptr, ptr %36, align 8, !tbaa !9
  %1108 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %1106, ptr noundef %1107) #11
  %1109 = icmp eq i32 %1108, -1
  br i1 %1109, label %1132, label %1110

1110:                                             ; preds = %1103
  %1111 = load i32, ptr %253, align 4, !tbaa !5
  %1112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1113 = call i32 @s2n_print_stacktrace(ptr noundef %1112) #11
  %1114 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1115 = trunc nuw i8 %1114 to i1
  br i1 %1115, label %1116, label %1120

1116:                                             ; preds = %1110
  %1117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1118 = call i32 @fileno(ptr noundef %1117) #11
  %1119 = call i32 @isatty(i32 noundef %1118) #11
  %.not154 = icmp eq i32 %1119, 0
  br i1 %.not154, label %1120, label %1121

1120:                                             ; preds = %1116, %1110
  br label %1121

1121:                                             ; preds = %1116, %1120
  %.str.5.sink553 = phi ptr [ @.str.5, %1120 ], [ @.str.2, %1116 ]
  store i32 %1111, ptr %253, align 4, !tbaa !5
  %1122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1123 = load i32, ptr @test_count, align 4, !tbaa !5
  %1124 = load i32, ptr %199, align 4, !tbaa !5
  %1125 = call ptr @s2n_strerror(i32 noundef %1124, ptr noundef nonnull @.str.4) #11
  %1126 = load i32, ptr %199, align 4, !tbaa !5
  %1127 = call ptr @s2n_strerror_debug(i32 noundef %1126, ptr noundef nonnull @.str.4) #11
  %1128 = load i32, ptr %253, align 4, !tbaa !5
  %1129 = call ptr @strerror(i32 noundef %1128) #11
  %1130 = load i32, ptr %253, align 4, !tbaa !5
  %1131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1122, ptr noundef nonnull %.str.5.sink553, i32 noundef %1123, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 282, ptr noundef %1125, ptr noundef %1127, ptr noundef %1129, i32 noundef %1130) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1132:                                             ; preds = %1103
  %1133 = load i32, ptr @test_count, align 4, !tbaa !5
  %1134 = add nsw i32 %1133, 1
  store i32 %1134, ptr @test_count, align 4, !tbaa !5
  %1135 = load i32, ptr %199, align 4, !tbaa !5
  %1136 = icmp eq i32 %1135, 469762133
  br i1 %1136, label %1159, label %1137

1137:                                             ; preds = %1132
  %1138 = load i32, ptr %253, align 4, !tbaa !5
  %1139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1140 = call i32 @s2n_print_stacktrace(ptr noundef %1139) #11
  %1141 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1142 = trunc nuw i8 %1141 to i1
  br i1 %1142, label %1143, label %1147

1143:                                             ; preds = %1137
  %1144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1145 = call i32 @fileno(ptr noundef %1144) #11
  %1146 = call i32 @isatty(i32 noundef %1145) #11
  %.not155 = icmp eq i32 %1146, 0
  br i1 %.not155, label %1147, label %1148

1147:                                             ; preds = %1143, %1137
  br label %1148

1148:                                             ; preds = %1143, %1147
  %.str.5.sink562 = phi ptr [ @.str.5, %1147 ], [ @.str.2, %1143 ]
  store i32 %1138, ptr %253, align 4, !tbaa !5
  %1149 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1150 = load i32, ptr @test_count, align 4, !tbaa !5
  %1151 = load i32, ptr %199, align 4, !tbaa !5
  %1152 = call ptr @s2n_strerror(i32 noundef %1151, ptr noundef nonnull @.str.4) #11
  %1153 = load i32, ptr %199, align 4, !tbaa !5
  %1154 = call ptr @s2n_strerror_debug(i32 noundef %1153, ptr noundef nonnull @.str.4) #11
  %1155 = load i32, ptr %253, align 4, !tbaa !5
  %1156 = call ptr @strerror(i32 noundef %1155) #11
  %1157 = load i32, ptr %253, align 4, !tbaa !5
  %1158 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1149, ptr noundef nonnull %.str.5.sink562, i32 noundef %1150, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 282, ptr noundef %1152, ptr noundef %1154, ptr noundef %1156, i32 noundef %1157) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1159:                                             ; preds = %1132
  %1160 = add nsw i32 %1133, 2
  store i32 %1160, ptr @test_count, align 4, !tbaa !5
  %1161 = call ptr @s2n_strerror_debug(i32 noundef 469762133, ptr noundef nonnull @.str.4) #11
  %1162 = icmp eq ptr %1161, null
  br i1 %1162, label %1163, label %1185

1163:                                             ; preds = %1159
  %1164 = load i32, ptr %253, align 4, !tbaa !5
  %1165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1166 = call i32 @s2n_print_stacktrace(ptr noundef %1165) #11
  %1167 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1168 = trunc nuw i8 %1167 to i1
  br i1 %1168, label %1169, label %1173

1169:                                             ; preds = %1163
  %1170 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1171 = call i32 @fileno(ptr noundef %1170) #11
  %1172 = call i32 @isatty(i32 noundef %1171) #11
  %.not173 = icmp eq i32 %1172, 0
  br i1 %.not173, label %1173, label %1174

1173:                                             ; preds = %1169, %1163
  br label %1174

1174:                                             ; preds = %1169, %1173
  %.str.5.sink571 = phi ptr [ @.str.5, %1173 ], [ @.str.2, %1169 ]
  store i32 %1164, ptr %253, align 4, !tbaa !5
  %1175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1176 = load i32, ptr @test_count, align 4, !tbaa !5
  %1177 = load i32, ptr %199, align 4, !tbaa !5
  %1178 = call ptr @s2n_strerror(i32 noundef %1177, ptr noundef nonnull @.str.4) #11
  %1179 = load i32, ptr %199, align 4, !tbaa !5
  %1180 = call ptr @s2n_strerror_debug(i32 noundef %1179, ptr noundef nonnull @.str.4) #11
  %1181 = load i32, ptr %253, align 4, !tbaa !5
  %1182 = call ptr @strerror(i32 noundef %1181) #11
  %1183 = load i32, ptr %253, align 4, !tbaa !5
  %1184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1175, ptr noundef nonnull %.str.5.sink571, i32 noundef %1176, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 282, ptr noundef %1178, ptr noundef %1180, ptr noundef %1182, i32 noundef %1183) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1185:                                             ; preds = %1159
  store i32 0, ptr %199, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %253, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #11
  store i32 0, ptr %38, align 4, !tbaa !5
  %1186 = load i32, ptr @test_count, align 4, !tbaa !5
  %1187 = add nsw i32 %1186, 1
  store i32 %1187, ptr @test_count, align 4, !tbaa !5
  %1188 = load ptr, ptr %37, align 8, !tbaa !9
  %1189 = call i32 @s2n_config_get_num_default_certs(ptr noundef %1188) #11
  %1190 = icmp eq i32 %1189, 0
  br i1 %1190, label %1213, label %1191

1191:                                             ; preds = %1185
  %1192 = load i32, ptr %253, align 4, !tbaa !5
  %1193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1194 = call i32 @s2n_print_stacktrace(ptr noundef %1193) #11
  %1195 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1196 = trunc nuw i8 %1195 to i1
  br i1 %1196, label %1197, label %1201

1197:                                             ; preds = %1191
  %1198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1199 = call i32 @fileno(ptr noundef %1198) #11
  %1200 = call i32 @isatty(i32 noundef %1199) #11
  %.not156 = icmp eq i32 %1200, 0
  br i1 %.not156, label %1201, label %1202

1201:                                             ; preds = %1197, %1191
  br label %1202

1202:                                             ; preds = %1197, %1201
  %.str.5.sink580 = phi ptr [ @.str.5, %1201 ], [ @.str.2, %1197 ]
  store i32 %1192, ptr %253, align 4, !tbaa !5
  %1203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1204 = load i32, ptr @test_count, align 4, !tbaa !5
  %1205 = load i32, ptr %199, align 4, !tbaa !5
  %1206 = call ptr @s2n_strerror(i32 noundef %1205, ptr noundef nonnull @.str.4) #11
  %1207 = load i32, ptr %199, align 4, !tbaa !5
  %1208 = call ptr @s2n_strerror_debug(i32 noundef %1207, ptr noundef nonnull @.str.4) #11
  %1209 = load i32, ptr %253, align 4, !tbaa !5
  %1210 = call ptr @strerror(i32 noundef %1209) #11
  %1211 = load i32, ptr %253, align 4, !tbaa !5
  %1212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1203, ptr noundef nonnull %.str.5.sink580, i32 noundef %1204, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.1, i32 noundef 286, ptr noundef %1206, ptr noundef %1208, ptr noundef %1210, i32 noundef %1211) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1213:                                             ; preds = %1185
  %1214 = load i32, ptr @test_count, align 4, !tbaa !5
  %1215 = add nsw i32 %1214, 1
  store i32 %1215, ptr @test_count, align 4, !tbaa !5
  %1216 = load ptr, ptr %37, align 8, !tbaa !9
  %1217 = getelementptr inbounds i8, ptr %1216, i64 16
  %1218 = load ptr, ptr %1217, align 8, !tbaa !39
  %1219 = call i32 @s2n_map_size(ptr noundef %1218, ptr noundef nonnull %38) #11
  %1220 = call zeroext i1 @s2n_result_is_ok(i32 %1219)
  br i1 %1220, label %1243, label %1221

1221:                                             ; preds = %1213
  %1222 = load i32, ptr %253, align 4, !tbaa !5
  %1223 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1224 = call i32 @s2n_print_stacktrace(ptr noundef %1223) #11
  %1225 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1226 = trunc nuw i8 %1225 to i1
  br i1 %1226, label %1227, label %1231

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

1231:                                             ; preds = %1227, %1221
  br label %1232

1232:                                             ; preds = %1227, %1231
  %.str.5.sink589 = phi ptr [ @.str.5, %1231 ], [ @.str.2, %1227 ]
  store i32 %1222, ptr %253, align 4, !tbaa !5
  %1233 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1234 = load i32, ptr @test_count, align 4, !tbaa !5
  %1235 = load i32, ptr %199, align 4, !tbaa !5
  %1236 = call ptr @s2n_strerror(i32 noundef %1235, ptr noundef nonnull @.str.4) #11
  %1237 = load i32, ptr %199, align 4, !tbaa !5
  %1238 = call ptr @s2n_strerror_debug(i32 noundef %1237, ptr noundef nonnull @.str.4) #11
  %1239 = load i32, ptr %253, align 4, !tbaa !5
  %1240 = call ptr @strerror(i32 noundef %1239) #11
  %1241 = load i32, ptr %253, align 4, !tbaa !5
  %1242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1233, ptr noundef nonnull %.str.5.sink589, i32 noundef %1234, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.1, i32 noundef 287, ptr noundef %1236, ptr noundef %1238, ptr noundef %1240, i32 noundef %1241) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1243:                                             ; preds = %1213
  %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 = load i32, ptr %38, align 4, !tbaa !5
  %1247 = icmp eq i32 %1246, 0
  br i1 %1247, label %1270, label %1248

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

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

1258:                                             ; preds = %1254, %1248
  br label %1259

1259:                                             ; preds = %1254, %1258
  %.str.5.sink598 = phi ptr [ @.str.5, %1258 ], [ @.str.2, %1254 ]
  store i32 %1249, ptr %253, align 4, !tbaa !5
  %1260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1261 = load i32, ptr @test_count, align 4, !tbaa !5
  %1262 = load i32, ptr %199, align 4, !tbaa !5
  %1263 = call ptr @s2n_strerror(i32 noundef %1262, ptr noundef nonnull @.str.4) #11
  %1264 = load i32, ptr %199, align 4, !tbaa !5
  %1265 = call ptr @s2n_strerror_debug(i32 noundef %1264, ptr noundef nonnull @.str.4) #11
  %1266 = load i32, ptr %253, align 4, !tbaa !5
  %1267 = call ptr @strerror(i32 noundef %1266) #11
  %1268 = load i32, ptr %253, align 4, !tbaa !5
  %1269 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1260, ptr noundef nonnull %.str.5.sink598, i32 noundef %1261, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 288, ptr noundef %1263, ptr noundef %1265, ptr noundef %1267, i32 noundef %1268) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1270:                                             ; preds = %1243
  %1271 = add nsw i32 %1244, 2
  store i32 %1271, ptr @test_count, align 4, !tbaa !5
  %1272 = load ptr, ptr %37, align 8, !tbaa !9
  %1273 = call i32 @s2n_config_get_num_default_certs(ptr noundef %1272) #11
  %1274 = icmp eq i32 %1273, 0
  br i1 %1274, label %1297, label %1275

1275:                                             ; preds = %1270
  %1276 = load i32, ptr %253, align 4, !tbaa !5
  %1277 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1278 = call i32 @s2n_print_stacktrace(ptr noundef %1277) #11
  %1279 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1280 = trunc nuw i8 %1279 to i1
  br i1 %1280, label %1281, label %1285

1281:                                             ; preds = %1275
  %1282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1283 = call i32 @fileno(ptr noundef %1282) #11
  %1284 = call i32 @isatty(i32 noundef %1283) #11
  %.not159 = icmp eq i32 %1284, 0
  br i1 %.not159, label %1285, label %1286

1285:                                             ; preds = %1281, %1275
  br label %1286

1286:                                             ; preds = %1281, %1285
  %.str.5.sink607 = phi ptr [ @.str.5, %1285 ], [ @.str.2, %1281 ]
  store i32 %1276, ptr %253, align 4, !tbaa !5
  %1287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1288 = load i32, ptr @test_count, align 4, !tbaa !5
  %1289 = load i32, ptr %199, align 4, !tbaa !5
  %1290 = call ptr @s2n_strerror(i32 noundef %1289, ptr noundef nonnull @.str.4) #11
  %1291 = load i32, ptr %199, align 4, !tbaa !5
  %1292 = call ptr @s2n_strerror_debug(i32 noundef %1291, ptr noundef nonnull @.str.4) #11
  %1293 = load i32, ptr %253, align 4, !tbaa !5
  %1294 = call ptr @strerror(i32 noundef %1293) #11
  %1295 = load i32, ptr %253, align 4, !tbaa !5
  %1296 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1287, ptr noundef nonnull %.str.5.sink607, i32 noundef %1288, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.1, i32 noundef 289, ptr noundef %1290, ptr noundef %1292, ptr noundef %1294, i32 noundef %1295) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1297:                                             ; preds = %1270
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #11
  %1298 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #11
  %1299 = call ptr @s2n_config_new() #11
  store ptr %1299, ptr %39, align 8, !tbaa !9
  %1300 = load i32, ptr @test_count, align 4, !tbaa !5
  %1301 = add nsw i32 %1300, 1
  store i32 %1301, ptr @test_count, align 4, !tbaa !5
  %1302 = load ptr, ptr %36, align 8, !tbaa !9
  %1303 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %1299, ptr noundef %1302) #11
  %1304 = icmp eq i32 %1303, -1
  br i1 %1304, label %1305, label %1327

1305:                                             ; preds = %1297
  %1306 = load i32, ptr %253, align 4, !tbaa !5
  %1307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1308 = call i32 @s2n_print_stacktrace(ptr noundef %1307) #11
  %1309 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1310 = trunc nuw i8 %1309 to i1
  br i1 %1310, label %1311, label %1315

1311:                                             ; preds = %1305
  %1312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1313 = call i32 @fileno(ptr noundef %1312) #11
  %1314 = call i32 @isatty(i32 noundef %1313) #11
  %.not172 = icmp eq i32 %1314, 0
  br i1 %.not172, label %1315, label %1316

1315:                                             ; preds = %1311, %1305
  br label %1316

1316:                                             ; preds = %1311, %1315
  %.str.5.sink616 = phi ptr [ @.str.5, %1315 ], [ @.str.2, %1311 ]
  store i32 %1306, ptr %253, align 4, !tbaa !5
  %1317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1318 = load i32, ptr @test_count, align 4, !tbaa !5
  %1319 = load i32, ptr %199, align 4, !tbaa !5
  %1320 = call ptr @s2n_strerror(i32 noundef %1319, ptr noundef nonnull @.str.4) #11
  %1321 = load i32, ptr %199, align 4, !tbaa !5
  %1322 = call ptr @s2n_strerror_debug(i32 noundef %1321, ptr noundef nonnull @.str.4) #11
  %1323 = load i32, ptr %253, align 4, !tbaa !5
  %1324 = call ptr @strerror(i32 noundef %1323) #11
  %1325 = load i32, ptr %253, align 4, !tbaa !5
  %1326 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1317, ptr noundef nonnull %.str.5.sink616, i32 noundef %1318, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 295, ptr noundef %1320, ptr noundef %1322, ptr noundef %1324, i32 noundef %1325) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1327:                                             ; preds = %1297
  %1328 = load ptr, ptr %39, align 8, !tbaa !9
  %1329 = getelementptr inbounds i8, ptr %1328, i64 96
  %1330 = load ptr, ptr %1329, align 8, !tbaa !45
  %1331 = load i32, ptr @test_count, align 4, !tbaa !5
  %1332 = add nsw i32 %1331, 1
  store i32 %1332, ptr @test_count, align 4, !tbaa !5
  %1333 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %1328, ptr noundef nonnull @.str.32) #11
  %1334 = icmp eq i32 %1333, -1
  br i1 %1334, label %1357, label %1335

1335:                                             ; preds = %1327
  %1336 = load i32, ptr %253, align 4, !tbaa !5
  %1337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1338 = call i32 @s2n_print_stacktrace(ptr noundef %1337) #11
  %1339 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1340 = trunc nuw i8 %1339 to i1
  br i1 %1340, label %1341, label %1345

1341:                                             ; preds = %1335
  %1342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1343 = call i32 @fileno(ptr noundef %1342) #11
  %1344 = call i32 @isatty(i32 noundef %1343) #11
  %.not160 = icmp eq i32 %1344, 0
  br i1 %.not160, label %1345, label %1346

1345:                                             ; preds = %1341, %1335
  br label %1346

1346:                                             ; preds = %1341, %1345
  %.str.5.sink625 = phi ptr [ @.str.5, %1345 ], [ @.str.2, %1341 ]
  store i32 %1336, ptr %253, align 4, !tbaa !5
  %1347 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1348 = load i32, ptr @test_count, align 4, !tbaa !5
  %1349 = load i32, ptr %199, align 4, !tbaa !5
  %1350 = call ptr @s2n_strerror(i32 noundef %1349, ptr noundef nonnull @.str.4) #11
  %1351 = load i32, ptr %199, align 4, !tbaa !5
  %1352 = call ptr @s2n_strerror_debug(i32 noundef %1351, ptr noundef nonnull @.str.4) #11
  %1353 = load i32, ptr %253, align 4, !tbaa !5
  %1354 = call ptr @strerror(i32 noundef %1353) #11
  %1355 = load i32, ptr %253, align 4, !tbaa !5
  %1356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1347, ptr noundef nonnull %.str.5.sink625, i32 noundef %1348, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 298, ptr noundef %1350, ptr noundef %1352, ptr noundef %1354, i32 noundef %1355) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1357:                                             ; preds = %1327
  %1358 = load i32, ptr @test_count, align 4, !tbaa !5
  %1359 = add nsw i32 %1358, 1
  store i32 %1359, ptr @test_count, align 4, !tbaa !5
  %1360 = load i32, ptr %199, align 4, !tbaa !5
  %1361 = icmp eq i32 %1360, 469762133
  br i1 %1361, label %1384, label %1362

1362:                                             ; preds = %1357
  %1363 = load i32, ptr %253, align 4, !tbaa !5
  %1364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1365 = call i32 @s2n_print_stacktrace(ptr noundef %1364) #11
  %1366 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1367 = trunc nuw i8 %1366 to i1
  br i1 %1367, label %1368, label %1372

1368:                                             ; preds = %1362
  %1369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1370 = call i32 @fileno(ptr noundef %1369) #11
  %1371 = call i32 @isatty(i32 noundef %1370) #11
  %.not161 = icmp eq i32 %1371, 0
  br i1 %.not161, label %1372, label %1373

1372:                                             ; preds = %1368, %1362
  br label %1373

1373:                                             ; preds = %1368, %1372
  %.str.5.sink634 = phi ptr [ @.str.5, %1372 ], [ @.str.2, %1368 ]
  store i32 %1363, ptr %253, align 4, !tbaa !5
  %1374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1375 = load i32, ptr @test_count, align 4, !tbaa !5
  %1376 = load i32, ptr %199, align 4, !tbaa !5
  %1377 = call ptr @s2n_strerror(i32 noundef %1376, ptr noundef nonnull @.str.4) #11
  %1378 = load i32, ptr %199, align 4, !tbaa !5
  %1379 = call ptr @s2n_strerror_debug(i32 noundef %1378, ptr noundef nonnull @.str.4) #11
  %1380 = load i32, ptr %253, align 4, !tbaa !5
  %1381 = call ptr @strerror(i32 noundef %1380) #11
  %1382 = load i32, ptr %253, align 4, !tbaa !5
  %1383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1374, ptr noundef nonnull %.str.5.sink634, i32 noundef %1375, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 298, ptr noundef %1377, ptr noundef %1379, ptr noundef %1381, i32 noundef %1382) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1384:                                             ; preds = %1357
  %1385 = add nsw i32 %1358, 2
  store i32 %1385, ptr @test_count, align 4, !tbaa !5
  %1386 = call ptr @s2n_strerror_debug(i32 noundef 469762133, ptr noundef nonnull @.str.4) #11
  %1387 = icmp eq ptr %1386, null
  br i1 %1387, label %1388, label %1410

1388:                                             ; preds = %1384
  %1389 = load i32, ptr %253, align 4, !tbaa !5
  %1390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1391 = call i32 @s2n_print_stacktrace(ptr noundef %1390) #11
  %1392 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1393 = trunc nuw i8 %1392 to i1
  br i1 %1393, label %1394, label %1398

1394:                                             ; preds = %1388
  %1395 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1396 = call i32 @fileno(ptr noundef %1395) #11
  %1397 = call i32 @isatty(i32 noundef %1396) #11
  %.not171 = icmp eq i32 %1397, 0
  br i1 %.not171, label %1398, label %1399

1398:                                             ; preds = %1394, %1388
  br label %1399

1399:                                             ; preds = %1394, %1398
  %.str.5.sink643 = phi ptr [ @.str.5, %1398 ], [ @.str.2, %1394 ]
  store i32 %1389, ptr %253, align 4, !tbaa !5
  %1400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1401 = load i32, ptr @test_count, align 4, !tbaa !5
  %1402 = load i32, ptr %199, align 4, !tbaa !5
  %1403 = call ptr @s2n_strerror(i32 noundef %1402, ptr noundef nonnull @.str.4) #11
  %1404 = load i32, ptr %199, align 4, !tbaa !5
  %1405 = call ptr @s2n_strerror_debug(i32 noundef %1404, ptr noundef nonnull @.str.4) #11
  %1406 = load i32, ptr %253, align 4, !tbaa !5
  %1407 = call ptr @strerror(i32 noundef %1406) #11
  %1408 = load i32, ptr %253, align 4, !tbaa !5
  %1409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1400, ptr noundef nonnull %.str.5.sink643, i32 noundef %1401, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 298, ptr noundef %1403, ptr noundef %1405, ptr noundef %1407, i32 noundef %1408) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1410:                                             ; preds = %1384
  store i32 0, ptr %199, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %253, align 4, !tbaa !5
  %1411 = load i32, ptr @test_count, align 4, !tbaa !5
  %1412 = add nsw i32 %1411, 1
  store i32 %1412, ptr @test_count, align 4, !tbaa !5
  %1413 = load ptr, ptr %39, align 8, !tbaa !9
  %1414 = getelementptr inbounds i8, ptr %1413, i64 96
  %1415 = load ptr, ptr %1414, align 8, !tbaa !45
  %1416 = icmp eq ptr %1415, %1330
  br i1 %1416, label %1439, label %1417

1417:                                             ; preds = %1410
  %1418 = load i32, ptr %253, align 4, !tbaa !5
  %1419 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1420 = call i32 @s2n_print_stacktrace(ptr noundef %1419) #11
  %1421 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1422 = trunc nuw i8 %1421 to i1
  br i1 %1422, label %1423, label %1427

1423:                                             ; preds = %1417
  %1424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1425 = call i32 @fileno(ptr noundef %1424) #11
  %1426 = call i32 @isatty(i32 noundef %1425) #11
  %.not162 = icmp eq i32 %1426, 0
  br i1 %.not162, label %1427, label %1428

1427:                                             ; preds = %1423, %1417
  br label %1428

1428:                                             ; preds = %1423, %1427
  %.str.5.sink652 = phi ptr [ @.str.5, %1427 ], [ @.str.2, %1423 ]
  store i32 %1418, ptr %253, align 4, !tbaa !5
  %1429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1430 = load i32, ptr @test_count, align 4, !tbaa !5
  %1431 = load i32, ptr %199, align 4, !tbaa !5
  %1432 = call ptr @s2n_strerror(i32 noundef %1431, ptr noundef nonnull @.str.4) #11
  %1433 = load i32, ptr %199, align 4, !tbaa !5
  %1434 = call ptr @s2n_strerror_debug(i32 noundef %1433, ptr noundef nonnull @.str.4) #11
  %1435 = load i32, ptr %253, align 4, !tbaa !5
  %1436 = call ptr @strerror(i32 noundef %1435) #11
  %1437 = load i32, ptr %253, align 4, !tbaa !5
  %1438 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1429, ptr noundef nonnull %.str.5.sink652, i32 noundef %1430, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 301, ptr noundef %1432, ptr noundef %1434, ptr noundef %1436, i32 noundef %1437) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1439:                                             ; preds = %1410
  %1440 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #11
  %1441 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #11
  %1442 = call zeroext i1 @s2n_libcrypto_is_openssl_fips() #11
  br i1 %1442, label %1529, label %1443

1443:                                             ; preds = %1439
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #11
  store ptr null, ptr %40, align 8, !tbaa !9
  %1444 = load i32, ptr @test_count, align 4, !tbaa !5
  %1445 = add nsw i32 %1444, 1
  store i32 %1445, ptr @test_count, align 4, !tbaa !5
  %1446 = call i32 @s2n_test_cert_permutation_load_server_chain(ptr noundef nonnull %40, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.48) #11
  %1447 = icmp eq i32 %1446, -1
  br i1 %1447, label %1448, label %1470

1448:                                             ; preds = %1443
  %1449 = load i32, ptr %253, align 4, !tbaa !5
  %1450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1451 = call i32 @s2n_print_stacktrace(ptr noundef %1450) #11
  %1452 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1453 = trunc nuw i8 %1452 to i1
  br i1 %1453, label %1454, label %1458

1454:                                             ; preds = %1448
  %1455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1456 = call i32 @fileno(ptr noundef %1455) #11
  %1457 = call i32 @isatty(i32 noundef %1456) #11
  %.not165 = icmp eq i32 %1457, 0
  br i1 %.not165, label %1458, label %1459

1458:                                             ; preds = %1454, %1448
  br label %1459

1459:                                             ; preds = %1454, %1458
  %.str.5.sink661 = phi ptr [ @.str.5, %1458 ], [ @.str.2, %1454 ]
  store i32 %1449, ptr %253, align 4, !tbaa !5
  %1460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1461 = load i32, ptr @test_count, align 4, !tbaa !5
  %1462 = load i32, ptr %199, align 4, !tbaa !5
  %1463 = call ptr @s2n_strerror(i32 noundef %1462, ptr noundef nonnull @.str.4) #11
  %1464 = load i32, ptr %199, align 4, !tbaa !5
  %1465 = call ptr @s2n_strerror_debug(i32 noundef %1464, ptr noundef nonnull @.str.4) #11
  %1466 = load i32, ptr %253, align 4, !tbaa !5
  %1467 = call ptr @strerror(i32 noundef %1466) #11
  %1468 = load i32, ptr %253, align 4, !tbaa !5
  %1469 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1460, ptr noundef nonnull %.str.5.sink661, i32 noundef %1461, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.1, i32 noundef 321, ptr noundef %1463, ptr noundef %1465, ptr noundef %1467, i32 noundef %1468) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1470:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #11
  %1471 = call ptr @s2n_config_new() #11
  store ptr %1471, ptr %41, align 8, !tbaa !9
  %1472 = load i32, ptr @test_count, align 4, !tbaa !5
  %1473 = add nsw i32 %1472, 1
  store i32 %1473, ptr @test_count, align 4, !tbaa !5
  %1474 = load ptr, ptr %40, align 8, !tbaa !9
  %1475 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %1471, ptr noundef %1474) #11
  %1476 = icmp eq i32 %1475, -1
  br i1 %1476, label %1477, label %1499

1477:                                             ; preds = %1470
  %1478 = load i32, ptr %253, align 4, !tbaa !5
  %1479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1480 = call i32 @s2n_print_stacktrace(ptr noundef %1479) #11
  %1481 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1482 = trunc nuw i8 %1481 to i1
  br i1 %1482, label %1483, label %1487

1483:                                             ; preds = %1477
  %1484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1485 = call i32 @fileno(ptr noundef %1484) #11
  %1486 = call i32 @isatty(i32 noundef %1485) #11
  %.not164 = icmp eq i32 %1486, 0
  br i1 %.not164, label %1487, label %1488

1487:                                             ; preds = %1483, %1477
  br label %1488

1488:                                             ; preds = %1483, %1487
  %.str.5.sink670 = phi ptr [ @.str.5, %1487 ], [ @.str.2, %1483 ]
  store i32 %1478, ptr %253, align 4, !tbaa !5
  %1489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1490 = load i32, ptr @test_count, align 4, !tbaa !5
  %1491 = load i32, ptr %199, align 4, !tbaa !5
  %1492 = call ptr @s2n_strerror(i32 noundef %1491, ptr noundef nonnull @.str.4) #11
  %1493 = load i32, ptr %199, align 4, !tbaa !5
  %1494 = call ptr @s2n_strerror_debug(i32 noundef %1493, ptr noundef nonnull @.str.4) #11
  %1495 = load i32, ptr %253, align 4, !tbaa !5
  %1496 = call ptr @strerror(i32 noundef %1495) #11
  %1497 = load i32, ptr %253, align 4, !tbaa !5
  %1498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1489, ptr noundef nonnull %.str.5.sink670, i32 noundef %1490, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.1, i32 noundef 324, ptr noundef %1492, ptr noundef %1494, ptr noundef %1496, i32 noundef %1497) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1499:                                             ; preds = %1470
  %1500 = load i32, ptr @test_count, align 4, !tbaa !5
  %1501 = add nsw i32 %1500, 1
  store i32 %1501, ptr @test_count, align 4, !tbaa !5
  %1502 = call i32 @s2n_config_get_num_default_certs(ptr noundef %1471) #11
  %1503 = icmp eq i32 %1502, 1
  br i1 %1503, label %1526, label %1504

1504:                                             ; preds = %1499
  %1505 = load i32, ptr %253, align 4, !tbaa !5
  %1506 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1507 = call i32 @s2n_print_stacktrace(ptr noundef %1506) #11
  %1508 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1509 = trunc nuw i8 %1508 to i1
  br i1 %1509, label %1510, label %1514

1510:                                             ; preds = %1504
  %1511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1512 = call i32 @fileno(ptr noundef %1511) #11
  %1513 = call i32 @isatty(i32 noundef %1512) #11
  %.not163 = icmp eq i32 %1513, 0
  br i1 %.not163, label %1514, label %1515

1514:                                             ; preds = %1510, %1504
  br label %1515

1515:                                             ; preds = %1510, %1514
  %.str.5.sink679 = phi ptr [ @.str.5, %1514 ], [ @.str.2, %1510 ]
  store i32 %1505, ptr %253, align 4, !tbaa !5
  %1516 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1517 = load i32, ptr @test_count, align 4, !tbaa !5
  %1518 = load i32, ptr %199, align 4, !tbaa !5
  %1519 = call ptr @s2n_strerror(i32 noundef %1518, ptr noundef nonnull @.str.4) #11
  %1520 = load i32, ptr %199, align 4, !tbaa !5
  %1521 = call ptr @s2n_strerror_debug(i32 noundef %1520, ptr noundef nonnull @.str.4) #11
  %1522 = load i32, ptr %253, align 4, !tbaa !5
  %1523 = call ptr @strerror(i32 noundef %1522) #11
  %1524 = load i32, ptr %253, align 4, !tbaa !5
  %1525 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1516, ptr noundef nonnull %.str.5.sink679, i32 noundef %1517, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.1, i32 noundef 325, ptr noundef %1519, ptr noundef %1521, ptr noundef %1523, i32 noundef %1524) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1526:                                             ; preds = %1499
  %1527 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #11
  %1528 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #11
  br label %1529

1529:                                             ; preds = %1526, %1439
  %1530 = call i32 @s2n_cleanup() #11
  %1531 = icmp eq i32 %1530, -1
  br i1 %1531, label %1532, label %1554

1532:                                             ; preds = %1529
  %1533 = load i32, ptr %253, align 4, !tbaa !5
  %1534 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1535 = call i32 @s2n_print_stacktrace(ptr noundef %1534) #11
  %1536 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1537 = trunc nuw i8 %1536 to i1
  br i1 %1537, label %1538, label %1542

1538:                                             ; preds = %1532
  %1539 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1540 = call i32 @fileno(ptr noundef %1539) #11
  %1541 = call i32 @isatty(i32 noundef %1540) #11
  %.not170 = icmp eq i32 %1541, 0
  br i1 %.not170, label %1542, label %1543

1542:                                             ; preds = %1538, %1532
  br label %1543

1543:                                             ; preds = %1538, %1542
  %.str.5.sink688 = phi ptr [ @.str.5, %1542 ], [ @.str.2, %1538 ]
  store i32 %1533, ptr %253, align 4, !tbaa !5
  %1544 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1545 = load i32, ptr @test_count, align 4, !tbaa !5
  %1546 = load i32, ptr %199, align 4, !tbaa !5
  %1547 = call ptr @s2n_strerror(i32 noundef %1546, ptr noundef nonnull @.str.4) #11
  %1548 = load i32, ptr %199, align 4, !tbaa !5
  %1549 = call ptr @s2n_strerror_debug(i32 noundef %1548, ptr noundef nonnull @.str.4) #11
  %1550 = load i32, ptr %253, align 4, !tbaa !5
  %1551 = call ptr @strerror(i32 noundef %1550) #11
  %1552 = load i32, ptr %253, align 4, !tbaa !5
  %1553 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1544, ptr noundef nonnull %.str.5.sink688, i32 noundef %1545, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 328, ptr noundef %1547, ptr noundef %1549, ptr noundef %1551, i32 noundef %1552) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1554:                                             ; preds = %1529
  %1555 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #11
  %1556 = icmp eq i32 %1555, -1
  br i1 %1556, label %1557, label %1579

1557:                                             ; preds = %1554
  %1558 = load i32, ptr %253, align 4, !tbaa !5
  %1559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1560 = call i32 @s2n_print_stacktrace(ptr noundef %1559) #11
  %1561 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1562 = trunc nuw i8 %1561 to i1
  br i1 %1562, label %1563, label %1567

1563:                                             ; preds = %1557
  %1564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1565 = call i32 @fileno(ptr noundef %1564) #11
  %1566 = call i32 @isatty(i32 noundef %1565) #11
  %.not169 = icmp eq i32 %1566, 0
  br i1 %.not169, label %1567, label %1568

1567:                                             ; preds = %1563, %1557
  br label %1568

1568:                                             ; preds = %1563, %1567
  %.str.5.sink697 = phi ptr [ @.str.5, %1567 ], [ @.str.2, %1563 ]
  store i32 %1558, ptr %253, align 4, !tbaa !5
  %1569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1570 = load i32, ptr @test_count, align 4, !tbaa !5
  %1571 = load i32, ptr %199, align 4, !tbaa !5
  %1572 = call ptr @s2n_strerror(i32 noundef %1571, ptr noundef nonnull @.str.4) #11
  %1573 = load i32, ptr %199, align 4, !tbaa !5
  %1574 = call ptr @s2n_strerror_debug(i32 noundef %1573, ptr noundef nonnull @.str.4) #11
  %1575 = load i32, ptr %253, align 4, !tbaa !5
  %1576 = call ptr @strerror(i32 noundef %1575) #11
  %1577 = load i32, ptr %253, align 4, !tbaa !5
  %1578 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1569, ptr noundef nonnull %.str.5.sink697, i32 noundef %1570, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 328, ptr noundef %1572, ptr noundef %1574, ptr noundef %1576, i32 noundef %1577) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1579:                                             ; preds = %1554
  %1580 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1581 = trunc nuw i8 %1580 to i1
  br i1 %1581, label %1582, label %1593

1582:                                             ; preds = %1579
  %1583 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1584 = call i32 @fileno(ptr noundef %1583) #11
  %1585 = call i32 @isatty(i32 noundef %1584) #11
  %.not166 = icmp eq i32 %1585, 0
  br i1 %.not166, label %1593, label %1586

1586:                                             ; preds = %1582
  %1587 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not168 = icmp eq i32 %1587, 0
  %1588 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not168, label %1591, label %1589

1589:                                             ; preds = %1586
  %1590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1588, ptr noundef nonnull @.str.54, i32 noundef %1587) #11
  br label %1600

1591:                                             ; preds = %1586
  %1592 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1588, ptr noundef nonnull @.str.55) #11
  br label %1600

1593:                                             ; preds = %1582, %1579
  %1594 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not167 = icmp eq i32 %1594, 0
  %1595 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not167, label %1598, label %1596

1596:                                             ; preds = %1593
  %1597 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1595, ptr noundef nonnull @.str.56, i32 noundef %1594) #11
  br label %1600

1598:                                             ; preds = %1593
  %1599 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1595, ptr noundef nonnull @.str.57) #11
  br label %1600

1600:                                             ; preds = %1596, %1598, %1589, %1591
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %3) #11
  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: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

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

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

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

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

declare void @s2n_debug_info_reset() local_unnamed_addr #2

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

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

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

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) local_unnamed_addr #2

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

declare ptr @s2n_config_new() local_unnamed_addr #2

declare i32 @s2n_config_ptr_free(ptr noundef) local_unnamed_addr #2

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

declare i32 @s2n_connection_ptr_free(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_connection_set_config(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s2n_config_get_num_default_certs(ptr noundef) local_unnamed_addr #2

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

declare zeroext i1 @s2n_libcrypto_is_openssl_fips() 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: readwrite) }
attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { 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 #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(none) }
attributes #13 = { cold nounwind }
attributes #14 = { 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 = !{}
!15 = !{!16, !7, i64 0}
!16 = !{!"s2n_signature_preferences", !7, i64 0, !10, i64 8}
!17 = !{!16, !10, i64 8}
!18 = !{!19, !7, i64 0}
!19 = !{!"s2n_certificate_key_preferences", !7, i64 0, !10, i64 8}
!20 = !{!19, !10, i64 8}
!21 = !{!22, !7, i64 0}
!22 = !{!"s2n_security_policy", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !12, i64 56, !7, i64 57}
!23 = !{!22, !10, i64 32}
!24 = !{!22, !10, i64 40}
!25 = !{!22, !10, i64 48}
!26 = !{!22, !12, i64 56}
!27 = !{!28, !6, i64 56}
!28 = !{!"s2n_cert", !6, i64 0, !29, i64 8, !30, i64 56, !31, i64 80, !10, i64 104}
!29 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!30 = !{!"s2n_cert_info", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !12, i64 16}
!31 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!32 = !{!28, !6, i64 60}
!33 = !{!28, !6, i64 64}
!34 = !{!28, !6, i64 68}
!35 = !{i64 0, i64 1, !36, i64 8, i64 8, !9, i64 16, i64 8, !9, i64 24, i64 8, !9, i64 32, i64 8, !9, i64 40, i64 8, !9, i64 48, i64 8, !9, i64 56, i64 1, !11, i64 57, i64 2, !36}
!36 = !{!7, !7, i64 0}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!40, !10, i64 16}
!40 = !{!"s2n_config", !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 2, !6, i64 2, !6, i64 2, !6, i64 2, !10, i64 8, !10, i64 16, !41, i64 24, !31, i64 56, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !6, i64 128, !6, i64 132, !10, i64 136, !42, i64 144, !10, i64 152, !42, i64 160, !42, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !6, i64 224, !7, i64 228, !6, i64 232, !6, i64 236, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !7, i64 296, !7, i64 297, !43, i64 304, !44, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360, !10, i64 368, !10, i64 376, !10, i64 384, !6, i64 392, !6, i64 396, !6, i64 400, !10, i64 408, !6, i64 416, !6, i64 420, !10, i64 424, !10, i64 432, !6, i64 440, !31, i64 448}
!41 = !{!"certs_by_type", !7, i64 0}
!42 = !{!"long", !7, i64 0}
!43 = !{!"s2n_x509_trust_store", !10, i64 0, !6, i64 8}
!44 = !{!"short", !7, i64 0}
!45 = !{!40, !10, i64 96}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass