; LLVM IR from aws/s2n-tls :: tests/unit (s2n_server_hello_retry_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_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.client_hello_context = type { i32, i32, i8 }
%struct.s2n_result = type { i32 }
%struct.s2n_test_io_pair = type { i32, i32 }
%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_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }

@s2n_use_color_in_output = external dso_local global i8, align 1
@test_count = external dso_local global i32, align 4
@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [101 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [86 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [155 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [92 x i8], align 1
@security_policy_test_tls13_retry = external constant %struct.s2n_security_policy, align 8
@__const.hello_retry_client_hello_cb_test.client_hello_ctx = external hidden unnamed_addr constant %struct.client_hello_context, align 4
@.str.25 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @s2n_negotiate_poll_hello_retry(ptr noundef, ptr noundef, 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: nounwind willreturn memory(none)
declare ptr @__errno_location() #2

declare i32 @s2n_print_stacktrace(ptr noundef) #3

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @hello_retry_client_hello_cb_test() #0 {
  %1 = alloca %struct.s2n_result, align 4
  %2 = alloca ptr, align 8
  %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 ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.s2n_test_io_pair, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %struct.client_hello_context, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %struct.s2n_result, align 4
  %28 = alloca %struct.s2n_result, align 4
  %29 = alloca %struct.s2n_result, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %2) #9
  store ptr null, ptr %2, align 8, !tbaa !5
  br label %30

30:                                               ; preds = %0
  %31 = load i32, ptr @test_count, align 4, !tbaa !9
  %32 = add nsw i32 %31, 1
  store i32 %32, ptr @test_count, align 4, !tbaa !9
  %33 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %2, ptr noundef @.str.10, ptr noundef @.str.11)
  %34 = icmp eq i32 %33, -1
  br i1 %34, label %35, label %88

35:                                               ; preds = %30
  br label %36

36:                                               ; preds = %35
  br label %37

37:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #9
  %38 = call ptr @__errno_location() #10
  %39 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %39, ptr %3, align 4, !tbaa !9
  %40 = load ptr, ptr @stderr, align 8, !tbaa !5
  %41 = call i32 @s2n_print_stacktrace(ptr noundef %40)
  %42 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %43 = trunc i8 %42 to i1
  br i1 %43, label %44, label %66

44:                                               ; preds = %37
  %45 = load ptr, ptr @stderr, align 8, !tbaa !5
  %46 = call i32 @fileno(ptr noundef %45) #9
  %47 = call i32 @isatty(i32 noundef %46) #9
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %49, label %66

49:                                               ; preds = %44
  %50 = load i32, ptr %3, align 4, !tbaa !9
  %51 = call ptr @__errno_location() #10
  store i32 %50, ptr %51, align 4, !tbaa !9
  %52 = load ptr, ptr @stderr, align 8, !tbaa !5
  %53 = load i32, ptr @test_count, align 4, !tbaa !9
  %54 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %55 = load i32, ptr %54, align 4, !tbaa !9
  %56 = call ptr @s2n_strerror(i32 noundef %55, ptr noundef @.str.3)
  %57 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %58 = load i32, ptr %57, align 4, !tbaa !9
  %59 = call ptr @s2n_strerror_debug(i32 noundef %58, ptr noundef @.str.3)
  %60 = call ptr @__errno_location() #10
  %61 = load i32, ptr %60, align 4, !tbaa !9
  %62 = call ptr @strerror(i32 noundef %61) #9
  %63 = call ptr @__errno_location() #10
  %64 = load i32, ptr %63, align 4, !tbaa !9
  %65 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %52, ptr noundef @.str, i32 noundef %53, ptr noundef @.str.12, ptr noundef @.str.2, i32 noundef 101, ptr noundef %56, ptr noundef %59, ptr noundef %62, i32 noundef %64) #9
  br label %83

66:                                               ; preds = %44, %37
  %67 = load i32, ptr %3, align 4, !tbaa !9
  %68 = call ptr @__errno_location() #10
  store i32 %67, ptr %68, align 4, !tbaa !9
  %69 = load ptr, ptr @stderr, align 8, !tbaa !5
  %70 = load i32, ptr @test_count, align 4, !tbaa !9
  %71 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %72 = load i32, ptr %71, align 4, !tbaa !9
  %73 = call ptr @s2n_strerror(i32 noundef %72, ptr noundef @.str.3)
  %74 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %75 = load i32, ptr %74, align 4, !tbaa !9
  %76 = call ptr @s2n_strerror_debug(i32 noundef %75, ptr noundef @.str.3)
  %77 = call ptr @__errno_location() #10
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = call ptr @strerror(i32 noundef %78) #9
  %80 = call ptr @__errno_location() #10
  %81 = load i32, ptr %80, align 4, !tbaa !9
  %82 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %69, ptr noundef @.str.4, i32 noundef %70, ptr noundef @.str.12, ptr noundef @.str.2, i32 noundef 101, ptr noundef %73, ptr noundef %76, ptr noundef %79, i32 noundef %81) #9
  br label %83

83:                                               ; preds = %66, %49
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #9
  br label %84

84:                                               ; preds = %83
  br label %85

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

86:                                               ; No predecessors!
  br label %87

87:                                               ; preds = %86
  br label %88

88:                                               ; preds = %87, %30
  br label %89

89:                                               ; preds = %88
  br label %90

90:                                               ; preds = %89
  br label %91

91:                                               ; preds = %90
  %92 = load i32, ptr @test_count, align 4, !tbaa !9
  %93 = add nsw i32 %92, 1
  store i32 %93, ptr @test_count, align 4, !tbaa !9
  %94 = load ptr, ptr %2, align 8, !tbaa !5
  %95 = icmp eq ptr %94, null
  br i1 %95, label %96, label %149

96:                                               ; preds = %91
  br label %97

97:                                               ; preds = %96
  br label %98

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #9
  %99 = call ptr @__errno_location() #10
  %100 = load i32, ptr %99, align 4, !tbaa !9
  store i32 %100, ptr %4, align 4, !tbaa !9
  %101 = load ptr, ptr @stderr, align 8, !tbaa !5
  %102 = call i32 @s2n_print_stacktrace(ptr noundef %101)
  %103 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %104 = trunc i8 %103 to i1
  br i1 %104, label %105, label %127

105:                                              ; preds = %98
  %106 = load ptr, ptr @stderr, align 8, !tbaa !5
  %107 = call i32 @fileno(ptr noundef %106) #9
  %108 = call i32 @isatty(i32 noundef %107) #9
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %127

110:                                              ; preds = %105
  %111 = load i32, ptr %4, align 4, !tbaa !9
  %112 = call ptr @__errno_location() #10
  store i32 %111, ptr %112, align 4, !tbaa !9
  %113 = load ptr, ptr @stderr, align 8, !tbaa !5
  %114 = load i32, ptr @test_count, align 4, !tbaa !9
  %115 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = call ptr @s2n_strerror(i32 noundef %116, ptr noundef @.str.3)
  %118 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = call ptr @s2n_strerror_debug(i32 noundef %119, ptr noundef @.str.3)
  %121 = call ptr @__errno_location() #10
  %122 = load i32, ptr %121, align 4, !tbaa !9
  %123 = call ptr @strerror(i32 noundef %122) #9
  %124 = call ptr @__errno_location() #10
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %113, ptr noundef @.str, i32 noundef %114, ptr noundef @.str.13, ptr noundef @.str.2, i32 noundef 102, ptr noundef %117, ptr noundef %120, ptr noundef %123, i32 noundef %125) #9
  br label %144

127:                                              ; preds = %105, %98
  %128 = load i32, ptr %4, align 4, !tbaa !9
  %129 = call ptr @__errno_location() #10
  store i32 %128, ptr %129, align 4, !tbaa !9
  %130 = load ptr, ptr @stderr, align 8, !tbaa !5
  %131 = load i32, ptr @test_count, align 4, !tbaa !9
  %132 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = call ptr @s2n_strerror(i32 noundef %133, ptr noundef @.str.3)
  %135 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = call ptr @s2n_strerror_debug(i32 noundef %136, ptr noundef @.str.3)
  %138 = call ptr @__errno_location() #10
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = call ptr @strerror(i32 noundef %139) #9
  %141 = call ptr @__errno_location() #10
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %130, ptr noundef @.str.4, i32 noundef %131, ptr noundef @.str.13, ptr noundef @.str.2, i32 noundef 102, ptr noundef %134, ptr noundef %137, ptr noundef %140, i32 noundef %142) #9
  br label %144

144:                                              ; preds = %127, %110
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #9
  br label %145

145:                                              ; preds = %144
  br label %146

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

147:                                              ; No predecessors!
  br label %148

148:                                              ; preds = %147
  br label %149

149:                                              ; preds = %148, %91
  br label %150

150:                                              ; preds = %149
  br label %151

151:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #9
  %152 = call ptr @s2n_config_new()
  store ptr %152, ptr %5, align 8, !tbaa !5
  br label %153

153:                                              ; preds = %151
  %154 = load i32, ptr @test_count, align 4, !tbaa !9
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr @test_count, align 4, !tbaa !9
  %156 = load ptr, ptr %5, align 8, !tbaa !5
  %157 = icmp eq ptr %156, null
  br i1 %157, label %158, label %211

158:                                              ; preds = %153
  br label %159

159:                                              ; preds = %158
  br label %160

160:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #9
  %161 = call ptr @__errno_location() #10
  %162 = load i32, ptr %161, align 4, !tbaa !9
  store i32 %162, ptr %6, align 4, !tbaa !9
  %163 = load ptr, ptr @stderr, align 8, !tbaa !5
  %164 = call i32 @s2n_print_stacktrace(ptr noundef %163)
  %165 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %166 = trunc i8 %165 to i1
  br i1 %166, label %167, label %189

167:                                              ; preds = %160
  %168 = load ptr, ptr @stderr, align 8, !tbaa !5
  %169 = call i32 @fileno(ptr noundef %168) #9
  %170 = call i32 @isatty(i32 noundef %169) #9
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %172, label %189

172:                                              ; preds = %167
  %173 = load i32, ptr %6, align 4, !tbaa !9
  %174 = call ptr @__errno_location() #10
  store i32 %173, ptr %174, align 4, !tbaa !9
  %175 = load ptr, ptr @stderr, align 8, !tbaa !5
  %176 = load i32, ptr @test_count, align 4, !tbaa !9
  %177 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = call ptr @s2n_strerror(i32 noundef %178, ptr noundef @.str.3)
  %180 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = call ptr @s2n_strerror_debug(i32 noundef %181, ptr noundef @.str.3)
  %183 = call ptr @__errno_location() #10
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = call ptr @strerror(i32 noundef %184) #9
  %186 = call ptr @__errno_location() #10
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %175, ptr noundef @.str, i32 noundef %176, ptr noundef @.str.14, ptr noundef @.str.2, i32 noundef 105, ptr noundef %179, ptr noundef %182, ptr noundef %185, i32 noundef %187) #9
  br label %206

189:                                              ; preds = %167, %160
  %190 = load i32, ptr %6, align 4, !tbaa !9
  %191 = call ptr @__errno_location() #10
  store i32 %190, ptr %191, align 4, !tbaa !9
  %192 = load ptr, ptr @stderr, align 8, !tbaa !5
  %193 = load i32, ptr @test_count, align 4, !tbaa !9
  %194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = call ptr @s2n_strerror(i32 noundef %195, ptr noundef @.str.3)
  %197 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = call ptr @s2n_strerror_debug(i32 noundef %198, ptr noundef @.str.3)
  %200 = call ptr @__errno_location() #10
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = call ptr @strerror(i32 noundef %201) #9
  %203 = call ptr @__errno_location() #10
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %192, ptr noundef @.str.4, i32 noundef %193, ptr noundef @.str.14, ptr noundef @.str.2, i32 noundef 105, ptr noundef %196, ptr noundef %199, ptr noundef %202, i32 noundef %204) #9
  br label %206

206:                                              ; preds = %189, %172
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #9
  br label %207

207:                                              ; preds = %206
  br label %208

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

209:                                              ; No predecessors!
  br label %210

210:                                              ; preds = %209
  br label %211

211:                                              ; preds = %210, %153
  br label %212

212:                                              ; preds = %211
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213
  %215 = load i32, ptr @test_count, align 4, !tbaa !9
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr @test_count, align 4, !tbaa !9
  %217 = load ptr, ptr %5, align 8, !tbaa !5
  %218 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef %217)
  %219 = icmp eq i32 %218, -1
  br i1 %219, label %220, label %273

220:                                              ; preds = %214
  br label %221

221:                                              ; preds = %220
  br label %222

222:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  %223 = call ptr @__errno_location() #10
  %224 = load i32, ptr %223, align 4, !tbaa !9
  store i32 %224, ptr %7, align 4, !tbaa !9
  %225 = load ptr, ptr @stderr, align 8, !tbaa !5
  %226 = call i32 @s2n_print_stacktrace(ptr noundef %225)
  %227 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %228 = trunc i8 %227 to i1
  br i1 %228, label %229, label %251

229:                                              ; preds = %222
  %230 = load ptr, ptr @stderr, align 8, !tbaa !5
  %231 = call i32 @fileno(ptr noundef %230) #9
  %232 = call i32 @isatty(i32 noundef %231) #9
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %234, label %251

234:                                              ; preds = %229
  %235 = load i32, ptr %7, align 4, !tbaa !9
  %236 = call ptr @__errno_location() #10
  store i32 %235, ptr %236, align 4, !tbaa !9
  %237 = load ptr, ptr @stderr, align 8, !tbaa !5
  %238 = load i32, ptr @test_count, align 4, !tbaa !9
  %239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = call ptr @s2n_strerror(i32 noundef %240, ptr noundef @.str.3)
  %242 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = call ptr @s2n_strerror_debug(i32 noundef %243, ptr noundef @.str.3)
  %245 = call ptr @__errno_location() #10
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = call ptr @strerror(i32 noundef %246) #9
  %248 = call ptr @__errno_location() #10
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %237, ptr noundef @.str, i32 noundef %238, ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 107, ptr noundef %241, ptr noundef %244, ptr noundef %247, i32 noundef %249) #9
  br label %268

251:                                              ; preds = %229, %222
  %252 = load i32, ptr %7, align 4, !tbaa !9
  %253 = call ptr @__errno_location() #10
  store i32 %252, ptr %253, align 4, !tbaa !9
  %254 = load ptr, ptr @stderr, align 8, !tbaa !5
  %255 = load i32, ptr @test_count, align 4, !tbaa !9
  %256 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = call ptr @s2n_strerror(i32 noundef %257, ptr noundef @.str.3)
  %259 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = call ptr @s2n_strerror_debug(i32 noundef %260, ptr noundef @.str.3)
  %262 = call ptr @__errno_location() #10
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = call ptr @strerror(i32 noundef %263) #9
  %265 = call ptr @__errno_location() #10
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %254, ptr noundef @.str.4, i32 noundef %255, ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 107, ptr noundef %258, ptr noundef %261, ptr noundef %264, i32 noundef %266) #9
  br label %268

268:                                              ; preds = %251, %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %269

269:                                              ; preds = %268
  br label %270

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

271:                                              ; No predecessors!
  br label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272, %214
  br label %274

274:                                              ; preds = %273
  br label %275

275:                                              ; preds = %274
  br label %276

276:                                              ; preds = %275
  %277 = load i32, ptr @test_count, align 4, !tbaa !9
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr @test_count, align 4, !tbaa !9
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  %280 = load ptr, ptr %2, align 8, !tbaa !5
  %281 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %279, ptr noundef %280)
  %282 = icmp eq i32 %281, -1
  br i1 %282, label %283, label %336

283:                                              ; preds = %276
  br label %284

284:                                              ; preds = %283
  br label %285

285:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  %286 = call ptr @__errno_location() #10
  %287 = load i32, ptr %286, align 4, !tbaa !9
  store i32 %287, ptr %8, align 4, !tbaa !9
  %288 = load ptr, ptr @stderr, align 8, !tbaa !5
  %289 = call i32 @s2n_print_stacktrace(ptr noundef %288)
  %290 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %291 = trunc i8 %290 to i1
  br i1 %291, label %292, label %314

292:                                              ; preds = %285
  %293 = load ptr, ptr @stderr, align 8, !tbaa !5
  %294 = call i32 @fileno(ptr noundef %293) #9
  %295 = call i32 @isatty(i32 noundef %294) #9
  %296 = icmp ne i32 %295, 0
  br i1 %296, label %297, label %314

297:                                              ; preds = %292
  %298 = load i32, ptr %8, align 4, !tbaa !9
  %299 = call ptr @__errno_location() #10
  store i32 %298, ptr %299, align 4, !tbaa !9
  %300 = load ptr, ptr @stderr, align 8, !tbaa !5
  %301 = load i32, ptr @test_count, align 4, !tbaa !9
  %302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = call ptr @s2n_strerror(i32 noundef %303, ptr noundef @.str.3)
  %305 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = call ptr @s2n_strerror_debug(i32 noundef %306, ptr noundef @.str.3)
  %308 = call ptr @__errno_location() #10
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = call ptr @strerror(i32 noundef %309) #9
  %311 = call ptr @__errno_location() #10
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %300, ptr noundef @.str, i32 noundef %301, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 108, ptr noundef %304, ptr noundef %307, ptr noundef %310, i32 noundef %312) #9
  br label %331

314:                                              ; preds = %292, %285
  %315 = load i32, ptr %8, align 4, !tbaa !9
  %316 = call ptr @__errno_location() #10
  store i32 %315, ptr %316, align 4, !tbaa !9
  %317 = load ptr, ptr @stderr, align 8, !tbaa !5
  %318 = load i32, ptr @test_count, align 4, !tbaa !9
  %319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = call ptr @s2n_strerror(i32 noundef %320, ptr noundef @.str.3)
  %322 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = call ptr @s2n_strerror_debug(i32 noundef %323, ptr noundef @.str.3)
  %325 = call ptr @__errno_location() #10
  %326 = load i32, ptr %325, align 4, !tbaa !9
  %327 = call ptr @strerror(i32 noundef %326) #9
  %328 = call ptr @__errno_location() #10
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef @.str.4, i32 noundef %318, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 108, ptr noundef %321, ptr noundef %324, ptr noundef %327, i32 noundef %329) #9
  br label %331

331:                                              ; preds = %314, %297
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  br label %332

332:                                              ; preds = %331
  br label %333

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

334:                                              ; No predecessors!
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335, %276
  br label %337

337:                                              ; preds = %336
  br label %338

338:                                              ; preds = %337
  br label %339

339:                                              ; preds = %338
  %340 = load i32, ptr @test_count, align 4, !tbaa !9
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr @test_count, align 4, !tbaa !9
  %342 = load ptr, ptr %5, align 8, !tbaa !5
  %343 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %342, ptr noundef @.str.17)
  %344 = icmp eq i32 %343, -1
  br i1 %344, label %345, label %398

345:                                              ; preds = %339
  br label %346

346:                                              ; preds = %345
  br label %347

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

354:                                              ; preds = %347
  %355 = load ptr, ptr @stderr, align 8, !tbaa !5
  %356 = call i32 @fileno(ptr noundef %355) #9
  %357 = call i32 @isatty(i32 noundef %356) #9
  %358 = icmp ne i32 %357, 0
  br i1 %358, label %359, label %376

359:                                              ; preds = %354
  %360 = load i32, ptr %9, align 4, !tbaa !9
  %361 = call ptr @__errno_location() #10
  store i32 %360, ptr %361, align 4, !tbaa !9
  %362 = load ptr, ptr @stderr, align 8, !tbaa !5
  %363 = load i32, ptr @test_count, align 4, !tbaa !9
  %364 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = call ptr @s2n_strerror(i32 noundef %365, ptr noundef @.str.3)
  %367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %368 = load i32, ptr %367, align 4, !tbaa !9
  %369 = call ptr @s2n_strerror_debug(i32 noundef %368, ptr noundef @.str.3)
  %370 = call ptr @__errno_location() #10
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = call ptr @strerror(i32 noundef %371) #9
  %373 = call ptr @__errno_location() #10
  %374 = load i32, ptr %373, align 4, !tbaa !9
  %375 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %362, ptr noundef @.str, i32 noundef %363, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 109, ptr noundef %366, ptr noundef %369, ptr noundef %372, i32 noundef %374) #9
  br label %393

376:                                              ; preds = %354, %347
  %377 = load i32, ptr %9, align 4, !tbaa !9
  %378 = call ptr @__errno_location() #10
  store i32 %377, ptr %378, align 4, !tbaa !9
  %379 = load ptr, ptr @stderr, align 8, !tbaa !5
  %380 = load i32, ptr @test_count, align 4, !tbaa !9
  %381 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = call ptr @s2n_strerror(i32 noundef %382, ptr noundef @.str.3)
  %384 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = call ptr @s2n_strerror_debug(i32 noundef %385, ptr noundef @.str.3)
  %387 = call ptr @__errno_location() #10
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = call ptr @strerror(i32 noundef %388) #9
  %390 = call ptr @__errno_location() #10
  %391 = load i32, ptr %390, align 4, !tbaa !9
  %392 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %379, ptr noundef @.str.4, i32 noundef %380, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 109, ptr noundef %383, ptr noundef %386, ptr noundef %389, i32 noundef %391) #9
  br label %393

393:                                              ; preds = %376, %359
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  br label %394

394:                                              ; preds = %393
  br label %395

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

396:                                              ; No predecessors!
  br label %397

397:                                              ; preds = %396
  br label %398

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

399:                                              ; preds = %398
  br label %400

400:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %401 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %401, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  %402 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %402, ptr %11, align 8, !tbaa !5
  br label %403

403:                                              ; preds = %400
  %404 = load i32, ptr @test_count, align 4, !tbaa !9
  %405 = add nsw i32 %404, 1
  store i32 %405, ptr @test_count, align 4, !tbaa !9
  %406 = load ptr, ptr %10, align 8, !tbaa !5
  %407 = icmp eq ptr %406, null
  br i1 %407, label %408, label %461

408:                                              ; preds = %403
  br label %409

409:                                              ; preds = %408
  br label %410

410:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %411 = call ptr @__errno_location() #10
  %412 = load i32, ptr %411, align 4, !tbaa !9
  store i32 %412, ptr %12, align 4, !tbaa !9
  %413 = load ptr, ptr @stderr, align 8, !tbaa !5
  %414 = call i32 @s2n_print_stacktrace(ptr noundef %413)
  %415 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %416 = trunc i8 %415 to i1
  br i1 %416, label %417, label %439

417:                                              ; preds = %410
  %418 = load ptr, ptr @stderr, align 8, !tbaa !5
  %419 = call i32 @fileno(ptr noundef %418) #9
  %420 = call i32 @isatty(i32 noundef %419) #9
  %421 = icmp ne i32 %420, 0
  br i1 %421, label %422, label %439

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

439:                                              ; preds = %417, %410
  %440 = load i32, ptr %12, align 4, !tbaa !9
  %441 = call ptr @__errno_location() #10
  store i32 %440, ptr %441, align 4, !tbaa !9
  %442 = load ptr, ptr @stderr, align 8, !tbaa !5
  %443 = load i32, ptr @test_count, align 4, !tbaa !9
  %444 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %445 = load i32, ptr %444, align 4, !tbaa !9
  %446 = call ptr @s2n_strerror(i32 noundef %445, ptr noundef @.str.3)
  %447 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = call ptr @s2n_strerror_debug(i32 noundef %448, ptr noundef @.str.3)
  %450 = call ptr @__errno_location() #10
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = call ptr @strerror(i32 noundef %451) #9
  %453 = call ptr @__errno_location() #10
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %442, ptr noundef @.str.4, i32 noundef %443, ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 113, ptr noundef %446, ptr noundef %449, ptr noundef %452, i32 noundef %454) #9
  br label %456

456:                                              ; preds = %439, %422
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %457

457:                                              ; preds = %456
  br label %458

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

459:                                              ; No predecessors!
  br label %460

460:                                              ; preds = %459
  br label %461

461:                                              ; preds = %460, %403
  br label %462

462:                                              ; preds = %461
  br label %463

463:                                              ; preds = %462
  br label %464

464:                                              ; preds = %463
  %465 = load i32, ptr @test_count, align 4, !tbaa !9
  %466 = add nsw i32 %465, 1
  store i32 %466, ptr @test_count, align 4, !tbaa !9
  %467 = load ptr, ptr %11, align 8, !tbaa !5
  %468 = icmp eq ptr %467, null
  br i1 %468, label %469, label %522

469:                                              ; preds = %464
  br label %470

470:                                              ; preds = %469
  br label %471

471:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %472 = call ptr @__errno_location() #10
  %473 = load i32, ptr %472, align 4, !tbaa !9
  store i32 %473, ptr %13, align 4, !tbaa !9
  %474 = load ptr, ptr @stderr, align 8, !tbaa !5
  %475 = call i32 @s2n_print_stacktrace(ptr noundef %474)
  %476 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %477 = trunc i8 %476 to i1
  br i1 %477, label %478, label %500

478:                                              ; preds = %471
  %479 = load ptr, ptr @stderr, align 8, !tbaa !5
  %480 = call i32 @fileno(ptr noundef %479) #9
  %481 = call i32 @isatty(i32 noundef %480) #9
  %482 = icmp ne i32 %481, 0
  br i1 %482, label %483, label %500

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

500:                                              ; preds = %478, %471
  %501 = load i32, ptr %13, align 4, !tbaa !9
  %502 = call ptr @__errno_location() #10
  store i32 %501, ptr %502, align 4, !tbaa !9
  %503 = load ptr, ptr @stderr, align 8, !tbaa !5
  %504 = load i32, ptr @test_count, align 4, !tbaa !9
  %505 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %506 = load i32, ptr %505, align 4, !tbaa !9
  %507 = call ptr @s2n_strerror(i32 noundef %506, ptr noundef @.str.3)
  %508 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %509 = load i32, ptr %508, align 4, !tbaa !9
  %510 = call ptr @s2n_strerror_debug(i32 noundef %509, ptr noundef @.str.3)
  %511 = call ptr @__errno_location() #10
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = call ptr @strerror(i32 noundef %512) #9
  %514 = call ptr @__errno_location() #10
  %515 = load i32, ptr %514, align 4, !tbaa !9
  %516 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %503, ptr noundef @.str.4, i32 noundef %504, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 114, ptr noundef %507, ptr noundef %510, ptr noundef %513, i32 noundef %515) #9
  br label %517

517:                                              ; preds = %500, %483
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %518

518:                                              ; preds = %517
  br label %519

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

520:                                              ; No predecessors!
  br label %521

521:                                              ; preds = %520
  br label %522

522:                                              ; preds = %521, %464
  br label %523

523:                                              ; preds = %522
  br label %524

524:                                              ; preds = %523
  br label %525

525:                                              ; preds = %524
  %526 = load i32, ptr @test_count, align 4, !tbaa !9
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr @test_count, align 4, !tbaa !9
  %528 = load ptr, ptr %10, align 8, !tbaa !5
  %529 = load ptr, ptr %5, align 8, !tbaa !5
  %530 = call i32 @s2n_connection_set_config(ptr noundef %528, ptr noundef %529)
  %531 = icmp eq i32 %530, -1
  br i1 %531, label %532, label %585

532:                                              ; preds = %525
  br label %533

533:                                              ; preds = %532
  br label %534

534:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %535 = call ptr @__errno_location() #10
  %536 = load i32, ptr %535, align 4, !tbaa !9
  store i32 %536, ptr %14, align 4, !tbaa !9
  %537 = load ptr, ptr @stderr, align 8, !tbaa !5
  %538 = call i32 @s2n_print_stacktrace(ptr noundef %537)
  %539 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %540 = trunc i8 %539 to i1
  br i1 %540, label %541, label %563

541:                                              ; preds = %534
  %542 = load ptr, ptr @stderr, align 8, !tbaa !5
  %543 = call i32 @fileno(ptr noundef %542) #9
  %544 = call i32 @isatty(i32 noundef %543) #9
  %545 = icmp ne i32 %544, 0
  br i1 %545, label %546, label %563

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

563:                                              ; preds = %541, %534
  %564 = load i32, ptr %14, align 4, !tbaa !9
  %565 = call ptr @__errno_location() #10
  store i32 %564, ptr %565, align 4, !tbaa !9
  %566 = load ptr, ptr @stderr, align 8, !tbaa !5
  %567 = load i32, ptr @test_count, align 4, !tbaa !9
  %568 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %569 = load i32, ptr %568, align 4, !tbaa !9
  %570 = call ptr @s2n_strerror(i32 noundef %569, ptr noundef @.str.3)
  %571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = call ptr @s2n_strerror_debug(i32 noundef %572, ptr noundef @.str.3)
  %574 = call ptr @__errno_location() #10
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = call ptr @strerror(i32 noundef %575) #9
  %577 = call ptr @__errno_location() #10
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %566, ptr noundef @.str.4, i32 noundef %567, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 116, ptr noundef %570, ptr noundef %573, ptr noundef %576, i32 noundef %578) #9
  br label %580

580:                                              ; preds = %563, %546
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %581

581:                                              ; preds = %580
  br label %582

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

583:                                              ; No predecessors!
  br label %584

584:                                              ; preds = %583
  br label %585

585:                                              ; preds = %584, %525
  br label %586

586:                                              ; preds = %585
  br label %587

587:                                              ; preds = %586
  br label %588

588:                                              ; preds = %587
  %589 = load i32, ptr @test_count, align 4, !tbaa !9
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr @test_count, align 4, !tbaa !9
  %591 = load ptr, ptr %11, align 8, !tbaa !5
  %592 = load ptr, ptr %5, align 8, !tbaa !5
  %593 = call i32 @s2n_connection_set_config(ptr noundef %591, ptr noundef %592)
  %594 = icmp eq i32 %593, -1
  br i1 %594, label %595, label %648

595:                                              ; preds = %588
  br label %596

596:                                              ; preds = %595
  br label %597

597:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  %598 = call ptr @__errno_location() #10
  %599 = load i32, ptr %598, align 4, !tbaa !9
  store i32 %599, ptr %15, align 4, !tbaa !9
  %600 = load ptr, ptr @stderr, align 8, !tbaa !5
  %601 = call i32 @s2n_print_stacktrace(ptr noundef %600)
  %602 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %603 = trunc i8 %602 to i1
  br i1 %603, label %604, label %626

604:                                              ; preds = %597
  %605 = load ptr, ptr @stderr, align 8, !tbaa !5
  %606 = call i32 @fileno(ptr noundef %605) #9
  %607 = call i32 @isatty(i32 noundef %606) #9
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %609, label %626

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

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

643:                                              ; preds = %626, %609
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  br label %644

644:                                              ; preds = %643
  br label %645

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

646:                                              ; No predecessors!
  br label %647

647:                                              ; preds = %646
  br label %648

648:                                              ; preds = %647, %588
  br label %649

649:                                              ; preds = %648
  br label %650

650:                                              ; preds = %649
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  call void @llvm.memset.p0.i64(ptr align 4 %16, i8 0, i64 8, i1 false)
  br label %651

651:                                              ; preds = %650
  %652 = load i32, ptr @test_count, align 4, !tbaa !9
  %653 = add nsw i32 %652, 1
  store i32 %653, ptr @test_count, align 4, !tbaa !9
  %654 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef %16)
  %655 = icmp eq i32 %654, -1
  br i1 %655, label %656, label %709

656:                                              ; preds = %651
  br label %657

657:                                              ; preds = %656
  br label %658

658:                                              ; preds = %657
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %659 = call ptr @__errno_location() #10
  %660 = load i32, ptr %659, align 4, !tbaa !9
  store i32 %660, ptr %17, align 4, !tbaa !9
  %661 = load ptr, ptr @stderr, align 8, !tbaa !5
  %662 = call i32 @s2n_print_stacktrace(ptr noundef %661)
  %663 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %664 = trunc i8 %663 to i1
  br i1 %664, label %665, label %687

665:                                              ; preds = %658
  %666 = load ptr, ptr @stderr, align 8, !tbaa !5
  %667 = call i32 @fileno(ptr noundef %666) #9
  %668 = call i32 @isatty(i32 noundef %667) #9
  %669 = icmp ne i32 %668, 0
  br i1 %669, label %670, label %687

670:                                              ; preds = %665
  %671 = load i32, ptr %17, align 4, !tbaa !9
  %672 = call ptr @__errno_location() #10
  store i32 %671, ptr %672, align 4, !tbaa !9
  %673 = load ptr, ptr @stderr, align 8, !tbaa !5
  %674 = load i32, ptr @test_count, align 4, !tbaa !9
  %675 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = call ptr @s2n_strerror(i32 noundef %676, ptr noundef @.str.3)
  %678 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %679 = load i32, ptr %678, align 4, !tbaa !9
  %680 = call ptr @s2n_strerror_debug(i32 noundef %679, ptr noundef @.str.3)
  %681 = call ptr @__errno_location() #10
  %682 = load i32, ptr %681, align 4, !tbaa !9
  %683 = call ptr @strerror(i32 noundef %682) #9
  %684 = call ptr @__errno_location() #10
  %685 = load i32, ptr %684, align 4, !tbaa !9
  %686 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %673, ptr noundef @.str, i32 noundef %674, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 120, ptr noundef %677, ptr noundef %680, ptr noundef %683, i32 noundef %685) #9
  br label %704

687:                                              ; preds = %665, %658
  %688 = load i32, ptr %17, align 4, !tbaa !9
  %689 = call ptr @__errno_location() #10
  store i32 %688, ptr %689, align 4, !tbaa !9
  %690 = load ptr, ptr @stderr, align 8, !tbaa !5
  %691 = load i32, ptr @test_count, align 4, !tbaa !9
  %692 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %693 = load i32, ptr %692, align 4, !tbaa !9
  %694 = call ptr @s2n_strerror(i32 noundef %693, ptr noundef @.str.3)
  %695 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = call ptr @s2n_strerror_debug(i32 noundef %696, ptr noundef @.str.3)
  %698 = call ptr @__errno_location() #10
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = call ptr @strerror(i32 noundef %699) #9
  %701 = call ptr @__errno_location() #10
  %702 = load i32, ptr %701, align 4, !tbaa !9
  %703 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %690, ptr noundef @.str.4, i32 noundef %691, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 120, ptr noundef %694, ptr noundef %697, ptr noundef %700, i32 noundef %702) #9
  br label %704

704:                                              ; preds = %687, %670
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %705

705:                                              ; preds = %704
  br label %706

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

707:                                              ; No predecessors!
  br label %708

708:                                              ; preds = %707
  br label %709

709:                                              ; preds = %708, %651
  br label %710

710:                                              ; preds = %709
  br label %711

711:                                              ; preds = %710
  br label %712

712:                                              ; preds = %711
  %713 = load i32, ptr @test_count, align 4, !tbaa !9
  %714 = add nsw i32 %713, 1
  store i32 %714, ptr @test_count, align 4, !tbaa !9
  %715 = load ptr, ptr %11, align 8, !tbaa !5
  %716 = load ptr, ptr %10, align 8, !tbaa !5
  %717 = call i32 @s2n_connections_set_io_pair(ptr noundef %715, ptr noundef %716, ptr noundef %16)
  %718 = icmp eq i32 %717, -1
  br i1 %718, label %719, label %772

719:                                              ; preds = %712
  br label %720

720:                                              ; preds = %719
  br label %721

721:                                              ; preds = %720
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %722 = call ptr @__errno_location() #10
  %723 = load i32, ptr %722, align 4, !tbaa !9
  store i32 %723, ptr %18, align 4, !tbaa !9
  %724 = load ptr, ptr @stderr, align 8, !tbaa !5
  %725 = call i32 @s2n_print_stacktrace(ptr noundef %724)
  %726 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %727 = trunc i8 %726 to i1
  br i1 %727, label %728, label %750

728:                                              ; preds = %721
  %729 = load ptr, ptr @stderr, align 8, !tbaa !5
  %730 = call i32 @fileno(ptr noundef %729) #9
  %731 = call i32 @isatty(i32 noundef %730) #9
  %732 = icmp ne i32 %731, 0
  br i1 %732, label %733, label %750

733:                                              ; preds = %728
  %734 = load i32, ptr %18, align 4, !tbaa !9
  %735 = call ptr @__errno_location() #10
  store i32 %734, ptr %735, align 4, !tbaa !9
  %736 = load ptr, ptr @stderr, align 8, !tbaa !5
  %737 = load i32, ptr @test_count, align 4, !tbaa !9
  %738 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %739 = load i32, ptr %738, align 4, !tbaa !9
  %740 = call ptr @s2n_strerror(i32 noundef %739, ptr noundef @.str.3)
  %741 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %742 = load i32, ptr %741, align 4, !tbaa !9
  %743 = call ptr @s2n_strerror_debug(i32 noundef %742, ptr noundef @.str.3)
  %744 = call ptr @__errno_location() #10
  %745 = load i32, ptr %744, align 4, !tbaa !9
  %746 = call ptr @strerror(i32 noundef %745) #9
  %747 = call ptr @__errno_location() #10
  %748 = load i32, ptr %747, align 4, !tbaa !9
  %749 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %736, ptr noundef @.str, i32 noundef %737, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 121, ptr noundef %740, ptr noundef %743, ptr noundef %746, i32 noundef %748) #9
  br label %767

750:                                              ; preds = %728, %721
  %751 = load i32, ptr %18, align 4, !tbaa !9
  %752 = call ptr @__errno_location() #10
  store i32 %751, ptr %752, align 4, !tbaa !9
  %753 = load ptr, ptr @stderr, align 8, !tbaa !5
  %754 = load i32, ptr @test_count, align 4, !tbaa !9
  %755 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = call ptr @s2n_strerror(i32 noundef %756, ptr noundef @.str.3)
  %758 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %759 = load i32, ptr %758, align 4, !tbaa !9
  %760 = call ptr @s2n_strerror_debug(i32 noundef %759, ptr noundef @.str.3)
  %761 = call ptr @__errno_location() #10
  %762 = load i32, ptr %761, align 4, !tbaa !9
  %763 = call ptr @strerror(i32 noundef %762) #9
  %764 = call ptr @__errno_location() #10
  %765 = load i32, ptr %764, align 4, !tbaa !9
  %766 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %753, ptr noundef @.str.4, i32 noundef %754, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 121, ptr noundef %757, ptr noundef %760, ptr noundef %763, i32 noundef %765) #9
  br label %767

767:                                              ; preds = %750, %733
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %768

768:                                              ; preds = %767
  br label %769

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

770:                                              ; No predecessors!
  br label %771

771:                                              ; preds = %770
  br label %772

772:                                              ; preds = %771, %712
  br label %773

773:                                              ; preds = %772
  br label %774

774:                                              ; preds = %773
  %775 = load ptr, ptr %11, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.s2n_connection, ptr %775, i32 0, i32 2
  store ptr @security_policy_test_tls13_retry, ptr %776, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 12, ptr %19) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr align 4 @__const.hello_retry_client_hello_cb_test.client_hello_ctx, i64 12, i1 false)
  br label %777

777:                                              ; preds = %774
  %778 = load i32, ptr @test_count, align 4, !tbaa !9
  %779 = add nsw i32 %778, 1
  store i32 %779, ptr @test_count, align 4, !tbaa !9
  %780 = load ptr, ptr %5, align 8, !tbaa !5
  %781 = call i32 @s2n_config_set_client_hello_cb(ptr noundef %780, ptr noundef @s2n_client_hello_poll_cb, ptr noundef %19)
  %782 = icmp eq i32 %781, -1
  br i1 %782, label %783, label %836

783:                                              ; preds = %777
  br label %784

784:                                              ; preds = %783
  br label %785

785:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  %786 = call ptr @__errno_location() #10
  %787 = load i32, ptr %786, align 4, !tbaa !9
  store i32 %787, ptr %20, align 4, !tbaa !9
  %788 = load ptr, ptr @stderr, align 8, !tbaa !5
  %789 = call i32 @s2n_print_stacktrace(ptr noundef %788)
  %790 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %791 = trunc i8 %790 to i1
  br i1 %791, label %792, label %814

792:                                              ; preds = %785
  %793 = load ptr, ptr @stderr, align 8, !tbaa !5
  %794 = call i32 @fileno(ptr noundef %793) #9
  %795 = call i32 @isatty(i32 noundef %794) #9
  %796 = icmp ne i32 %795, 0
  br i1 %796, label %797, label %814

797:                                              ; preds = %792
  %798 = load i32, ptr %20, align 4, !tbaa !9
  %799 = call ptr @__errno_location() #10
  store i32 %798, ptr %799, align 4, !tbaa !9
  %800 = load ptr, ptr @stderr, align 8, !tbaa !5
  %801 = load i32, ptr @test_count, align 4, !tbaa !9
  %802 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = call ptr @s2n_strerror(i32 noundef %803, ptr noundef @.str.3)
  %805 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %806 = load i32, ptr %805, align 4, !tbaa !9
  %807 = call ptr @s2n_strerror_debug(i32 noundef %806, ptr noundef @.str.3)
  %808 = call ptr @__errno_location() #10
  %809 = load i32, ptr %808, align 4, !tbaa !9
  %810 = call ptr @strerror(i32 noundef %809) #9
  %811 = call ptr @__errno_location() #10
  %812 = load i32, ptr %811, align 4, !tbaa !9
  %813 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %800, ptr noundef @.str, i32 noundef %801, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 131, ptr noundef %804, ptr noundef %807, ptr noundef %810, i32 noundef %812) #9
  br label %831

814:                                              ; preds = %792, %785
  %815 = load i32, ptr %20, align 4, !tbaa !9
  %816 = call ptr @__errno_location() #10
  store i32 %815, ptr %816, align 4, !tbaa !9
  %817 = load ptr, ptr @stderr, align 8, !tbaa !5
  %818 = load i32, ptr @test_count, align 4, !tbaa !9
  %819 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %820 = load i32, ptr %819, align 4, !tbaa !9
  %821 = call ptr @s2n_strerror(i32 noundef %820, ptr noundef @.str.3)
  %822 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %823 = load i32, ptr %822, align 4, !tbaa !9
  %824 = call ptr @s2n_strerror_debug(i32 noundef %823, ptr noundef @.str.3)
  %825 = call ptr @__errno_location() #10
  %826 = load i32, ptr %825, align 4, !tbaa !9
  %827 = call ptr @strerror(i32 noundef %826) #9
  %828 = call ptr @__errno_location() #10
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %817, ptr noundef @.str.4, i32 noundef %818, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 131, ptr noundef %821, ptr noundef %824, ptr noundef %827, i32 noundef %829) #9
  br label %831

831:                                              ; preds = %814, %797
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %832

832:                                              ; preds = %831
  br label %833

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

834:                                              ; No predecessors!
  br label %835

835:                                              ; preds = %834
  br label %836

836:                                              ; preds = %835, %777
  br label %837

837:                                              ; preds = %836
  br label %838

838:                                              ; preds = %837
  br label %839

839:                                              ; preds = %838
  %840 = load i32, ptr @test_count, align 4, !tbaa !9
  %841 = add nsw i32 %840, 1
  store i32 %841, ptr @test_count, align 4, !tbaa !9
  %842 = load ptr, ptr %5, align 8, !tbaa !5
  %843 = call i32 @s2n_config_set_client_hello_cb_mode(ptr noundef %842, i32 noundef 1)
  %844 = icmp eq i32 %843, -1
  br i1 %844, label %845, label %898

845:                                              ; preds = %839
  br label %846

846:                                              ; preds = %845
  br label %847

847:                                              ; preds = %846
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  %848 = call ptr @__errno_location() #10
  %849 = load i32, ptr %848, align 4, !tbaa !9
  store i32 %849, ptr %21, align 4, !tbaa !9
  %850 = load ptr, ptr @stderr, align 8, !tbaa !5
  %851 = call i32 @s2n_print_stacktrace(ptr noundef %850)
  %852 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %853 = trunc i8 %852 to i1
  br i1 %853, label %854, label %876

854:                                              ; preds = %847
  %855 = load ptr, ptr @stderr, align 8, !tbaa !5
  %856 = call i32 @fileno(ptr noundef %855) #9
  %857 = call i32 @isatty(i32 noundef %856) #9
  %858 = icmp ne i32 %857, 0
  br i1 %858, label %859, label %876

859:                                              ; preds = %854
  %860 = load i32, ptr %21, align 4, !tbaa !9
  %861 = call ptr @__errno_location() #10
  store i32 %860, ptr %861, align 4, !tbaa !9
  %862 = load ptr, ptr @stderr, align 8, !tbaa !5
  %863 = load i32, ptr @test_count, align 4, !tbaa !9
  %864 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %865 = load i32, ptr %864, align 4, !tbaa !9
  %866 = call ptr @s2n_strerror(i32 noundef %865, ptr noundef @.str.3)
  %867 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %868 = load i32, ptr %867, align 4, !tbaa !9
  %869 = call ptr @s2n_strerror_debug(i32 noundef %868, ptr noundef @.str.3)
  %870 = call ptr @__errno_location() #10
  %871 = load i32, ptr %870, align 4, !tbaa !9
  %872 = call ptr @strerror(i32 noundef %871) #9
  %873 = call ptr @__errno_location() #10
  %874 = load i32, ptr %873, align 4, !tbaa !9
  %875 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %862, ptr noundef @.str, i32 noundef %863, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 133, ptr noundef %866, ptr noundef %869, ptr noundef %872, i32 noundef %874) #9
  br label %893

876:                                              ; preds = %854, %847
  %877 = load i32, ptr %21, align 4, !tbaa !9
  %878 = call ptr @__errno_location() #10
  store i32 %877, ptr %878, align 4, !tbaa !9
  %879 = load ptr, ptr @stderr, align 8, !tbaa !5
  %880 = load i32, ptr @test_count, align 4, !tbaa !9
  %881 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %882 = load i32, ptr %881, align 4, !tbaa !9
  %883 = call ptr @s2n_strerror(i32 noundef %882, ptr noundef @.str.3)
  %884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %885 = load i32, ptr %884, align 4, !tbaa !9
  %886 = call ptr @s2n_strerror_debug(i32 noundef %885, ptr noundef @.str.3)
  %887 = call ptr @__errno_location() #10
  %888 = load i32, ptr %887, align 4, !tbaa !9
  %889 = call ptr @strerror(i32 noundef %888) #9
  %890 = call ptr @__errno_location() #10
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %879, ptr noundef @.str.4, i32 noundef %880, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 133, ptr noundef %883, ptr noundef %886, ptr noundef %889, i32 noundef %891) #9
  br label %893

893:                                              ; preds = %876, %859
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %894

894:                                              ; preds = %893
  br label %895

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

896:                                              ; No predecessors!
  br label %897

897:                                              ; preds = %896
  br label %898

898:                                              ; preds = %897, %839
  br label %899

899:                                              ; preds = %898
  br label %900

900:                                              ; preds = %899
  br label %901

901:                                              ; preds = %900
  %902 = load i32, ptr @test_count, align 4, !tbaa !9
  %903 = add nsw i32 %902, 1
  store i32 %903, ptr @test_count, align 4, !tbaa !9
  %904 = load ptr, ptr %10, align 8, !tbaa !5
  %905 = load ptr, ptr %11, align 8, !tbaa !5
  %906 = call i32 @s2n_negotiate_poll_hello_retry(ptr noundef %904, ptr noundef %905, ptr noundef %19)
  %907 = icmp eq i32 %906, -1
  br i1 %907, label %908, label %961

908:                                              ; preds = %901
  br label %909

909:                                              ; preds = %908
  br label %910

910:                                              ; preds = %909
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  %911 = call ptr @__errno_location() #10
  %912 = load i32, ptr %911, align 4, !tbaa !9
  store i32 %912, ptr %22, align 4, !tbaa !9
  %913 = load ptr, ptr @stderr, align 8, !tbaa !5
  %914 = call i32 @s2n_print_stacktrace(ptr noundef %913)
  %915 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %916 = trunc i8 %915 to i1
  br i1 %916, label %917, label %939

917:                                              ; preds = %910
  %918 = load ptr, ptr @stderr, align 8, !tbaa !5
  %919 = call i32 @fileno(ptr noundef %918) #9
  %920 = call i32 @isatty(i32 noundef %919) #9
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %922, label %939

922:                                              ; preds = %917
  %923 = load i32, ptr %22, align 4, !tbaa !9
  %924 = call ptr @__errno_location() #10
  store i32 %923, ptr %924, align 4, !tbaa !9
  %925 = load ptr, ptr @stderr, align 8, !tbaa !5
  %926 = load i32, ptr @test_count, align 4, !tbaa !9
  %927 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = call ptr @s2n_strerror(i32 noundef %928, ptr noundef @.str.3)
  %930 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %931 = load i32, ptr %930, align 4, !tbaa !9
  %932 = call ptr @s2n_strerror_debug(i32 noundef %931, ptr noundef @.str.3)
  %933 = call ptr @__errno_location() #10
  %934 = load i32, ptr %933, align 4, !tbaa !9
  %935 = call ptr @strerror(i32 noundef %934) #9
  %936 = call ptr @__errno_location() #10
  %937 = load i32, ptr %936, align 4, !tbaa !9
  %938 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %925, ptr noundef @.str, i32 noundef %926, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 136, ptr noundef %929, ptr noundef %932, ptr noundef %935, i32 noundef %937) #9
  br label %956

939:                                              ; preds = %917, %910
  %940 = load i32, ptr %22, align 4, !tbaa !9
  %941 = call ptr @__errno_location() #10
  store i32 %940, ptr %941, align 4, !tbaa !9
  %942 = load ptr, ptr @stderr, align 8, !tbaa !5
  %943 = load i32, ptr @test_count, align 4, !tbaa !9
  %944 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %945 = load i32, ptr %944, align 4, !tbaa !9
  %946 = call ptr @s2n_strerror(i32 noundef %945, ptr noundef @.str.3)
  %947 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %948 = load i32, ptr %947, align 4, !tbaa !9
  %949 = call ptr @s2n_strerror_debug(i32 noundef %948, ptr noundef @.str.3)
  %950 = call ptr @__errno_location() #10
  %951 = load i32, ptr %950, align 4, !tbaa !9
  %952 = call ptr @strerror(i32 noundef %951) #9
  %953 = call ptr @__errno_location() #10
  %954 = load i32, ptr %953, align 4, !tbaa !9
  %955 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %942, ptr noundef @.str.4, i32 noundef %943, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 136, ptr noundef %946, ptr noundef %949, ptr noundef %952, i32 noundef %954) #9
  br label %956

956:                                              ; preds = %939, %922
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %957

957:                                              ; preds = %956
  br label %958

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

959:                                              ; No predecessors!
  br label %960

960:                                              ; preds = %959
  br label %961

961:                                              ; preds = %960, %901
  br label %962

962:                                              ; preds = %961
  br label %963

963:                                              ; preds = %962
  br label %964

964:                                              ; preds = %963
  %965 = load i32, ptr @test_count, align 4, !tbaa !9
  %966 = add nsw i32 %965, 1
  store i32 %966, ptr @test_count, align 4, !tbaa !9
  %967 = load ptr, ptr %11, align 8, !tbaa !5
  %968 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef %967, i32 noundef 16)
  br i1 %968, label %1022, label %969

969:                                              ; preds = %964
  br label %970

970:                                              ; preds = %969
  br label %971

971:                                              ; preds = %970
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %972 = call ptr @__errno_location() #10
  %973 = load i32, ptr %972, align 4, !tbaa !9
  store i32 %973, ptr %23, align 4, !tbaa !9
  %974 = load ptr, ptr @stderr, align 8, !tbaa !5
  %975 = call i32 @s2n_print_stacktrace(ptr noundef %974)
  %976 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %977 = trunc i8 %976 to i1
  br i1 %977, label %978, label %1000

978:                                              ; preds = %971
  %979 = load ptr, ptr @stderr, align 8, !tbaa !5
  %980 = call i32 @fileno(ptr noundef %979) #9
  %981 = call i32 @isatty(i32 noundef %980) #9
  %982 = icmp ne i32 %981, 0
  br i1 %982, label %983, label %1000

983:                                              ; preds = %978
  %984 = load i32, ptr %23, align 4, !tbaa !9
  %985 = call ptr @__errno_location() #10
  store i32 %984, ptr %985, align 4, !tbaa !9
  %986 = load ptr, ptr @stderr, align 8, !tbaa !5
  %987 = load i32, ptr @test_count, align 4, !tbaa !9
  %988 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %989 = load i32, ptr %988, align 4, !tbaa !9
  %990 = call ptr @s2n_strerror(i32 noundef %989, ptr noundef @.str.3)
  %991 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %992 = load i32, ptr %991, align 4, !tbaa !9
  %993 = call ptr @s2n_strerror_debug(i32 noundef %992, ptr noundef @.str.3)
  %994 = call ptr @__errno_location() #10
  %995 = load i32, ptr %994, align 4, !tbaa !9
  %996 = call ptr @strerror(i32 noundef %995) #9
  %997 = call ptr @__errno_location() #10
  %998 = load i32, ptr %997, align 4, !tbaa !9
  %999 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %986, ptr noundef @.str, i32 noundef %987, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 139, ptr noundef %990, ptr noundef %993, ptr noundef %996, i32 noundef %998) #9
  br label %1017

1000:                                             ; preds = %978, %971
  %1001 = load i32, ptr %23, align 4, !tbaa !9
  %1002 = call ptr @__errno_location() #10
  store i32 %1001, ptr %1002, align 4, !tbaa !9
  %1003 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1004 = load i32, ptr @test_count, align 4, !tbaa !9
  %1005 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1006 = load i32, ptr %1005, align 4, !tbaa !9
  %1007 = call ptr @s2n_strerror(i32 noundef %1006, ptr noundef @.str.3)
  %1008 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = call ptr @s2n_strerror_debug(i32 noundef %1009, ptr noundef @.str.3)
  %1011 = call ptr @__errno_location() #10
  %1012 = load i32, ptr %1011, align 4, !tbaa !9
  %1013 = call ptr @strerror(i32 noundef %1012) #9
  %1014 = call ptr @__errno_location() #10
  %1015 = load i32, ptr %1014, align 4, !tbaa !9
  %1016 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1003, ptr noundef @.str.4, i32 noundef %1004, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 139, ptr noundef %1007, ptr noundef %1010, ptr noundef %1013, i32 noundef %1015) #9
  br label %1017

1017:                                             ; preds = %1000, %983
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %1018

1018:                                             ; preds = %1017
  br label %1019

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

1020:                                             ; No predecessors!
  br label %1021

1021:                                             ; preds = %1020
  br label %1022

1022:                                             ; preds = %1021, %964
  br label %1023

1023:                                             ; preds = %1022
  br label %1024

1024:                                             ; preds = %1023
  br label %1025

1025:                                             ; preds = %1024
  %1026 = load i32, ptr @test_count, align 4, !tbaa !9
  %1027 = add nsw i32 %1026, 1
  store i32 %1027, ptr @test_count, align 4, !tbaa !9
  %1028 = load ptr, ptr %10, align 8, !tbaa !5
  %1029 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef %1028, i32 noundef 16)
  br i1 %1029, label %1083, label %1030

1030:                                             ; preds = %1025
  br label %1031

1031:                                             ; preds = %1030
  br label %1032

1032:                                             ; preds = %1031
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %1033 = call ptr @__errno_location() #10
  %1034 = load i32, ptr %1033, align 4, !tbaa !9
  store i32 %1034, ptr %24, align 4, !tbaa !9
  %1035 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1036 = call i32 @s2n_print_stacktrace(ptr noundef %1035)
  %1037 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1038 = trunc i8 %1037 to i1
  br i1 %1038, label %1039, label %1061

1039:                                             ; preds = %1032
  %1040 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1041 = call i32 @fileno(ptr noundef %1040) #9
  %1042 = call i32 @isatty(i32 noundef %1041) #9
  %1043 = icmp ne i32 %1042, 0
  br i1 %1043, label %1044, label %1061

1044:                                             ; preds = %1039
  %1045 = load i32, ptr %24, align 4, !tbaa !9
  %1046 = call ptr @__errno_location() #10
  store i32 %1045, ptr %1046, align 4, !tbaa !9
  %1047 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1048 = load i32, ptr @test_count, align 4, !tbaa !9
  %1049 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1050 = load i32, ptr %1049, align 4, !tbaa !9
  %1051 = call ptr @s2n_strerror(i32 noundef %1050, ptr noundef @.str.3)
  %1052 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1053 = load i32, ptr %1052, align 4, !tbaa !9
  %1054 = call ptr @s2n_strerror_debug(i32 noundef %1053, ptr noundef @.str.3)
  %1055 = call ptr @__errno_location() #10
  %1056 = load i32, ptr %1055, align 4, !tbaa !9
  %1057 = call ptr @strerror(i32 noundef %1056) #9
  %1058 = call ptr @__errno_location() #10
  %1059 = load i32, ptr %1058, align 4, !tbaa !9
  %1060 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1047, ptr noundef @.str, i32 noundef %1048, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 140, ptr noundef %1051, ptr noundef %1054, ptr noundef %1057, i32 noundef %1059) #9
  br label %1078

1061:                                             ; preds = %1039, %1032
  %1062 = load i32, ptr %24, align 4, !tbaa !9
  %1063 = call ptr @__errno_location() #10
  store i32 %1062, ptr %1063, align 4, !tbaa !9
  %1064 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1065 = load i32, ptr @test_count, align 4, !tbaa !9
  %1066 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1067 = load i32, ptr %1066, align 4, !tbaa !9
  %1068 = call ptr @s2n_strerror(i32 noundef %1067, ptr noundef @.str.3)
  %1069 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1070 = load i32, ptr %1069, align 4, !tbaa !9
  %1071 = call ptr @s2n_strerror_debug(i32 noundef %1070, ptr noundef @.str.3)
  %1072 = call ptr @__errno_location() #10
  %1073 = load i32, ptr %1072, align 4, !tbaa !9
  %1074 = call ptr @strerror(i32 noundef %1073) #9
  %1075 = call ptr @__errno_location() #10
  %1076 = load i32, ptr %1075, align 4, !tbaa !9
  %1077 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1064, ptr noundef @.str.4, i32 noundef %1065, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 140, ptr noundef %1068, ptr noundef %1071, ptr noundef %1074, i32 noundef %1076) #9
  br label %1078

1078:                                             ; preds = %1061, %1044
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %1079

1079:                                             ; preds = %1078
  br label %1080

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

1081:                                             ; No predecessors!
  br label %1082

1082:                                             ; preds = %1081
  br label %1083

1083:                                             ; preds = %1082, %1025
  br label %1084

1084:                                             ; preds = %1083
  br label %1085

1085:                                             ; preds = %1084
  br label %1086

1086:                                             ; preds = %1085
  %1087 = load i32, ptr @test_count, align 4, !tbaa !9
  %1088 = add nsw i32 %1087, 1
  store i32 %1088, ptr @test_count, align 4, !tbaa !9
  %1089 = load ptr, ptr %2, align 8, !tbaa !5
  %1090 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %1089)
  %1091 = icmp eq i32 %1090, -1
  br i1 %1091, label %1092, label %1145

1092:                                             ; preds = %1086
  br label %1093

1093:                                             ; preds = %1092
  br label %1094

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

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

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

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

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

1141:                                             ; preds = %1140
  br label %1142

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

1143:                                             ; No predecessors!
  br label %1144

1144:                                             ; preds = %1143
  br label %1145

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

1146:                                             ; preds = %1145
  br label %1147

1147:                                             ; preds = %1146
  br label %1148

1148:                                             ; preds = %1147
  %1149 = load i32, ptr @test_count, align 4, !tbaa !9
  %1150 = add nsw i32 %1149, 1
  store i32 %1150, ptr @test_count, align 4, !tbaa !9
  %1151 = call i32 @s2n_io_pair_close(ptr noundef %16)
  %1152 = icmp eq i32 %1151, -1
  br i1 %1152, label %1153, label %1206

1153:                                             ; preds = %1148
  br label %1154

1154:                                             ; preds = %1153
  br label %1155

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

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

1167:                                             ; preds = %1162
  %1168 = load i32, ptr %26, align 4, !tbaa !9
  %1169 = call ptr @__errno_location() #10
  store i32 %1168, ptr %1169, align 4, !tbaa !9
  %1170 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1171 = load i32, ptr @test_count, align 4, !tbaa !9
  %1172 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1173 = load i32, ptr %1172, align 4, !tbaa !9
  %1174 = call ptr @s2n_strerror(i32 noundef %1173, ptr noundef @.str.3)
  %1175 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1176 = load i32, ptr %1175, align 4, !tbaa !9
  %1177 = call ptr @s2n_strerror_debug(i32 noundef %1176, ptr noundef @.str.3)
  %1178 = call ptr @__errno_location() #10
  %1179 = load i32, ptr %1178, align 4, !tbaa !9
  %1180 = call ptr @strerror(i32 noundef %1179) #9
  %1181 = call ptr @__errno_location() #10
  %1182 = load i32, ptr %1181, align 4, !tbaa !9
  %1183 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1170, ptr noundef @.str, i32 noundef %1171, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 144, ptr noundef %1174, ptr noundef %1177, ptr noundef %1180, i32 noundef %1182) #9
  br label %1201

1184:                                             ; preds = %1162, %1155
  %1185 = load i32, ptr %26, align 4, !tbaa !9
  %1186 = call ptr @__errno_location() #10
  store i32 %1185, ptr %1186, align 4, !tbaa !9
  %1187 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1188 = load i32, ptr @test_count, align 4, !tbaa !9
  %1189 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1190 = load i32, ptr %1189, align 4, !tbaa !9
  %1191 = call ptr @s2n_strerror(i32 noundef %1190, ptr noundef @.str.3)
  %1192 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1193 = load i32, ptr %1192, align 4, !tbaa !9
  %1194 = call ptr @s2n_strerror_debug(i32 noundef %1193, ptr noundef @.str.3)
  %1195 = call ptr @__errno_location() #10
  %1196 = load i32, ptr %1195, align 4, !tbaa !9
  %1197 = call ptr @strerror(i32 noundef %1196) #9
  %1198 = call ptr @__errno_location() #10
  %1199 = load i32, ptr %1198, align 4, !tbaa !9
  %1200 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1187, ptr noundef @.str.4, i32 noundef %1188, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 144, ptr noundef %1191, ptr noundef %1194, ptr noundef %1197, i32 noundef %1199) #9
  br label %1201

1201:                                             ; preds = %1184, %1167
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %1202

1202:                                             ; preds = %1201
  br label %1203

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

1204:                                             ; No predecessors!
  br label %1205

1205:                                             ; preds = %1204
  br label %1206

1206:                                             ; preds = %1205, %1148
  br label %1207

1207:                                             ; preds = %1206
  br label %1208

1208:                                             ; preds = %1207
  %1209 = getelementptr inbounds %struct.s2n_result, ptr %1, i32 0, i32 0
  store i32 0, ptr %1209, align 4, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 12, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  %1210 = call i32 @s2n_connection_ptr_free(ptr noundef %11)
  %1211 = getelementptr inbounds %struct.s2n_result, ptr %27, i32 0, i32 0
  store i32 %1210, ptr %1211, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  %1212 = call i32 @s2n_connection_ptr_free(ptr noundef %10)
  %1213 = getelementptr inbounds %struct.s2n_result, ptr %28, i32 0, i32 0
  store i32 %1212, ptr %1213, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  %1214 = call i32 @s2n_config_ptr_free(ptr noundef %5)
  %1215 = getelementptr inbounds %struct.s2n_result, ptr %29, i32 0, i32 0
  store i32 %1214, ptr %1215, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #9
  %1216 = getelementptr inbounds %struct.s2n_result, ptr %1, i32 0, i32 0
  %1217 = load i32, ptr %1216, align 4
  ret i32 %1217
}

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

declare ptr @s2n_config_new() #3

declare i32 @s2n_config_ptr_free(ptr noundef) #3

declare i32 @s2n_config_set_unsafe_for_testing(ptr noundef) #3

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

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

declare ptr @s2n_connection_new(i32 noundef) #3

declare i32 @s2n_connection_ptr_free(ptr noundef) #3

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

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

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) #3

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

; 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

declare i32 @s2n_config_set_client_hello_cb(ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @s2n_config_set_client_hello_cb_mode(ptr noundef, i32 noundef) #3

declare zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef, i32 noundef) #3

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) #3

declare i32 @s2n_io_pair_close(ptr noundef) #3

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

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

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


; 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_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.client_hello_context = type { i32, i32, i8 }
%struct.s2n_test_io_pair = type { i32, i32 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [101 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [86 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [155 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [92 x i8], align 1
@security_policy_test_tls13_retry = external constant %struct.s2n_security_policy, align 8
@__const.hello_retry_client_hello_cb_test.client_hello_ctx = external hidden unnamed_addr constant %struct.client_hello_context, align 4
@.str.25 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @s2n_negotiate_poll_hello_retry(ptr noundef, ptr noundef, 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 nofree nosync nounwind willreturn memory(none)
declare ptr @__errno_location() local_unnamed_addr #2

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @hello_retry_client_hello_cb_test() local_unnamed_addr #0 {
  %1 = alloca ptr, align 8
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %struct.s2n_test_io_pair, align 8
  %6 = alloca %struct.client_hello_context, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #9
  store ptr null, ptr %1, align 8, !tbaa !5
  %7 = load i32, ptr @test_count, align 4, !tbaa !9
  %8 = add nsw i32 %7, 1
  store i32 %8, ptr @test_count, align 4, !tbaa !9
  %9 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %1, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11) #9
  %10 = icmp eq i32 %9, -1
  br i1 %10, label %11, label %35

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

18:                                               ; preds = %11
  %19 = load ptr, ptr @stderr, align 8, !tbaa !5
  %20 = call i32 @fileno(ptr noundef %19) #9
  %21 = call i32 @isatty(i32 noundef %20) #9
  %.not58 = icmp eq i32 %21, 0
  br i1 %.not58, label %22, label %23

22:                                               ; preds = %18, %11
  br label %23

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

35:                                               ; preds = %0
  %36 = load i32, ptr @test_count, align 4, !tbaa !9
  %37 = add nsw i32 %36, 1
  store i32 %37, ptr @test_count, align 4, !tbaa !9
  %38 = load ptr, ptr %1, align 8, !tbaa !5
  %39 = icmp eq ptr %38, null
  br i1 %39, label %40, label %64

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

47:                                               ; preds = %40
  %48 = load ptr, ptr @stderr, align 8, !tbaa !5
  %49 = call i32 @fileno(ptr noundef %48) #9
  %50 = call i32 @isatty(i32 noundef %49) #9
  %.not57 = icmp eq i32 %50, 0
  br i1 %.not57, label %51, label %52

51:                                               ; preds = %47, %40
  br label %52

52:                                               ; preds = %47, %51
  %.str.4.sink69 = phi ptr [ @.str.4, %51 ], [ @.str, %47 ]
  store i32 %42, ptr %41, align 4, !tbaa !9
  %53 = load ptr, ptr @stderr, align 8, !tbaa !5
  %54 = load i32, ptr @test_count, align 4, !tbaa !9
  %55 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %56 = load i32, ptr %55, align 4, !tbaa !9
  %57 = call ptr @s2n_strerror(i32 noundef %56, ptr noundef nonnull @.str.3) #9
  %58 = load i32, ptr %55, align 4, !tbaa !9
  %59 = call ptr @s2n_strerror_debug(i32 noundef %58, ptr noundef nonnull @.str.3) #9
  %60 = load i32, ptr %41, align 4, !tbaa !9
  %61 = call ptr @strerror(i32 noundef %60) #9
  %62 = load i32, ptr %41, align 4, !tbaa !9
  %63 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %53, ptr noundef nonnull %.str.4.sink69, i32 noundef %54, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.2, i32 noundef 102, ptr noundef %57, ptr noundef %59, ptr noundef %61, i32 noundef %62) #11
  call void @exit(i32 noundef 1) #12
  unreachable

64:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #9
  %65 = call ptr @s2n_config_new() #9
  store ptr %65, ptr %2, align 8, !tbaa !5
  %66 = load i32, ptr @test_count, align 4, !tbaa !9
  %67 = add nsw i32 %66, 1
  store i32 %67, ptr @test_count, align 4, !tbaa !9
  %68 = icmp eq ptr %65, null
  br i1 %68, label %69, label %93

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

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

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

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

93:                                               ; preds = %64
  %94 = add nsw i32 %66, 2
  store i32 %94, ptr @test_count, align 4, !tbaa !9
  %95 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef nonnull %65) #9
  %96 = icmp eq i32 %95, -1
  br i1 %96, label %97, label %121

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

104:                                              ; preds = %97
  %105 = load ptr, ptr @stderr, align 8, !tbaa !5
  %106 = call i32 @fileno(ptr noundef %105) #9
  %107 = call i32 @isatty(i32 noundef %106) #9
  %.not55 = icmp eq i32 %107, 0
  br i1 %.not55, label %108, label %109

108:                                              ; preds = %104, %97
  br label %109

109:                                              ; preds = %104, %108
  %.str.4.sink91 = phi ptr [ @.str.4, %108 ], [ @.str, %104 ]
  store i32 %99, ptr %98, align 4, !tbaa !9
  %110 = load ptr, ptr @stderr, align 8, !tbaa !5
  %111 = load i32, ptr @test_count, align 4, !tbaa !9
  %112 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %113 = load i32, ptr %112, align 4, !tbaa !9
  %114 = call ptr @s2n_strerror(i32 noundef %113, ptr noundef nonnull @.str.3) #9
  %115 = load i32, ptr %112, align 4, !tbaa !9
  %116 = call ptr @s2n_strerror_debug(i32 noundef %115, ptr noundef nonnull @.str.3) #9
  %117 = load i32, ptr %98, align 4, !tbaa !9
  %118 = call ptr @strerror(i32 noundef %117) #9
  %119 = load i32, ptr %98, align 4, !tbaa !9
  %120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %110, ptr noundef nonnull %.str.4.sink91, i32 noundef %111, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.2, i32 noundef 107, ptr noundef %114, ptr noundef %116, ptr noundef %118, i32 noundef %119) #11
  call void @exit(i32 noundef 1) #12
  unreachable

121:                                              ; preds = %93
  %122 = load i32, ptr @test_count, align 4, !tbaa !9
  %123 = add nsw i32 %122, 1
  store i32 %123, ptr @test_count, align 4, !tbaa !9
  %124 = load ptr, ptr %1, align 8, !tbaa !5
  %125 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %65, ptr noundef %124) #9
  %126 = icmp eq i32 %125, -1
  br i1 %126, label %127, label %151

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

134:                                              ; preds = %127
  %135 = load ptr, ptr @stderr, align 8, !tbaa !5
  %136 = call i32 @fileno(ptr noundef %135) #9
  %137 = call i32 @isatty(i32 noundef %136) #9
  %.not54 = icmp eq i32 %137, 0
  br i1 %.not54, label %138, label %139

138:                                              ; preds = %134, %127
  br label %139

139:                                              ; preds = %134, %138
  %.str.4.sink102 = phi ptr [ @.str.4, %138 ], [ @.str, %134 ]
  store i32 %129, ptr %128, align 4, !tbaa !9
  %140 = load ptr, ptr @stderr, align 8, !tbaa !5
  %141 = load i32, ptr @test_count, align 4, !tbaa !9
  %142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = call ptr @s2n_strerror(i32 noundef %143, ptr noundef nonnull @.str.3) #9
  %145 = load i32, ptr %142, align 4, !tbaa !9
  %146 = call ptr @s2n_strerror_debug(i32 noundef %145, ptr noundef nonnull @.str.3) #9
  %147 = load i32, ptr %128, align 4, !tbaa !9
  %148 = call ptr @strerror(i32 noundef %147) #9
  %149 = load i32, ptr %128, align 4, !tbaa !9
  %150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %140, ptr noundef nonnull %.str.4.sink102, i32 noundef %141, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.2, i32 noundef 108, ptr noundef %144, ptr noundef %146, ptr noundef %148, i32 noundef %149) #11
  call void @exit(i32 noundef 1) #12
  unreachable

151:                                              ; preds = %121
  %152 = load i32, ptr @test_count, align 4, !tbaa !9
  %153 = add nsw i32 %152, 1
  store i32 %153, ptr @test_count, align 4, !tbaa !9
  %154 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %65, ptr noundef nonnull @.str.17) #9
  %155 = icmp eq i32 %154, -1
  br i1 %155, label %156, label %180

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

163:                                              ; preds = %156
  %164 = load ptr, ptr @stderr, align 8, !tbaa !5
  %165 = call i32 @fileno(ptr noundef %164) #9
  %166 = call i32 @isatty(i32 noundef %165) #9
  %.not53 = icmp eq i32 %166, 0
  br i1 %.not53, label %167, label %168

167:                                              ; preds = %163, %156
  br label %168

168:                                              ; preds = %163, %167
  %.str.4.sink113 = phi ptr [ @.str.4, %167 ], [ @.str, %163 ]
  store i32 %158, ptr %157, align 4, !tbaa !9
  %169 = load ptr, ptr @stderr, align 8, !tbaa !5
  %170 = load i32, ptr @test_count, align 4, !tbaa !9
  %171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = call ptr @s2n_strerror(i32 noundef %172, ptr noundef nonnull @.str.3) #9
  %174 = load i32, ptr %171, align 4, !tbaa !9
  %175 = call ptr @s2n_strerror_debug(i32 noundef %174, ptr noundef nonnull @.str.3) #9
  %176 = load i32, ptr %157, align 4, !tbaa !9
  %177 = call ptr @strerror(i32 noundef %176) #9
  %178 = load i32, ptr %157, align 4, !tbaa !9
  %179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %169, ptr noundef nonnull %.str.4.sink113, i32 noundef %170, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.2, i32 noundef 109, ptr noundef %173, ptr noundef %175, ptr noundef %177, i32 noundef %178) #11
  call void @exit(i32 noundef 1) #12
  unreachable

180:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #9
  %181 = call ptr @s2n_connection_new(i32 noundef 0) #9
  store ptr %181, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9
  %182 = call ptr @s2n_connection_new(i32 noundef 1) #9
  store ptr %182, ptr %4, align 8, !tbaa !5
  %183 = load i32, ptr @test_count, align 4, !tbaa !9
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr @test_count, align 4, !tbaa !9
  %185 = icmp eq ptr %181, null
  br i1 %185, label %186, label %210

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

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

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

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

210:                                              ; preds = %180
  %211 = add nsw i32 %183, 2
  store i32 %211, ptr @test_count, align 4, !tbaa !9
  %212 = icmp eq ptr %182, null
  br i1 %212, label %213, label %237

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

220:                                              ; preds = %213
  %221 = load ptr, ptr @stderr, align 8, !tbaa !5
  %222 = call i32 @fileno(ptr noundef %221) #9
  %223 = call i32 @isatty(i32 noundef %222) #9
  %.not51 = icmp eq i32 %223, 0
  br i1 %.not51, label %224, label %225

224:                                              ; preds = %220, %213
  br label %225

225:                                              ; preds = %220, %224
  %.str.4.sink135 = phi ptr [ @.str.4, %224 ], [ @.str, %220 ]
  store i32 %215, ptr %214, align 4, !tbaa !9
  %226 = load ptr, ptr @stderr, align 8, !tbaa !5
  %227 = load i32, ptr @test_count, align 4, !tbaa !9
  %228 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = call ptr @s2n_strerror(i32 noundef %229, ptr noundef nonnull @.str.3) #9
  %231 = load i32, ptr %228, align 4, !tbaa !9
  %232 = call ptr @s2n_strerror_debug(i32 noundef %231, ptr noundef nonnull @.str.3) #9
  %233 = load i32, ptr %214, align 4, !tbaa !9
  %234 = call ptr @strerror(i32 noundef %233) #9
  %235 = load i32, ptr %214, align 4, !tbaa !9
  %236 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %226, ptr noundef nonnull %.str.4.sink135, i32 noundef %227, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 114, ptr noundef %230, ptr noundef %232, ptr noundef %234, i32 noundef %235) #11
  call void @exit(i32 noundef 1) #12
  unreachable

237:                                              ; preds = %210
  %238 = add nsw i32 %183, 3
  store i32 %238, ptr @test_count, align 4, !tbaa !9
  %239 = call i32 @s2n_connection_set_config(ptr noundef nonnull %181, ptr noundef nonnull %65) #9
  %240 = icmp eq i32 %239, -1
  br i1 %240, label %241, label %265

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

248:                                              ; preds = %241
  %249 = load ptr, ptr @stderr, align 8, !tbaa !5
  %250 = call i32 @fileno(ptr noundef %249) #9
  %251 = call i32 @isatty(i32 noundef %250) #9
  %.not50 = icmp eq i32 %251, 0
  br i1 %.not50, label %252, label %253

252:                                              ; preds = %248, %241
  br label %253

253:                                              ; preds = %248, %252
  %.str.4.sink146 = phi ptr [ @.str.4, %252 ], [ @.str, %248 ]
  store i32 %243, ptr %242, align 4, !tbaa !9
  %254 = load ptr, ptr @stderr, align 8, !tbaa !5
  %255 = load i32, ptr @test_count, align 4, !tbaa !9
  %256 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = call ptr @s2n_strerror(i32 noundef %257, ptr noundef nonnull @.str.3) #9
  %259 = load i32, ptr %256, align 4, !tbaa !9
  %260 = call ptr @s2n_strerror_debug(i32 noundef %259, ptr noundef nonnull @.str.3) #9
  %261 = load i32, ptr %242, align 4, !tbaa !9
  %262 = call ptr @strerror(i32 noundef %261) #9
  %263 = load i32, ptr %242, align 4, !tbaa !9
  %264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %254, ptr noundef nonnull %.str.4.sink146, i32 noundef %255, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 116, ptr noundef %258, ptr noundef %260, ptr noundef %262, i32 noundef %263) #11
  call void @exit(i32 noundef 1) #12
  unreachable

265:                                              ; preds = %237
  %266 = load i32, ptr @test_count, align 4, !tbaa !9
  %267 = add nsw i32 %266, 1
  store i32 %267, ptr @test_count, align 4, !tbaa !9
  %268 = call i32 @s2n_connection_set_config(ptr noundef nonnull %182, ptr noundef nonnull %65) #9
  %269 = icmp eq i32 %268, -1
  br i1 %269, label %270, label %294

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

277:                                              ; preds = %270
  %278 = load ptr, ptr @stderr, align 8, !tbaa !5
  %279 = call i32 @fileno(ptr noundef %278) #9
  %280 = call i32 @isatty(i32 noundef %279) #9
  %.not49 = icmp eq i32 %280, 0
  br i1 %.not49, label %281, label %282

281:                                              ; preds = %277, %270
  br label %282

282:                                              ; preds = %277, %281
  %.str.4.sink157 = phi ptr [ @.str.4, %281 ], [ @.str, %277 ]
  store i32 %272, ptr %271, align 4, !tbaa !9
  %283 = load ptr, ptr @stderr, align 8, !tbaa !5
  %284 = load i32, ptr @test_count, align 4, !tbaa !9
  %285 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = call ptr @s2n_strerror(i32 noundef %286, ptr noundef nonnull @.str.3) #9
  %288 = load i32, ptr %285, align 4, !tbaa !9
  %289 = call ptr @s2n_strerror_debug(i32 noundef %288, ptr noundef nonnull @.str.3) #9
  %290 = load i32, ptr %271, align 4, !tbaa !9
  %291 = call ptr @strerror(i32 noundef %290) #9
  %292 = load i32, ptr %271, align 4, !tbaa !9
  %293 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %283, ptr noundef nonnull %.str.4.sink157, i32 noundef %284, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 117, ptr noundef %287, ptr noundef %289, ptr noundef %291, i32 noundef %292) #11
  call void @exit(i32 noundef 1) #12
  unreachable

294:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  store i64 0, ptr %5, align 8
  %295 = load i32, ptr @test_count, align 4, !tbaa !9
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr @test_count, align 4, !tbaa !9
  %297 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef nonnull %5) #9
  %298 = icmp eq i32 %297, -1
  br i1 %298, label %299, label %323

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

306:                                              ; preds = %299
  %307 = load ptr, ptr @stderr, align 8, !tbaa !5
  %308 = call i32 @fileno(ptr noundef %307) #9
  %309 = call i32 @isatty(i32 noundef %308) #9
  %.not48 = icmp eq i32 %309, 0
  br i1 %.not48, label %310, label %311

310:                                              ; preds = %306, %299
  br label %311

311:                                              ; preds = %306, %310
  %.str.4.sink168 = phi ptr [ @.str.4, %310 ], [ @.str, %306 ]
  store i32 %301, ptr %300, align 4, !tbaa !9
  %312 = load ptr, ptr @stderr, align 8, !tbaa !5
  %313 = load i32, ptr @test_count, align 4, !tbaa !9
  %314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = call ptr @s2n_strerror(i32 noundef %315, ptr noundef nonnull @.str.3) #9
  %317 = load i32, ptr %314, align 4, !tbaa !9
  %318 = call ptr @s2n_strerror_debug(i32 noundef %317, ptr noundef nonnull @.str.3) #9
  %319 = load i32, ptr %300, align 4, !tbaa !9
  %320 = call ptr @strerror(i32 noundef %319) #9
  %321 = load i32, ptr %300, align 4, !tbaa !9
  %322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %312, ptr noundef nonnull %.str.4.sink168, i32 noundef %313, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 120, ptr noundef %316, ptr noundef %318, ptr noundef %320, i32 noundef %321) #11
  call void @exit(i32 noundef 1) #12
  unreachable

323:                                              ; preds = %294
  %324 = load i32, ptr @test_count, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr @test_count, align 4, !tbaa !9
  %326 = call i32 @s2n_connections_set_io_pair(ptr noundef nonnull %182, ptr noundef nonnull %181, ptr noundef nonnull %5) #9
  %327 = icmp eq i32 %326, -1
  br i1 %327, label %328, label %352

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

335:                                              ; preds = %328
  %336 = load ptr, ptr @stderr, align 8, !tbaa !5
  %337 = call i32 @fileno(ptr noundef %336) #9
  %338 = call i32 @isatty(i32 noundef %337) #9
  %.not47 = icmp eq i32 %338, 0
  br i1 %.not47, label %339, label %340

339:                                              ; preds = %335, %328
  br label %340

340:                                              ; preds = %335, %339
  %.str.4.sink179 = phi ptr [ @.str.4, %339 ], [ @.str, %335 ]
  store i32 %330, ptr %329, align 4, !tbaa !9
  %341 = load ptr, ptr @stderr, align 8, !tbaa !5
  %342 = load i32, ptr @test_count, align 4, !tbaa !9
  %343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = call ptr @s2n_strerror(i32 noundef %344, ptr noundef nonnull @.str.3) #9
  %346 = load i32, ptr %343, align 4, !tbaa !9
  %347 = call ptr @s2n_strerror_debug(i32 noundef %346, ptr noundef nonnull @.str.3) #9
  %348 = load i32, ptr %329, align 4, !tbaa !9
  %349 = call ptr @strerror(i32 noundef %348) #9
  %350 = load i32, ptr %329, align 4, !tbaa !9
  %351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %341, ptr noundef nonnull %.str.4.sink179, i32 noundef %342, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 121, ptr noundef %345, ptr noundef %347, ptr noundef %349, i32 noundef %350) #11
  call void @exit(i32 noundef 1) #12
  unreachable

352:                                              ; preds = %323
  %353 = getelementptr inbounds i8, ptr %182, i64 16
  store ptr @security_policy_test_tls13_retry, ptr %353, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) @__const.hello_retry_client_hello_cb_test.client_hello_ctx, i64 12, i1 false)
  %354 = load i32, ptr @test_count, align 4, !tbaa !9
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr @test_count, align 4, !tbaa !9
  %356 = call i32 @s2n_config_set_client_hello_cb(ptr noundef nonnull %65, ptr noundef nonnull @s2n_client_hello_poll_cb, ptr noundef nonnull %6) #9
  %357 = icmp eq i32 %356, -1
  br i1 %357, label %358, label %382

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

365:                                              ; preds = %358
  %366 = load ptr, ptr @stderr, align 8, !tbaa !5
  %367 = call i32 @fileno(ptr noundef %366) #9
  %368 = call i32 @isatty(i32 noundef %367) #9
  %.not46 = icmp eq i32 %368, 0
  br i1 %.not46, label %369, label %370

369:                                              ; preds = %365, %358
  br label %370

370:                                              ; preds = %365, %369
  %.str.4.sink190 = phi ptr [ @.str.4, %369 ], [ @.str, %365 ]
  store i32 %360, ptr %359, align 4, !tbaa !9
  %371 = load ptr, ptr @stderr, align 8, !tbaa !5
  %372 = load i32, ptr @test_count, align 4, !tbaa !9
  %373 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %374 = load i32, ptr %373, align 4, !tbaa !9
  %375 = call ptr @s2n_strerror(i32 noundef %374, ptr noundef nonnull @.str.3) #9
  %376 = load i32, ptr %373, align 4, !tbaa !9
  %377 = call ptr @s2n_strerror_debug(i32 noundef %376, ptr noundef nonnull @.str.3) #9
  %378 = load i32, ptr %359, align 4, !tbaa !9
  %379 = call ptr @strerror(i32 noundef %378) #9
  %380 = load i32, ptr %359, align 4, !tbaa !9
  %381 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %371, ptr noundef nonnull %.str.4.sink190, i32 noundef %372, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 131, ptr noundef %375, ptr noundef %377, ptr noundef %379, i32 noundef %380) #11
  call void @exit(i32 noundef 1) #12
  unreachable

382:                                              ; preds = %352
  %383 = load i32, ptr @test_count, align 4, !tbaa !9
  %384 = add nsw i32 %383, 1
  store i32 %384, ptr @test_count, align 4, !tbaa !9
  %385 = call i32 @s2n_config_set_client_hello_cb_mode(ptr noundef nonnull %65, i32 noundef 1) #9
  %386 = icmp eq i32 %385, -1
  br i1 %386, label %387, label %411

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

394:                                              ; preds = %387
  %395 = load ptr, ptr @stderr, align 8, !tbaa !5
  %396 = call i32 @fileno(ptr noundef %395) #9
  %397 = call i32 @isatty(i32 noundef %396) #9
  %.not45 = icmp eq i32 %397, 0
  br i1 %.not45, label %398, label %399

398:                                              ; preds = %394, %387
  br label %399

399:                                              ; preds = %394, %398
  %.str.4.sink201 = phi ptr [ @.str.4, %398 ], [ @.str, %394 ]
  store i32 %389, ptr %388, align 4, !tbaa !9
  %400 = load ptr, ptr @stderr, align 8, !tbaa !5
  %401 = load i32, ptr @test_count, align 4, !tbaa !9
  %402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = call ptr @s2n_strerror(i32 noundef %403, ptr noundef nonnull @.str.3) #9
  %405 = load i32, ptr %402, align 4, !tbaa !9
  %406 = call ptr @s2n_strerror_debug(i32 noundef %405, ptr noundef nonnull @.str.3) #9
  %407 = load i32, ptr %388, align 4, !tbaa !9
  %408 = call ptr @strerror(i32 noundef %407) #9
  %409 = load i32, ptr %388, align 4, !tbaa !9
  %410 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %400, ptr noundef nonnull %.str.4.sink201, i32 noundef %401, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.2, i32 noundef 133, ptr noundef %404, ptr noundef %406, ptr noundef %408, i32 noundef %409) #11
  call void @exit(i32 noundef 1) #12
  unreachable

411:                                              ; preds = %382
  %412 = load i32, ptr @test_count, align 4, !tbaa !9
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr @test_count, align 4, !tbaa !9
  %414 = call i32 @s2n_negotiate_poll_hello_retry(ptr noundef nonnull %181, ptr noundef nonnull %182, ptr noundef nonnull %6)
  %415 = icmp eq i32 %414, -1
  br i1 %415, label %416, label %440

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

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

427:                                              ; preds = %423, %416
  br label %428

428:                                              ; preds = %423, %427
  %.str.4.sink212 = phi ptr [ @.str.4, %427 ], [ @.str, %423 ]
  store i32 %418, ptr %417, align 4, !tbaa !9
  %429 = load ptr, ptr @stderr, align 8, !tbaa !5
  %430 = load i32, ptr @test_count, align 4, !tbaa !9
  %431 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = call ptr @s2n_strerror(i32 noundef %432, ptr noundef nonnull @.str.3) #9
  %434 = load i32, ptr %431, align 4, !tbaa !9
  %435 = call ptr @s2n_strerror_debug(i32 noundef %434, ptr noundef nonnull @.str.3) #9
  %436 = load i32, ptr %417, align 4, !tbaa !9
  %437 = call ptr @strerror(i32 noundef %436) #9
  %438 = load i32, ptr %417, align 4, !tbaa !9
  %439 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %429, ptr noundef nonnull %.str.4.sink212, i32 noundef %430, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.2, i32 noundef 136, ptr noundef %433, ptr noundef %435, ptr noundef %437, i32 noundef %438) #11
  call void @exit(i32 noundef 1) #12
  unreachable

440:                                              ; preds = %411
  %441 = load i32, ptr @test_count, align 4, !tbaa !9
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr @test_count, align 4, !tbaa !9
  %443 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef nonnull %182, i32 noundef 16) #9
  br i1 %443, label %468, label %444

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

451:                                              ; preds = %444
  %452 = load ptr, ptr @stderr, align 8, !tbaa !5
  %453 = call i32 @fileno(ptr noundef %452) #9
  %454 = call i32 @isatty(i32 noundef %453) #9
  %.not = icmp eq i32 %454, 0
  br i1 %.not, label %455, label %456

455:                                              ; preds = %451, %444
  br label %456

456:                                              ; preds = %451, %455
  %.str.4.sink223 = phi ptr [ @.str.4, %455 ], [ @.str, %451 ]
  store i32 %446, ptr %445, align 4, !tbaa !9
  %457 = load ptr, ptr @stderr, align 8, !tbaa !5
  %458 = load i32, ptr @test_count, align 4, !tbaa !9
  %459 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = call ptr @s2n_strerror(i32 noundef %460, ptr noundef nonnull @.str.3) #9
  %462 = load i32, ptr %459, align 4, !tbaa !9
  %463 = call ptr @s2n_strerror_debug(i32 noundef %462, ptr noundef nonnull @.str.3) #9
  %464 = load i32, ptr %445, align 4, !tbaa !9
  %465 = call ptr @strerror(i32 noundef %464) #9
  %466 = load i32, ptr %445, align 4, !tbaa !9
  %467 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %457, ptr noundef nonnull %.str.4.sink223, i32 noundef %458, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.2, i32 noundef 139, ptr noundef %461, ptr noundef %463, ptr noundef %465, i32 noundef %466) #11
  call void @exit(i32 noundef 1) #12
  unreachable

468:                                              ; preds = %440
  %469 = load i32, ptr @test_count, align 4, !tbaa !9
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr @test_count, align 4, !tbaa !9
  %471 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef nonnull %181, i32 noundef 16) #9
  br i1 %471, label %496, label %472

472:                                              ; preds = %468
  %473 = tail call ptr @__errno_location() #10
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = load ptr, ptr @stderr, align 8, !tbaa !5
  %476 = call i32 @s2n_print_stacktrace(ptr noundef %475) #9
  %477 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %478 = trunc nuw i8 %477 to i1
  br i1 %478, label %479, label %483

479:                                              ; preds = %472
  %480 = load ptr, ptr @stderr, align 8, !tbaa !5
  %481 = call i32 @fileno(ptr noundef %480) #9
  %482 = call i32 @isatty(i32 noundef %481) #9
  %.not41 = icmp eq i32 %482, 0
  br i1 %.not41, label %483, label %484

483:                                              ; preds = %479, %472
  br label %484

484:                                              ; preds = %479, %483
  %.str.4.sink234 = phi ptr [ @.str.4, %483 ], [ @.str, %479 ]
  store i32 %474, ptr %473, align 4, !tbaa !9
  %485 = load ptr, ptr @stderr, align 8, !tbaa !5
  %486 = load i32, ptr @test_count, align 4, !tbaa !9
  %487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %488 = load i32, ptr %487, align 4, !tbaa !9
  %489 = call ptr @s2n_strerror(i32 noundef %488, ptr noundef nonnull @.str.3) #9
  %490 = load i32, ptr %487, align 4, !tbaa !9
  %491 = call ptr @s2n_strerror_debug(i32 noundef %490, ptr noundef nonnull @.str.3) #9
  %492 = load i32, ptr %473, align 4, !tbaa !9
  %493 = call ptr @strerror(i32 noundef %492) #9
  %494 = load i32, ptr %473, align 4, !tbaa !9
  %495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %485, ptr noundef nonnull %.str.4.sink234, i32 noundef %486, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.2, i32 noundef 140, ptr noundef %489, ptr noundef %491, ptr noundef %493, i32 noundef %494) #11
  call void @exit(i32 noundef 1) #12
  unreachable

496:                                              ; preds = %468
  %497 = load i32, ptr @test_count, align 4, !tbaa !9
  %498 = add nsw i32 %497, 1
  store i32 %498, ptr @test_count, align 4, !tbaa !9
  %499 = load ptr, ptr %1, align 8, !tbaa !5
  %500 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %499) #9
  %501 = icmp eq i32 %500, -1
  br i1 %501, label %502, label %526

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

509:                                              ; preds = %502
  %510 = load ptr, ptr @stderr, align 8, !tbaa !5
  %511 = call i32 @fileno(ptr noundef %510) #9
  %512 = call i32 @isatty(i32 noundef %511) #9
  %.not43 = icmp eq i32 %512, 0
  br i1 %.not43, label %513, label %514

513:                                              ; preds = %509, %502
  br label %514

514:                                              ; preds = %509, %513
  %.str.4.sink245 = phi ptr [ @.str.4, %513 ], [ @.str, %509 ]
  store i32 %504, ptr %503, align 4, !tbaa !9
  %515 = load ptr, ptr @stderr, align 8, !tbaa !5
  %516 = load i32, ptr @test_count, align 4, !tbaa !9
  %517 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %518 = load i32, ptr %517, align 4, !tbaa !9
  %519 = call ptr @s2n_strerror(i32 noundef %518, ptr noundef nonnull @.str.3) #9
  %520 = load i32, ptr %517, align 4, !tbaa !9
  %521 = call ptr @s2n_strerror_debug(i32 noundef %520, ptr noundef nonnull @.str.3) #9
  %522 = load i32, ptr %503, align 4, !tbaa !9
  %523 = call ptr @strerror(i32 noundef %522) #9
  %524 = load i32, ptr %503, align 4, !tbaa !9
  %525 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %515, ptr noundef nonnull %.str.4.sink245, i32 noundef %516, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.2, i32 noundef 143, ptr noundef %519, ptr noundef %521, ptr noundef %523, i32 noundef %524) #11
  call void @exit(i32 noundef 1) #12
  unreachable

526:                                              ; preds = %496
  %527 = load i32, ptr @test_count, align 4, !tbaa !9
  %528 = add nsw i32 %527, 1
  store i32 %528, ptr @test_count, align 4, !tbaa !9
  %529 = call i32 @s2n_io_pair_close(ptr noundef nonnull %5) #9
  %530 = icmp eq i32 %529, -1
  br i1 %530, label %531, label %555

531:                                              ; preds = %526
  %532 = tail call ptr @__errno_location() #10
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = load ptr, ptr @stderr, align 8, !tbaa !5
  %535 = call i32 @s2n_print_stacktrace(ptr noundef %534) #9
  %536 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %537 = trunc nuw i8 %536 to i1
  br i1 %537, label %538, label %542

538:                                              ; preds = %531
  %539 = load ptr, ptr @stderr, align 8, !tbaa !5
  %540 = call i32 @fileno(ptr noundef %539) #9
  %541 = call i32 @isatty(i32 noundef %540) #9
  %.not42 = icmp eq i32 %541, 0
  br i1 %.not42, label %542, label %543

542:                                              ; preds = %538, %531
  br label %543

543:                                              ; preds = %538, %542
  %.str.4.sink256 = phi ptr [ @.str.4, %542 ], [ @.str, %538 ]
  store i32 %533, ptr %532, align 4, !tbaa !9
  %544 = load ptr, ptr @stderr, align 8, !tbaa !5
  %545 = load i32, ptr @test_count, align 4, !tbaa !9
  %546 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = call ptr @s2n_strerror(i32 noundef %547, ptr noundef nonnull @.str.3) #9
  %549 = load i32, ptr %546, align 4, !tbaa !9
  %550 = call ptr @s2n_strerror_debug(i32 noundef %549, ptr noundef nonnull @.str.3) #9
  %551 = load i32, ptr %532, align 4, !tbaa !9
  %552 = call ptr @strerror(i32 noundef %551) #9
  %553 = load i32, ptr %532, align 4, !tbaa !9
  %554 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %544, ptr noundef nonnull %.str.4.sink256, i32 noundef %545, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.2, i32 noundef 144, ptr noundef %548, ptr noundef %550, ptr noundef %552, i32 noundef %553) #11
  call void @exit(i32 noundef 1) #12
  unreachable

555:                                              ; preds = %526
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  %556 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  %557 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9
  %558 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %2) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #9
  ret i32 0
}

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

declare ptr @s2n_config_new() local_unnamed_addr #3

declare i32 @s2n_config_ptr_free(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_config_set_unsafe_for_testing(ptr noundef) local_unnamed_addr #3

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

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #3

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #3

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

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) local_unnamed_addr #3

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

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

declare i32 @s2n_config_set_client_hello_cb(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_config_set_client_hello_cb_mode(ptr noundef, i32 noundef) local_unnamed_addr #3

declare zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_io_pair_close(ptr noundef) local_unnamed_addr #3

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


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