; LLVM IR from aws/s2n-tls :: tests/unit (s2n_tls13_cert_verify_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_tls13_cert_verify_test = type { ptr, ptr, ptr, ptr }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_signature_preferences = type { i8, ptr }
%struct.s2n_test_io_pair = type { i32, i32 }
%struct.s2n_result = type { i32 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon, i32 }
%union.anon = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_sig_scheme_list = type { [128 x i16], i8 }
%struct.s2n_psk_parameters = type { i32, %struct.s2n_array, i16, i16, ptr, i32 }
%struct.s2n_array = type { %struct.s2n_blob, i32, i32 }
%struct.s2n_handshake = type { %struct.s2n_stuffer, ptr, [8 x i8], [48 x i8], [48 x i8], i8, i32, i32, i32, i32, %struct.s2n_offered_early_data, i8, i32 }
%struct.s2n_offered_early_data = type { ptr }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }
%struct.s2n_signature_scheme = type { i16, ptr, i32, i32, i8, i8, i16, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@s2n_errno = external thread_local global i32, align 4
@test_cases = external dso_local constant [1 x %struct.s2n_tls13_cert_verify_test], align 16
@test_count = external dso_local global i32, align 4
@stderr = external global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [70 x i8], align 1
@stdout = external global ptr, align 8
@.str.46 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [55 x i8], align 1
@__const.main.test_server_parameters = external hidden unnamed_addr constant [3 x %struct.s2n_tls13_cert_verify_test], align 16
@__const.main.test_client_sig_schemes = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.55 = external hidden unnamed_addr constant [130 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [75 x i8], align 1
@security_policy_test_all_tls13 = external constant %struct.s2n_security_policy, align 8
@.str.65 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [191 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #4

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

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

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

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

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

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

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

declare i32 @s2n_stuffer_copy(ptr noundef, ptr noundef, i32 noundef) #4

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

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

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

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) #4

declare ptr @s2n_config_new() #4

declare i32 @s2n_config_ptr_free(ptr noundef) #4

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

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

declare ptr @s2n_connection_new(i32 noundef) #4

declare i32 @s2n_connection_ptr_free(ptr noundef) #4

declare void @s2n_debug_info_reset() #4

declare i32 @s2n_stuffer_rewrite(ptr noundef) #4

declare i32 @s2n_stuffer_write_uint16(ptr noundef, i16 noundef zeroext) #4

; 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 i64, align 8
  %11 = alloca [3 x %struct.s2n_tls13_cert_verify_test], align 16
  %12 = alloca [3 x ptr], align 16
  %13 = alloca i64, align 8
  %14 = alloca i32, align 4
  %15 = alloca %struct.s2n_tls13_cert_verify_test, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca %struct.s2n_signature_preferences, align 8
  %34 = alloca %struct.s2n_security_policy, align 8
  %35 = alloca %struct.s2n_test_io_pair, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %struct.s2n_result, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca %struct.s2n_stuffer, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %struct.s2n_result, align 4
  %54 = alloca %struct.s2n_result, align 4
  %55 = alloca %struct.s2n_result, align 4
  %56 = alloca %struct.s2n_result, align 4
  %57 = alloca i32, align 4
  %58 = 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 %59

59:                                               ; preds = %2
  br label %60

60:                                               ; preds = %59
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %61 = load ptr, ptr @stdout, align 8, !tbaa !9
  %62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %61, ptr noundef @.str.46, ptr noundef @.str.5) #10
  %63 = load ptr, ptr @stdout, align 8, !tbaa !9
  %64 = call i32 @fflush(ptr noundef %63)
  br label %65

65:                                               ; preds = %60
  %66 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %67 = icmp eq i32 %66, -1
  br i1 %67, label %68, label %119

68:                                               ; preds = %65
  br label %69

69:                                               ; preds = %68
  br label %70

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  %71 = call ptr @__errno_location() #11
  %72 = load i32, ptr %71, align 4, !tbaa !5
  store i32 %72, ptr %6, align 4, !tbaa !5
  %73 = load ptr, ptr @stderr, align 8, !tbaa !9
  %74 = call i32 @s2n_print_stacktrace(ptr noundef %73)
  %75 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %76 = trunc i8 %75 to i1
  br i1 %76, label %77, label %99

77:                                               ; preds = %70
  %78 = load ptr, ptr @stderr, align 8, !tbaa !9
  %79 = call i32 @fileno(ptr noundef %78) #10
  %80 = call i32 @isatty(i32 noundef %79) #10
  %81 = icmp ne i32 %80, 0
  br i1 %81, label %82, label %99

82:                                               ; preds = %77
  %83 = load i32, ptr %6, align 4, !tbaa !5
  %84 = call ptr @__errno_location() #11
  store i32 %83, ptr %84, align 4, !tbaa !5
  %85 = load ptr, ptr @stderr, align 8, !tbaa !9
  %86 = load i32, ptr @test_count, align 4, !tbaa !5
  %87 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %88 = load i32, ptr %87, align 4, !tbaa !5
  %89 = call ptr @s2n_strerror(i32 noundef %88, ptr noundef @.str.6)
  %90 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = call ptr @s2n_strerror_debug(i32 noundef %91, ptr noundef @.str.6)
  %93 = call ptr @__errno_location() #11
  %94 = load i32, ptr %93, align 4, !tbaa !5
  %95 = call ptr @strerror(i32 noundef %94) #10
  %96 = call ptr @__errno_location() #11
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %85, ptr noundef @.str.3, i32 noundef %86, ptr noundef @.str.47, ptr noundef @.str.5, i32 noundef 224, ptr noundef %89, ptr noundef %92, ptr noundef %95, i32 noundef %97) #10
  br label %116

99:                                               ; preds = %77, %70
  %100 = load i32, ptr %6, align 4, !tbaa !5
  %101 = call ptr @__errno_location() #11
  store i32 %100, ptr %101, align 4, !tbaa !5
  %102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %103 = load i32, ptr @test_count, align 4, !tbaa !5
  %104 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = call ptr @s2n_strerror(i32 noundef %105, ptr noundef @.str.6)
  %107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %108 = load i32, ptr %107, align 4, !tbaa !5
  %109 = call ptr @s2n_strerror_debug(i32 noundef %108, ptr noundef @.str.6)
  %110 = call ptr @__errno_location() #11
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = call ptr @strerror(i32 noundef %111) #10
  %113 = call ptr @__errno_location() #11
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %102, ptr noundef @.str.7, i32 noundef %103, ptr noundef @.str.47, ptr noundef @.str.5, i32 noundef 224, ptr noundef %106, ptr noundef %109, ptr noundef %112, i32 noundef %114) #10
  br label %116

116:                                              ; preds = %99, %82
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %117

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

118:                                              ; No predecessors!
  br label %119

119:                                              ; preds = %118, %65
  br label %120

120:                                              ; preds = %119
  br label %121

121:                                              ; preds = %120
  %122 = load i32, ptr @test_count, align 4, !tbaa !5
  %123 = add nsw i32 %122, 1
  store i32 %123, ptr @test_count, align 4, !tbaa !5
  %124 = call i32 @s2n_enable_atexit()
  %125 = icmp eq i32 %124, -1
  br i1 %125, label %126, label %177

126:                                              ; preds = %121
  br label %127

127:                                              ; preds = %126
  br label %128

128:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #10
  %129 = call ptr @__errno_location() #11
  %130 = load i32, ptr %129, align 4, !tbaa !5
  store i32 %130, ptr %7, align 4, !tbaa !5
  %131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %132 = call i32 @s2n_print_stacktrace(ptr noundef %131)
  %133 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %134 = trunc i8 %133 to i1
  br i1 %134, label %135, label %157

135:                                              ; preds = %128
  %136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %137 = call i32 @fileno(ptr noundef %136) #10
  %138 = call i32 @isatty(i32 noundef %137) #10
  %139 = icmp ne i32 %138, 0
  br i1 %139, label %140, label %157

140:                                              ; preds = %135
  %141 = load i32, ptr %7, align 4, !tbaa !5
  %142 = call ptr @__errno_location() #11
  store i32 %141, ptr %142, align 4, !tbaa !5
  %143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %144 = load i32, ptr @test_count, align 4, !tbaa !5
  %145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %146 = load i32, ptr %145, align 4, !tbaa !5
  %147 = call ptr @s2n_strerror(i32 noundef %146, ptr noundef @.str.6)
  %148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = call ptr @s2n_strerror_debug(i32 noundef %149, ptr noundef @.str.6)
  %151 = call ptr @__errno_location() #11
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = call ptr @strerror(i32 noundef %152) #10
  %154 = call ptr @__errno_location() #11
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %143, ptr noundef @.str.3, i32 noundef %144, ptr noundef @.str.48, ptr noundef @.str.5, i32 noundef 224, ptr noundef %147, ptr noundef %150, ptr noundef %153, i32 noundef %155) #10
  br label %174

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

174:                                              ; preds = %157, %140
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %175

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

176:                                              ; No predecessors!
  br label %177

177:                                              ; preds = %176, %121
  br label %178

178:                                              ; preds = %177
  br label %179

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179
  %181 = call i32 @s2n_init()
  %182 = icmp eq i32 %181, -1
  br i1 %182, label %183, label %234

183:                                              ; preds = %180
  br label %184

184:                                              ; preds = %183
  br label %185

185:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %186 = call ptr @__errno_location() #11
  %187 = load i32, ptr %186, align 4, !tbaa !5
  store i32 %187, ptr %8, align 4, !tbaa !5
  %188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %189 = call i32 @s2n_print_stacktrace(ptr noundef %188)
  %190 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %191 = trunc i8 %190 to i1
  br i1 %191, label %192, label %214

192:                                              ; preds = %185
  %193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %194 = call i32 @fileno(ptr noundef %193) #10
  %195 = call i32 @isatty(i32 noundef %194) #10
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %214

197:                                              ; preds = %192
  %198 = load i32, ptr %8, align 4, !tbaa !5
  %199 = call ptr @__errno_location() #11
  store i32 %198, ptr %199, align 4, !tbaa !5
  %200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %201 = load i32, ptr @test_count, align 4, !tbaa !5
  %202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = call ptr @s2n_strerror(i32 noundef %203, ptr noundef @.str.6)
  %205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %206 = load i32, ptr %205, align 4, !tbaa !5
  %207 = call ptr @s2n_strerror_debug(i32 noundef %206, ptr noundef @.str.6)
  %208 = call ptr @__errno_location() #11
  %209 = load i32, ptr %208, align 4, !tbaa !5
  %210 = call ptr @strerror(i32 noundef %209) #10
  %211 = call ptr @__errno_location() #11
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %200, ptr noundef @.str.3, i32 noundef %201, ptr noundef @.str.49, ptr noundef @.str.5, i32 noundef 224, ptr noundef %204, ptr noundef %207, ptr noundef %210, i32 noundef %212) #10
  br label %231

214:                                              ; preds = %192, %185
  %215 = load i32, ptr %8, align 4, !tbaa !5
  %216 = call ptr @__errno_location() #11
  store i32 %215, ptr %216, align 4, !tbaa !5
  %217 = load ptr, ptr @stderr, align 8, !tbaa !9
  %218 = load i32, ptr @test_count, align 4, !tbaa !5
  %219 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %221 = call ptr @s2n_strerror(i32 noundef %220, ptr noundef @.str.6)
  %222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %223 = load i32, ptr %222, align 4, !tbaa !5
  %224 = call ptr @s2n_strerror_debug(i32 noundef %223, ptr noundef @.str.6)
  %225 = call ptr @__errno_location() #11
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = call ptr @strerror(i32 noundef %226) #10
  %228 = call ptr @__errno_location() #11
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %217, ptr noundef @.str.7, i32 noundef %218, ptr noundef @.str.49, ptr noundef @.str.5, i32 noundef 224, ptr noundef %221, ptr noundef %224, ptr noundef %227, i32 noundef %229) #10
  br label %231

231:                                              ; preds = %214, %197
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %232

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

233:                                              ; No predecessors!
  br label %234

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

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %235
  br label %237

237:                                              ; preds = %236
  %238 = load i32, ptr @test_count, align 4, !tbaa !5
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr @test_count, align 4, !tbaa !5
  %240 = call i32 (...) @s2n_enable_tls13_in_test()
  %241 = icmp eq i32 %240, -1
  br i1 %241, label %242, label %293

242:                                              ; preds = %237
  br label %243

243:                                              ; preds = %242
  br label %244

244:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #10
  %245 = call ptr @__errno_location() #11
  %246 = load i32, ptr %245, align 4, !tbaa !5
  store i32 %246, ptr %9, align 4, !tbaa !5
  %247 = load ptr, ptr @stderr, align 8, !tbaa !9
  %248 = call i32 @s2n_print_stacktrace(ptr noundef %247)
  %249 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %250 = trunc i8 %249 to i1
  br i1 %250, label %251, label %273

251:                                              ; preds = %244
  %252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %253 = call i32 @fileno(ptr noundef %252) #10
  %254 = call i32 @isatty(i32 noundef %253) #10
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %273

256:                                              ; preds = %251
  %257 = load i32, ptr %9, align 4, !tbaa !5
  %258 = call ptr @__errno_location() #11
  store i32 %257, ptr %258, align 4, !tbaa !5
  %259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %260 = load i32, ptr @test_count, align 4, !tbaa !5
  %261 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %262 = load i32, ptr %261, align 4, !tbaa !5
  %263 = call ptr @s2n_strerror(i32 noundef %262, ptr noundef @.str.6)
  %264 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %265 = load i32, ptr %264, align 4, !tbaa !5
  %266 = call ptr @s2n_strerror_debug(i32 noundef %265, ptr noundef @.str.6)
  %267 = call ptr @__errno_location() #11
  %268 = load i32, ptr %267, align 4, !tbaa !5
  %269 = call ptr @strerror(i32 noundef %268) #10
  %270 = call ptr @__errno_location() #11
  %271 = load i32, ptr %270, align 4, !tbaa !5
  %272 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %259, ptr noundef @.str.3, i32 noundef %260, ptr noundef @.str.50, ptr noundef @.str.5, i32 noundef 226, ptr noundef %263, ptr noundef %266, ptr noundef %269, i32 noundef %271) #10
  br label %290

273:                                              ; preds = %251, %244
  %274 = load i32, ptr %9, 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.6)
  %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.6)
  %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.7, i32 noundef %277, ptr noundef @.str.50, ptr noundef @.str.5, i32 noundef 226, ptr noundef %280, ptr noundef %283, ptr noundef %286, i32 noundef %288) #10
  br label %290

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

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

292:                                              ; No predecessors!
  br label %293

293:                                              ; preds = %292, %237
  br label %294

294:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  store i64 0, ptr %10, align 8, !tbaa !15
  br label %295

295:                                              ; preds = %306, %294
  %296 = load i64, ptr %10, align 8, !tbaa !15
  %297 = icmp ult i64 %296, 1
  br i1 %297, label %299, label %298

298:                                              ; preds = %295
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  br label %309

299:                                              ; preds = %295
  %300 = load i64, ptr %10, align 8, !tbaa !15
  %301 = getelementptr inbounds [1 x %struct.s2n_tls13_cert_verify_test], ptr @test_cases, i64 0, i64 %300
  %302 = call i32 @run_tests(ptr noundef %301, i32 noundef 1)
  %303 = load i64, ptr %10, align 8, !tbaa !15
  %304 = getelementptr inbounds [1 x %struct.s2n_tls13_cert_verify_test], ptr @test_cases, i64 0, i64 %303
  %305 = call i32 @run_tests(ptr noundef %304, i32 noundef 0)
  br label %306

306:                                              ; preds = %299
  %307 = load i64, ptr %10, align 8, !tbaa !15
  %308 = add i64 %307, 1
  store i64 %308, ptr %10, align 8, !tbaa !15
  br label %295, !llvm.loop !17

309:                                              ; preds = %298
  %310 = call zeroext i1 (...) @s2n_is_tls13_fully_supported()
  br i1 %310, label %311, label %1956

311:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 96, ptr %11) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %11, ptr align 16 @__const.main.test_server_parameters, i64 96, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %12, ptr align 16 @__const.main.test_client_sig_schemes, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  store i64 0, ptr %13, align 8, !tbaa !15
  br label %312

312:                                              ; preds = %1952, %311
  %313 = load i64, ptr %13, align 8, !tbaa !15
  %314 = icmp ult i64 %313, 3
  br i1 %314, label %316, label %315

315:                                              ; preds = %312
  store i32 33, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  br label %1955

316:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #10
  %317 = load i64, ptr %13, align 8, !tbaa !15
  %318 = getelementptr inbounds [3 x %struct.s2n_tls13_cert_verify_test], ptr %11, i64 0, i64 %317
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 16 %318, i64 32, i1 false), !tbaa.struct !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  store ptr null, ptr %16, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %316
  %320 = load i32, ptr @test_count, align 4, !tbaa !5
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr @test_count, align 4, !tbaa !5
  %322 = getelementptr inbounds %struct.s2n_tls13_cert_verify_test, ptr %15, i32 0, i32 0
  %323 = load ptr, ptr %322, align 8, !tbaa !20
  %324 = getelementptr inbounds %struct.s2n_tls13_cert_verify_test, ptr %15, i32 0, i32 1
  %325 = load ptr, ptr %324, align 8, !tbaa !22
  %326 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %16, ptr noundef %323, ptr noundef %325)
  %327 = icmp eq i32 %326, -1
  br i1 %327, label %328, label %381

328:                                              ; preds = %319
  br label %329

329:                                              ; preds = %328
  br label %330

330:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  %331 = call ptr @__errno_location() #11
  %332 = load i32, ptr %331, align 4, !tbaa !5
  store i32 %332, ptr %17, align 4, !tbaa !5
  %333 = load ptr, ptr @stderr, align 8, !tbaa !9
  %334 = call i32 @s2n_print_stacktrace(ptr noundef %333)
  %335 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %336 = trunc i8 %335 to i1
  br i1 %336, label %337, label %359

337:                                              ; preds = %330
  %338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %339 = call i32 @fileno(ptr noundef %338) #10
  %340 = call i32 @isatty(i32 noundef %339) #10
  %341 = icmp ne i32 %340, 0
  br i1 %341, label %342, label %359

342:                                              ; preds = %337
  %343 = load i32, ptr %17, align 4, !tbaa !5
  %344 = call ptr @__errno_location() #11
  store i32 %343, ptr %344, align 4, !tbaa !5
  %345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %346 = load i32, ptr @test_count, align 4, !tbaa !5
  %347 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %348 = load i32, ptr %347, align 4, !tbaa !5
  %349 = call ptr @s2n_strerror(i32 noundef %348, ptr noundef @.str.6)
  %350 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %351 = load i32, ptr %350, align 4, !tbaa !5
  %352 = call ptr @s2n_strerror_debug(i32 noundef %351, ptr noundef @.str.6)
  %353 = call ptr @__errno_location() #11
  %354 = load i32, ptr %353, align 4, !tbaa !5
  %355 = call ptr @strerror(i32 noundef %354) #10
  %356 = call ptr @__errno_location() #11
  %357 = load i32, ptr %356, align 4, !tbaa !5
  %358 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %345, ptr noundef @.str.3, i32 noundef %346, ptr noundef @.str.55, ptr noundef @.str.5, i32 noundef 269, ptr noundef %349, ptr noundef %352, ptr noundef %355, i32 noundef %357) #10
  br label %376

359:                                              ; preds = %337, %330
  %360 = load i32, ptr %17, align 4, !tbaa !5
  %361 = call ptr @__errno_location() #11
  store i32 %360, ptr %361, align 4, !tbaa !5
  %362 = load ptr, ptr @stderr, align 8, !tbaa !9
  %363 = load i32, ptr @test_count, align 4, !tbaa !5
  %364 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %365 = load i32, ptr %364, align 4, !tbaa !5
  %366 = call ptr @s2n_strerror(i32 noundef %365, ptr noundef @.str.6)
  %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_debug(i32 noundef %368, ptr noundef @.str.6)
  %370 = call ptr @__errno_location() #11
  %371 = load i32, ptr %370, align 4, !tbaa !5
  %372 = call ptr @strerror(i32 noundef %371) #10
  %373 = call ptr @__errno_location() #11
  %374 = load i32, ptr %373, align 4, !tbaa !5
  %375 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %362, ptr noundef @.str.7, i32 noundef %363, ptr noundef @.str.55, ptr noundef @.str.5, i32 noundef 269, ptr noundef %366, ptr noundef %369, ptr noundef %372, i32 noundef %374) #10
  br label %376

376:                                              ; preds = %359, %342
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %377

377:                                              ; preds = %376
  br label %378

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

379:                                              ; No predecessors!
  br label %380

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380, %319
  br label %382

382:                                              ; preds = %381
  br label %383

383:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %384 = call ptr @s2n_config_new()
  store ptr %384, ptr %18, align 8, !tbaa !9
  br label %385

385:                                              ; preds = %383
  %386 = load i32, ptr @test_count, align 4, !tbaa !5
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr @test_count, align 4, !tbaa !5
  %388 = load ptr, ptr %18, align 8, !tbaa !9
  %389 = icmp eq ptr %388, null
  br i1 %389, label %390, label %443

390:                                              ; preds = %385
  br label %391

391:                                              ; preds = %390
  br label %392

392:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %393 = call ptr @__errno_location() #11
  %394 = load i32, ptr %393, align 4, !tbaa !5
  store i32 %394, ptr %19, align 4, !tbaa !5
  %395 = load ptr, ptr @stderr, align 8, !tbaa !9
  %396 = call i32 @s2n_print_stacktrace(ptr noundef %395)
  %397 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %398 = trunc i8 %397 to i1
  br i1 %398, label %399, label %421

399:                                              ; preds = %392
  %400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %401 = call i32 @fileno(ptr noundef %400) #10
  %402 = call i32 @isatty(i32 noundef %401) #10
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %404, label %421

404:                                              ; preds = %399
  %405 = load i32, ptr %19, align 4, !tbaa !5
  %406 = call ptr @__errno_location() #11
  store i32 %405, ptr %406, align 4, !tbaa !5
  %407 = load ptr, ptr @stderr, align 8, !tbaa !9
  %408 = load i32, ptr @test_count, align 4, !tbaa !5
  %409 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %410 = load i32, ptr %409, align 4, !tbaa !5
  %411 = call ptr @s2n_strerror(i32 noundef %410, ptr noundef @.str.6)
  %412 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %413 = load i32, ptr %412, align 4, !tbaa !5
  %414 = call ptr @s2n_strerror_debug(i32 noundef %413, ptr noundef @.str.6)
  %415 = call ptr @__errno_location() #11
  %416 = load i32, ptr %415, align 4, !tbaa !5
  %417 = call ptr @strerror(i32 noundef %416) #10
  %418 = call ptr @__errno_location() #11
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %407, ptr noundef @.str.3, i32 noundef %408, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 272, ptr noundef %411, ptr noundef %414, ptr noundef %417, i32 noundef %419) #10
  br label %438

421:                                              ; preds = %399, %392
  %422 = load i32, ptr %19, align 4, !tbaa !5
  %423 = call ptr @__errno_location() #11
  store i32 %422, ptr %423, align 4, !tbaa !5
  %424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %425 = load i32, ptr @test_count, align 4, !tbaa !5
  %426 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %427 = load i32, ptr %426, align 4, !tbaa !5
  %428 = call ptr @s2n_strerror(i32 noundef %427, ptr noundef @.str.6)
  %429 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %430 = load i32, ptr %429, align 4, !tbaa !5
  %431 = call ptr @s2n_strerror_debug(i32 noundef %430, ptr noundef @.str.6)
  %432 = call ptr @__errno_location() #11
  %433 = load i32, ptr %432, align 4, !tbaa !5
  %434 = call ptr @strerror(i32 noundef %433) #10
  %435 = call ptr @__errno_location() #11
  %436 = load i32, ptr %435, align 4, !tbaa !5
  %437 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %424, ptr noundef @.str.7, i32 noundef %425, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 272, ptr noundef %428, ptr noundef %431, ptr noundef %434, i32 noundef %436) #10
  br label %438

438:                                              ; preds = %421, %404
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %439

439:                                              ; preds = %438
  br label %440

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

441:                                              ; No predecessors!
  br label %442

442:                                              ; preds = %441
  br label %443

443:                                              ; preds = %442, %385
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444
  br label %446

446:                                              ; preds = %445
  %447 = load i32, ptr @test_count, align 4, !tbaa !5
  %448 = add nsw i32 %447, 1
  store i32 %448, ptr @test_count, align 4, !tbaa !5
  %449 = load ptr, ptr %18, align 8, !tbaa !9
  %450 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %449, ptr noundef @.str.56)
  %451 = icmp eq i32 %450, -1
  br i1 %451, label %452, label %505

452:                                              ; preds = %446
  br label %453

453:                                              ; preds = %452
  br label %454

454:                                              ; preds = %453
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  %455 = call ptr @__errno_location() #11
  %456 = load i32, ptr %455, align 4, !tbaa !5
  store i32 %456, ptr %20, align 4, !tbaa !5
  %457 = load ptr, ptr @stderr, align 8, !tbaa !9
  %458 = call i32 @s2n_print_stacktrace(ptr noundef %457)
  %459 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %460 = trunc i8 %459 to i1
  br i1 %460, label %461, label %483

461:                                              ; preds = %454
  %462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %463 = call i32 @fileno(ptr noundef %462) #10
  %464 = call i32 @isatty(i32 noundef %463) #10
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %466, label %483

466:                                              ; preds = %461
  %467 = load i32, ptr %20, align 4, !tbaa !5
  %468 = call ptr @__errno_location() #11
  store i32 %467, ptr %468, align 4, !tbaa !5
  %469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %470 = load i32, ptr @test_count, align 4, !tbaa !5
  %471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %472 = load i32, ptr %471, align 4, !tbaa !5
  %473 = call ptr @s2n_strerror(i32 noundef %472, ptr noundef @.str.6)
  %474 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %475 = load i32, ptr %474, align 4, !tbaa !5
  %476 = call ptr @s2n_strerror_debug(i32 noundef %475, ptr noundef @.str.6)
  %477 = call ptr @__errno_location() #11
  %478 = load i32, ptr %477, align 4, !tbaa !5
  %479 = call ptr @strerror(i32 noundef %478) #10
  %480 = call ptr @__errno_location() #11
  %481 = load i32, ptr %480, align 4, !tbaa !5
  %482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %469, ptr noundef @.str.3, i32 noundef %470, ptr noundef @.str.57, ptr noundef @.str.5, i32 noundef 273, ptr noundef %473, ptr noundef %476, ptr noundef %479, i32 noundef %481) #10
  br label %500

483:                                              ; preds = %461, %454
  %484 = load i32, ptr %20, align 4, !tbaa !5
  %485 = call ptr @__errno_location() #11
  store i32 %484, ptr %485, align 4, !tbaa !5
  %486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %487 = load i32, ptr @test_count, align 4, !tbaa !5
  %488 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %489 = load i32, ptr %488, align 4, !tbaa !5
  %490 = call ptr @s2n_strerror(i32 noundef %489, ptr noundef @.str.6)
  %491 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %492 = load i32, ptr %491, align 4, !tbaa !5
  %493 = call ptr @s2n_strerror_debug(i32 noundef %492, ptr noundef @.str.6)
  %494 = call ptr @__errno_location() #11
  %495 = load i32, ptr %494, align 4, !tbaa !5
  %496 = call ptr @strerror(i32 noundef %495) #10
  %497 = call ptr @__errno_location() #11
  %498 = load i32, ptr %497, align 4, !tbaa !5
  %499 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %486, ptr noundef @.str.7, i32 noundef %487, ptr noundef @.str.57, ptr noundef @.str.5, i32 noundef 273, ptr noundef %490, ptr noundef %493, ptr noundef %496, i32 noundef %498) #10
  br label %500

500:                                              ; preds = %483, %466
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  br label %501

501:                                              ; preds = %500
  br label %502

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

503:                                              ; No predecessors!
  br label %504

504:                                              ; preds = %503
  br label %505

505:                                              ; preds = %504, %446
  br label %506

506:                                              ; preds = %505
  br label %507

507:                                              ; preds = %506
  br label %508

508:                                              ; preds = %507
  %509 = load i32, ptr @test_count, align 4, !tbaa !5
  %510 = add nsw i32 %509, 1
  store i32 %510, ptr @test_count, align 4, !tbaa !5
  %511 = load ptr, ptr %18, align 8, !tbaa !9
  %512 = call i32 @s2n_config_disable_x509_verification(ptr noundef %511)
  %513 = icmp eq i32 %512, -1
  br i1 %513, label %514, label %567

514:                                              ; preds = %508
  br label %515

515:                                              ; preds = %514
  br label %516

516:                                              ; preds = %515
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  %517 = call ptr @__errno_location() #11
  %518 = load i32, ptr %517, align 4, !tbaa !5
  store i32 %518, ptr %21, align 4, !tbaa !5
  %519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %520 = call i32 @s2n_print_stacktrace(ptr noundef %519)
  %521 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %522 = trunc i8 %521 to i1
  br i1 %522, label %523, label %545

523:                                              ; preds = %516
  %524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %525 = call i32 @fileno(ptr noundef %524) #10
  %526 = call i32 @isatty(i32 noundef %525) #10
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %528, label %545

528:                                              ; preds = %523
  %529 = load i32, ptr %21, align 4, !tbaa !5
  %530 = call ptr @__errno_location() #11
  store i32 %529, ptr %530, align 4, !tbaa !5
  %531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %532 = load i32, ptr @test_count, align 4, !tbaa !5
  %533 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %534 = load i32, ptr %533, align 4, !tbaa !5
  %535 = call ptr @s2n_strerror(i32 noundef %534, ptr noundef @.str.6)
  %536 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %537 = load i32, ptr %536, align 4, !tbaa !5
  %538 = call ptr @s2n_strerror_debug(i32 noundef %537, ptr noundef @.str.6)
  %539 = call ptr @__errno_location() #11
  %540 = load i32, ptr %539, align 4, !tbaa !5
  %541 = call ptr @strerror(i32 noundef %540) #10
  %542 = call ptr @__errno_location() #11
  %543 = load i32, ptr %542, align 4, !tbaa !5
  %544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %531, ptr noundef @.str.3, i32 noundef %532, ptr noundef @.str.58, ptr noundef @.str.5, i32 noundef 274, ptr noundef %535, ptr noundef %538, ptr noundef %541, i32 noundef %543) #10
  br label %562

545:                                              ; preds = %523, %516
  %546 = load i32, ptr %21, align 4, !tbaa !5
  %547 = call ptr @__errno_location() #11
  store i32 %546, ptr %547, align 4, !tbaa !5
  %548 = load ptr, ptr @stderr, align 8, !tbaa !9
  %549 = load i32, ptr @test_count, align 4, !tbaa !5
  %550 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %551 = load i32, ptr %550, align 4, !tbaa !5
  %552 = call ptr @s2n_strerror(i32 noundef %551, ptr noundef @.str.6)
  %553 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %554 = load i32, ptr %553, align 4, !tbaa !5
  %555 = call ptr @s2n_strerror_debug(i32 noundef %554, ptr noundef @.str.6)
  %556 = call ptr @__errno_location() #11
  %557 = load i32, ptr %556, align 4, !tbaa !5
  %558 = call ptr @strerror(i32 noundef %557) #10
  %559 = call ptr @__errno_location() #11
  %560 = load i32, ptr %559, align 4, !tbaa !5
  %561 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %548, ptr noundef @.str.7, i32 noundef %549, ptr noundef @.str.58, ptr noundef @.str.5, i32 noundef 274, ptr noundef %552, ptr noundef %555, ptr noundef %558, i32 noundef %560) #10
  br label %562

562:                                              ; preds = %545, %528
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %563

563:                                              ; preds = %562
  br label %564

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

565:                                              ; No predecessors!
  br label %566

566:                                              ; preds = %565
  br label %567

567:                                              ; preds = %566, %508
  br label %568

568:                                              ; preds = %567
  br label %569

569:                                              ; preds = %568
  br label %570

570:                                              ; preds = %569
  %571 = load i32, ptr @test_count, align 4, !tbaa !5
  %572 = add nsw i32 %571, 1
  store i32 %572, ptr @test_count, align 4, !tbaa !5
  %573 = load ptr, ptr %18, align 8, !tbaa !9
  %574 = load ptr, ptr %16, align 8, !tbaa !9
  %575 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %573, ptr noundef %574)
  %576 = icmp eq i32 %575, -1
  br i1 %576, label %577, label %630

577:                                              ; preds = %570
  br label %578

578:                                              ; preds = %577
  br label %579

579:                                              ; preds = %578
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  %580 = call ptr @__errno_location() #11
  %581 = load i32, ptr %580, align 4, !tbaa !5
  store i32 %581, ptr %22, align 4, !tbaa !5
  %582 = load ptr, ptr @stderr, align 8, !tbaa !9
  %583 = call i32 @s2n_print_stacktrace(ptr noundef %582)
  %584 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %585 = trunc i8 %584 to i1
  br i1 %585, label %586, label %608

586:                                              ; preds = %579
  %587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %588 = call i32 @fileno(ptr noundef %587) #10
  %589 = call i32 @isatty(i32 noundef %588) #10
  %590 = icmp ne i32 %589, 0
  br i1 %590, label %591, label %608

591:                                              ; preds = %586
  %592 = load i32, ptr %22, align 4, !tbaa !5
  %593 = call ptr @__errno_location() #11
  store i32 %592, ptr %593, align 4, !tbaa !5
  %594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %595 = load i32, ptr @test_count, align 4, !tbaa !5
  %596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %597 = load i32, ptr %596, align 4, !tbaa !5
  %598 = call ptr @s2n_strerror(i32 noundef %597, ptr noundef @.str.6)
  %599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %600 = load i32, ptr %599, align 4, !tbaa !5
  %601 = call ptr @s2n_strerror_debug(i32 noundef %600, ptr noundef @.str.6)
  %602 = call ptr @__errno_location() #11
  %603 = load i32, ptr %602, align 4, !tbaa !5
  %604 = call ptr @strerror(i32 noundef %603) #10
  %605 = call ptr @__errno_location() #11
  %606 = load i32, ptr %605, align 4, !tbaa !5
  %607 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %594, ptr noundef @.str.3, i32 noundef %595, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 281, ptr noundef %598, ptr noundef %601, ptr noundef %604, i32 noundef %606) #10
  br label %625

608:                                              ; preds = %586, %579
  %609 = load i32, ptr %22, align 4, !tbaa !5
  %610 = call ptr @__errno_location() #11
  store i32 %609, ptr %610, align 4, !tbaa !5
  %611 = load ptr, ptr @stderr, align 8, !tbaa !9
  %612 = load i32, ptr @test_count, align 4, !tbaa !5
  %613 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %614 = load i32, ptr %613, align 4, !tbaa !5
  %615 = call ptr @s2n_strerror(i32 noundef %614, ptr noundef @.str.6)
  %616 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %617 = load i32, ptr %616, align 4, !tbaa !5
  %618 = call ptr @s2n_strerror_debug(i32 noundef %617, ptr noundef @.str.6)
  %619 = call ptr @__errno_location() #11
  %620 = load i32, ptr %619, align 4, !tbaa !5
  %621 = call ptr @strerror(i32 noundef %620) #10
  %622 = call ptr @__errno_location() #11
  %623 = load i32, ptr %622, align 4, !tbaa !5
  %624 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %611, ptr noundef @.str.7, i32 noundef %612, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 281, ptr noundef %615, ptr noundef %618, ptr noundef %621, i32 noundef %623) #10
  br label %625

625:                                              ; preds = %608, %591
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %626

626:                                              ; preds = %625
  br label %627

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

628:                                              ; No predecessors!
  br label %629

629:                                              ; preds = %628
  br label %630

630:                                              ; preds = %629, %570
  br label %631

631:                                              ; preds = %630
  br label %632

632:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  store i64 0, ptr %23, align 8, !tbaa !15
  br label %633

633:                                              ; preds = %1944, %632
  %634 = load i64, ptr %23, align 8, !tbaa !15
  %635 = icmp ult i64 %634, 3
  br i1 %635, label %637, label %636

636:                                              ; preds = %633
  store i32 66, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  br label %1947

637:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %638 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %638, ptr %24, align 8, !tbaa !9
  br label %639

639:                                              ; preds = %637
  %640 = load i32, ptr @test_count, align 4, !tbaa !5
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr @test_count, align 4, !tbaa !5
  %642 = load ptr, ptr %24, align 8, !tbaa !9
  %643 = icmp eq ptr %642, null
  br i1 %643, label %644, label %697

644:                                              ; preds = %639
  br label %645

645:                                              ; preds = %644
  br label %646

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

653:                                              ; preds = %646
  %654 = load ptr, ptr @stderr, align 8, !tbaa !9
  %655 = call i32 @fileno(ptr noundef %654) #10
  %656 = call i32 @isatty(i32 noundef %655) #10
  %657 = icmp ne i32 %656, 0
  br i1 %657, label %658, label %675

658:                                              ; preds = %653
  %659 = load i32, ptr %25, align 4, !tbaa !5
  %660 = call ptr @__errno_location() #11
  store i32 %659, ptr %660, align 4, !tbaa !5
  %661 = load ptr, ptr @stderr, align 8, !tbaa !9
  %662 = load i32, ptr @test_count, align 4, !tbaa !5
  %663 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %664 = load i32, ptr %663, align 4, !tbaa !5
  %665 = call ptr @s2n_strerror(i32 noundef %664, ptr noundef @.str.6)
  %666 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %667 = load i32, ptr %666, align 4, !tbaa !5
  %668 = call ptr @s2n_strerror_debug(i32 noundef %667, ptr noundef @.str.6)
  %669 = call ptr @__errno_location() #11
  %670 = load i32, ptr %669, align 4, !tbaa !5
  %671 = call ptr @strerror(i32 noundef %670) #10
  %672 = call ptr @__errno_location() #11
  %673 = load i32, ptr %672, align 4, !tbaa !5
  %674 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %661, ptr noundef @.str.3, i32 noundef %662, ptr noundef @.str.59, ptr noundef @.str.5, i32 noundef 286, ptr noundef %665, ptr noundef %668, ptr noundef %671, i32 noundef %673) #10
  br label %692

675:                                              ; preds = %653, %646
  %676 = load i32, ptr %25, align 4, !tbaa !5
  %677 = call ptr @__errno_location() #11
  store i32 %676, ptr %677, align 4, !tbaa !5
  %678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %679 = load i32, ptr @test_count, align 4, !tbaa !5
  %680 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %681 = load i32, ptr %680, align 4, !tbaa !5
  %682 = call ptr @s2n_strerror(i32 noundef %681, ptr noundef @.str.6)
  %683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %684 = load i32, ptr %683, align 4, !tbaa !5
  %685 = call ptr @s2n_strerror_debug(i32 noundef %684, ptr noundef @.str.6)
  %686 = call ptr @__errno_location() #11
  %687 = load i32, ptr %686, align 4, !tbaa !5
  %688 = call ptr @strerror(i32 noundef %687) #10
  %689 = call ptr @__errno_location() #11
  %690 = load i32, ptr %689, align 4, !tbaa !5
  %691 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %678, ptr noundef @.str.7, i32 noundef %679, ptr noundef @.str.59, ptr noundef @.str.5, i32 noundef 286, ptr noundef %682, ptr noundef %685, ptr noundef %688, i32 noundef %690) #10
  br label %692

692:                                              ; preds = %675, %658
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %693

693:                                              ; preds = %692
  br label %694

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

695:                                              ; No predecessors!
  br label %696

696:                                              ; preds = %695
  br label %697

697:                                              ; preds = %696, %639
  br label %698

698:                                              ; preds = %697
  br label %699

699:                                              ; preds = %698
  br label %700

700:                                              ; preds = %699
  %701 = load i32, ptr @test_count, align 4, !tbaa !5
  %702 = add nsw i32 %701, 1
  store i32 %702, ptr @test_count, align 4, !tbaa !5
  %703 = load ptr, ptr %24, align 8, !tbaa !9
  %704 = call i32 @s2n_connection_set_blinding(ptr noundef %703, i32 noundef 1)
  %705 = icmp eq i32 %704, -1
  br i1 %705, label %706, label %759

706:                                              ; preds = %700
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  %709 = call ptr @__errno_location() #11
  %710 = load i32, ptr %709, align 4, !tbaa !5
  store i32 %710, ptr %26, align 4, !tbaa !5
  %711 = load ptr, ptr @stderr, align 8, !tbaa !9
  %712 = call i32 @s2n_print_stacktrace(ptr noundef %711)
  %713 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %714 = trunc i8 %713 to i1
  br i1 %714, label %715, label %737

715:                                              ; preds = %708
  %716 = load ptr, ptr @stderr, align 8, !tbaa !9
  %717 = call i32 @fileno(ptr noundef %716) #10
  %718 = call i32 @isatty(i32 noundef %717) #10
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %720, label %737

720:                                              ; preds = %715
  %721 = load i32, ptr %26, align 4, !tbaa !5
  %722 = call ptr @__errno_location() #11
  store i32 %721, ptr %722, align 4, !tbaa !5
  %723 = load ptr, ptr @stderr, align 8, !tbaa !9
  %724 = load i32, ptr @test_count, align 4, !tbaa !5
  %725 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %726 = load i32, ptr %725, align 4, !tbaa !5
  %727 = call ptr @s2n_strerror(i32 noundef %726, ptr noundef @.str.6)
  %728 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %729 = load i32, ptr %728, align 4, !tbaa !5
  %730 = call ptr @s2n_strerror_debug(i32 noundef %729, ptr noundef @.str.6)
  %731 = call ptr @__errno_location() #11
  %732 = load i32, ptr %731, align 4, !tbaa !5
  %733 = call ptr @strerror(i32 noundef %732) #10
  %734 = call ptr @__errno_location() #11
  %735 = load i32, ptr %734, align 4, !tbaa !5
  %736 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %723, ptr noundef @.str.3, i32 noundef %724, ptr noundef @.str.60, ptr noundef @.str.5, i32 noundef 287, ptr noundef %727, ptr noundef %730, ptr noundef %733, i32 noundef %735) #10
  br label %754

737:                                              ; preds = %715, %708
  %738 = load i32, ptr %26, align 4, !tbaa !5
  %739 = call ptr @__errno_location() #11
  store i32 %738, ptr %739, align 4, !tbaa !5
  %740 = load ptr, ptr @stderr, align 8, !tbaa !9
  %741 = load i32, ptr @test_count, align 4, !tbaa !5
  %742 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %743 = load i32, ptr %742, align 4, !tbaa !5
  %744 = call ptr @s2n_strerror(i32 noundef %743, ptr noundef @.str.6)
  %745 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %746 = load i32, ptr %745, align 4, !tbaa !5
  %747 = call ptr @s2n_strerror_debug(i32 noundef %746, ptr noundef @.str.6)
  %748 = call ptr @__errno_location() #11
  %749 = load i32, ptr %748, align 4, !tbaa !5
  %750 = call ptr @strerror(i32 noundef %749) #10
  %751 = call ptr @__errno_location() #11
  %752 = load i32, ptr %751, align 4, !tbaa !5
  %753 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %740, ptr noundef @.str.7, i32 noundef %741, ptr noundef @.str.60, ptr noundef @.str.5, i32 noundef 287, ptr noundef %744, ptr noundef %747, ptr noundef %750, i32 noundef %752) #10
  br label %754

754:                                              ; preds = %737, %720
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %755

755:                                              ; preds = %754
  br label %756

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

757:                                              ; No predecessors!
  br label %758

758:                                              ; preds = %757
  br label %759

759:                                              ; preds = %758, %700
  br label %760

760:                                              ; preds = %759
  br label %761

761:                                              ; preds = %760
  br label %762

762:                                              ; preds = %761
  %763 = load i32, ptr @test_count, align 4, !tbaa !5
  %764 = add nsw i32 %763, 1
  store i32 %764, ptr @test_count, align 4, !tbaa !5
  %765 = load ptr, ptr %24, align 8, !tbaa !9
  %766 = load ptr, ptr %18, align 8, !tbaa !9
  %767 = call i32 @s2n_connection_set_config(ptr noundef %765, ptr noundef %766)
  %768 = icmp eq i32 %767, -1
  br i1 %768, label %769, label %822

769:                                              ; preds = %762
  br label %770

770:                                              ; preds = %769
  br label %771

771:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  %772 = call ptr @__errno_location() #11
  %773 = load i32, ptr %772, align 4, !tbaa !5
  store i32 %773, ptr %27, align 4, !tbaa !5
  %774 = load ptr, ptr @stderr, align 8, !tbaa !9
  %775 = call i32 @s2n_print_stacktrace(ptr noundef %774)
  %776 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %777 = trunc i8 %776 to i1
  br i1 %777, label %778, label %800

778:                                              ; preds = %771
  %779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %780 = call i32 @fileno(ptr noundef %779) #10
  %781 = call i32 @isatty(i32 noundef %780) #10
  %782 = icmp ne i32 %781, 0
  br i1 %782, label %783, label %800

783:                                              ; preds = %778
  %784 = load i32, ptr %27, align 4, !tbaa !5
  %785 = call ptr @__errno_location() #11
  store i32 %784, ptr %785, align 4, !tbaa !5
  %786 = load ptr, ptr @stderr, align 8, !tbaa !9
  %787 = load i32, ptr @test_count, align 4, !tbaa !5
  %788 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %789 = load i32, ptr %788, align 4, !tbaa !5
  %790 = call ptr @s2n_strerror(i32 noundef %789, ptr noundef @.str.6)
  %791 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %792 = load i32, ptr %791, align 4, !tbaa !5
  %793 = call ptr @s2n_strerror_debug(i32 noundef %792, ptr noundef @.str.6)
  %794 = call ptr @__errno_location() #11
  %795 = load i32, ptr %794, align 4, !tbaa !5
  %796 = call ptr @strerror(i32 noundef %795) #10
  %797 = call ptr @__errno_location() #11
  %798 = load i32, ptr %797, align 4, !tbaa !5
  %799 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %786, ptr noundef @.str.3, i32 noundef %787, ptr noundef @.str.61, ptr noundef @.str.5, i32 noundef 288, ptr noundef %790, ptr noundef %793, ptr noundef %796, i32 noundef %798) #10
  br label %817

800:                                              ; preds = %778, %771
  %801 = load i32, ptr %27, align 4, !tbaa !5
  %802 = call ptr @__errno_location() #11
  store i32 %801, ptr %802, align 4, !tbaa !5
  %803 = load ptr, ptr @stderr, align 8, !tbaa !9
  %804 = load i32, ptr @test_count, align 4, !tbaa !5
  %805 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %806 = load i32, ptr %805, align 4, !tbaa !5
  %807 = call ptr @s2n_strerror(i32 noundef %806, ptr noundef @.str.6)
  %808 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %809 = load i32, ptr %808, align 4, !tbaa !5
  %810 = call ptr @s2n_strerror_debug(i32 noundef %809, ptr noundef @.str.6)
  %811 = call ptr @__errno_location() #11
  %812 = load i32, ptr %811, align 4, !tbaa !5
  %813 = call ptr @strerror(i32 noundef %812) #10
  %814 = call ptr @__errno_location() #11
  %815 = load i32, ptr %814, align 4, !tbaa !5
  %816 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %803, ptr noundef @.str.7, i32 noundef %804, ptr noundef @.str.61, ptr noundef @.str.5, i32 noundef 288, ptr noundef %807, ptr noundef %810, ptr noundef %813, i32 noundef %815) #10
  br label %817

817:                                              ; preds = %800, %783
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %818

818:                                              ; preds = %817
  br label %819

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

820:                                              ; No predecessors!
  br label %821

821:                                              ; preds = %820
  br label %822

822:                                              ; preds = %821, %762
  br label %823

823:                                              ; preds = %822
  br label %824

824:                                              ; preds = %823
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %825 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %825, ptr %28, align 8, !tbaa !9
  br label %826

826:                                              ; preds = %824
  %827 = load i32, ptr @test_count, align 4, !tbaa !5
  %828 = add nsw i32 %827, 1
  store i32 %828, ptr @test_count, align 4, !tbaa !5
  %829 = load ptr, ptr %28, align 8, !tbaa !9
  %830 = icmp eq ptr %829, null
  br i1 %830, label %831, label %884

831:                                              ; preds = %826
  br label %832

832:                                              ; preds = %831
  br label %833

833:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  %834 = call ptr @__errno_location() #11
  %835 = load i32, ptr %834, align 4, !tbaa !5
  store i32 %835, ptr %29, align 4, !tbaa !5
  %836 = load ptr, ptr @stderr, align 8, !tbaa !9
  %837 = call i32 @s2n_print_stacktrace(ptr noundef %836)
  %838 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %839 = trunc i8 %838 to i1
  br i1 %839, label %840, label %862

840:                                              ; preds = %833
  %841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %842 = call i32 @fileno(ptr noundef %841) #10
  %843 = call i32 @isatty(i32 noundef %842) #10
  %844 = icmp ne i32 %843, 0
  br i1 %844, label %845, label %862

845:                                              ; preds = %840
  %846 = load i32, ptr %29, align 4, !tbaa !5
  %847 = call ptr @__errno_location() #11
  store i32 %846, ptr %847, align 4, !tbaa !5
  %848 = load ptr, ptr @stderr, align 8, !tbaa !9
  %849 = load i32, ptr @test_count, align 4, !tbaa !5
  %850 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %851 = load i32, ptr %850, align 4, !tbaa !5
  %852 = call ptr @s2n_strerror(i32 noundef %851, ptr noundef @.str.6)
  %853 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %854 = load i32, ptr %853, align 4, !tbaa !5
  %855 = call ptr @s2n_strerror_debug(i32 noundef %854, ptr noundef @.str.6)
  %856 = call ptr @__errno_location() #11
  %857 = load i32, ptr %856, align 4, !tbaa !5
  %858 = call ptr @strerror(i32 noundef %857) #10
  %859 = call ptr @__errno_location() #11
  %860 = load i32, ptr %859, align 4, !tbaa !5
  %861 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %848, ptr noundef @.str.3, i32 noundef %849, ptr noundef @.str.62, ptr noundef @.str.5, i32 noundef 292, ptr noundef %852, ptr noundef %855, ptr noundef %858, i32 noundef %860) #10
  br label %879

862:                                              ; preds = %840, %833
  %863 = load i32, ptr %29, align 4, !tbaa !5
  %864 = call ptr @__errno_location() #11
  store i32 %863, ptr %864, align 4, !tbaa !5
  %865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %866 = load i32, ptr @test_count, align 4, !tbaa !5
  %867 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %868 = load i32, ptr %867, align 4, !tbaa !5
  %869 = call ptr @s2n_strerror(i32 noundef %868, ptr noundef @.str.6)
  %870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %871 = load i32, ptr %870, align 4, !tbaa !5
  %872 = call ptr @s2n_strerror_debug(i32 noundef %871, ptr noundef @.str.6)
  %873 = call ptr @__errno_location() #11
  %874 = load i32, ptr %873, align 4, !tbaa !5
  %875 = call ptr @strerror(i32 noundef %874) #10
  %876 = call ptr @__errno_location() #11
  %877 = load i32, ptr %876, align 4, !tbaa !5
  %878 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %865, ptr noundef @.str.7, i32 noundef %866, ptr noundef @.str.62, ptr noundef @.str.5, i32 noundef 292, ptr noundef %869, ptr noundef %872, ptr noundef %875, i32 noundef %877) #10
  br label %879

879:                                              ; preds = %862, %845
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %880

880:                                              ; preds = %879
  br label %881

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

882:                                              ; No predecessors!
  br label %883

883:                                              ; preds = %882
  br label %884

884:                                              ; preds = %883, %826
  br label %885

885:                                              ; preds = %884
  br label %886

886:                                              ; preds = %885
  br label %887

887:                                              ; preds = %886
  %888 = load i32, ptr @test_count, align 4, !tbaa !5
  %889 = add nsw i32 %888, 1
  store i32 %889, ptr @test_count, align 4, !tbaa !5
  %890 = load ptr, ptr %28, align 8, !tbaa !9
  %891 = call i32 @s2n_connection_set_blinding(ptr noundef %890, i32 noundef 1)
  %892 = icmp eq i32 %891, -1
  br i1 %892, label %893, label %946

893:                                              ; preds = %887
  br label %894

894:                                              ; preds = %893
  br label %895

895:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  %896 = call ptr @__errno_location() #11
  %897 = load i32, ptr %896, align 4, !tbaa !5
  store i32 %897, ptr %30, align 4, !tbaa !5
  %898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %899 = call i32 @s2n_print_stacktrace(ptr noundef %898)
  %900 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %901 = trunc i8 %900 to i1
  br i1 %901, label %902, label %924

902:                                              ; preds = %895
  %903 = load ptr, ptr @stderr, align 8, !tbaa !9
  %904 = call i32 @fileno(ptr noundef %903) #10
  %905 = call i32 @isatty(i32 noundef %904) #10
  %906 = icmp ne i32 %905, 0
  br i1 %906, label %907, label %924

907:                                              ; preds = %902
  %908 = load i32, ptr %30, align 4, !tbaa !5
  %909 = call ptr @__errno_location() #11
  store i32 %908, ptr %909, align 4, !tbaa !5
  %910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %911 = load i32, ptr @test_count, align 4, !tbaa !5
  %912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %913 = load i32, ptr %912, align 4, !tbaa !5
  %914 = call ptr @s2n_strerror(i32 noundef %913, ptr noundef @.str.6)
  %915 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %916 = load i32, ptr %915, align 4, !tbaa !5
  %917 = call ptr @s2n_strerror_debug(i32 noundef %916, ptr noundef @.str.6)
  %918 = call ptr @__errno_location() #11
  %919 = load i32, ptr %918, align 4, !tbaa !5
  %920 = call ptr @strerror(i32 noundef %919) #10
  %921 = call ptr @__errno_location() #11
  %922 = load i32, ptr %921, align 4, !tbaa !5
  %923 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %910, ptr noundef @.str.3, i32 noundef %911, ptr noundef @.str.63, ptr noundef @.str.5, i32 noundef 293, ptr noundef %914, ptr noundef %917, ptr noundef %920, i32 noundef %922) #10
  br label %941

924:                                              ; preds = %902, %895
  %925 = load i32, ptr %30, align 4, !tbaa !5
  %926 = call ptr @__errno_location() #11
  store i32 %925, ptr %926, align 4, !tbaa !5
  %927 = load ptr, ptr @stderr, align 8, !tbaa !9
  %928 = load i32, ptr @test_count, align 4, !tbaa !5
  %929 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %930 = load i32, ptr %929, align 4, !tbaa !5
  %931 = call ptr @s2n_strerror(i32 noundef %930, ptr noundef @.str.6)
  %932 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %933 = load i32, ptr %932, align 4, !tbaa !5
  %934 = call ptr @s2n_strerror_debug(i32 noundef %933, ptr noundef @.str.6)
  %935 = call ptr @__errno_location() #11
  %936 = load i32, ptr %935, align 4, !tbaa !5
  %937 = call ptr @strerror(i32 noundef %936) #10
  %938 = call ptr @__errno_location() #11
  %939 = load i32, ptr %938, align 4, !tbaa !5
  %940 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %927, ptr noundef @.str.7, i32 noundef %928, ptr noundef @.str.63, ptr noundef @.str.5, i32 noundef 293, ptr noundef %931, ptr noundef %934, ptr noundef %937, i32 noundef %939) #10
  br label %941

941:                                              ; preds = %924, %907
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %942

942:                                              ; preds = %941
  br label %943

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

944:                                              ; No predecessors!
  br label %945

945:                                              ; preds = %944
  br label %946

946:                                              ; preds = %945, %887
  br label %947

947:                                              ; preds = %946
  br label %948

948:                                              ; preds = %947
  br label %949

949:                                              ; preds = %948
  %950 = load i32, ptr @test_count, align 4, !tbaa !5
  %951 = add nsw i32 %950, 1
  store i32 %951, ptr @test_count, align 4, !tbaa !5
  %952 = load ptr, ptr %28, align 8, !tbaa !9
  %953 = load ptr, ptr %18, align 8, !tbaa !9
  %954 = call i32 @s2n_connection_set_config(ptr noundef %952, ptr noundef %953)
  %955 = icmp eq i32 %954, -1
  br i1 %955, label %956, label %1009

956:                                              ; preds = %949
  br label %957

957:                                              ; preds = %956
  br label %958

958:                                              ; preds = %957
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  %959 = call ptr @__errno_location() #11
  %960 = load i32, ptr %959, align 4, !tbaa !5
  store i32 %960, ptr %31, align 4, !tbaa !5
  %961 = load ptr, ptr @stderr, align 8, !tbaa !9
  %962 = call i32 @s2n_print_stacktrace(ptr noundef %961)
  %963 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %964 = trunc i8 %963 to i1
  br i1 %964, label %965, label %987

965:                                              ; preds = %958
  %966 = load ptr, ptr @stderr, align 8, !tbaa !9
  %967 = call i32 @fileno(ptr noundef %966) #10
  %968 = call i32 @isatty(i32 noundef %967) #10
  %969 = icmp ne i32 %968, 0
  br i1 %969, label %970, label %987

970:                                              ; preds = %965
  %971 = load i32, ptr %31, align 4, !tbaa !5
  %972 = call ptr @__errno_location() #11
  store i32 %971, ptr %972, align 4, !tbaa !5
  %973 = load ptr, ptr @stderr, align 8, !tbaa !9
  %974 = load i32, ptr @test_count, align 4, !tbaa !5
  %975 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %976 = load i32, ptr %975, align 4, !tbaa !5
  %977 = call ptr @s2n_strerror(i32 noundef %976, ptr noundef @.str.6)
  %978 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %979 = load i32, ptr %978, align 4, !tbaa !5
  %980 = call ptr @s2n_strerror_debug(i32 noundef %979, ptr noundef @.str.6)
  %981 = call ptr @__errno_location() #11
  %982 = load i32, ptr %981, align 4, !tbaa !5
  %983 = call ptr @strerror(i32 noundef %982) #10
  %984 = call ptr @__errno_location() #11
  %985 = load i32, ptr %984, align 4, !tbaa !5
  %986 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %973, ptr noundef @.str.3, i32 noundef %974, ptr noundef @.str.64, ptr noundef @.str.5, i32 noundef 294, ptr noundef %977, ptr noundef %980, ptr noundef %983, i32 noundef %985) #10
  br label %1004

987:                                              ; preds = %965, %958
  %988 = load i32, ptr %31, align 4, !tbaa !5
  %989 = call ptr @__errno_location() #11
  store i32 %988, ptr %989, align 4, !tbaa !5
  %990 = load ptr, ptr @stderr, align 8, !tbaa !9
  %991 = load i32, ptr @test_count, align 4, !tbaa !5
  %992 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %993 = load i32, ptr %992, align 4, !tbaa !5
  %994 = call ptr @s2n_strerror(i32 noundef %993, ptr noundef @.str.6)
  %995 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %996 = load i32, ptr %995, align 4, !tbaa !5
  %997 = call ptr @s2n_strerror_debug(i32 noundef %996, ptr noundef @.str.6)
  %998 = call ptr @__errno_location() #11
  %999 = load i32, ptr %998, align 4, !tbaa !5
  %1000 = call ptr @strerror(i32 noundef %999) #10
  %1001 = call ptr @__errno_location() #11
  %1002 = load i32, ptr %1001, align 4, !tbaa !5
  %1003 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %990, ptr noundef @.str.7, i32 noundef %991, ptr noundef @.str.64, ptr noundef @.str.5, i32 noundef 294, ptr noundef %994, ptr noundef %997, ptr noundef %1000, i32 noundef %1002) #10
  br label %1004

1004:                                             ; preds = %987, %970
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %1005

1005:                                             ; preds = %1004
  br label %1006

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

1007:                                             ; No predecessors!
  br label %1008

1008:                                             ; preds = %1007
  br label %1009

1009:                                             ; preds = %1008, %949
  br label %1010

1010:                                             ; preds = %1009
  br label %1011

1011:                                             ; preds = %1010
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %1012 = load i64, ptr %23, align 8, !tbaa !15
  %1013 = getelementptr inbounds [3 x ptr], ptr %12, i64 0, i64 %1012
  %1014 = load ptr, ptr %1013, align 8, !tbaa !9
  store ptr %1014, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #10
  %1015 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %33, i32 0, i32 0
  store i8 1, ptr %1015, align 8, !tbaa !23
  %1016 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %33, i32 0, i32 1
  store ptr %32, ptr %1016, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 64, ptr %34) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %34, ptr align 8 @security_policy_test_all_tls13, i64 64, i1 false), !tbaa.struct !26
  %1017 = getelementptr inbounds %struct.s2n_security_policy, ptr %34, i32 0, i32 3
  store ptr %33, ptr %1017, align 8, !tbaa !28
  %1018 = load ptr, ptr %28, align 8, !tbaa !9
  %1019 = getelementptr inbounds %struct.s2n_connection, ptr %1018, i32 0, i32 2
  store ptr %34, ptr %1019, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  call void @llvm.memset.p0.i64(ptr align 4 %35, i8 0, i64 8, i1 false)
  br label %1020

1020:                                             ; preds = %1011
  %1021 = load i32, ptr @test_count, align 4, !tbaa !5
  %1022 = add nsw i32 %1021, 1
  store i32 %1022, ptr @test_count, align 4, !tbaa !5
  %1023 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef %35)
  %1024 = icmp eq i32 %1023, -1
  br i1 %1024, label %1025, label %1078

1025:                                             ; preds = %1020
  br label %1026

1026:                                             ; preds = %1025
  br label %1027

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

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

1039:                                             ; preds = %1034
  %1040 = load i32, ptr %36, align 4, !tbaa !5
  %1041 = call ptr @__errno_location() #11
  store i32 %1040, ptr %1041, align 4, !tbaa !5
  %1042 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1043 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1045, ptr noundef @.str.6)
  %1047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1048 = load i32, ptr %1047, align 4, !tbaa !5
  %1049 = call ptr @s2n_strerror_debug(i32 noundef %1048, ptr noundef @.str.6)
  %1050 = call ptr @__errno_location() #11
  %1051 = load i32, ptr %1050, align 4, !tbaa !5
  %1052 = call ptr @strerror(i32 noundef %1051) #10
  %1053 = call ptr @__errno_location() #11
  %1054 = load i32, ptr %1053, align 4, !tbaa !5
  %1055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1042, ptr noundef @.str.3, i32 noundef %1043, ptr noundef @.str.65, ptr noundef @.str.5, i32 noundef 310, ptr noundef %1046, ptr noundef %1049, ptr noundef %1052, i32 noundef %1054) #10
  br label %1073

1056:                                             ; preds = %1034, %1027
  %1057 = load i32, ptr %36, align 4, !tbaa !5
  %1058 = call ptr @__errno_location() #11
  store i32 %1057, ptr %1058, align 4, !tbaa !5
  %1059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1060 = load i32, ptr @test_count, align 4, !tbaa !5
  %1061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1062 = load i32, ptr %1061, align 4, !tbaa !5
  %1063 = call ptr @s2n_strerror(i32 noundef %1062, ptr noundef @.str.6)
  %1064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1065 = load i32, ptr %1064, align 4, !tbaa !5
  %1066 = call ptr @s2n_strerror_debug(i32 noundef %1065, ptr noundef @.str.6)
  %1067 = call ptr @__errno_location() #11
  %1068 = load i32, ptr %1067, align 4, !tbaa !5
  %1069 = call ptr @strerror(i32 noundef %1068) #10
  %1070 = call ptr @__errno_location() #11
  %1071 = load i32, ptr %1070, align 4, !tbaa !5
  %1072 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1059, ptr noundef @.str.7, i32 noundef %1060, ptr noundef @.str.65, ptr noundef @.str.5, i32 noundef 310, ptr noundef %1063, ptr noundef %1066, ptr noundef %1069, i32 noundef %1071) #10
  br label %1073

1073:                                             ; preds = %1056, %1039
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %1074

1074:                                             ; preds = %1073
  br label %1075

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

1076:                                             ; No predecessors!
  br label %1077

1077:                                             ; preds = %1076
  br label %1078

1078:                                             ; preds = %1077, %1020
  br label %1079

1079:                                             ; preds = %1078
  br label %1080

1080:                                             ; preds = %1079
  br label %1081

1081:                                             ; preds = %1080
  %1082 = load i32, ptr @test_count, align 4, !tbaa !5
  %1083 = add nsw i32 %1082, 1
  store i32 %1083, ptr @test_count, align 4, !tbaa !5
  %1084 = load ptr, ptr %28, align 8, !tbaa !9
  %1085 = load ptr, ptr %24, align 8, !tbaa !9
  %1086 = call i32 @s2n_connections_set_io_pair(ptr noundef %1084, ptr noundef %1085, ptr noundef %35)
  %1087 = icmp eq i32 %1086, -1
  br i1 %1087, label %1088, label %1141

1088:                                             ; preds = %1081
  br label %1089

1089:                                             ; preds = %1088
  br label %1090

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

1097:                                             ; preds = %1090
  %1098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1099 = call i32 @fileno(ptr noundef %1098) #10
  %1100 = call i32 @isatty(i32 noundef %1099) #10
  %1101 = icmp ne i32 %1100, 0
  br i1 %1101, label %1102, label %1119

1102:                                             ; preds = %1097
  %1103 = load i32, ptr %37, align 4, !tbaa !5
  %1104 = call ptr @__errno_location() #11
  store i32 %1103, ptr %1104, align 4, !tbaa !5
  %1105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1106 = load i32, ptr @test_count, align 4, !tbaa !5
  %1107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1108 = load i32, ptr %1107, align 4, !tbaa !5
  %1109 = call ptr @s2n_strerror(i32 noundef %1108, ptr noundef @.str.6)
  %1110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1111 = load i32, ptr %1110, align 4, !tbaa !5
  %1112 = call ptr @s2n_strerror_debug(i32 noundef %1111, ptr noundef @.str.6)
  %1113 = call ptr @__errno_location() #11
  %1114 = load i32, ptr %1113, align 4, !tbaa !5
  %1115 = call ptr @strerror(i32 noundef %1114) #10
  %1116 = call ptr @__errno_location() #11
  %1117 = load i32, ptr %1116, align 4, !tbaa !5
  %1118 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1105, ptr noundef @.str.3, i32 noundef %1106, ptr noundef @.str.66, ptr noundef @.str.5, i32 noundef 311, ptr noundef %1109, ptr noundef %1112, ptr noundef %1115, i32 noundef %1117) #10
  br label %1136

1119:                                             ; preds = %1097, %1090
  %1120 = load i32, ptr %37, align 4, !tbaa !5
  %1121 = call ptr @__errno_location() #11
  store i32 %1120, ptr %1121, align 4, !tbaa !5
  %1122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1123 = load i32, ptr @test_count, align 4, !tbaa !5
  %1124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1125 = load i32, ptr %1124, align 4, !tbaa !5
  %1126 = call ptr @s2n_strerror(i32 noundef %1125, ptr noundef @.str.6)
  %1127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1128 = load i32, ptr %1127, align 4, !tbaa !5
  %1129 = call ptr @s2n_strerror_debug(i32 noundef %1128, ptr noundef @.str.6)
  %1130 = call ptr @__errno_location() #11
  %1131 = load i32, ptr %1130, align 4, !tbaa !5
  %1132 = call ptr @strerror(i32 noundef %1131) #10
  %1133 = call ptr @__errno_location() #11
  %1134 = load i32, ptr %1133, align 4, !tbaa !5
  %1135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1122, ptr noundef @.str.7, i32 noundef %1123, ptr noundef @.str.66, ptr noundef @.str.5, i32 noundef 311, ptr noundef %1126, ptr noundef %1129, ptr noundef %1132, i32 noundef %1134) #10
  br label %1136

1136:                                             ; preds = %1119, %1102
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %1137

1137:                                             ; preds = %1136
  br label %1138

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

1139:                                             ; No predecessors!
  br label %1140

1140:                                             ; preds = %1139
  br label %1141

1141:                                             ; preds = %1140, %1081
  br label %1142

1142:                                             ; preds = %1141
  br label %1143

1143:                                             ; preds = %1142
  br label %1144

1144:                                             ; preds = %1143
  %1145 = load i32, ptr @test_count, align 4, !tbaa !5
  %1146 = add nsw i32 %1145, 1
  store i32 %1146, ptr @test_count, align 4, !tbaa !5
  %1147 = load ptr, ptr %24, align 8, !tbaa !9
  %1148 = load ptr, ptr %28, align 8, !tbaa !9
  %1149 = call i32 @s2n_negotiate_test_server_and_client_until_message(ptr noundef %1147, ptr noundef %1148, i32 noundef 17)
  %1150 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  store i32 %1149, ptr %1150, align 4
  %1151 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  %1152 = load i32, ptr %1151, align 4
  %1153 = call zeroext i1 @s2n_result_is_ok(i32 %1152)
  br i1 %1153, label %1207, label %1154

1154:                                             ; preds = %1144
  br label %1155

1155:                                             ; preds = %1154
  br label %1156

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

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

1168:                                             ; preds = %1163
  %1169 = load i32, ptr %39, align 4, !tbaa !5
  %1170 = call ptr @__errno_location() #11
  store i32 %1169, ptr %1170, align 4, !tbaa !5
  %1171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1172 = load i32, ptr @test_count, align 4, !tbaa !5
  %1173 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1174 = load i32, ptr %1173, align 4, !tbaa !5
  %1175 = call ptr @s2n_strerror(i32 noundef %1174, ptr noundef @.str.6)
  %1176 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1177 = load i32, ptr %1176, align 4, !tbaa !5
  %1178 = call ptr @s2n_strerror_debug(i32 noundef %1177, ptr noundef @.str.6)
  %1179 = call ptr @__errno_location() #11
  %1180 = load i32, ptr %1179, align 4, !tbaa !5
  %1181 = call ptr @strerror(i32 noundef %1180) #10
  %1182 = call ptr @__errno_location() #11
  %1183 = load i32, ptr %1182, align 4, !tbaa !5
  %1184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1171, ptr noundef @.str.3, i32 noundef %1172, ptr noundef @.str.67, ptr noundef @.str.5, i32 noundef 315, ptr noundef %1175, ptr noundef %1178, ptr noundef %1181, i32 noundef %1183) #10
  br label %1202

1185:                                             ; preds = %1163, %1156
  %1186 = load i32, ptr %39, align 4, !tbaa !5
  %1187 = call ptr @__errno_location() #11
  store i32 %1186, ptr %1187, align 4, !tbaa !5
  %1188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1189 = load i32, ptr @test_count, align 4, !tbaa !5
  %1190 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1191 = load i32, ptr %1190, align 4, !tbaa !5
  %1192 = call ptr @s2n_strerror(i32 noundef %1191, ptr noundef @.str.6)
  %1193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1194 = load i32, ptr %1193, align 4, !tbaa !5
  %1195 = call ptr @s2n_strerror_debug(i32 noundef %1194, ptr noundef @.str.6)
  %1196 = call ptr @__errno_location() #11
  %1197 = load i32, ptr %1196, align 4, !tbaa !5
  %1198 = call ptr @strerror(i32 noundef %1197) #10
  %1199 = call ptr @__errno_location() #11
  %1200 = load i32, ptr %1199, align 4, !tbaa !5
  %1201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1188, ptr noundef @.str.7, i32 noundef %1189, ptr noundef @.str.67, ptr noundef @.str.5, i32 noundef 315, ptr noundef %1192, ptr noundef %1195, ptr noundef %1198, i32 noundef %1200) #10
  br label %1202

1202:                                             ; preds = %1185, %1168
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %1203

1203:                                             ; preds = %1202
  br label %1204

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

1205:                                             ; No predecessors!
  br label %1206

1206:                                             ; preds = %1205
  br label %1207

1207:                                             ; preds = %1206, %1144
  br label %1208

1208:                                             ; preds = %1207
  br label %1209

1209:                                             ; preds = %1208
  br label %1210

1210:                                             ; preds = %1209
  %1211 = load i32, ptr @test_count, align 4, !tbaa !5
  %1212 = add nsw i32 %1211, 1
  store i32 %1212, ptr @test_count, align 4, !tbaa !5
  %1213 = load ptr, ptr %24, align 8, !tbaa !9
  %1214 = getelementptr inbounds %struct.s2n_connection, ptr %1213, i32 0, i32 52
  %1215 = getelementptr inbounds %struct.s2n_handshake, ptr %1214, i32 0, i32 0
  %1216 = call i32 @s2n_stuffer_rewrite(ptr noundef %1215)
  %1217 = icmp eq i32 %1216, -1
  br i1 %1217, label %1218, label %1271

1218:                                             ; preds = %1210
  br label %1219

1219:                                             ; preds = %1218
  br label %1220

1220:                                             ; preds = %1219
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  %1221 = call ptr @__errno_location() #11
  %1222 = load i32, ptr %1221, align 4, !tbaa !5
  store i32 %1222, ptr %40, align 4, !tbaa !5
  %1223 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1224 = call i32 @s2n_print_stacktrace(ptr noundef %1223)
  %1225 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1226 = trunc i8 %1225 to i1
  br i1 %1226, label %1227, label %1249

1227:                                             ; preds = %1220
  %1228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1229 = call i32 @fileno(ptr noundef %1228) #10
  %1230 = call i32 @isatty(i32 noundef %1229) #10
  %1231 = icmp ne i32 %1230, 0
  br i1 %1231, label %1232, label %1249

1232:                                             ; preds = %1227
  %1233 = load i32, ptr %40, align 4, !tbaa !5
  %1234 = call ptr @__errno_location() #11
  store i32 %1233, ptr %1234, align 4, !tbaa !5
  %1235 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1236 = load i32, ptr @test_count, align 4, !tbaa !5
  %1237 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1238 = load i32, ptr %1237, align 4, !tbaa !5
  %1239 = call ptr @s2n_strerror(i32 noundef %1238, ptr noundef @.str.6)
  %1240 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1241 = load i32, ptr %1240, align 4, !tbaa !5
  %1242 = call ptr @s2n_strerror_debug(i32 noundef %1241, ptr noundef @.str.6)
  %1243 = call ptr @__errno_location() #11
  %1244 = load i32, ptr %1243, align 4, !tbaa !5
  %1245 = call ptr @strerror(i32 noundef %1244) #10
  %1246 = call ptr @__errno_location() #11
  %1247 = load i32, ptr %1246, align 4, !tbaa !5
  %1248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1235, ptr noundef @.str.3, i32 noundef %1236, ptr noundef @.str.68, ptr noundef @.str.5, i32 noundef 316, ptr noundef %1239, ptr noundef %1242, ptr noundef %1245, i32 noundef %1247) #10
  br label %1266

1249:                                             ; preds = %1227, %1220
  %1250 = load i32, ptr %40, align 4, !tbaa !5
  %1251 = call ptr @__errno_location() #11
  store i32 %1250, ptr %1251, align 4, !tbaa !5
  %1252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1253 = load i32, ptr @test_count, align 4, !tbaa !5
  %1254 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1255 = load i32, ptr %1254, align 4, !tbaa !5
  %1256 = call ptr @s2n_strerror(i32 noundef %1255, ptr noundef @.str.6)
  %1257 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1258 = load i32, ptr %1257, align 4, !tbaa !5
  %1259 = call ptr @s2n_strerror_debug(i32 noundef %1258, ptr noundef @.str.6)
  %1260 = call ptr @__errno_location() #11
  %1261 = load i32, ptr %1260, align 4, !tbaa !5
  %1262 = call ptr @strerror(i32 noundef %1261) #10
  %1263 = call ptr @__errno_location() #11
  %1264 = load i32, ptr %1263, align 4, !tbaa !5
  %1265 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1252, ptr noundef @.str.7, i32 noundef %1253, ptr noundef @.str.68, ptr noundef @.str.5, i32 noundef 316, ptr noundef %1256, ptr noundef %1259, ptr noundef %1262, i32 noundef %1264) #10
  br label %1266

1266:                                             ; preds = %1249, %1232
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %1267

1267:                                             ; preds = %1266
  br label %1268

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

1269:                                             ; No predecessors!
  br label %1270

1270:                                             ; preds = %1269
  br label %1271

1271:                                             ; preds = %1270, %1210
  br label %1272

1272:                                             ; preds = %1271
  br label %1273

1273:                                             ; preds = %1272
  br label %1274

1274:                                             ; preds = %1273
  %1275 = load i32, ptr @test_count, align 4, !tbaa !5
  %1276 = add nsw i32 %1275, 1
  store i32 %1276, ptr @test_count, align 4, !tbaa !5
  %1277 = load ptr, ptr %24, align 8, !tbaa !9
  %1278 = call i32 @s2n_tls13_cert_verify_send(ptr noundef %1277)
  %1279 = icmp eq i32 %1278, -1
  br i1 %1279, label %1280, label %1333

1280:                                             ; preds = %1274
  br label %1281

1281:                                             ; preds = %1280
  br label %1282

1282:                                             ; preds = %1281
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  %1283 = call ptr @__errno_location() #11
  %1284 = load i32, ptr %1283, align 4, !tbaa !5
  store i32 %1284, ptr %41, align 4, !tbaa !5
  %1285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1286 = call i32 @s2n_print_stacktrace(ptr noundef %1285)
  %1287 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1288 = trunc i8 %1287 to i1
  br i1 %1288, label %1289, label %1311

1289:                                             ; preds = %1282
  %1290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1291 = call i32 @fileno(ptr noundef %1290) #10
  %1292 = call i32 @isatty(i32 noundef %1291) #10
  %1293 = icmp ne i32 %1292, 0
  br i1 %1293, label %1294, label %1311

1294:                                             ; preds = %1289
  %1295 = load i32, ptr %41, align 4, !tbaa !5
  %1296 = call ptr @__errno_location() #11
  store i32 %1295, ptr %1296, align 4, !tbaa !5
  %1297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1298 = load i32, ptr @test_count, align 4, !tbaa !5
  %1299 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1300 = load i32, ptr %1299, align 4, !tbaa !5
  %1301 = call ptr @s2n_strerror(i32 noundef %1300, ptr noundef @.str.6)
  %1302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1303 = load i32, ptr %1302, align 4, !tbaa !5
  %1304 = call ptr @s2n_strerror_debug(i32 noundef %1303, ptr noundef @.str.6)
  %1305 = call ptr @__errno_location() #11
  %1306 = load i32, ptr %1305, align 4, !tbaa !5
  %1307 = call ptr @strerror(i32 noundef %1306) #10
  %1308 = call ptr @__errno_location() #11
  %1309 = load i32, ptr %1308, align 4, !tbaa !5
  %1310 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1297, ptr noundef @.str.3, i32 noundef %1298, ptr noundef @.str.69, ptr noundef @.str.5, i32 noundef 317, ptr noundef %1301, ptr noundef %1304, ptr noundef %1307, i32 noundef %1309) #10
  br label %1328

1311:                                             ; preds = %1289, %1282
  %1312 = load i32, ptr %41, align 4, !tbaa !5
  %1313 = call ptr @__errno_location() #11
  store i32 %1312, ptr %1313, align 4, !tbaa !5
  %1314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1315 = load i32, ptr @test_count, align 4, !tbaa !5
  %1316 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1317 = load i32, ptr %1316, align 4, !tbaa !5
  %1318 = call ptr @s2n_strerror(i32 noundef %1317, ptr noundef @.str.6)
  %1319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1320 = load i32, ptr %1319, align 4, !tbaa !5
  %1321 = call ptr @s2n_strerror_debug(i32 noundef %1320, ptr noundef @.str.6)
  %1322 = call ptr @__errno_location() #11
  %1323 = load i32, ptr %1322, align 4, !tbaa !5
  %1324 = call ptr @strerror(i32 noundef %1323) #10
  %1325 = call ptr @__errno_location() #11
  %1326 = load i32, ptr %1325, align 4, !tbaa !5
  %1327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1314, ptr noundef @.str.7, i32 noundef %1315, ptr noundef @.str.69, ptr noundef @.str.5, i32 noundef 317, ptr noundef %1318, ptr noundef %1321, ptr noundef %1324, i32 noundef %1326) #10
  br label %1328

1328:                                             ; preds = %1311, %1294
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %1329

1329:                                             ; preds = %1328
  br label %1330

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

1331:                                             ; No predecessors!
  br label %1332

1332:                                             ; preds = %1331
  br label %1333

1333:                                             ; preds = %1332, %1274
  br label %1334

1334:                                             ; preds = %1333
  br label %1335

1335:                                             ; preds = %1334
  br label %1336

1336:                                             ; preds = %1335
  %1337 = load i32, ptr @test_count, align 4, !tbaa !5
  %1338 = add nsw i32 %1337, 1
  store i32 %1338, ptr @test_count, align 4, !tbaa !5
  %1339 = load ptr, ptr %24, align 8, !tbaa !9
  %1340 = getelementptr inbounds %struct.s2n_connection, ptr %1339, i32 0, i32 32
  %1341 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %1340, i32 0, i32 5
  %1342 = load ptr, ptr %1341, align 8, !tbaa !56
  %1343 = getelementptr inbounds %struct.s2n_tls13_cert_verify_test, ptr %15, i32 0, i32 2
  %1344 = load ptr, ptr %1343, align 8, !tbaa !57
  %1345 = icmp eq ptr %1342, %1344
  br i1 %1345, label %1399, label %1346

1346:                                             ; preds = %1336
  br label %1347

1347:                                             ; preds = %1346
  br label %1348

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

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

1360:                                             ; preds = %1355
  %1361 = load i32, ptr %42, align 4, !tbaa !5
  %1362 = call ptr @__errno_location() #11
  store i32 %1361, ptr %1362, align 4, !tbaa !5
  %1363 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1364 = load i32, ptr @test_count, align 4, !tbaa !5
  %1365 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1366 = load i32, ptr %1365, align 4, !tbaa !5
  %1367 = call ptr @s2n_strerror(i32 noundef %1366, ptr noundef @.str.6)
  %1368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1369 = load i32, ptr %1368, align 4, !tbaa !5
  %1370 = call ptr @s2n_strerror_debug(i32 noundef %1369, ptr noundef @.str.6)
  %1371 = call ptr @__errno_location() #11
  %1372 = load i32, ptr %1371, align 4, !tbaa !5
  %1373 = call ptr @strerror(i32 noundef %1372) #10
  %1374 = call ptr @__errno_location() #11
  %1375 = load i32, ptr %1374, align 4, !tbaa !5
  %1376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1363, ptr noundef @.str.3, i32 noundef %1364, ptr noundef @.str.70, ptr noundef @.str.5, i32 noundef 320, ptr noundef %1367, ptr noundef %1370, ptr noundef %1373, i32 noundef %1375) #10
  br label %1394

1377:                                             ; preds = %1355, %1348
  %1378 = load i32, ptr %42, align 4, !tbaa !5
  %1379 = call ptr @__errno_location() #11
  store i32 %1378, ptr %1379, align 4, !tbaa !5
  %1380 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1381 = load i32, ptr @test_count, align 4, !tbaa !5
  %1382 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1383 = load i32, ptr %1382, align 4, !tbaa !5
  %1384 = call ptr @s2n_strerror(i32 noundef %1383, ptr noundef @.str.6)
  %1385 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1386 = load i32, ptr %1385, align 4, !tbaa !5
  %1387 = call ptr @s2n_strerror_debug(i32 noundef %1386, ptr noundef @.str.6)
  %1388 = call ptr @__errno_location() #11
  %1389 = load i32, ptr %1388, align 4, !tbaa !5
  %1390 = call ptr @strerror(i32 noundef %1389) #10
  %1391 = call ptr @__errno_location() #11
  %1392 = load i32, ptr %1391, align 4, !tbaa !5
  %1393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1380, ptr noundef @.str.7, i32 noundef %1381, ptr noundef @.str.70, ptr noundef @.str.5, i32 noundef 320, ptr noundef %1384, ptr noundef %1387, ptr noundef %1390, i32 noundef %1392) #10
  br label %1394

1394:                                             ; preds = %1377, %1360
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %1395

1395:                                             ; preds = %1394
  br label %1396

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

1397:                                             ; No predecessors!
  br label %1398

1398:                                             ; preds = %1397
  br label %1399

1399:                                             ; preds = %1398, %1336
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

1401:                                             ; preds = %1400
  call void @llvm.lifetime.start.p0(i64 40, ptr %43) #10
  %1402 = load ptr, ptr %24, align 8, !tbaa !9
  %1403 = getelementptr inbounds %struct.s2n_connection, ptr %1402, i32 0, i32 52
  %1404 = getelementptr inbounds %struct.s2n_handshake, ptr %1403, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %1404, i64 40, i1 false), !tbaa.struct !58
  br label %1405

1405:                                             ; preds = %1401
  %1406 = load i32, ptr @test_count, align 4, !tbaa !5
  %1407 = add nsw i32 %1406, 1
  store i32 %1407, ptr @test_count, align 4, !tbaa !5
  %1408 = call i32 @s2n_stuffer_rewrite(ptr noundef %43)
  %1409 = icmp eq i32 %1408, -1
  br i1 %1409, label %1410, label %1463

1410:                                             ; preds = %1405
  br label %1411

1411:                                             ; preds = %1410
  br label %1412

1412:                                             ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  %1413 = call ptr @__errno_location() #11
  %1414 = load i32, ptr %1413, align 4, !tbaa !5
  store i32 %1414, ptr %44, align 4, !tbaa !5
  %1415 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1416 = call i32 @s2n_print_stacktrace(ptr noundef %1415)
  %1417 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1418 = trunc i8 %1417 to i1
  br i1 %1418, label %1419, label %1441

1419:                                             ; preds = %1412
  %1420 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1421 = call i32 @fileno(ptr noundef %1420) #10
  %1422 = call i32 @isatty(i32 noundef %1421) #10
  %1423 = icmp ne i32 %1422, 0
  br i1 %1423, label %1424, label %1441

1424:                                             ; preds = %1419
  %1425 = load i32, ptr %44, align 4, !tbaa !5
  %1426 = call ptr @__errno_location() #11
  store i32 %1425, ptr %1426, align 4, !tbaa !5
  %1427 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1428 = load i32, ptr @test_count, align 4, !tbaa !5
  %1429 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1430 = load i32, ptr %1429, align 4, !tbaa !5
  %1431 = call ptr @s2n_strerror(i32 noundef %1430, ptr noundef @.str.6)
  %1432 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1433 = load i32, ptr %1432, align 4, !tbaa !5
  %1434 = call ptr @s2n_strerror_debug(i32 noundef %1433, ptr noundef @.str.6)
  %1435 = call ptr @__errno_location() #11
  %1436 = load i32, ptr %1435, align 4, !tbaa !5
  %1437 = call ptr @strerror(i32 noundef %1436) #10
  %1438 = call ptr @__errno_location() #11
  %1439 = load i32, ptr %1438, align 4, !tbaa !5
  %1440 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1427, ptr noundef @.str.3, i32 noundef %1428, ptr noundef @.str.71, ptr noundef @.str.5, i32 noundef 328, ptr noundef %1431, ptr noundef %1434, ptr noundef %1437, i32 noundef %1439) #10
  br label %1458

1441:                                             ; preds = %1419, %1412
  %1442 = load i32, ptr %44, align 4, !tbaa !5
  %1443 = call ptr @__errno_location() #11
  store i32 %1442, ptr %1443, align 4, !tbaa !5
  %1444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1445 = load i32, ptr @test_count, align 4, !tbaa !5
  %1446 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1447 = load i32, ptr %1446, align 4, !tbaa !5
  %1448 = call ptr @s2n_strerror(i32 noundef %1447, ptr noundef @.str.6)
  %1449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1450 = load i32, ptr %1449, align 4, !tbaa !5
  %1451 = call ptr @s2n_strerror_debug(i32 noundef %1450, ptr noundef @.str.6)
  %1452 = call ptr @__errno_location() #11
  %1453 = load i32, ptr %1452, align 4, !tbaa !5
  %1454 = call ptr @strerror(i32 noundef %1453) #10
  %1455 = call ptr @__errno_location() #11
  %1456 = load i32, ptr %1455, align 4, !tbaa !5
  %1457 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1444, ptr noundef @.str.7, i32 noundef %1445, ptr noundef @.str.71, ptr noundef @.str.5, i32 noundef 328, ptr noundef %1448, ptr noundef %1451, ptr noundef %1454, i32 noundef %1456) #10
  br label %1458

1458:                                             ; preds = %1441, %1424
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %1459

1459:                                             ; preds = %1458
  br label %1460

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

1461:                                             ; No predecessors!
  br label %1462

1462:                                             ; preds = %1461
  br label %1463

1463:                                             ; preds = %1462, %1405
  br label %1464

1464:                                             ; preds = %1463
  br label %1465

1465:                                             ; preds = %1464
  br label %1466

1466:                                             ; preds = %1465
  %1467 = load i32, ptr @test_count, align 4, !tbaa !5
  %1468 = add nsw i32 %1467, 1
  store i32 %1468, ptr @test_count, align 4, !tbaa !5
  %1469 = load ptr, ptr %32, align 8, !tbaa !9
  %1470 = getelementptr inbounds %struct.s2n_signature_scheme, ptr %1469, i32 0, i32 0
  %1471 = load i16, ptr %1470, align 8, !tbaa !59
  %1472 = call i32 @s2n_stuffer_write_uint16(ptr noundef %43, i16 noundef zeroext %1471)
  %1473 = icmp eq i32 %1472, -1
  br i1 %1473, label %1474, label %1527

1474:                                             ; preds = %1466
  br label %1475

1475:                                             ; preds = %1474
  br label %1476

1476:                                             ; preds = %1475
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  %1477 = call ptr @__errno_location() #11
  %1478 = load i32, ptr %1477, align 4, !tbaa !5
  store i32 %1478, ptr %45, align 4, !tbaa !5
  %1479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1480 = call i32 @s2n_print_stacktrace(ptr noundef %1479)
  %1481 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1482 = trunc i8 %1481 to i1
  br i1 %1482, label %1483, label %1505

1483:                                             ; preds = %1476
  %1484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1485 = call i32 @fileno(ptr noundef %1484) #10
  %1486 = call i32 @isatty(i32 noundef %1485) #10
  %1487 = icmp ne i32 %1486, 0
  br i1 %1487, label %1488, label %1505

1488:                                             ; preds = %1483
  %1489 = load i32, ptr %45, align 4, !tbaa !5
  %1490 = call ptr @__errno_location() #11
  store i32 %1489, ptr %1490, align 4, !tbaa !5
  %1491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1492 = load i32, ptr @test_count, align 4, !tbaa !5
  %1493 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1494 = load i32, ptr %1493, align 4, !tbaa !5
  %1495 = call ptr @s2n_strerror(i32 noundef %1494, ptr noundef @.str.6)
  %1496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1497 = load i32, ptr %1496, align 4, !tbaa !5
  %1498 = call ptr @s2n_strerror_debug(i32 noundef %1497, ptr noundef @.str.6)
  %1499 = call ptr @__errno_location() #11
  %1500 = load i32, ptr %1499, align 4, !tbaa !5
  %1501 = call ptr @strerror(i32 noundef %1500) #10
  %1502 = call ptr @__errno_location() #11
  %1503 = load i32, ptr %1502, align 4, !tbaa !5
  %1504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1491, ptr noundef @.str.3, i32 noundef %1492, ptr noundef @.str.72, ptr noundef @.str.5, i32 noundef 330, ptr noundef %1495, ptr noundef %1498, ptr noundef %1501, i32 noundef %1503) #10
  br label %1522

1505:                                             ; preds = %1483, %1476
  %1506 = load i32, ptr %45, align 4, !tbaa !5
  %1507 = call ptr @__errno_location() #11
  store i32 %1506, ptr %1507, align 4, !tbaa !5
  %1508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1509 = load i32, ptr @test_count, align 4, !tbaa !5
  %1510 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1511 = load i32, ptr %1510, align 4, !tbaa !5
  %1512 = call ptr @s2n_strerror(i32 noundef %1511, ptr noundef @.str.6)
  %1513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1514 = load i32, ptr %1513, align 4, !tbaa !5
  %1515 = call ptr @s2n_strerror_debug(i32 noundef %1514, ptr noundef @.str.6)
  %1516 = call ptr @__errno_location() #11
  %1517 = load i32, ptr %1516, align 4, !tbaa !5
  %1518 = call ptr @strerror(i32 noundef %1517) #10
  %1519 = call ptr @__errno_location() #11
  %1520 = load i32, ptr %1519, align 4, !tbaa !5
  %1521 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1508, ptr noundef @.str.7, i32 noundef %1509, ptr noundef @.str.72, ptr noundef @.str.5, i32 noundef 330, ptr noundef %1512, ptr noundef %1515, ptr noundef %1518, i32 noundef %1520) #10
  br label %1522

1522:                                             ; preds = %1505, %1488
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %1523

1523:                                             ; preds = %1522
  br label %1524

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

1525:                                             ; No predecessors!
  br label %1526

1526:                                             ; preds = %1525
  br label %1527

1527:                                             ; preds = %1526, %1466
  br label %1528

1528:                                             ; preds = %1527
  br label %1529

1529:                                             ; preds = %1528
  br label %1530

1530:                                             ; preds = %1529
  %1531 = load i32, ptr @test_count, align 4, !tbaa !5
  %1532 = add nsw i32 %1531, 1
  store i32 %1532, ptr @test_count, align 4, !tbaa !5
  %1533 = load ptr, ptr %28, align 8, !tbaa !9
  %1534 = getelementptr inbounds %struct.s2n_connection, ptr %1533, i32 0, i32 52
  %1535 = getelementptr inbounds %struct.s2n_handshake, ptr %1534, i32 0, i32 0
  %1536 = call i32 @s2n_stuffer_wipe(ptr noundef %1535)
  %1537 = icmp eq i32 %1536, -1
  br i1 %1537, label %1538, label %1591

1538:                                             ; preds = %1530
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

1540:                                             ; preds = %1539
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %1541 = call ptr @__errno_location() #11
  %1542 = load i32, ptr %1541, align 4, !tbaa !5
  store i32 %1542, ptr %46, align 4, !tbaa !5
  %1543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1544 = call i32 @s2n_print_stacktrace(ptr noundef %1543)
  %1545 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1546 = trunc i8 %1545 to i1
  br i1 %1546, label %1547, label %1569

1547:                                             ; preds = %1540
  %1548 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1549 = call i32 @fileno(ptr noundef %1548) #10
  %1550 = call i32 @isatty(i32 noundef %1549) #10
  %1551 = icmp ne i32 %1550, 0
  br i1 %1551, label %1552, label %1569

1552:                                             ; preds = %1547
  %1553 = load i32, ptr %46, align 4, !tbaa !5
  %1554 = call ptr @__errno_location() #11
  store i32 %1553, ptr %1554, align 4, !tbaa !5
  %1555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1556 = load i32, ptr @test_count, align 4, !tbaa !5
  %1557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1558 = load i32, ptr %1557, align 4, !tbaa !5
  %1559 = call ptr @s2n_strerror(i32 noundef %1558, ptr noundef @.str.6)
  %1560 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1561 = load i32, ptr %1560, align 4, !tbaa !5
  %1562 = call ptr @s2n_strerror_debug(i32 noundef %1561, ptr noundef @.str.6)
  %1563 = call ptr @__errno_location() #11
  %1564 = load i32, ptr %1563, align 4, !tbaa !5
  %1565 = call ptr @strerror(i32 noundef %1564) #10
  %1566 = call ptr @__errno_location() #11
  %1567 = load i32, ptr %1566, align 4, !tbaa !5
  %1568 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1555, ptr noundef @.str.3, i32 noundef %1556, ptr noundef @.str.73, ptr noundef @.str.5, i32 noundef 332, ptr noundef %1559, ptr noundef %1562, ptr noundef %1565, i32 noundef %1567) #10
  br label %1586

1569:                                             ; preds = %1547, %1540
  %1570 = load i32, ptr %46, align 4, !tbaa !5
  %1571 = call ptr @__errno_location() #11
  store i32 %1570, ptr %1571, align 4, !tbaa !5
  %1572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1573 = load i32, ptr @test_count, align 4, !tbaa !5
  %1574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1575 = load i32, ptr %1574, align 4, !tbaa !5
  %1576 = call ptr @s2n_strerror(i32 noundef %1575, ptr noundef @.str.6)
  %1577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1578 = load i32, ptr %1577, align 4, !tbaa !5
  %1579 = call ptr @s2n_strerror_debug(i32 noundef %1578, ptr noundef @.str.6)
  %1580 = call ptr @__errno_location() #11
  %1581 = load i32, ptr %1580, align 4, !tbaa !5
  %1582 = call ptr @strerror(i32 noundef %1581) #10
  %1583 = call ptr @__errno_location() #11
  %1584 = load i32, ptr %1583, align 4, !tbaa !5
  %1585 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1572, ptr noundef @.str.7, i32 noundef %1573, ptr noundef @.str.73, ptr noundef @.str.5, i32 noundef 332, ptr noundef %1576, ptr noundef %1579, ptr noundef %1582, i32 noundef %1584) #10
  br label %1586

1586:                                             ; preds = %1569, %1552
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %1587

1587:                                             ; preds = %1586
  br label %1588

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

1589:                                             ; No predecessors!
  br label %1590

1590:                                             ; preds = %1589
  br label %1591

1591:                                             ; preds = %1590, %1530
  br label %1592

1592:                                             ; preds = %1591
  br label %1593

1593:                                             ; preds = %1592
  br label %1594

1594:                                             ; preds = %1593
  %1595 = load i32, ptr @test_count, align 4, !tbaa !5
  %1596 = add nsw i32 %1595, 1
  store i32 %1596, ptr @test_count, align 4, !tbaa !5
  %1597 = load ptr, ptr %24, align 8, !tbaa !9
  %1598 = getelementptr inbounds %struct.s2n_connection, ptr %1597, i32 0, i32 52
  %1599 = getelementptr inbounds %struct.s2n_handshake, ptr %1598, i32 0, i32 0
  %1600 = load ptr, ptr %28, align 8, !tbaa !9
  %1601 = getelementptr inbounds %struct.s2n_connection, ptr %1600, i32 0, i32 52
  %1602 = getelementptr inbounds %struct.s2n_handshake, ptr %1601, i32 0, i32 0
  %1603 = load ptr, ptr %24, align 8, !tbaa !9
  %1604 = getelementptr inbounds %struct.s2n_connection, ptr %1603, i32 0, i32 52
  %1605 = getelementptr inbounds %struct.s2n_handshake, ptr %1604, i32 0, i32 0
  %1606 = getelementptr inbounds %struct.s2n_stuffer, ptr %1605, i32 0, i32 2
  %1607 = load i32, ptr %1606, align 4, !tbaa !61
  %1608 = load ptr, ptr %24, align 8, !tbaa !9
  %1609 = getelementptr inbounds %struct.s2n_connection, ptr %1608, i32 0, i32 52
  %1610 = getelementptr inbounds %struct.s2n_handshake, ptr %1609, i32 0, i32 0
  %1611 = getelementptr inbounds %struct.s2n_stuffer, ptr %1610, i32 0, i32 1
  %1612 = load i32, ptr %1611, align 8, !tbaa !62
  %1613 = sub i32 %1607, %1612
  %1614 = call i32 @s2n_stuffer_copy(ptr noundef %1599, ptr noundef %1602, i32 noundef %1613)
  %1615 = icmp eq i32 %1614, -1
  br i1 %1615, label %1616, label %1669

1616:                                             ; preds = %1594
  br label %1617

1617:                                             ; preds = %1616
  br label %1618

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

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

1630:                                             ; preds = %1625
  %1631 = load i32, ptr %47, align 4, !tbaa !5
  %1632 = call ptr @__errno_location() #11
  store i32 %1631, ptr %1632, align 4, !tbaa !5
  %1633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1634 = load i32, ptr @test_count, align 4, !tbaa !5
  %1635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1636 = load i32, ptr %1635, align 4, !tbaa !5
  %1637 = call ptr @s2n_strerror(i32 noundef %1636, ptr noundef @.str.6)
  %1638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1639 = load i32, ptr %1638, align 4, !tbaa !5
  %1640 = call ptr @s2n_strerror_debug(i32 noundef %1639, ptr noundef @.str.6)
  %1641 = call ptr @__errno_location() #11
  %1642 = load i32, ptr %1641, align 4, !tbaa !5
  %1643 = call ptr @strerror(i32 noundef %1642) #10
  %1644 = call ptr @__errno_location() #11
  %1645 = load i32, ptr %1644, align 4, !tbaa !5
  %1646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1633, ptr noundef @.str.3, i32 noundef %1634, ptr noundef @.str.74, ptr noundef @.str.5, i32 noundef 334, ptr noundef %1637, ptr noundef %1640, ptr noundef %1643, i32 noundef %1645) #10
  br label %1664

1647:                                             ; preds = %1625, %1618
  %1648 = load i32, ptr %47, align 4, !tbaa !5
  %1649 = call ptr @__errno_location() #11
  store i32 %1648, ptr %1649, align 4, !tbaa !5
  %1650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1651 = load i32, ptr @test_count, align 4, !tbaa !5
  %1652 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1653 = load i32, ptr %1652, align 4, !tbaa !5
  %1654 = call ptr @s2n_strerror(i32 noundef %1653, ptr noundef @.str.6)
  %1655 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1656 = load i32, ptr %1655, align 4, !tbaa !5
  %1657 = call ptr @s2n_strerror_debug(i32 noundef %1656, ptr noundef @.str.6)
  %1658 = call ptr @__errno_location() #11
  %1659 = load i32, ptr %1658, align 4, !tbaa !5
  %1660 = call ptr @strerror(i32 noundef %1659) #10
  %1661 = call ptr @__errno_location() #11
  %1662 = load i32, ptr %1661, align 4, !tbaa !5
  %1663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1650, ptr noundef @.str.7, i32 noundef %1651, ptr noundef @.str.74, ptr noundef @.str.5, i32 noundef 334, ptr noundef %1654, ptr noundef %1657, ptr noundef %1660, i32 noundef %1662) #10
  br label %1664

1664:                                             ; preds = %1647, %1630
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

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

1667:                                             ; No predecessors!
  br label %1668

1668:                                             ; preds = %1667
  br label %1669

1669:                                             ; preds = %1668, %1594
  br label %1670

1670:                                             ; preds = %1669
  br label %1671

1671:                                             ; preds = %1670
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %1672 = load ptr, ptr %28, align 8, !tbaa !9
  %1673 = call i32 @s2n_tls13_cert_verify_recv(ptr noundef %1672)
  store i32 %1673, ptr %48, align 4, !tbaa !5
  %1674 = load ptr, ptr %32, align 8, !tbaa !9
  %1675 = getelementptr inbounds %struct.s2n_tls13_cert_verify_test, ptr %15, i32 0, i32 2
  %1676 = load ptr, ptr %1675, align 8, !tbaa !57
  %1677 = icmp eq ptr %1674, %1676
  br i1 %1677, label %1678, label %1740

1678:                                             ; preds = %1671
  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 = load i32, ptr %48, align 4, !tbaa !5
  %1683 = icmp eq i32 %1682, -1
  br i1 %1683, label %1684, label %1737

1684:                                             ; preds = %1679
  br label %1685

1685:                                             ; preds = %1684
  br label %1686

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

1693:                                             ; preds = %1686
  %1694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1695 = call i32 @fileno(ptr noundef %1694) #10
  %1696 = call i32 @isatty(i32 noundef %1695) #10
  %1697 = icmp ne i32 %1696, 0
  br i1 %1697, label %1698, label %1715

1698:                                             ; preds = %1693
  %1699 = load i32, ptr %49, align 4, !tbaa !5
  %1700 = call ptr @__errno_location() #11
  store i32 %1699, ptr %1700, align 4, !tbaa !5
  %1701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1702 = load i32, ptr @test_count, align 4, !tbaa !5
  %1703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1704 = load i32, ptr %1703, align 4, !tbaa !5
  %1705 = call ptr @s2n_strerror(i32 noundef %1704, ptr noundef @.str.6)
  %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_debug(i32 noundef %1707, ptr noundef @.str.6)
  %1709 = call ptr @__errno_location() #11
  %1710 = load i32, ptr %1709, align 4, !tbaa !5
  %1711 = call ptr @strerror(i32 noundef %1710) #10
  %1712 = call ptr @__errno_location() #11
  %1713 = load i32, ptr %1712, align 4, !tbaa !5
  %1714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1701, ptr noundef @.str.3, i32 noundef %1702, ptr noundef @.str.75, ptr noundef @.str.5, i32 noundef 342, ptr noundef %1705, ptr noundef %1708, ptr noundef %1711, i32 noundef %1713) #10
  br label %1732

1715:                                             ; preds = %1693, %1686
  %1716 = load i32, ptr %49, align 4, !tbaa !5
  %1717 = call ptr @__errno_location() #11
  store i32 %1716, ptr %1717, align 4, !tbaa !5
  %1718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1719 = load i32, ptr @test_count, align 4, !tbaa !5
  %1720 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1721 = load i32, ptr %1720, align 4, !tbaa !5
  %1722 = call ptr @s2n_strerror(i32 noundef %1721, ptr noundef @.str.6)
  %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_debug(i32 noundef %1724, ptr noundef @.str.6)
  %1726 = call ptr @__errno_location() #11
  %1727 = load i32, ptr %1726, align 4, !tbaa !5
  %1728 = call ptr @strerror(i32 noundef %1727) #10
  %1729 = call ptr @__errno_location() #11
  %1730 = load i32, ptr %1729, align 4, !tbaa !5
  %1731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1718, ptr noundef @.str.7, i32 noundef %1719, ptr noundef @.str.75, ptr noundef @.str.5, i32 noundef 342, ptr noundef %1722, ptr noundef %1725, ptr noundef %1728, i32 noundef %1730) #10
  br label %1732

1732:                                             ; preds = %1715, %1698
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %1733

1733:                                             ; preds = %1732
  br label %1734

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

1735:                                             ; No predecessors!
  br label %1736

1736:                                             ; preds = %1735
  br label %1737

1737:                                             ; preds = %1736, %1679
  br label %1738

1738:                                             ; preds = %1737
  br label %1739

1739:                                             ; preds = %1738
  br label %1938

1740:                                             ; preds = %1671
  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 = load i32, ptr %48, align 4, !tbaa !5
  %1747 = icmp eq i32 %1746, -1
  br i1 %1747, label %1801, label %1748

1748:                                             ; preds = %1743
  br label %1749

1749:                                             ; preds = %1748
  br label %1750

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

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

1762:                                             ; preds = %1757
  %1763 = load i32, ptr %50, align 4, !tbaa !5
  %1764 = call ptr @__errno_location() #11
  store i32 %1763, ptr %1764, align 4, !tbaa !5
  %1765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1766 = load i32, ptr @test_count, align 4, !tbaa !5
  %1767 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1768 = load i32, ptr %1767, align 4, !tbaa !5
  %1769 = call ptr @s2n_strerror(i32 noundef %1768, ptr noundef @.str.6)
  %1770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1771 = load i32, ptr %1770, align 4, !tbaa !5
  %1772 = call ptr @s2n_strerror_debug(i32 noundef %1771, ptr noundef @.str.6)
  %1773 = call ptr @__errno_location() #11
  %1774 = load i32, ptr %1773, align 4, !tbaa !5
  %1775 = call ptr @strerror(i32 noundef %1774) #10
  %1776 = call ptr @__errno_location() #11
  %1777 = load i32, ptr %1776, align 4, !tbaa !5
  %1778 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1765, ptr noundef @.str.3, i32 noundef %1766, ptr noundef @.str.76, ptr noundef @.str.5, i32 noundef 348, ptr noundef %1769, ptr noundef %1772, ptr noundef %1775, i32 noundef %1777) #10
  br label %1796

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

1796:                                             ; preds = %1779, %1762
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %1797

1797:                                             ; preds = %1796
  br label %1798

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

1799:                                             ; No predecessors!
  br label %1800

1800:                                             ; preds = %1799
  br label %1801

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

1802:                                             ; preds = %1801
  br label %1803

1803:                                             ; preds = %1802
  br label %1804

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

1810:                                             ; preds = %1804
  br label %1811

1811:                                             ; preds = %1810
  br label %1812

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

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

1824:                                             ; preds = %1819
  %1825 = load i32, ptr %51, align 4, !tbaa !5
  %1826 = call ptr @__errno_location() #11
  store i32 %1825, ptr %1826, align 4, !tbaa !5
  %1827 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1828 = load i32, ptr @test_count, align 4, !tbaa !5
  %1829 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1830 = load i32, ptr %1829, align 4, !tbaa !5
  %1831 = call ptr @s2n_strerror(i32 noundef %1830, ptr noundef @.str.6)
  %1832 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1833 = load i32, ptr %1832, align 4, !tbaa !5
  %1834 = call ptr @s2n_strerror_debug(i32 noundef %1833, ptr noundef @.str.6)
  %1835 = call ptr @__errno_location() #11
  %1836 = load i32, ptr %1835, align 4, !tbaa !5
  %1837 = call ptr @strerror(i32 noundef %1836) #10
  %1838 = call ptr @__errno_location() #11
  %1839 = load i32, ptr %1838, align 4, !tbaa !5
  %1840 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1827, ptr noundef @.str.3, i32 noundef %1828, ptr noundef @.str.77, ptr noundef @.str.5, i32 noundef 348, ptr noundef %1831, ptr noundef %1834, ptr noundef %1837, i32 noundef %1839) #10
  br label %1858

1841:                                             ; preds = %1819, %1812
  %1842 = load i32, ptr %51, align 4, !tbaa !5
  %1843 = call ptr @__errno_location() #11
  store i32 %1842, ptr %1843, align 4, !tbaa !5
  %1844 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1845 = load i32, ptr @test_count, align 4, !tbaa !5
  %1846 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1847 = load i32, ptr %1846, align 4, !tbaa !5
  %1848 = call ptr @s2n_strerror(i32 noundef %1847, ptr noundef @.str.6)
  %1849 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1850 = load i32, ptr %1849, align 4, !tbaa !5
  %1851 = call ptr @s2n_strerror_debug(i32 noundef %1850, ptr noundef @.str.6)
  %1852 = call ptr @__errno_location() #11
  %1853 = load i32, ptr %1852, align 4, !tbaa !5
  %1854 = call ptr @strerror(i32 noundef %1853) #10
  %1855 = call ptr @__errno_location() #11
  %1856 = load i32, ptr %1855, align 4, !tbaa !5
  %1857 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1844, ptr noundef @.str.7, i32 noundef %1845, ptr noundef @.str.77, ptr noundef @.str.5, i32 noundef 348, ptr noundef %1848, ptr noundef %1851, ptr noundef %1854, i32 noundef %1856) #10
  br label %1858

1858:                                             ; preds = %1841, %1824
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %1859

1859:                                             ; preds = %1858
  br label %1860

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

1861:                                             ; No predecessors!
  br label %1862

1862:                                             ; preds = %1861
  br label %1863

1863:                                             ; preds = %1862, %1804
  br label %1864

1864:                                             ; preds = %1863
  br label %1865

1865:                                             ; preds = %1864
  br label %1866

1866:                                             ; preds = %1865
  %1867 = load i32, ptr @test_count, align 4, !tbaa !5
  %1868 = add nsw i32 %1867, 1
  store i32 %1868, ptr @test_count, align 4, !tbaa !5
  %1869 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1870 = load i32, ptr %1869, align 4, !tbaa !5
  %1871 = call ptr @s2n_strerror_debug(i32 noundef %1870, ptr noundef @.str.6)
  %1872 = icmp eq ptr %1871, null
  br i1 %1872, label %1873, label %1926

1873:                                             ; preds = %1866
  br label %1874

1874:                                             ; preds = %1873
  br label %1875

1875:                                             ; preds = %1874
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %1876 = call ptr @__errno_location() #11
  %1877 = load i32, ptr %1876, align 4, !tbaa !5
  store i32 %1877, ptr %52, align 4, !tbaa !5
  %1878 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1879 = call i32 @s2n_print_stacktrace(ptr noundef %1878)
  %1880 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1881 = trunc i8 %1880 to i1
  br i1 %1881, label %1882, label %1904

1882:                                             ; preds = %1875
  %1883 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1884 = call i32 @fileno(ptr noundef %1883) #10
  %1885 = call i32 @isatty(i32 noundef %1884) #10
  %1886 = icmp ne i32 %1885, 0
  br i1 %1886, label %1887, label %1904

1887:                                             ; preds = %1882
  %1888 = load i32, ptr %52, align 4, !tbaa !5
  %1889 = call ptr @__errno_location() #11
  store i32 %1888, ptr %1889, align 4, !tbaa !5
  %1890 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1891 = load i32, ptr @test_count, align 4, !tbaa !5
  %1892 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1893 = load i32, ptr %1892, align 4, !tbaa !5
  %1894 = call ptr @s2n_strerror(i32 noundef %1893, ptr noundef @.str.6)
  %1895 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1896 = load i32, ptr %1895, align 4, !tbaa !5
  %1897 = call ptr @s2n_strerror_debug(i32 noundef %1896, ptr noundef @.str.6)
  %1898 = call ptr @__errno_location() #11
  %1899 = load i32, ptr %1898, align 4, !tbaa !5
  %1900 = call ptr @strerror(i32 noundef %1899) #10
  %1901 = call ptr @__errno_location() #11
  %1902 = load i32, ptr %1901, align 4, !tbaa !5
  %1903 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1890, ptr noundef @.str.3, i32 noundef %1891, ptr noundef @.str.38, ptr noundef @.str.5, i32 noundef 348, ptr noundef %1894, ptr noundef %1897, ptr noundef %1900, i32 noundef %1902) #10
  br label %1921

1904:                                             ; preds = %1882, %1875
  %1905 = load i32, ptr %52, align 4, !tbaa !5
  %1906 = call ptr @__errno_location() #11
  store i32 %1905, ptr %1906, align 4, !tbaa !5
  %1907 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1908 = load i32, ptr @test_count, align 4, !tbaa !5
  %1909 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1910 = load i32, ptr %1909, align 4, !tbaa !5
  %1911 = call ptr @s2n_strerror(i32 noundef %1910, ptr noundef @.str.6)
  %1912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1913 = load i32, ptr %1912, align 4, !tbaa !5
  %1914 = call ptr @s2n_strerror_debug(i32 noundef %1913, ptr noundef @.str.6)
  %1915 = call ptr @__errno_location() #11
  %1916 = load i32, ptr %1915, align 4, !tbaa !5
  %1917 = call ptr @strerror(i32 noundef %1916) #10
  %1918 = call ptr @__errno_location() #11
  %1919 = load i32, ptr %1918, align 4, !tbaa !5
  %1920 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1907, ptr noundef @.str.7, i32 noundef %1908, ptr noundef @.str.38, ptr noundef @.str.5, i32 noundef 348, ptr noundef %1911, ptr noundef %1914, ptr noundef %1917, i32 noundef %1919) #10
  br label %1921

1921:                                             ; preds = %1904, %1887
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %1922

1922:                                             ; preds = %1921
  br label %1923

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

1924:                                             ; No predecessors!
  br label %1925

1925:                                             ; preds = %1924
  br label %1926

1926:                                             ; preds = %1925, %1866
  br label %1927

1927:                                             ; preds = %1926
  br label %1928

1928:                                             ; preds = %1927
  br label %1929

1929:                                             ; preds = %1928
  br label %1930

1930:                                             ; preds = %1929
  br label %1931

1931:                                             ; preds = %1930
  %1932 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1932, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1933 = call ptr @__errno_location() #11
  store i32 0, ptr %1933, align 4, !tbaa !5
  br label %1934

1934:                                             ; preds = %1931
  br label %1935

1935:                                             ; preds = %1934
  br label %1936

1936:                                             ; preds = %1935
  br label %1937

1937:                                             ; preds = %1936
  br label %1938

1938:                                             ; preds = %1937, %1739
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %43) #10
  %1939 = call i32 @s2n_io_pair_close(ptr noundef %35)
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  %1940 = call i32 @s2n_connection_ptr_free(ptr noundef %28)
  %1941 = getelementptr inbounds %struct.s2n_result, ptr %53, i32 0, i32 0
  store i32 %1940, ptr %1941, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  %1942 = call i32 @s2n_connection_ptr_free(ptr noundef %24)
  %1943 = getelementptr inbounds %struct.s2n_result, ptr %54, i32 0, i32 0
  store i32 %1942, ptr %1943, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  br label %1944

1944:                                             ; preds = %1938
  %1945 = load i64, ptr %23, align 8, !tbaa !15
  %1946 = add i64 %1945, 1
  store i64 %1946, ptr %23, align 8, !tbaa !15
  br label %633, !llvm.loop !63

1947:                                             ; preds = %636
  %1948 = call i32 @s2n_config_ptr_free(ptr noundef %18)
  %1949 = getelementptr inbounds %struct.s2n_result, ptr %55, i32 0, i32 0
  store i32 %1948, ptr %1949, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  %1950 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %16)
  %1951 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  store i32 %1950, ptr %1951, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #10
  br label %1952

1952:                                             ; preds = %1947
  %1953 = load i64, ptr %13, align 8, !tbaa !15
  %1954 = add i64 %1953, 1
  store i64 %1954, ptr %13, align 8, !tbaa !15
  br label %312, !llvm.loop !64

1955:                                             ; preds = %315
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %11) #10
  br label %1956

1956:                                             ; preds = %1955, %309
  br label %1957

1957:                                             ; preds = %1956
  br label %1958

1958:                                             ; preds = %1957
  %1959 = call i32 @s2n_cleanup()
  %1960 = icmp eq i32 %1959, -1
  br i1 %1960, label %1961, label %2012

1961:                                             ; preds = %1958
  br label %1962

1962:                                             ; preds = %1961
  br label %1963

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

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

1975:                                             ; preds = %1970
  %1976 = load i32, ptr %57, align 4, !tbaa !5
  %1977 = call ptr @__errno_location() #11
  store i32 %1976, ptr %1977, align 4, !tbaa !5
  %1978 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1979 = load i32, ptr @test_count, align 4, !tbaa !5
  %1980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1981 = load i32, ptr %1980, align 4, !tbaa !5
  %1982 = call ptr @s2n_strerror(i32 noundef %1981, ptr noundef @.str.6)
  %1983 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1984 = load i32, ptr %1983, align 4, !tbaa !5
  %1985 = call ptr @s2n_strerror_debug(i32 noundef %1984, ptr noundef @.str.6)
  %1986 = call ptr @__errno_location() #11
  %1987 = load i32, ptr %1986, align 4, !tbaa !5
  %1988 = call ptr @strerror(i32 noundef %1987) #10
  %1989 = call ptr @__errno_location() #11
  %1990 = load i32, ptr %1989, align 4, !tbaa !5
  %1991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1978, ptr noundef @.str.3, i32 noundef %1979, ptr noundef @.str.78, ptr noundef @.str.5, i32 noundef 354, ptr noundef %1982, ptr noundef %1985, ptr noundef %1988, i32 noundef %1990) #10
  br label %2009

1992:                                             ; preds = %1970, %1963
  %1993 = load i32, ptr %57, align 4, !tbaa !5
  %1994 = call ptr @__errno_location() #11
  store i32 %1993, ptr %1994, align 4, !tbaa !5
  %1995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1996 = load i32, ptr @test_count, align 4, !tbaa !5
  %1997 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1998 = load i32, ptr %1997, align 4, !tbaa !5
  %1999 = call ptr @s2n_strerror(i32 noundef %1998, ptr noundef @.str.6)
  %2000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2001 = load i32, ptr %2000, align 4, !tbaa !5
  %2002 = call ptr @s2n_strerror_debug(i32 noundef %2001, ptr noundef @.str.6)
  %2003 = call ptr @__errno_location() #11
  %2004 = load i32, ptr %2003, align 4, !tbaa !5
  %2005 = call ptr @strerror(i32 noundef %2004) #10
  %2006 = call ptr @__errno_location() #11
  %2007 = load i32, ptr %2006, align 4, !tbaa !5
  %2008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1995, ptr noundef @.str.7, i32 noundef %1996, ptr noundef @.str.78, ptr noundef @.str.5, i32 noundef 354, ptr noundef %1999, ptr noundef %2002, ptr noundef %2005, i32 noundef %2007) #10
  br label %2009

2009:                                             ; preds = %1992, %1975
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %2010

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

2011:                                             ; No predecessors!
  br label %2012

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

2013:                                             ; preds = %2012
  br label %2014

2014:                                             ; preds = %2013
  br label %2015

2015:                                             ; preds = %2014
  %2016 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %2017 = icmp eq i32 %2016, -1
  br i1 %2017, label %2018, label %2069

2018:                                             ; preds = %2015
  br label %2019

2019:                                             ; preds = %2018
  br label %2020

2020:                                             ; preds = %2019
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  %2021 = call ptr @__errno_location() #11
  %2022 = load i32, ptr %2021, align 4, !tbaa !5
  store i32 %2022, ptr %58, align 4, !tbaa !5
  %2023 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2024 = call i32 @s2n_print_stacktrace(ptr noundef %2023)
  %2025 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2026 = trunc i8 %2025 to i1
  br i1 %2026, label %2027, label %2049

2027:                                             ; preds = %2020
  %2028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2029 = call i32 @fileno(ptr noundef %2028) #10
  %2030 = call i32 @isatty(i32 noundef %2029) #10
  %2031 = icmp ne i32 %2030, 0
  br i1 %2031, label %2032, label %2049

2032:                                             ; preds = %2027
  %2033 = load i32, ptr %58, align 4, !tbaa !5
  %2034 = call ptr @__errno_location() #11
  store i32 %2033, ptr %2034, align 4, !tbaa !5
  %2035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2036 = load i32, ptr @test_count, align 4, !tbaa !5
  %2037 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2038 = load i32, ptr %2037, align 4, !tbaa !5
  %2039 = call ptr @s2n_strerror(i32 noundef %2038, ptr noundef @.str.6)
  %2040 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2041 = load i32, ptr %2040, align 4, !tbaa !5
  %2042 = call ptr @s2n_strerror_debug(i32 noundef %2041, ptr noundef @.str.6)
  %2043 = call ptr @__errno_location() #11
  %2044 = load i32, ptr %2043, align 4, !tbaa !5
  %2045 = call ptr @strerror(i32 noundef %2044) #10
  %2046 = call ptr @__errno_location() #11
  %2047 = load i32, ptr %2046, align 4, !tbaa !5
  %2048 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2035, ptr noundef @.str.3, i32 noundef %2036, ptr noundef @.str.79, ptr noundef @.str.5, i32 noundef 354, ptr noundef %2039, ptr noundef %2042, ptr noundef %2045, i32 noundef %2047) #10
  br label %2066

2049:                                             ; preds = %2027, %2020
  %2050 = load i32, ptr %58, align 4, !tbaa !5
  %2051 = call ptr @__errno_location() #11
  store i32 %2050, ptr %2051, align 4, !tbaa !5
  %2052 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2053 = load i32, ptr @test_count, align 4, !tbaa !5
  %2054 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2055 = load i32, ptr %2054, align 4, !tbaa !5
  %2056 = call ptr @s2n_strerror(i32 noundef %2055, ptr noundef @.str.6)
  %2057 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2058 = load i32, ptr %2057, align 4, !tbaa !5
  %2059 = call ptr @s2n_strerror_debug(i32 noundef %2058, ptr noundef @.str.6)
  %2060 = call ptr @__errno_location() #11
  %2061 = load i32, ptr %2060, align 4, !tbaa !5
  %2062 = call ptr @strerror(i32 noundef %2061) #10
  %2063 = call ptr @__errno_location() #11
  %2064 = load i32, ptr %2063, align 4, !tbaa !5
  %2065 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2052, ptr noundef @.str.7, i32 noundef %2053, ptr noundef @.str.79, ptr noundef @.str.5, i32 noundef 354, ptr noundef %2056, ptr noundef %2059, ptr noundef %2062, i32 noundef %2064) #10
  br label %2066

2066:                                             ; preds = %2049, %2032
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %2067

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

2068:                                             ; No predecessors!
  br label %2069

2069:                                             ; preds = %2068, %2015
  br label %2070

2070:                                             ; preds = %2069
  %2071 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2072 = trunc i8 %2071 to i1
  br i1 %2072, label %2073, label %2089

2073:                                             ; preds = %2070
  %2074 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2075 = call i32 @fileno(ptr noundef %2074) #10
  %2076 = call i32 @isatty(i32 noundef %2075) #10
  %2077 = icmp ne i32 %2076, 0
  br i1 %2077, label %2078, label %2089

2078:                                             ; preds = %2073
  %2079 = load i32, ptr @test_count, align 4, !tbaa !5
  %2080 = icmp ne i32 %2079, 0
  br i1 %2080, label %2081, label %2085

2081:                                             ; preds = %2078
  %2082 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2083 = load i32, ptr @test_count, align 4, !tbaa !5
  %2084 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2082, ptr noundef @.str.80, i32 noundef %2083) #10
  br label %2088

2085:                                             ; preds = %2078
  %2086 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2087 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2086, ptr noundef @.str.81) #10
  br label %2088

2088:                                             ; preds = %2085, %2081
  br label %2100

2089:                                             ; preds = %2073, %2070
  %2090 = load i32, ptr @test_count, align 4, !tbaa !5
  %2091 = icmp ne i32 %2090, 0
  br i1 %2091, label %2092, label %2096

2092:                                             ; preds = %2089
  %2093 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2094 = load i32, ptr @test_count, align 4, !tbaa !5
  %2095 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2093, ptr noundef @.str.82, i32 noundef %2094) #10
  br label %2099

2096:                                             ; preds = %2089
  %2097 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2098 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2097, ptr noundef @.str.83) #10
  br label %2099

2099:                                             ; preds = %2096, %2092
  br label %2100

2100:                                             ; preds = %2099, %2088
  store i32 0, ptr %3, align 4
  br label %2102

2101:                                             ; No predecessors!
  br label %2102

2102:                                             ; preds = %2101, %2100
  %2103 = load i32, ptr %3, align 4
  ret i32 %2103
}

declare i32 @fflush(ptr noundef) #4

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #4

declare i32 @s2n_enable_atexit() #4

declare i32 @s2n_init() #4

declare i32 @s2n_enable_tls13_in_test(...) #4

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

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

declare i32 @s2n_config_disable_x509_verification(ptr noundef) #4

declare i32 @s2n_connection_set_blinding(ptr noundef, i32 noundef) #4

declare i32 @s2n_io_pair_close(ptr noundef) #4

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) #4

declare i32 @s2n_connections_set_io_pair(ptr noundef, ptr noundef, ptr noundef) #4

declare i32 @s2n_negotiate_test_server_and_client_until_message(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @s2n_stuffer_wipe(ptr noundef) #4

declare i32 @s2n_cleanup() #4

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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "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 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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, !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{i64 0, i64 8, !9, i64 8, i64 8, !9, i64 16, i64 8, !9, i64 24, i64 8, !9}
!20 = !{!21, !10, i64 0}
!21 = !{!"s2n_tls13_cert_verify_test", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!22 = !{!21, !10, i64 8}
!23 = !{!24, !7, i64 0}
!24 = !{!"s2n_signature_preferences", !7, i64 0, !10, i64 8}
!25 = !{!24, !10, i64 8}
!26 = !{i64 0, i64 1, !27, 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, !27}
!27 = !{!7, !7, i64 0}
!28 = !{!29, !10, i64 24}
!29 = !{!"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}
!30 = !{!31, !10, i64 16}
!31 = !{!"s2n_connection", !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, !6, i64 2, !6, i64 2, !6, i64 2, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !7, i64 80, !7, i64 102, !7, i64 124, !6, i64 148, !6, i64 152, !32, i64 160, !16, i64 168, !16, i64 176, !7, i64 184, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !7, i64 220, !7, i64 221, !7, i64 222, !10, i64 224, !10, i64 232, !33, i64 240, !10, i64 632, !10, i64 640, !34, i64 648, !40, i64 1144, !43, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !46, i64 1776, !46, i64 1816, !46, i64 1856, !46, i64 1896, !6, i64 1936, !16, i64 1944, !7, i64 1952, !46, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !47, i64 2004, !47, i64 2008, !48, i64 2016, !45, i64 2208, !6, i64 2212, !45, i64 2216, !16, i64 2224, !7, i64 2232, !16, i64 2240, !16, i64 2248, !16, i64 2256, !47, i64 2264, !47, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !39, i64 2792, !6, i64 2816, !39, i64 2824, !39, i64 2848, !39, i64 2872, !50, i64 2896, !52, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !39, i64 3784, !6, i64 3808, !54, i64 3816, !7, i64 3848, !46, i64 3992, !39, i64 4032, !39, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !45, i64 4084, !45, i64 4086, !6, i64 4088, !6, i64 4092, !39, i64 4096, !6, i64 4120, !55, i64 4128, !47, i64 4176, !7, i64 4180, !7, i64 4181}
!32 = !{!"s2n_timer", !16, i64 0}
!33 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!34 = !{!"s2n_kex_parameters", !35, i64 0, !36, i64 8, !7, i64 24, !36, i64 56, !37, i64 72, !37, i64 184, !7, i64 296, !38, i64 360, !39, i64 448, !39, i64 472}
!35 = !{!"s2n_dh_params", !10, i64 0}
!36 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!37 = !{!"s2n_kem_group_params", !10, i64 0, !38, i64 8, !36, i64 96}
!38 = !{!"s2n_kem_params", !10, i64 0, !39, i64 8, !39, i64 32, !39, i64 56, !12, i64 80}
!39 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!40 = !{!"s2n_handshake_parameters", !41, i64 0, !41, i64 48, !39, i64 96, !6, i64 120, !42, i64 124, !10, i64 384, !10, i64 392, !10, i64 400, !7, i64 408, !7, i64 440, !7, i64 472, !7, i64 473, !7, i64 474, !7, i64 506}
!41 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!42 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!43 = !{!"s2n_psk_parameters", !6, i64 0, !44, i64 8, !45, i64 40, !45, i64 42, !10, i64 48, !6, i64 56}
!44 = !{!"s2n_array", !39, i64 0, !6, i64 24, !6, i64 28}
!45 = !{!"short", !7, i64 0}
!46 = !{!"s2n_stuffer", !39, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!47 = !{!"", !6, i64 0}
!48 = !{!"s2n_handshake", !46, i64 0, !10, i64 40, !7, i64 48, !7, i64 56, !7, i64 104, !7, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !49, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!49 = !{!"s2n_offered_early_data", !10, i64 0}
!50 = !{!"s2n_client_hello", !39, i64 0, !51, i64 24, !39, i64 728, !39, i64 752, !39, i64 776, !7, i64 800, !7, i64 801, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802}
!51 = !{!"", !7, i64 0, !39, i64 672, !45, i64 696}
!52 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !45, i64 18, !10, i64 24, !6, i64 32, !10, i64 40, !53, i64 48, !12, i64 52}
!53 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!54 = !{!"s2n_ticket_fields", !39, i64 0, !6, i64 24}
!55 = !{!"s2n_post_handshake", !46, i64 0, !7, i64 40}
!56 = !{!31, !10, i64 1528}
!57 = !{!21, !10, i64 16}
!58 = !{i64 0, i64 8, !9, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 1, !27, i64 24, i64 4, !5, i64 28, i64 4, !5, i64 32, i64 4, !5, i64 36, i64 1, !27}
!59 = !{!60, !45, i64 0}
!60 = !{!"s2n_signature_scheme", !45, i64 0, !10, i64 8, !6, i64 16, !6, i64 20, !7, i64 24, !7, i64 25, !45, i64 26, !10, i64 32}
!61 = !{!31, !6, i64 2044}
!62 = !{!31, !6, i64 2040}
!63 = distinct !{!63, !18}
!64 = distinct !{!64, !18}


; 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_tls13_cert_verify_test = type { ptr, ptr, ptr, ptr }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_signature_preferences = type { i8, ptr }
%struct.s2n_test_io_pair = type { i32, i32 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@test_cases = external dso_local constant [1 x %struct.s2n_tls13_cert_verify_test], align 16
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [70 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.46 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [55 x i8], align 1
@__const.main.test_server_parameters = external hidden unnamed_addr constant [3 x %struct.s2n_tls13_cert_verify_test], align 16
@__const.main.test_client_sig_schemes = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.55 = external hidden unnamed_addr constant [130 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [75 x i8], align 1
@security_policy_test_all_tls13 = external local_unnamed_addr constant %struct.s2n_security_policy, align 8
@.str.65 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [191 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

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

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

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

declare i32 @s2n_connection_set_config(ptr noundef, ptr noundef) local_unnamed_addr #4

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

declare i32 @s2n_stuffer_copy(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

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

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

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) local_unnamed_addr #4

declare ptr @s2n_config_new() local_unnamed_addr #4

declare i32 @s2n_config_ptr_free(ptr noundef) local_unnamed_addr #4

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

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #4

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #4

declare void @s2n_debug_info_reset() local_unnamed_addr #4

declare i32 @s2n_stuffer_rewrite(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_stuffer_write_uint16(ptr noundef, i16 noundef zeroext) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %struct.s2n_signature_preferences, align 8
  %9 = alloca %struct.s2n_security_policy, align 8
  %10 = alloca %struct.s2n_test_io_pair, align 8
  %11 = alloca %struct.s2n_stuffer, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %12 = load ptr, ptr @stdout, align 8, !tbaa !9
  %13 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.5) #10
  %14 = load ptr, ptr @stdout, align 8, !tbaa !9
  %15 = tail call i32 @fflush(ptr noundef %14)
  %16 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #10
  %17 = icmp eq i32 %16, -1
  br i1 %17, label %18, label %42

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

25:                                               ; preds = %18
  %26 = load ptr, ptr @stderr, align 8, !tbaa !9
  %27 = tail call i32 @fileno(ptr noundef %26) #10
  %28 = tail call i32 @isatty(i32 noundef %27) #10
  %.not117 = icmp eq i32 %28, 0
  br i1 %.not117, label %29, label %30

29:                                               ; preds = %25, %18
  br label %30

30:                                               ; preds = %25, %29
  %.str.7.sink = phi ptr [ @.str.7, %29 ], [ @.str.3, %25 ]
  store i32 %20, ptr %19, align 4, !tbaa !5
  %31 = load ptr, ptr @stderr, align 8, !tbaa !9
  %32 = load i32, ptr @test_count, align 4, !tbaa !5
  %33 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %34 = load i32, ptr %33, align 4, !tbaa !5
  %35 = tail call ptr @s2n_strerror(i32 noundef %34, ptr noundef nonnull @.str.6) #10
  %36 = load i32, ptr %33, align 4, !tbaa !5
  %37 = tail call ptr @s2n_strerror_debug(i32 noundef %36, ptr noundef nonnull @.str.6) #10
  %38 = load i32, ptr %19, align 4, !tbaa !5
  %39 = tail call ptr @strerror(i32 noundef %38) #10
  %40 = load i32, ptr %19, align 4, !tbaa !5
  %41 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %31, ptr noundef nonnull %.str.7.sink, i32 noundef %32, ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.5, i32 noundef 224, ptr noundef %35, ptr noundef %37, ptr noundef %39, i32 noundef %40) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

42:                                               ; preds = %2
  %43 = load i32, ptr @test_count, align 4, !tbaa !5
  %44 = add nsw i32 %43, 1
  store i32 %44, ptr @test_count, align 4, !tbaa !5
  %45 = tail call i32 @s2n_enable_atexit() #10
  %46 = icmp eq i32 %45, -1
  br i1 %46, label %47, label %71

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

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

58:                                               ; preds = %54, %47
  br label %59

59:                                               ; preds = %54, %58
  %.str.7.sink133 = phi ptr [ @.str.7, %58 ], [ @.str.3, %54 ]
  store i32 %49, ptr %48, align 4, !tbaa !5
  %60 = load ptr, ptr @stderr, align 8, !tbaa !9
  %61 = load i32, ptr @test_count, align 4, !tbaa !5
  %62 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %63 = load i32, ptr %62, align 4, !tbaa !5
  %64 = tail call ptr @s2n_strerror(i32 noundef %63, ptr noundef nonnull @.str.6) #10
  %65 = load i32, ptr %62, align 4, !tbaa !5
  %66 = tail call ptr @s2n_strerror_debug(i32 noundef %65, ptr noundef nonnull @.str.6) #10
  %67 = load i32, ptr %48, align 4, !tbaa !5
  %68 = tail call ptr @strerror(i32 noundef %67) #10
  %69 = load i32, ptr %48, align 4, !tbaa !5
  %70 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %60, ptr noundef nonnull %.str.7.sink133, i32 noundef %61, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.5, i32 noundef 224, ptr noundef %64, ptr noundef %66, ptr noundef %68, i32 noundef %69) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

71:                                               ; preds = %42
  %72 = tail call i32 @s2n_init() #10
  %73 = icmp eq i32 %72, -1
  br i1 %73, label %74, label %98

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

81:                                               ; preds = %74
  %82 = load ptr, ptr @stderr, align 8, !tbaa !9
  %83 = tail call i32 @fileno(ptr noundef %82) #10
  %84 = tail call i32 @isatty(i32 noundef %83) #10
  %.not115 = icmp eq i32 %84, 0
  br i1 %.not115, label %85, label %86

85:                                               ; preds = %81, %74
  br label %86

86:                                               ; preds = %81, %85
  %.str.7.sink144 = phi ptr [ @.str.7, %85 ], [ @.str.3, %81 ]
  store i32 %76, ptr %75, align 4, !tbaa !5
  %87 = load ptr, ptr @stderr, align 8, !tbaa !9
  %88 = load i32, ptr @test_count, align 4, !tbaa !5
  %89 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %90 = load i32, ptr %89, align 4, !tbaa !5
  %91 = tail call ptr @s2n_strerror(i32 noundef %90, ptr noundef nonnull @.str.6) #10
  %92 = load i32, ptr %89, align 4, !tbaa !5
  %93 = tail call ptr @s2n_strerror_debug(i32 noundef %92, ptr noundef nonnull @.str.6) #10
  %94 = load i32, ptr %75, align 4, !tbaa !5
  %95 = tail call ptr @strerror(i32 noundef %94) #10
  %96 = load i32, ptr %75, align 4, !tbaa !5
  %97 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %87, ptr noundef nonnull %.str.7.sink144, i32 noundef %88, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.5, i32 noundef 224, ptr noundef %91, ptr noundef %93, ptr noundef %95, i32 noundef %96) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

98:                                               ; preds = %71
  %99 = load i32, ptr @test_count, align 4, !tbaa !5
  %100 = add nsw i32 %99, 1
  store i32 %100, ptr @test_count, align 4, !tbaa !5
  %101 = tail call i32 (...) @s2n_enable_tls13_in_test() #10
  %102 = icmp eq i32 %101, -1
  br i1 %102, label %103, label %.critedge

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

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

114:                                              ; preds = %110, %103
  br label %115

115:                                              ; preds = %110, %114
  %.str.7.sink155 = phi ptr [ @.str.7, %114 ], [ @.str.3, %110 ]
  store i32 %105, ptr %104, align 4, !tbaa !5
  %116 = load ptr, ptr @stderr, align 8, !tbaa !9
  %117 = load i32, ptr @test_count, align 4, !tbaa !5
  %118 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %119 = load i32, ptr %118, align 4, !tbaa !5
  %120 = tail call ptr @s2n_strerror(i32 noundef %119, ptr noundef nonnull @.str.6) #10
  %121 = load i32, ptr %118, align 4, !tbaa !5
  %122 = tail call ptr @s2n_strerror_debug(i32 noundef %121, ptr noundef nonnull @.str.6) #10
  %123 = load i32, ptr %104, align 4, !tbaa !5
  %124 = tail call ptr @strerror(i32 noundef %123) #10
  %125 = load i32, ptr %104, align 4, !tbaa !5
  %126 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %116, ptr noundef nonnull %.str.7.sink155, i32 noundef %117, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.5, i32 noundef 226, ptr noundef %120, ptr noundef %122, ptr noundef %124, i32 noundef %125) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

.critedge:                                        ; preds = %98
  %127 = tail call i32 @run_tests(ptr noundef nonnull @test_cases, i32 noundef 1)
  %128 = tail call i32 @run_tests(ptr noundef nonnull @test_cases, i32 noundef 0)
  %129 = tail call zeroext i1 (...) @s2n_is_tls13_fully_supported() #10
  br i1 %129, label %.preheader118, label %.loopexit

.preheader118:                                    ; preds = %.critedge
  %130 = getelementptr inbounds i8, ptr %8, i64 8
  %131 = getelementptr inbounds i8, ptr %9, i64 24
  %132 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  br label %133

133:                                              ; preds = %.preheader118, %276
  %.081121 = phi i64 [ 0, %.preheader118 ], [ %279, %276 ]
  %134 = getelementptr inbounds [3 x %struct.s2n_tls13_cert_verify_test], ptr @__const.main.test_server_parameters, i64 0, i64 %.081121
  %.sroa.063.0.copyload = load ptr, ptr %134, align 16, !tbaa !9
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %134, i64 8
  %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !9
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %134, i64 16
  %.sroa.5.0.copyload = load ptr, ptr %.sroa.5.0..sroa_idx, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  store ptr null, ptr %3, align 8, !tbaa !9
  %135 = load i32, ptr @test_count, align 4, !tbaa !5
  %136 = add nsw i32 %135, 1
  store i32 %136, ptr @test_count, align 4, !tbaa !5
  %137 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %3, ptr noundef %.sroa.063.0.copyload, ptr noundef %.sroa.4.0.copyload) #10
  %138 = icmp eq i32 %137, -1
  br i1 %138, label %139, label %162

139:                                              ; preds = %133
  %140 = tail call ptr @__errno_location() #11
  %141 = load i32, ptr %140, align 4, !tbaa !5
  %142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %143 = call i32 @s2n_print_stacktrace(ptr noundef %142) #10
  %144 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %145 = trunc nuw i8 %144 to i1
  br i1 %145, label %146, label %150

146:                                              ; preds = %139
  %147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %148 = call i32 @fileno(ptr noundef %147) #10
  %149 = call i32 @isatty(i32 noundef %148) #10
  %.not113 = icmp eq i32 %149, 0
  br i1 %.not113, label %150, label %151

150:                                              ; preds = %146, %139
  br label %151

151:                                              ; preds = %146, %150
  %.str.7.sink166 = phi ptr [ @.str.7, %150 ], [ @.str.3, %146 ]
  store i32 %141, ptr %140, align 4, !tbaa !5
  %152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %153 = load i32, ptr @test_count, align 4, !tbaa !5
  %154 = load i32, ptr %132, align 4, !tbaa !5
  %155 = call ptr @s2n_strerror(i32 noundef %154, ptr noundef nonnull @.str.6) #10
  %156 = load i32, ptr %132, align 4, !tbaa !5
  %157 = call ptr @s2n_strerror_debug(i32 noundef %156, ptr noundef nonnull @.str.6) #10
  %158 = load i32, ptr %140, align 4, !tbaa !5
  %159 = call ptr @strerror(i32 noundef %158) #10
  %160 = load i32, ptr %140, align 4, !tbaa !5
  %161 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %152, ptr noundef nonnull %.str.7.sink166, i32 noundef %153, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.5, i32 noundef 269, ptr noundef %155, ptr noundef %157, ptr noundef %159, i32 noundef %160) #12
  call void @exit(i32 noundef 1) #13
  unreachable

162:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  %163 = call ptr @s2n_config_new() #10
  store ptr %163, ptr %4, align 8, !tbaa !9
  %164 = load i32, ptr @test_count, align 4, !tbaa !5
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr @test_count, align 4, !tbaa !5
  %166 = icmp eq ptr %163, null
  br i1 %166, label %167, label %190

167:                                              ; preds = %162
  %168 = tail call ptr @__errno_location() #11
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = load ptr, ptr @stderr, align 8, !tbaa !9
  %171 = call i32 @s2n_print_stacktrace(ptr noundef %170) #10
  %172 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %173 = trunc nuw i8 %172 to i1
  br i1 %173, label %174, label %178

174:                                              ; preds = %167
  %175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %176 = call i32 @fileno(ptr noundef %175) #10
  %177 = call i32 @isatty(i32 noundef %176) #10
  %.not112 = icmp eq i32 %177, 0
  br i1 %.not112, label %178, label %179

178:                                              ; preds = %174, %167
  br label %179

179:                                              ; preds = %174, %178
  %.str.7.sink175 = phi ptr [ @.str.7, %178 ], [ @.str.3, %174 ]
  store i32 %169, ptr %168, align 4, !tbaa !5
  %180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %181 = load i32, ptr @test_count, align 4, !tbaa !5
  %182 = load i32, ptr %132, align 4, !tbaa !5
  %183 = call ptr @s2n_strerror(i32 noundef %182, ptr noundef nonnull @.str.6) #10
  %184 = load i32, ptr %132, align 4, !tbaa !5
  %185 = call ptr @s2n_strerror_debug(i32 noundef %184, ptr noundef nonnull @.str.6) #10
  %186 = load i32, ptr %168, align 4, !tbaa !5
  %187 = call ptr @strerror(i32 noundef %186) #10
  %188 = load i32, ptr %168, align 4, !tbaa !5
  %189 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %180, ptr noundef nonnull %.str.7.sink175, i32 noundef %181, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 272, ptr noundef %183, ptr noundef %185, ptr noundef %187, i32 noundef %188) #12
  call void @exit(i32 noundef 1) #13
  unreachable

190:                                              ; preds = %162
  %191 = add nsw i32 %164, 2
  store i32 %191, ptr @test_count, align 4, !tbaa !5
  %192 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %163, ptr noundef nonnull @.str.56) #10
  %193 = icmp eq i32 %192, -1
  br i1 %193, label %194, label %217

194:                                              ; preds = %190
  %195 = tail call ptr @__errno_location() #11
  %196 = load i32, ptr %195, align 4, !tbaa !5
  %197 = load ptr, ptr @stderr, align 8, !tbaa !9
  %198 = call i32 @s2n_print_stacktrace(ptr noundef %197) #10
  %199 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %200 = trunc nuw i8 %199 to i1
  br i1 %200, label %201, label %205

201:                                              ; preds = %194
  %202 = load ptr, ptr @stderr, align 8, !tbaa !9
  %203 = call i32 @fileno(ptr noundef %202) #10
  %204 = call i32 @isatty(i32 noundef %203) #10
  %.not111 = icmp eq i32 %204, 0
  br i1 %.not111, label %205, label %206

205:                                              ; preds = %201, %194
  br label %206

206:                                              ; preds = %201, %205
  %.str.7.sink184 = phi ptr [ @.str.7, %205 ], [ @.str.3, %201 ]
  store i32 %196, ptr %195, align 4, !tbaa !5
  %207 = load ptr, ptr @stderr, align 8, !tbaa !9
  %208 = load i32, ptr @test_count, align 4, !tbaa !5
  %209 = load i32, ptr %132, align 4, !tbaa !5
  %210 = call ptr @s2n_strerror(i32 noundef %209, ptr noundef nonnull @.str.6) #10
  %211 = load i32, ptr %132, align 4, !tbaa !5
  %212 = call ptr @s2n_strerror_debug(i32 noundef %211, ptr noundef nonnull @.str.6) #10
  %213 = load i32, ptr %195, align 4, !tbaa !5
  %214 = call ptr @strerror(i32 noundef %213) #10
  %215 = load i32, ptr %195, align 4, !tbaa !5
  %216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %207, ptr noundef nonnull %.str.7.sink184, i32 noundef %208, ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.5, i32 noundef 273, ptr noundef %210, ptr noundef %212, ptr noundef %214, i32 noundef %215) #12
  call void @exit(i32 noundef 1) #13
  unreachable

217:                                              ; preds = %190
  %218 = load i32, ptr @test_count, align 4, !tbaa !5
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr @test_count, align 4, !tbaa !5
  %220 = load ptr, ptr %4, align 8, !tbaa !9
  %221 = call i32 @s2n_config_disable_x509_verification(ptr noundef %220) #10
  %222 = icmp eq i32 %221, -1
  br i1 %222, label %223, label %246

223:                                              ; preds = %217
  %224 = tail call ptr @__errno_location() #11
  %225 = load i32, ptr %224, align 4, !tbaa !5
  %226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %227 = call i32 @s2n_print_stacktrace(ptr noundef %226) #10
  %228 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %229 = trunc nuw i8 %228 to i1
  br i1 %229, label %230, label %234

230:                                              ; preds = %223
  %231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %232 = call i32 @fileno(ptr noundef %231) #10
  %233 = call i32 @isatty(i32 noundef %232) #10
  %.not110 = icmp eq i32 %233, 0
  br i1 %.not110, label %234, label %235

234:                                              ; preds = %230, %223
  br label %235

235:                                              ; preds = %230, %234
  %.str.7.sink193 = phi ptr [ @.str.7, %234 ], [ @.str.3, %230 ]
  store i32 %225, ptr %224, align 4, !tbaa !5
  %236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %237 = load i32, ptr @test_count, align 4, !tbaa !5
  %238 = load i32, ptr %132, align 4, !tbaa !5
  %239 = call ptr @s2n_strerror(i32 noundef %238, ptr noundef nonnull @.str.6) #10
  %240 = load i32, ptr %132, align 4, !tbaa !5
  %241 = call ptr @s2n_strerror_debug(i32 noundef %240, ptr noundef nonnull @.str.6) #10
  %242 = load i32, ptr %224, align 4, !tbaa !5
  %243 = call ptr @strerror(i32 noundef %242) #10
  %244 = load i32, ptr %224, align 4, !tbaa !5
  %245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %236, ptr noundef nonnull %.str.7.sink193, i32 noundef %237, ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.5, i32 noundef 274, ptr noundef %239, ptr noundef %241, ptr noundef %243, i32 noundef %244) #12
  call void @exit(i32 noundef 1) #13
  unreachable

246:                                              ; preds = %217
  %247 = load i32, ptr @test_count, align 4, !tbaa !5
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr @test_count, align 4, !tbaa !5
  %249 = load ptr, ptr %4, align 8, !tbaa !9
  %250 = load ptr, ptr %3, align 8, !tbaa !9
  %251 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %249, ptr noundef %250) #10
  %252 = icmp eq i32 %251, -1
  br i1 %252, label %253, label %.preheader

253:                                              ; preds = %246
  %254 = tail call ptr @__errno_location() #11
  %255 = load i32, ptr %254, align 4, !tbaa !5
  %256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %257 = call i32 @s2n_print_stacktrace(ptr noundef %256) #10
  %258 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %259 = trunc nuw i8 %258 to i1
  br i1 %259, label %260, label %264

260:                                              ; preds = %253
  %261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %262 = call i32 @fileno(ptr noundef %261) #10
  %263 = call i32 @isatty(i32 noundef %262) #10
  %.not109 = icmp eq i32 %263, 0
  br i1 %.not109, label %264, label %265

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

265:                                              ; preds = %260, %264
  %.str.7.sink202 = phi ptr [ @.str.7, %264 ], [ @.str.3, %260 ]
  store i32 %255, ptr %254, align 4, !tbaa !5
  %266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %267 = load i32, ptr @test_count, align 4, !tbaa !5
  %268 = load i32, ptr %132, align 4, !tbaa !5
  %269 = call ptr @s2n_strerror(i32 noundef %268, ptr noundef nonnull @.str.6) #10
  %270 = load i32, ptr %132, align 4, !tbaa !5
  %271 = call ptr @s2n_strerror_debug(i32 noundef %270, ptr noundef nonnull @.str.6) #10
  %272 = load i32, ptr %254, align 4, !tbaa !5
  %273 = call ptr @strerror(i32 noundef %272) #10
  %274 = load i32, ptr %254, align 4, !tbaa !5
  %275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %266, ptr noundef nonnull %.str.7.sink202, i32 noundef %267, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, i32 noundef 281, ptr noundef %269, ptr noundef %271, ptr noundef %273, i32 noundef %274) #12
  call void @exit(i32 noundef 1) #13
  unreachable

276:                                              ; preds = %867
  %277 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  %278 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  %279 = add nuw nsw i64 %.081121, 1
  %exitcond122.not = icmp eq i64 %279, 3
  br i1 %exitcond122.not, label %.loopexit, label %133, !llvm.loop !15

.preheader:                                       ; preds = %246, %867
  %.082120 = phi i64 [ %871, %867 ], [ 0, %246 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %280 = call ptr @s2n_connection_new(i32 noundef 0) #10
  store ptr %280, ptr %5, align 8, !tbaa !9
  %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 = icmp eq ptr %280, null
  br i1 %283, label %284, label %307

284:                                              ; preds = %.preheader
  %285 = tail call ptr @__errno_location() #11
  %286 = load i32, ptr %285, align 4, !tbaa !5
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = call i32 @s2n_print_stacktrace(ptr noundef %287) #10
  %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 = %284
  %292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %293 = call i32 @fileno(ptr noundef %292) #10
  %294 = call i32 @isatty(i32 noundef %293) #10
  %.not108 = icmp eq i32 %294, 0
  br i1 %.not108, label %295, label %296

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

296:                                              ; preds = %291, %295
  %.str.7.sink211 = phi ptr [ @.str.7, %295 ], [ @.str.3, %291 ]
  store i32 %286, ptr %285, 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 %132, align 4, !tbaa !5
  %300 = call ptr @s2n_strerror(i32 noundef %299, ptr noundef nonnull @.str.6) #10
  %301 = load i32, ptr %132, align 4, !tbaa !5
  %302 = call ptr @s2n_strerror_debug(i32 noundef %301, ptr noundef nonnull @.str.6) #10
  %303 = load i32, ptr %285, align 4, !tbaa !5
  %304 = call ptr @strerror(i32 noundef %303) #10
  %305 = load i32, ptr %285, align 4, !tbaa !5
  %306 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %297, ptr noundef nonnull %.str.7.sink211, i32 noundef %298, ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.5, i32 noundef 286, ptr noundef %300, ptr noundef %302, ptr noundef %304, i32 noundef %305) #12
  call void @exit(i32 noundef 1) #13
  unreachable

307:                                              ; preds = %.preheader
  %308 = add nsw i32 %281, 2
  store i32 %308, ptr @test_count, align 4, !tbaa !5
  %309 = call i32 @s2n_connection_set_blinding(ptr noundef nonnull %280, i32 noundef 1) #10
  %310 = icmp eq i32 %309, -1
  br i1 %310, label %311, label %334

311:                                              ; preds = %307
  %312 = tail call ptr @__errno_location() #11
  %313 = load i32, ptr %312, align 4, !tbaa !5
  %314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %315 = call i32 @s2n_print_stacktrace(ptr noundef %314) #10
  %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 = %311
  %319 = load ptr, ptr @stderr, align 8, !tbaa !9
  %320 = call i32 @fileno(ptr noundef %319) #10
  %321 = call i32 @isatty(i32 noundef %320) #10
  %.not107 = icmp eq i32 %321, 0
  br i1 %.not107, label %322, label %323

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

323:                                              ; preds = %318, %322
  %.str.7.sink220 = phi ptr [ @.str.7, %322 ], [ @.str.3, %318 ]
  store i32 %313, ptr %312, 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 %132, align 4, !tbaa !5
  %327 = call ptr @s2n_strerror(i32 noundef %326, ptr noundef nonnull @.str.6) #10
  %328 = load i32, ptr %132, align 4, !tbaa !5
  %329 = call ptr @s2n_strerror_debug(i32 noundef %328, ptr noundef nonnull @.str.6) #10
  %330 = load i32, ptr %312, align 4, !tbaa !5
  %331 = call ptr @strerror(i32 noundef %330) #10
  %332 = load i32, ptr %312, align 4, !tbaa !5
  %333 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %324, ptr noundef nonnull %.str.7.sink220, i32 noundef %325, ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.5, i32 noundef 287, ptr noundef %327, ptr noundef %329, ptr noundef %331, i32 noundef %332) #12
  call void @exit(i32 noundef 1) #13
  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 ptr, ptr %5, align 8, !tbaa !9
  %338 = load ptr, ptr %4, align 8, !tbaa !9
  %339 = call i32 @s2n_connection_set_config(ptr noundef %337, ptr noundef %338) #10
  %340 = icmp eq i32 %339, -1
  br i1 %340, label %341, label %364

341:                                              ; preds = %334
  %342 = tail call ptr @__errno_location() #11
  %343 = load i32, ptr %342, align 4, !tbaa !5
  %344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %345 = call i32 @s2n_print_stacktrace(ptr noundef %344) #10
  %346 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %347 = trunc nuw i8 %346 to i1
  br i1 %347, label %348, label %352

348:                                              ; preds = %341
  %349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %350 = call i32 @fileno(ptr noundef %349) #10
  %351 = call i32 @isatty(i32 noundef %350) #10
  %.not106 = icmp eq i32 %351, 0
  br i1 %.not106, label %352, label %353

352:                                              ; preds = %348, %341
  br label %353

353:                                              ; preds = %348, %352
  %.str.7.sink229 = phi ptr [ @.str.7, %352 ], [ @.str.3, %348 ]
  store i32 %343, ptr %342, align 4, !tbaa !5
  %354 = load ptr, ptr @stderr, align 8, !tbaa !9
  %355 = load i32, ptr @test_count, align 4, !tbaa !5
  %356 = load i32, ptr %132, align 4, !tbaa !5
  %357 = call ptr @s2n_strerror(i32 noundef %356, ptr noundef nonnull @.str.6) #10
  %358 = load i32, ptr %132, align 4, !tbaa !5
  %359 = call ptr @s2n_strerror_debug(i32 noundef %358, ptr noundef nonnull @.str.6) #10
  %360 = load i32, ptr %342, align 4, !tbaa !5
  %361 = call ptr @strerror(i32 noundef %360) #10
  %362 = load i32, ptr %342, align 4, !tbaa !5
  %363 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %354, ptr noundef nonnull %.str.7.sink229, i32 noundef %355, ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.5, i32 noundef 288, ptr noundef %357, ptr noundef %359, ptr noundef %361, i32 noundef %362) #12
  call void @exit(i32 noundef 1) #13
  unreachable

364:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %365 = call ptr @s2n_connection_new(i32 noundef 1) #10
  store ptr %365, ptr %6, align 8, !tbaa !9
  %366 = load i32, ptr @test_count, align 4, !tbaa !5
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr @test_count, align 4, !tbaa !5
  %368 = icmp eq ptr %365, null
  br i1 %368, label %369, label %392

369:                                              ; preds = %364
  %370 = tail call ptr @__errno_location() #11
  %371 = load i32, ptr %370, align 4, !tbaa !5
  %372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %373 = call i32 @s2n_print_stacktrace(ptr noundef %372) #10
  %374 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %375 = trunc nuw i8 %374 to i1
  br i1 %375, label %376, label %380

376:                                              ; preds = %369
  %377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %378 = call i32 @fileno(ptr noundef %377) #10
  %379 = call i32 @isatty(i32 noundef %378) #10
  %.not105 = icmp eq i32 %379, 0
  br i1 %.not105, label %380, label %381

380:                                              ; preds = %376, %369
  br label %381

381:                                              ; preds = %376, %380
  %.str.7.sink238 = phi ptr [ @.str.7, %380 ], [ @.str.3, %376 ]
  store i32 %371, ptr %370, align 4, !tbaa !5
  %382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %383 = load i32, ptr @test_count, align 4, !tbaa !5
  %384 = load i32, ptr %132, align 4, !tbaa !5
  %385 = call ptr @s2n_strerror(i32 noundef %384, ptr noundef nonnull @.str.6) #10
  %386 = load i32, ptr %132, align 4, !tbaa !5
  %387 = call ptr @s2n_strerror_debug(i32 noundef %386, ptr noundef nonnull @.str.6) #10
  %388 = load i32, ptr %370, align 4, !tbaa !5
  %389 = call ptr @strerror(i32 noundef %388) #10
  %390 = load i32, ptr %370, align 4, !tbaa !5
  %391 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %382, ptr noundef nonnull %.str.7.sink238, i32 noundef %383, ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.5, i32 noundef 292, ptr noundef %385, ptr noundef %387, ptr noundef %389, i32 noundef %390) #12
  call void @exit(i32 noundef 1) #13
  unreachable

392:                                              ; preds = %364
  %393 = add nsw i32 %366, 2
  store i32 %393, ptr @test_count, align 4, !tbaa !5
  %394 = call i32 @s2n_connection_set_blinding(ptr noundef nonnull %365, i32 noundef 1) #10
  %395 = icmp eq i32 %394, -1
  br i1 %395, label %396, label %419

396:                                              ; preds = %392
  %397 = tail call ptr @__errno_location() #11
  %398 = load i32, ptr %397, align 4, !tbaa !5
  %399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %400 = call i32 @s2n_print_stacktrace(ptr noundef %399) #10
  %401 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %402 = trunc nuw i8 %401 to i1
  br i1 %402, label %403, label %407

403:                                              ; preds = %396
  %404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %405 = call i32 @fileno(ptr noundef %404) #10
  %406 = call i32 @isatty(i32 noundef %405) #10
  %.not104 = icmp eq i32 %406, 0
  br i1 %.not104, label %407, label %408

407:                                              ; preds = %403, %396
  br label %408

408:                                              ; preds = %403, %407
  %.str.7.sink247 = phi ptr [ @.str.7, %407 ], [ @.str.3, %403 ]
  store i32 %398, ptr %397, align 4, !tbaa !5
  %409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %410 = load i32, ptr @test_count, align 4, !tbaa !5
  %411 = load i32, ptr %132, align 4, !tbaa !5
  %412 = call ptr @s2n_strerror(i32 noundef %411, ptr noundef nonnull @.str.6) #10
  %413 = load i32, ptr %132, align 4, !tbaa !5
  %414 = call ptr @s2n_strerror_debug(i32 noundef %413, ptr noundef nonnull @.str.6) #10
  %415 = load i32, ptr %397, align 4, !tbaa !5
  %416 = call ptr @strerror(i32 noundef %415) #10
  %417 = load i32, ptr %397, align 4, !tbaa !5
  %418 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %409, ptr noundef nonnull %.str.7.sink247, i32 noundef %410, ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.5, i32 noundef 293, ptr noundef %412, ptr noundef %414, ptr noundef %416, i32 noundef %417) #12
  call void @exit(i32 noundef 1) #13
  unreachable

419:                                              ; preds = %392
  %420 = load i32, ptr @test_count, align 4, !tbaa !5
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr @test_count, align 4, !tbaa !5
  %422 = load ptr, ptr %6, align 8, !tbaa !9
  %423 = load ptr, ptr %4, align 8, !tbaa !9
  %424 = call i32 @s2n_connection_set_config(ptr noundef %422, ptr noundef %423) #10
  %425 = icmp eq i32 %424, -1
  br i1 %425, label %426, label %449

426:                                              ; preds = %419
  %427 = tail call ptr @__errno_location() #11
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %430 = call i32 @s2n_print_stacktrace(ptr noundef %429) #10
  %431 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %432 = trunc nuw i8 %431 to i1
  br i1 %432, label %433, label %437

433:                                              ; preds = %426
  %434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %435 = call i32 @fileno(ptr noundef %434) #10
  %436 = call i32 @isatty(i32 noundef %435) #10
  %.not103 = icmp eq i32 %436, 0
  br i1 %.not103, label %437, label %438

437:                                              ; preds = %433, %426
  br label %438

438:                                              ; preds = %433, %437
  %.str.7.sink256 = phi ptr [ @.str.7, %437 ], [ @.str.3, %433 ]
  store i32 %428, ptr %427, align 4, !tbaa !5
  %439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %440 = load i32, ptr @test_count, align 4, !tbaa !5
  %441 = load i32, ptr %132, align 4, !tbaa !5
  %442 = call ptr @s2n_strerror(i32 noundef %441, ptr noundef nonnull @.str.6) #10
  %443 = load i32, ptr %132, align 4, !tbaa !5
  %444 = call ptr @s2n_strerror_debug(i32 noundef %443, ptr noundef nonnull @.str.6) #10
  %445 = load i32, ptr %427, align 4, !tbaa !5
  %446 = call ptr @strerror(i32 noundef %445) #10
  %447 = load i32, ptr %427, align 4, !tbaa !5
  %448 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %439, ptr noundef nonnull %.str.7.sink256, i32 noundef %440, ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.5, i32 noundef 294, ptr noundef %442, ptr noundef %444, ptr noundef %446, i32 noundef %447) #12
  call void @exit(i32 noundef 1) #13
  unreachable

449:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  %450 = getelementptr inbounds [3 x ptr], ptr @__const.main.test_client_sig_schemes, i64 0, i64 %.082120
  %451 = load ptr, ptr %450, align 8, !tbaa !9
  store ptr %451, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  store i8 1, ptr %8, align 8, !tbaa !17
  store ptr %7, ptr %130, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef nonnull align 8 dereferenceable(64) @security_policy_test_all_tls13, i64 64, i1 false), !tbaa.struct !20
  store ptr %8, ptr %131, align 8, !tbaa !22
  %452 = load ptr, ptr %6, align 8, !tbaa !9
  %453 = getelementptr inbounds i8, ptr %452, i64 16
  store ptr %9, ptr %453, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  store i64 0, ptr %10, align 8
  %454 = load i32, ptr @test_count, align 4, !tbaa !5
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr @test_count, align 4, !tbaa !5
  %456 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef nonnull %10) #10
  %457 = icmp eq i32 %456, -1
  br i1 %457, label %458, label %481

458:                                              ; preds = %449
  %459 = tail call ptr @__errno_location() #11
  %460 = load i32, ptr %459, align 4, !tbaa !5
  %461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %462 = call i32 @s2n_print_stacktrace(ptr noundef %461) #10
  %463 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %464 = trunc nuw i8 %463 to i1
  br i1 %464, label %465, label %469

465:                                              ; preds = %458
  %466 = load ptr, ptr @stderr, align 8, !tbaa !9
  %467 = call i32 @fileno(ptr noundef %466) #10
  %468 = call i32 @isatty(i32 noundef %467) #10
  %.not102 = icmp eq i32 %468, 0
  br i1 %.not102, label %469, label %470

469:                                              ; preds = %465, %458
  br label %470

470:                                              ; preds = %465, %469
  %.str.7.sink265 = phi ptr [ @.str.7, %469 ], [ @.str.3, %465 ]
  store i32 %460, ptr %459, align 4, !tbaa !5
  %471 = load ptr, ptr @stderr, align 8, !tbaa !9
  %472 = load i32, ptr @test_count, align 4, !tbaa !5
  %473 = load i32, ptr %132, align 4, !tbaa !5
  %474 = call ptr @s2n_strerror(i32 noundef %473, ptr noundef nonnull @.str.6) #10
  %475 = load i32, ptr %132, align 4, !tbaa !5
  %476 = call ptr @s2n_strerror_debug(i32 noundef %475, ptr noundef nonnull @.str.6) #10
  %477 = load i32, ptr %459, align 4, !tbaa !5
  %478 = call ptr @strerror(i32 noundef %477) #10
  %479 = load i32, ptr %459, align 4, !tbaa !5
  %480 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %471, ptr noundef nonnull %.str.7.sink265, i32 noundef %472, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.5, i32 noundef 310, ptr noundef %474, ptr noundef %476, ptr noundef %478, i32 noundef %479) #12
  call void @exit(i32 noundef 1) #13
  unreachable

481:                                              ; preds = %449
  %482 = load i32, ptr @test_count, align 4, !tbaa !5
  %483 = add nsw i32 %482, 1
  store i32 %483, ptr @test_count, align 4, !tbaa !5
  %484 = load ptr, ptr %6, align 8, !tbaa !9
  %485 = load ptr, ptr %5, align 8, !tbaa !9
  %486 = call i32 @s2n_connections_set_io_pair(ptr noundef %484, ptr noundef %485, ptr noundef nonnull %10) #10
  %487 = icmp eq i32 %486, -1
  br i1 %487, label %488, label %511

488:                                              ; preds = %481
  %489 = tail call ptr @__errno_location() #11
  %490 = load i32, ptr %489, align 4, !tbaa !5
  %491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %492 = call i32 @s2n_print_stacktrace(ptr noundef %491) #10
  %493 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %494 = trunc nuw i8 %493 to i1
  br i1 %494, label %495, label %499

495:                                              ; preds = %488
  %496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %497 = call i32 @fileno(ptr noundef %496) #10
  %498 = call i32 @isatty(i32 noundef %497) #10
  %.not101 = icmp eq i32 %498, 0
  br i1 %.not101, label %499, label %500

499:                                              ; preds = %495, %488
  br label %500

500:                                              ; preds = %495, %499
  %.str.7.sink274 = phi ptr [ @.str.7, %499 ], [ @.str.3, %495 ]
  store i32 %490, ptr %489, align 4, !tbaa !5
  %501 = load ptr, ptr @stderr, align 8, !tbaa !9
  %502 = load i32, ptr @test_count, align 4, !tbaa !5
  %503 = load i32, ptr %132, align 4, !tbaa !5
  %504 = call ptr @s2n_strerror(i32 noundef %503, ptr noundef nonnull @.str.6) #10
  %505 = load i32, ptr %132, align 4, !tbaa !5
  %506 = call ptr @s2n_strerror_debug(i32 noundef %505, ptr noundef nonnull @.str.6) #10
  %507 = load i32, ptr %489, align 4, !tbaa !5
  %508 = call ptr @strerror(i32 noundef %507) #10
  %509 = load i32, ptr %489, align 4, !tbaa !5
  %510 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %501, ptr noundef nonnull %.str.7.sink274, i32 noundef %502, ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.5, i32 noundef 311, ptr noundef %504, ptr noundef %506, ptr noundef %508, i32 noundef %509) #12
  call void @exit(i32 noundef 1) #13
  unreachable

511:                                              ; preds = %481
  %512 = load i32, ptr @test_count, align 4, !tbaa !5
  %513 = add nsw i32 %512, 1
  store i32 %513, ptr @test_count, align 4, !tbaa !5
  %514 = load ptr, ptr %5, align 8, !tbaa !9
  %515 = load ptr, ptr %6, align 8, !tbaa !9
  %516 = call i32 @s2n_negotiate_test_server_and_client_until_message(ptr noundef %514, ptr noundef %515, i32 noundef 17) #10
  %517 = call zeroext i1 @s2n_result_is_ok(i32 %516)
  br i1 %517, label %541, label %518

518:                                              ; preds = %511
  %519 = tail call ptr @__errno_location() #11
  %520 = load i32, ptr %519, align 4, !tbaa !5
  %521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %522 = call i32 @s2n_print_stacktrace(ptr noundef %521) #10
  %523 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %524 = trunc nuw i8 %523 to i1
  br i1 %524, label %525, label %529

525:                                              ; preds = %518
  %526 = load ptr, ptr @stderr, align 8, !tbaa !9
  %527 = call i32 @fileno(ptr noundef %526) #10
  %528 = call i32 @isatty(i32 noundef %527) #10
  %.not89 = icmp eq i32 %528, 0
  br i1 %.not89, label %529, label %530

529:                                              ; preds = %525, %518
  br label %530

530:                                              ; preds = %525, %529
  %.str.7.sink283 = phi ptr [ @.str.7, %529 ], [ @.str.3, %525 ]
  store i32 %520, ptr %519, align 4, !tbaa !5
  %531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %532 = load i32, ptr @test_count, align 4, !tbaa !5
  %533 = load i32, ptr %132, align 4, !tbaa !5
  %534 = call ptr @s2n_strerror(i32 noundef %533, ptr noundef nonnull @.str.6) #10
  %535 = load i32, ptr %132, align 4, !tbaa !5
  %536 = call ptr @s2n_strerror_debug(i32 noundef %535, ptr noundef nonnull @.str.6) #10
  %537 = load i32, ptr %519, align 4, !tbaa !5
  %538 = call ptr @strerror(i32 noundef %537) #10
  %539 = load i32, ptr %519, align 4, !tbaa !5
  %540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %531, ptr noundef nonnull %.str.7.sink283, i32 noundef %532, ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.5, i32 noundef 315, ptr noundef %534, ptr noundef %536, ptr noundef %538, i32 noundef %539) #12
  call void @exit(i32 noundef 1) #13
  unreachable

541:                                              ; preds = %511
  %542 = load i32, ptr @test_count, align 4, !tbaa !5
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr @test_count, align 4, !tbaa !5
  %544 = load ptr, ptr %5, align 8, !tbaa !9
  %545 = getelementptr inbounds i8, ptr %544, i64 2016
  %546 = call i32 @s2n_stuffer_rewrite(ptr noundef nonnull %545) #10
  %547 = icmp eq i32 %546, -1
  br i1 %547, label %548, label %571

548:                                              ; preds = %541
  %549 = tail call ptr @__errno_location() #11
  %550 = load i32, ptr %549, align 4, !tbaa !5
  %551 = load ptr, ptr @stderr, align 8, !tbaa !9
  %552 = call i32 @s2n_print_stacktrace(ptr noundef %551) #10
  %553 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %554 = trunc nuw i8 %553 to i1
  br i1 %554, label %555, label %559

555:                                              ; preds = %548
  %556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %557 = call i32 @fileno(ptr noundef %556) #10
  %558 = call i32 @isatty(i32 noundef %557) #10
  %.not100 = icmp eq i32 %558, 0
  br i1 %.not100, label %559, label %560

559:                                              ; preds = %555, %548
  br label %560

560:                                              ; preds = %555, %559
  %.str.7.sink292 = phi ptr [ @.str.7, %559 ], [ @.str.3, %555 ]
  store i32 %550, ptr %549, align 4, !tbaa !5
  %561 = load ptr, ptr @stderr, align 8, !tbaa !9
  %562 = load i32, ptr @test_count, align 4, !tbaa !5
  %563 = load i32, ptr %132, align 4, !tbaa !5
  %564 = call ptr @s2n_strerror(i32 noundef %563, ptr noundef nonnull @.str.6) #10
  %565 = load i32, ptr %132, align 4, !tbaa !5
  %566 = call ptr @s2n_strerror_debug(i32 noundef %565, ptr noundef nonnull @.str.6) #10
  %567 = load i32, ptr %549, align 4, !tbaa !5
  %568 = call ptr @strerror(i32 noundef %567) #10
  %569 = load i32, ptr %549, align 4, !tbaa !5
  %570 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %561, ptr noundef nonnull %.str.7.sink292, i32 noundef %562, ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.5, i32 noundef 316, ptr noundef %564, ptr noundef %566, ptr noundef %568, i32 noundef %569) #12
  call void @exit(i32 noundef 1) #13
  unreachable

571:                                              ; preds = %541
  %572 = load i32, ptr @test_count, align 4, !tbaa !5
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr @test_count, align 4, !tbaa !5
  %574 = load ptr, ptr %5, align 8, !tbaa !9
  %575 = call i32 @s2n_tls13_cert_verify_send(ptr noundef %574)
  %576 = icmp eq i32 %575, -1
  br i1 %576, label %577, label %600

577:                                              ; preds = %571
  %578 = tail call ptr @__errno_location() #11
  %579 = load i32, ptr %578, align 4, !tbaa !5
  %580 = load ptr, ptr @stderr, align 8, !tbaa !9
  %581 = call i32 @s2n_print_stacktrace(ptr noundef %580) #10
  %582 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %583 = trunc nuw i8 %582 to i1
  br i1 %583, label %584, label %588

584:                                              ; preds = %577
  %585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %586 = call i32 @fileno(ptr noundef %585) #10
  %587 = call i32 @isatty(i32 noundef %586) #10
  %.not99 = icmp eq i32 %587, 0
  br i1 %.not99, label %588, label %589

588:                                              ; preds = %584, %577
  br label %589

589:                                              ; preds = %584, %588
  %.str.7.sink301 = phi ptr [ @.str.7, %588 ], [ @.str.3, %584 ]
  store i32 %579, ptr %578, align 4, !tbaa !5
  %590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %591 = load i32, ptr @test_count, align 4, !tbaa !5
  %592 = load i32, ptr %132, align 4, !tbaa !5
  %593 = call ptr @s2n_strerror(i32 noundef %592, ptr noundef nonnull @.str.6) #10
  %594 = load i32, ptr %132, align 4, !tbaa !5
  %595 = call ptr @s2n_strerror_debug(i32 noundef %594, ptr noundef nonnull @.str.6) #10
  %596 = load i32, ptr %578, align 4, !tbaa !5
  %597 = call ptr @strerror(i32 noundef %596) #10
  %598 = load i32, ptr %578, align 4, !tbaa !5
  %599 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %590, ptr noundef nonnull %.str.7.sink301, i32 noundef %591, ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.5, i32 noundef 317, ptr noundef %593, ptr noundef %595, ptr noundef %597, i32 noundef %598) #12
  call void @exit(i32 noundef 1) #13
  unreachable

600:                                              ; preds = %571
  %601 = load i32, ptr @test_count, align 4, !tbaa !5
  %602 = add nsw i32 %601, 1
  store i32 %602, ptr @test_count, align 4, !tbaa !5
  %603 = load ptr, ptr %5, align 8, !tbaa !9
  %604 = getelementptr inbounds i8, ptr %603, i64 1528
  %605 = load ptr, ptr %604, align 8, !tbaa !51
  %606 = icmp eq ptr %605, %.sroa.5.0.copyload
  br i1 %606, label %630, label %607

607:                                              ; preds = %600
  %608 = tail call ptr @__errno_location() #11
  %609 = load i32, ptr %608, align 4, !tbaa !5
  %610 = load ptr, ptr @stderr, align 8, !tbaa !9
  %611 = call i32 @s2n_print_stacktrace(ptr noundef %610) #10
  %612 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %613 = trunc nuw i8 %612 to i1
  br i1 %613, label %614, label %618

614:                                              ; preds = %607
  %615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %616 = call i32 @fileno(ptr noundef %615) #10
  %617 = call i32 @isatty(i32 noundef %616) #10
  %.not90 = icmp eq i32 %617, 0
  br i1 %.not90, label %618, label %619

618:                                              ; preds = %614, %607
  br label %619

619:                                              ; preds = %614, %618
  %.str.7.sink310 = phi ptr [ @.str.7, %618 ], [ @.str.3, %614 ]
  store i32 %609, ptr %608, align 4, !tbaa !5
  %620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %621 = load i32, ptr @test_count, align 4, !tbaa !5
  %622 = load i32, ptr %132, align 4, !tbaa !5
  %623 = call ptr @s2n_strerror(i32 noundef %622, ptr noundef nonnull @.str.6) #10
  %624 = load i32, ptr %132, align 4, !tbaa !5
  %625 = call ptr @s2n_strerror_debug(i32 noundef %624, ptr noundef nonnull @.str.6) #10
  %626 = load i32, ptr %608, align 4, !tbaa !5
  %627 = call ptr @strerror(i32 noundef %626) #10
  %628 = load i32, ptr %608, align 4, !tbaa !5
  %629 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %620, ptr noundef nonnull %.str.7.sink310, i32 noundef %621, ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.5, i32 noundef 320, ptr noundef %623, ptr noundef %625, ptr noundef %627, i32 noundef %628) #12
  call void @exit(i32 noundef 1) #13
  unreachable

630:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #10
  %631 = getelementptr inbounds i8, ptr %603, i64 2016
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull align 8 dereferenceable(40) %631, i64 40, i1 false), !tbaa.struct !52
  %632 = add nsw i32 %601, 2
  store i32 %632, ptr @test_count, align 4, !tbaa !5
  %633 = call i32 @s2n_stuffer_rewrite(ptr noundef nonnull %11) #10
  %634 = icmp eq i32 %633, -1
  br i1 %634, label %635, label %658

635:                                              ; preds = %630
  %636 = tail call ptr @__errno_location() #11
  %637 = load i32, ptr %636, align 4, !tbaa !5
  %638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %639 = call i32 @s2n_print_stacktrace(ptr noundef %638) #10
  %640 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %641 = trunc nuw i8 %640 to i1
  br i1 %641, label %642, label %646

642:                                              ; preds = %635
  %643 = load ptr, ptr @stderr, align 8, !tbaa !9
  %644 = call i32 @fileno(ptr noundef %643) #10
  %645 = call i32 @isatty(i32 noundef %644) #10
  %.not98 = icmp eq i32 %645, 0
  br i1 %.not98, label %646, label %647

646:                                              ; preds = %642, %635
  br label %647

647:                                              ; preds = %642, %646
  %.str.7.sink319 = phi ptr [ @.str.7, %646 ], [ @.str.3, %642 ]
  store i32 %637, ptr %636, align 4, !tbaa !5
  %648 = load ptr, ptr @stderr, align 8, !tbaa !9
  %649 = load i32, ptr @test_count, align 4, !tbaa !5
  %650 = load i32, ptr %132, align 4, !tbaa !5
  %651 = call ptr @s2n_strerror(i32 noundef %650, ptr noundef nonnull @.str.6) #10
  %652 = load i32, ptr %132, align 4, !tbaa !5
  %653 = call ptr @s2n_strerror_debug(i32 noundef %652, ptr noundef nonnull @.str.6) #10
  %654 = load i32, ptr %636, align 4, !tbaa !5
  %655 = call ptr @strerror(i32 noundef %654) #10
  %656 = load i32, ptr %636, align 4, !tbaa !5
  %657 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %648, ptr noundef nonnull %.str.7.sink319, i32 noundef %649, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.5, i32 noundef 328, ptr noundef %651, ptr noundef %653, ptr noundef %655, i32 noundef %656) #12
  call void @exit(i32 noundef 1) #13
  unreachable

658:                                              ; preds = %630
  %659 = load i32, ptr @test_count, align 4, !tbaa !5
  %660 = add nsw i32 %659, 1
  store i32 %660, ptr @test_count, align 4, !tbaa !5
  %661 = load ptr, ptr %7, align 8, !tbaa !9
  %662 = load i16, ptr %661, align 8, !tbaa !53
  %663 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %11, i16 noundef zeroext %662) #10
  %664 = icmp eq i32 %663, -1
  br i1 %664, label %665, label %688

665:                                              ; preds = %658
  %666 = tail call ptr @__errno_location() #11
  %667 = load i32, ptr %666, align 4, !tbaa !5
  %668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %669 = call i32 @s2n_print_stacktrace(ptr noundef %668) #10
  %670 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %671 = trunc nuw i8 %670 to i1
  br i1 %671, label %672, label %676

672:                                              ; preds = %665
  %673 = load ptr, ptr @stderr, align 8, !tbaa !9
  %674 = call i32 @fileno(ptr noundef %673) #10
  %675 = call i32 @isatty(i32 noundef %674) #10
  %.not97 = icmp eq i32 %675, 0
  br i1 %.not97, label %676, label %677

676:                                              ; preds = %672, %665
  br label %677

677:                                              ; preds = %672, %676
  %.str.7.sink328 = phi ptr [ @.str.7, %676 ], [ @.str.3, %672 ]
  store i32 %667, ptr %666, align 4, !tbaa !5
  %678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %679 = load i32, ptr @test_count, align 4, !tbaa !5
  %680 = load i32, ptr %132, align 4, !tbaa !5
  %681 = call ptr @s2n_strerror(i32 noundef %680, ptr noundef nonnull @.str.6) #10
  %682 = load i32, ptr %132, align 4, !tbaa !5
  %683 = call ptr @s2n_strerror_debug(i32 noundef %682, ptr noundef nonnull @.str.6) #10
  %684 = load i32, ptr %666, align 4, !tbaa !5
  %685 = call ptr @strerror(i32 noundef %684) #10
  %686 = load i32, ptr %666, align 4, !tbaa !5
  %687 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %678, ptr noundef nonnull %.str.7.sink328, i32 noundef %679, ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.5, i32 noundef 330, ptr noundef %681, ptr noundef %683, ptr noundef %685, i32 noundef %686) #12
  call void @exit(i32 noundef 1) #13
  unreachable

688:                                              ; preds = %658
  %689 = load i32, ptr @test_count, align 4, !tbaa !5
  %690 = add nsw i32 %689, 1
  store i32 %690, ptr @test_count, align 4, !tbaa !5
  %691 = load ptr, ptr %6, align 8, !tbaa !9
  %692 = getelementptr inbounds i8, ptr %691, i64 2016
  %693 = call i32 @s2n_stuffer_wipe(ptr noundef nonnull %692) #10
  %694 = icmp eq i32 %693, -1
  br i1 %694, label %695, label %718

695:                                              ; preds = %688
  %696 = tail call ptr @__errno_location() #11
  %697 = load i32, ptr %696, align 4, !tbaa !5
  %698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %699 = call i32 @s2n_print_stacktrace(ptr noundef %698) #10
  %700 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %701 = trunc nuw i8 %700 to i1
  br i1 %701, label %702, label %706

702:                                              ; preds = %695
  %703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %704 = call i32 @fileno(ptr noundef %703) #10
  %705 = call i32 @isatty(i32 noundef %704) #10
  %.not96 = icmp eq i32 %705, 0
  br i1 %.not96, label %706, label %707

706:                                              ; preds = %702, %695
  br label %707

707:                                              ; preds = %702, %706
  %.str.7.sink337 = phi ptr [ @.str.7, %706 ], [ @.str.3, %702 ]
  store i32 %697, ptr %696, align 4, !tbaa !5
  %708 = load ptr, ptr @stderr, align 8, !tbaa !9
  %709 = load i32, ptr @test_count, align 4, !tbaa !5
  %710 = load i32, ptr %132, align 4, !tbaa !5
  %711 = call ptr @s2n_strerror(i32 noundef %710, ptr noundef nonnull @.str.6) #10
  %712 = load i32, ptr %132, align 4, !tbaa !5
  %713 = call ptr @s2n_strerror_debug(i32 noundef %712, ptr noundef nonnull @.str.6) #10
  %714 = load i32, ptr %696, align 4, !tbaa !5
  %715 = call ptr @strerror(i32 noundef %714) #10
  %716 = load i32, ptr %696, align 4, !tbaa !5
  %717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %708, ptr noundef nonnull %.str.7.sink337, i32 noundef %709, ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.5, i32 noundef 332, ptr noundef %711, ptr noundef %713, ptr noundef %715, i32 noundef %716) #12
  call void @exit(i32 noundef 1) #13
  unreachable

718:                                              ; preds = %688
  %719 = load i32, ptr @test_count, align 4, !tbaa !5
  %720 = add nsw i32 %719, 1
  store i32 %720, ptr @test_count, align 4, !tbaa !5
  %721 = load ptr, ptr %5, align 8, !tbaa !9
  %722 = getelementptr inbounds i8, ptr %721, i64 2016
  %723 = load ptr, ptr %6, align 8, !tbaa !9
  %724 = getelementptr inbounds i8, ptr %723, i64 2016
  %725 = getelementptr inbounds i8, ptr %721, i64 2044
  %726 = load i32, ptr %725, align 4, !tbaa !55
  %727 = getelementptr inbounds i8, ptr %721, i64 2040
  %728 = load i32, ptr %727, align 8, !tbaa !56
  %729 = sub i32 %726, %728
  %730 = call i32 @s2n_stuffer_copy(ptr noundef nonnull %722, ptr noundef nonnull %724, i32 noundef %729) #10
  %731 = icmp eq i32 %730, -1
  br i1 %731, label %732, label %755

732:                                              ; preds = %718
  %733 = tail call ptr @__errno_location() #11
  %734 = load i32, ptr %733, align 4, !tbaa !5
  %735 = load ptr, ptr @stderr, align 8, !tbaa !9
  %736 = call i32 @s2n_print_stacktrace(ptr noundef %735) #10
  %737 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %738 = trunc nuw i8 %737 to i1
  br i1 %738, label %739, label %743

739:                                              ; preds = %732
  %740 = load ptr, ptr @stderr, align 8, !tbaa !9
  %741 = call i32 @fileno(ptr noundef %740) #10
  %742 = call i32 @isatty(i32 noundef %741) #10
  %.not95 = icmp eq i32 %742, 0
  br i1 %.not95, label %743, label %744

743:                                              ; preds = %739, %732
  br label %744

744:                                              ; preds = %739, %743
  %.str.7.sink346 = phi ptr [ @.str.7, %743 ], [ @.str.3, %739 ]
  store i32 %734, ptr %733, align 4, !tbaa !5
  %745 = load ptr, ptr @stderr, align 8, !tbaa !9
  %746 = load i32, ptr @test_count, align 4, !tbaa !5
  %747 = load i32, ptr %132, align 4, !tbaa !5
  %748 = call ptr @s2n_strerror(i32 noundef %747, ptr noundef nonnull @.str.6) #10
  %749 = load i32, ptr %132, align 4, !tbaa !5
  %750 = call ptr @s2n_strerror_debug(i32 noundef %749, ptr noundef nonnull @.str.6) #10
  %751 = load i32, ptr %733, align 4, !tbaa !5
  %752 = call ptr @strerror(i32 noundef %751) #10
  %753 = load i32, ptr %733, align 4, !tbaa !5
  %754 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %745, ptr noundef nonnull %.str.7.sink346, i32 noundef %746, ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.5, i32 noundef 334, ptr noundef %748, ptr noundef %750, ptr noundef %752, i32 noundef %753) #12
  call void @exit(i32 noundef 1) #13
  unreachable

755:                                              ; preds = %718
  %756 = load ptr, ptr %6, align 8, !tbaa !9
  %757 = call i32 @s2n_tls13_cert_verify_recv(ptr noundef %756)
  %758 = load ptr, ptr %7, align 8, !tbaa !9
  %759 = icmp eq ptr %758, %.sroa.5.0.copyload
  %760 = load i32, ptr @test_count, align 4, !tbaa !5
  %761 = add nsw i32 %760, 1
  store i32 %761, ptr @test_count, align 4, !tbaa !5
  %762 = icmp eq i32 %757, -1
  br i1 %759, label %763, label %787

763:                                              ; preds = %755
  br i1 %762, label %764, label %867

764:                                              ; preds = %763
  %765 = tail call ptr @__errno_location() #11
  %766 = load i32, ptr %765, align 4, !tbaa !5
  %767 = load ptr, ptr @stderr, align 8, !tbaa !9
  %768 = call i32 @s2n_print_stacktrace(ptr noundef %767) #10
  %769 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %770 = trunc nuw i8 %769 to i1
  br i1 %770, label %771, label %775

771:                                              ; preds = %764
  %772 = load ptr, ptr @stderr, align 8, !tbaa !9
  %773 = call i32 @fileno(ptr noundef %772) #10
  %774 = call i32 @isatty(i32 noundef %773) #10
  %.not94 = icmp eq i32 %774, 0
  br i1 %.not94, label %775, label %776

775:                                              ; preds = %771, %764
  br label %776

776:                                              ; preds = %771, %775
  %.str.7.sink355 = phi ptr [ @.str.7, %775 ], [ @.str.3, %771 ]
  store i32 %766, ptr %765, align 4, !tbaa !5
  %777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %778 = load i32, ptr @test_count, align 4, !tbaa !5
  %779 = load i32, ptr %132, align 4, !tbaa !5
  %780 = call ptr @s2n_strerror(i32 noundef %779, ptr noundef nonnull @.str.6) #10
  %781 = load i32, ptr %132, align 4, !tbaa !5
  %782 = call ptr @s2n_strerror_debug(i32 noundef %781, ptr noundef nonnull @.str.6) #10
  %783 = load i32, ptr %765, align 4, !tbaa !5
  %784 = call ptr @strerror(i32 noundef %783) #10
  %785 = load i32, ptr %765, align 4, !tbaa !5
  %786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %777, ptr noundef nonnull %.str.7.sink355, i32 noundef %778, ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.5, i32 noundef 342, ptr noundef %780, ptr noundef %782, ptr noundef %784, i32 noundef %785) #12
  call void @exit(i32 noundef 1) #13
  unreachable

787:                                              ; preds = %755
  br i1 %762, label %811, label %788

788:                                              ; preds = %787
  %789 = tail call ptr @__errno_location() #11
  %790 = load i32, ptr %789, align 4, !tbaa !5
  %791 = load ptr, ptr @stderr, align 8, !tbaa !9
  %792 = call i32 @s2n_print_stacktrace(ptr noundef %791) #10
  %793 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %794 = trunc nuw i8 %793 to i1
  br i1 %794, label %795, label %799

795:                                              ; preds = %788
  %796 = load ptr, ptr @stderr, align 8, !tbaa !9
  %797 = call i32 @fileno(ptr noundef %796) #10
  %798 = call i32 @isatty(i32 noundef %797) #10
  %.not91 = icmp eq i32 %798, 0
  br i1 %.not91, label %799, label %800

799:                                              ; preds = %795, %788
  br label %800

800:                                              ; preds = %795, %799
  %.str.7.sink364 = phi ptr [ @.str.7, %799 ], [ @.str.3, %795 ]
  store i32 %790, ptr %789, align 4, !tbaa !5
  %801 = load ptr, ptr @stderr, align 8, !tbaa !9
  %802 = load i32, ptr @test_count, align 4, !tbaa !5
  %803 = load i32, ptr %132, align 4, !tbaa !5
  %804 = call ptr @s2n_strerror(i32 noundef %803, ptr noundef nonnull @.str.6) #10
  %805 = load i32, ptr %132, align 4, !tbaa !5
  %806 = call ptr @s2n_strerror_debug(i32 noundef %805, ptr noundef nonnull @.str.6) #10
  %807 = load i32, ptr %789, align 4, !tbaa !5
  %808 = call ptr @strerror(i32 noundef %807) #10
  %809 = load i32, ptr %789, align 4, !tbaa !5
  %810 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %801, ptr noundef nonnull %.str.7.sink364, i32 noundef %802, ptr noundef nonnull @.str.76, ptr noundef nonnull @.str.5, i32 noundef 348, ptr noundef %804, ptr noundef %806, ptr noundef %808, i32 noundef %809) #12
  call void @exit(i32 noundef 1) #13
  unreachable

811:                                              ; preds = %787
  %812 = add nsw i32 %760, 2
  store i32 %812, ptr @test_count, align 4, !tbaa !5
  %813 = load i32, ptr %132, align 4, !tbaa !5
  %814 = icmp eq i32 %813, 335544347
  br i1 %814, label %838, label %815

815:                                              ; preds = %811
  %816 = tail call ptr @__errno_location() #11
  %817 = load i32, ptr %816, align 4, !tbaa !5
  %818 = load ptr, ptr @stderr, align 8, !tbaa !9
  %819 = call i32 @s2n_print_stacktrace(ptr noundef %818) #10
  %820 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %821 = trunc nuw i8 %820 to i1
  br i1 %821, label %822, label %826

822:                                              ; preds = %815
  %823 = load ptr, ptr @stderr, align 8, !tbaa !9
  %824 = call i32 @fileno(ptr noundef %823) #10
  %825 = call i32 @isatty(i32 noundef %824) #10
  %.not92 = icmp eq i32 %825, 0
  br i1 %.not92, label %826, label %827

826:                                              ; preds = %822, %815
  br label %827

827:                                              ; preds = %822, %826
  %.str.7.sink373 = phi ptr [ @.str.7, %826 ], [ @.str.3, %822 ]
  store i32 %817, ptr %816, align 4, !tbaa !5
  %828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %829 = load i32, ptr @test_count, align 4, !tbaa !5
  %830 = load i32, ptr %132, align 4, !tbaa !5
  %831 = call ptr @s2n_strerror(i32 noundef %830, ptr noundef nonnull @.str.6) #10
  %832 = load i32, ptr %132, align 4, !tbaa !5
  %833 = call ptr @s2n_strerror_debug(i32 noundef %832, ptr noundef nonnull @.str.6) #10
  %834 = load i32, ptr %816, align 4, !tbaa !5
  %835 = call ptr @strerror(i32 noundef %834) #10
  %836 = load i32, ptr %816, align 4, !tbaa !5
  %837 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %828, ptr noundef nonnull %.str.7.sink373, i32 noundef %829, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.5, i32 noundef 348, ptr noundef %831, ptr noundef %833, ptr noundef %835, i32 noundef %836) #12
  call void @exit(i32 noundef 1) #13
  unreachable

838:                                              ; preds = %811
  %839 = add nsw i32 %760, 3
  store i32 %839, ptr @test_count, align 4, !tbaa !5
  %840 = call ptr @s2n_strerror_debug(i32 noundef 335544347, ptr noundef nonnull @.str.6) #10
  %841 = icmp eq ptr %840, null
  br i1 %841, label %842, label %865

842:                                              ; preds = %838
  %843 = tail call ptr @__errno_location() #11
  %844 = load i32, ptr %843, align 4, !tbaa !5
  %845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %846 = call i32 @s2n_print_stacktrace(ptr noundef %845) #10
  %847 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %848 = trunc nuw i8 %847 to i1
  br i1 %848, label %849, label %853

849:                                              ; preds = %842
  %850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %851 = call i32 @fileno(ptr noundef %850) #10
  %852 = call i32 @isatty(i32 noundef %851) #10
  %.not93 = icmp eq i32 %852, 0
  br i1 %.not93, label %853, label %854

853:                                              ; preds = %849, %842
  br label %854

854:                                              ; preds = %849, %853
  %.str.7.sink382 = phi ptr [ @.str.7, %853 ], [ @.str.3, %849 ]
  store i32 %844, ptr %843, align 4, !tbaa !5
  %855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %856 = load i32, ptr @test_count, align 4, !tbaa !5
  %857 = load i32, ptr %132, align 4, !tbaa !5
  %858 = call ptr @s2n_strerror(i32 noundef %857, ptr noundef nonnull @.str.6) #10
  %859 = load i32, ptr %132, align 4, !tbaa !5
  %860 = call ptr @s2n_strerror_debug(i32 noundef %859, ptr noundef nonnull @.str.6) #10
  %861 = load i32, ptr %843, align 4, !tbaa !5
  %862 = call ptr @strerror(i32 noundef %861) #10
  %863 = load i32, ptr %843, align 4, !tbaa !5
  %864 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %855, ptr noundef nonnull %.str.7.sink382, i32 noundef %856, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.5, i32 noundef 348, ptr noundef %858, ptr noundef %860, ptr noundef %862, i32 noundef %863) #12
  call void @exit(i32 noundef 1) #13
  unreachable

865:                                              ; preds = %838
  store i32 0, ptr %132, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  %866 = tail call ptr @__errno_location() #11
  store i32 0, ptr %866, align 4, !tbaa !5
  br label %867

867:                                              ; preds = %763, %865
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #10
  %868 = call i32 @s2n_io_pair_close(ptr noundef nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  %869 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  %870 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  %871 = add nuw nsw i64 %.082120, 1
  %exitcond.not = icmp eq i64 %871, 3
  br i1 %exitcond.not, label %276, label %.preheader, !llvm.loop !57

.loopexit:                                        ; preds = %276, %.critedge
  %872 = call i32 @s2n_cleanup() #10
  %873 = icmp eq i32 %872, -1
  br i1 %873, label %874, label %898

874:                                              ; preds = %.loopexit
  %875 = tail call ptr @__errno_location() #11
  %876 = load i32, ptr %875, align 4, !tbaa !5
  %877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %878 = call i32 @s2n_print_stacktrace(ptr noundef %877) #10
  %879 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %880 = trunc nuw i8 %879 to i1
  br i1 %880, label %881, label %885

881:                                              ; preds = %874
  %882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %883 = call i32 @fileno(ptr noundef %882) #10
  %884 = call i32 @isatty(i32 noundef %883) #10
  %.not88 = icmp eq i32 %884, 0
  br i1 %.not88, label %885, label %886

885:                                              ; preds = %881, %874
  br label %886

886:                                              ; preds = %881, %885
  %.str.7.sink391 = phi ptr [ @.str.7, %885 ], [ @.str.3, %881 ]
  store i32 %876, ptr %875, align 4, !tbaa !5
  %887 = load ptr, ptr @stderr, align 8, !tbaa !9
  %888 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %890, ptr noundef nonnull @.str.6) #10
  %892 = load i32, ptr %889, align 4, !tbaa !5
  %893 = call ptr @s2n_strerror_debug(i32 noundef %892, ptr noundef nonnull @.str.6) #10
  %894 = load i32, ptr %875, align 4, !tbaa !5
  %895 = call ptr @strerror(i32 noundef %894) #10
  %896 = load i32, ptr %875, align 4, !tbaa !5
  %897 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %887, ptr noundef nonnull %.str.7.sink391, i32 noundef %888, ptr noundef nonnull @.str.78, ptr noundef nonnull @.str.5, i32 noundef 354, ptr noundef %891, ptr noundef %893, ptr noundef %895, i32 noundef %896) #12
  call void @exit(i32 noundef 1) #13
  unreachable

898:                                              ; preds = %.loopexit
  %899 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %900 = icmp eq i32 %899, -1
  br i1 %900, label %901, label %925

901:                                              ; preds = %898
  %902 = tail call ptr @__errno_location() #11
  %903 = load i32, ptr %902, align 4, !tbaa !5
  %904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %905 = call i32 @s2n_print_stacktrace(ptr noundef %904) #10
  %906 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %907 = trunc nuw i8 %906 to i1
  br i1 %907, label %908, label %912

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

912:                                              ; preds = %908, %901
  br label %913

913:                                              ; preds = %908, %912
  %.str.7.sink402 = phi ptr [ @.str.7, %912 ], [ @.str.3, %908 ]
  store i32 %903, ptr %902, align 4, !tbaa !5
  %914 = load ptr, ptr @stderr, align 8, !tbaa !9
  %915 = load i32, ptr @test_count, align 4, !tbaa !5
  %916 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %917 = load i32, ptr %916, align 4, !tbaa !5
  %918 = call ptr @s2n_strerror(i32 noundef %917, ptr noundef nonnull @.str.6) #10
  %919 = load i32, ptr %916, align 4, !tbaa !5
  %920 = call ptr @s2n_strerror_debug(i32 noundef %919, ptr noundef nonnull @.str.6) #10
  %921 = load i32, ptr %902, align 4, !tbaa !5
  %922 = call ptr @strerror(i32 noundef %921) #10
  %923 = load i32, ptr %902, align 4, !tbaa !5
  %924 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %914, ptr noundef nonnull %.str.7.sink402, i32 noundef %915, ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.5, i32 noundef 354, ptr noundef %918, ptr noundef %920, ptr noundef %922, i32 noundef %923) #12
  call void @exit(i32 noundef 1) #13
  unreachable

925:                                              ; preds = %898
  %926 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %927 = trunc nuw i8 %926 to i1
  br i1 %927, label %928, label %939

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

932:                                              ; preds = %928
  %933 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not86 = icmp eq i32 %933, 0
  %934 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not86, label %937, label %935

935:                                              ; preds = %932
  %936 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %934, ptr noundef nonnull @.str.80, i32 noundef %933) #10
  br label %946

937:                                              ; preds = %932
  %938 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %934, ptr noundef nonnull @.str.81) #10
  br label %946

939:                                              ; preds = %928, %925
  %940 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not85 = icmp eq i32 %940, 0
  %941 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not85, label %944, label %942

942:                                              ; preds = %939
  %943 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %941, ptr noundef nonnull @.str.82, i32 noundef %940) #10
  br label %946

944:                                              ; preds = %939
  %945 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %941, ptr noundef nonnull @.str.83) #10
  br label %946

946:                                              ; preds = %942, %944, %935, %937
  ret i32 0
}

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #4

declare i32 @s2n_init() local_unnamed_addr #4

declare i32 @s2n_enable_tls13_in_test(...) local_unnamed_addr #4

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

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

declare i32 @s2n_config_disable_x509_verification(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_connection_set_blinding(ptr noundef, i32 noundef) local_unnamed_addr #4

declare i32 @s2n_io_pair_close(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_connections_set_io_pair(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_negotiate_test_server_and_client_until_message(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

declare i32 @s2n_stuffer_wipe(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_cleanup() local_unnamed_addr #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!18, !7, i64 0}
!18 = !{!"s2n_signature_preferences", !7, i64 0, !10, i64 8}
!19 = !{!18, !10, i64 8}
!20 = !{i64 0, i64 1, !21, 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, !21}
!21 = !{!7, !7, i64 0}
!22 = !{!23, !10, i64 24}
!23 = !{!"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}
!24 = !{!25, !10, i64 16}
!25 = !{!"s2n_connection", !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, !6, i64 2, !6, i64 2, !6, i64 2, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !7, i64 80, !7, i64 102, !7, i64 124, !6, i64 148, !6, i64 152, !26, i64 160, !27, i64 168, !27, i64 176, !7, i64 184, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !7, i64 220, !7, i64 221, !7, i64 222, !10, i64 224, !10, i64 232, !28, i64 240, !10, i64 632, !10, i64 640, !29, i64 648, !35, i64 1144, !38, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !41, i64 1776, !41, i64 1816, !41, i64 1856, !41, i64 1896, !6, i64 1936, !27, i64 1944, !7, i64 1952, !41, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !42, i64 2004, !42, i64 2008, !43, i64 2016, !40, i64 2208, !6, i64 2212, !40, i64 2216, !27, i64 2224, !7, i64 2232, !27, i64 2240, !27, i64 2248, !27, i64 2256, !42, i64 2264, !42, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !34, i64 2792, !6, i64 2816, !34, i64 2824, !34, i64 2848, !34, i64 2872, !45, i64 2896, !47, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !34, i64 3784, !6, i64 3808, !49, i64 3816, !7, i64 3848, !41, i64 3992, !34, i64 4032, !34, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !40, i64 4084, !40, i64 4086, !6, i64 4088, !6, i64 4092, !34, i64 4096, !6, i64 4120, !50, i64 4128, !42, i64 4176, !7, i64 4180, !7, i64 4181}
!26 = !{!"s2n_timer", !27, i64 0}
!27 = !{!"long", !7, i64 0}
!28 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!29 = !{!"s2n_kex_parameters", !30, i64 0, !31, i64 8, !7, i64 24, !31, i64 56, !32, i64 72, !32, i64 184, !7, i64 296, !33, i64 360, !34, i64 448, !34, i64 472}
!30 = !{!"s2n_dh_params", !10, i64 0}
!31 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!32 = !{!"s2n_kem_group_params", !10, i64 0, !33, i64 8, !31, i64 96}
!33 = !{!"s2n_kem_params", !10, i64 0, !34, i64 8, !34, i64 32, !34, i64 56, !12, i64 80}
!34 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!35 = !{!"s2n_handshake_parameters", !36, i64 0, !36, i64 48, !34, i64 96, !6, i64 120, !37, i64 124, !10, i64 384, !10, i64 392, !10, i64 400, !7, i64 408, !7, i64 440, !7, i64 472, !7, i64 473, !7, i64 474, !7, i64 506}
!36 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!37 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!38 = !{!"s2n_psk_parameters", !6, i64 0, !39, i64 8, !40, i64 40, !40, i64 42, !10, i64 48, !6, i64 56}
!39 = !{!"s2n_array", !34, i64 0, !6, i64 24, !6, i64 28}
!40 = !{!"short", !7, i64 0}
!41 = !{!"s2n_stuffer", !34, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!42 = !{!"", !6, i64 0}
!43 = !{!"s2n_handshake", !41, i64 0, !10, i64 40, !7, i64 48, !7, i64 56, !7, i64 104, !7, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !44, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!44 = !{!"s2n_offered_early_data", !10, i64 0}
!45 = !{!"s2n_client_hello", !34, i64 0, !46, i64 24, !34, i64 728, !34, i64 752, !34, i64 776, !7, i64 800, !7, i64 801, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802}
!46 = !{!"", !7, i64 0, !34, i64 672, !40, i64 696}
!47 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !40, i64 18, !10, i64 24, !6, i64 32, !10, i64 40, !48, i64 48, !12, i64 52}
!48 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!49 = !{!"s2n_ticket_fields", !34, i64 0, !6, i64 24}
!50 = !{!"s2n_post_handshake", !41, i64 0, !7, i64 40}
!51 = !{!25, !10, i64 1528}
!52 = !{i64 0, i64 8, !9, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 1, !21, i64 24, i64 4, !5, i64 28, i64 4, !5, i64 32, i64 4, !5, i64 36, i64 1, !21}
!53 = !{!54, !40, i64 0}
!54 = !{!"s2n_signature_scheme", !40, i64 0, !10, i64 8, !6, i64 16, !6, i64 20, !7, i64 24, !7, i64 25, !40, i64 26, !10, i64 32}
!55 = !{!25, !6, i64 2044}
!56 = !{!25, !6, i64 2040}
!57 = distinct !{!57, !16}


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