; LLVM IR from aws/s2n-tls :: tests/unit (s2n_sslv3_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.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_test_io_pair = type { i32, i32 }
%struct.s2n_result = type { i32 }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_record_algorithm = type { ptr, i32, i32, i64 }
%struct.s2n_cipher = type { i32, %union.anon, i8, ptr, ptr, ptr, ptr, ptr, ptr }
%union.anon = type { %struct.s2n_composite_cipher }
%struct.s2n_composite_cipher = type { i8, i8, i8, ptr, ptr, ptr, ptr }
%struct.s2n_config = type { i32, ptr, ptr, %struct.certs_by_type, %struct.s2n_blob, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, i64, ptr, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, %struct.s2n_x509_trust_store, i16, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, i32, i32, ptr, ptr, i32, %struct.s2n_blob }
%struct.certs_by_type = type { [4 x ptr] }
%struct.s2n_x509_trust_store = type { ptr, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon.0, i32 }
%union.anon.0 = 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_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 [73 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
@stdout = external global ptr, align 8
@.str.9 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [204 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [155 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [96 x i8], align 1
@security_policy_test_all = external constant %struct.s2n_security_policy, align 8
@.str.21 = external hidden unnamed_addr constant [158 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @s2n_test_send_receive_data(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: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

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

declare i32 @s2n_print_stacktrace(ptr noundef) #4

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

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

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

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

; Function Attrs: 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) #4

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca [12000 x i8], align 16
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %struct.s2n_cipher_preferences, align 8
  %20 = alloca %struct.s2n_security_policy, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca %struct.s2n_test_io_pair, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca %struct.s2n_result, align 4
  %41 = alloca i32, align 4
  %42 = alloca %struct.s2n_result, align 4
  %43 = alloca i32, align 4
  %44 = alloca %struct.s2n_result, align 4
  %45 = alloca %struct.s2n_result, align 4
  %46 = alloca %struct.s2n_result, align 4
  %47 = alloca %struct.s2n_result, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca %struct.s2n_result, align 4
  %52 = alloca %struct.s2n_result, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  br label %53

53:                                               ; preds = %2
  br label %54

54:                                               ; preds = %53
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %55 = load ptr, ptr @stdout, align 8, !tbaa !9
  %56 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %55, ptr noundef @.str.9, ptr noundef @.str.2) #10
  %57 = load ptr, ptr @stdout, align 8, !tbaa !9
  %58 = call i32 @fflush(ptr noundef %57)
  br label %59

59:                                               ; preds = %54
  %60 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %61 = icmp eq i32 %60, -1
  br i1 %61, label %62, label %113

62:                                               ; preds = %59
  br label %63

63:                                               ; preds = %62
  br label %64

64:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  %65 = call ptr @__errno_location() #11
  %66 = load i32, ptr %65, align 4, !tbaa !5
  store i32 %66, ptr %6, align 4, !tbaa !5
  %67 = load ptr, ptr @stderr, align 8, !tbaa !9
  %68 = call i32 @s2n_print_stacktrace(ptr noundef %67)
  %69 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %70 = trunc i8 %69 to i1
  br i1 %70, label %71, label %93

71:                                               ; preds = %64
  %72 = load ptr, ptr @stderr, align 8, !tbaa !9
  %73 = call i32 @fileno(ptr noundef %72) #10
  %74 = call i32 @isatty(i32 noundef %73) #10
  %75 = icmp ne i32 %74, 0
  br i1 %75, label %76, label %93

76:                                               ; preds = %71
  %77 = load i32, ptr %6, align 4, !tbaa !5
  %78 = call ptr @__errno_location() #11
  store i32 %77, ptr %78, align 4, !tbaa !5
  %79 = load ptr, ptr @stderr, align 8, !tbaa !9
  %80 = load i32, ptr @test_count, align 4, !tbaa !5
  %81 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %83 = call ptr @s2n_strerror(i32 noundef %82, ptr noundef @.str.3)
  %84 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %86 = call ptr @s2n_strerror_debug(i32 noundef %85, ptr noundef @.str.3)
  %87 = call ptr @__errno_location() #11
  %88 = load i32, ptr %87, align 4, !tbaa !5
  %89 = call ptr @strerror(i32 noundef %88) #10
  %90 = call ptr @__errno_location() #11
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %79, ptr noundef @.str, i32 noundef %80, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 54, ptr noundef %83, ptr noundef %86, ptr noundef %89, i32 noundef %91) #10
  br label %110

93:                                               ; preds = %71, %64
  %94 = load i32, ptr %6, align 4, !tbaa !5
  %95 = call ptr @__errno_location() #11
  store i32 %94, ptr %95, align 4, !tbaa !5
  %96 = load ptr, ptr @stderr, align 8, !tbaa !9
  %97 = load i32, ptr @test_count, align 4, !tbaa !5
  %98 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = call ptr @s2n_strerror(i32 noundef %99, ptr noundef @.str.3)
  %101 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %103 = call ptr @s2n_strerror_debug(i32 noundef %102, ptr noundef @.str.3)
  %104 = call ptr @__errno_location() #11
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = call ptr @strerror(i32 noundef %105) #10
  %107 = call ptr @__errno_location() #11
  %108 = load i32, ptr %107, align 4, !tbaa !5
  %109 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %96, ptr noundef @.str.4, i32 noundef %97, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 54, ptr noundef %100, ptr noundef %103, ptr noundef %106, i32 noundef %108) #10
  br label %110

110:                                              ; preds = %93, %76
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %111

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

112:                                              ; No predecessors!
  br label %113

113:                                              ; preds = %112, %59
  br label %114

114:                                              ; preds = %113
  br label %115

115:                                              ; preds = %114
  %116 = load i32, ptr @test_count, align 4, !tbaa !5
  %117 = add nsw i32 %116, 1
  store i32 %117, ptr @test_count, align 4, !tbaa !5
  %118 = call i32 @s2n_enable_atexit()
  %119 = icmp eq i32 %118, -1
  br i1 %119, label %120, label %171

120:                                              ; preds = %115
  br label %121

121:                                              ; preds = %120
  br label %122

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #10
  %123 = call ptr @__errno_location() #11
  %124 = load i32, ptr %123, align 4, !tbaa !5
  store i32 %124, ptr %7, align 4, !tbaa !5
  %125 = load ptr, ptr @stderr, align 8, !tbaa !9
  %126 = call i32 @s2n_print_stacktrace(ptr noundef %125)
  %127 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %128 = trunc i8 %127 to i1
  br i1 %128, label %129, label %151

129:                                              ; preds = %122
  %130 = load ptr, ptr @stderr, align 8, !tbaa !9
  %131 = call i32 @fileno(ptr noundef %130) #10
  %132 = call i32 @isatty(i32 noundef %131) #10
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %151

134:                                              ; preds = %129
  %135 = load i32, ptr %7, align 4, !tbaa !5
  %136 = call ptr @__errno_location() #11
  store i32 %135, ptr %136, align 4, !tbaa !5
  %137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %138 = load i32, ptr @test_count, align 4, !tbaa !5
  %139 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = call ptr @s2n_strerror(i32 noundef %140, ptr noundef @.str.3)
  %142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = call ptr @s2n_strerror_debug(i32 noundef %143, ptr noundef @.str.3)
  %145 = call ptr @__errno_location() #11
  %146 = load i32, ptr %145, align 4, !tbaa !5
  %147 = call ptr @strerror(i32 noundef %146) #10
  %148 = call ptr @__errno_location() #11
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %137, ptr noundef @.str, i32 noundef %138, ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 54, ptr noundef %141, ptr noundef %144, ptr noundef %147, i32 noundef %149) #10
  br label %168

151:                                              ; preds = %129, %122
  %152 = load i32, ptr %7, align 4, !tbaa !5
  %153 = call ptr @__errno_location() #11
  store i32 %152, ptr %153, align 4, !tbaa !5
  %154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %155 = load i32, ptr @test_count, align 4, !tbaa !5
  %156 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %157 = load i32, ptr %156, align 4, !tbaa !5
  %158 = call ptr @s2n_strerror(i32 noundef %157, ptr noundef @.str.3)
  %159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = call ptr @s2n_strerror_debug(i32 noundef %160, ptr noundef @.str.3)
  %162 = call ptr @__errno_location() #11
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = call ptr @strerror(i32 noundef %163) #10
  %165 = call ptr @__errno_location() #11
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %154, ptr noundef @.str.4, i32 noundef %155, ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 54, ptr noundef %158, ptr noundef %161, ptr noundef %164, i32 noundef %166) #10
  br label %168

168:                                              ; preds = %151, %134
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %169

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

170:                                              ; No predecessors!
  br label %171

171:                                              ; preds = %170, %115
  br label %172

172:                                              ; preds = %171
  br label %173

173:                                              ; preds = %172
  br label %174

174:                                              ; preds = %173
  %175 = call i32 @s2n_init()
  %176 = icmp eq i32 %175, -1
  br i1 %176, label %177, label %228

177:                                              ; preds = %174
  br label %178

178:                                              ; preds = %177
  br label %179

179:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %180 = call ptr @__errno_location() #11
  %181 = load i32, ptr %180, align 4, !tbaa !5
  store i32 %181, ptr %8, align 4, !tbaa !5
  %182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %183 = call i32 @s2n_print_stacktrace(ptr noundef %182)
  %184 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %185 = trunc i8 %184 to i1
  br i1 %185, label %186, label %208

186:                                              ; preds = %179
  %187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %188 = call i32 @fileno(ptr noundef %187) #10
  %189 = call i32 @isatty(i32 noundef %188) #10
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %191, label %208

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

208:                                              ; preds = %186, %179
  %209 = load i32, ptr %8, align 4, !tbaa !5
  %210 = call ptr @__errno_location() #11
  store i32 %209, ptr %210, align 4, !tbaa !5
  %211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %212 = load i32, ptr @test_count, align 4, !tbaa !5
  %213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %214 = load i32, ptr %213, align 4, !tbaa !5
  %215 = call ptr @s2n_strerror(i32 noundef %214, ptr noundef @.str.3)
  %216 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %218 = call ptr @s2n_strerror_debug(i32 noundef %217, ptr noundef @.str.3)
  %219 = call ptr @__errno_location() #11
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %221 = call ptr @strerror(i32 noundef %220) #10
  %222 = call ptr @__errno_location() #11
  %223 = load i32, ptr %222, align 4, !tbaa !5
  %224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %211, ptr noundef @.str.4, i32 noundef %212, ptr noundef @.str.12, ptr noundef @.str.2, i32 noundef 54, ptr noundef %215, ptr noundef %218, ptr noundef %221, i32 noundef %223) #10
  br label %225

225:                                              ; preds = %208, %191
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %226

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

227:                                              ; No predecessors!
  br label %228

228:                                              ; preds = %227, %174
  br label %229

229:                                              ; preds = %228
  br label %230

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

231:                                              ; preds = %230
  %232 = load i32, ptr @test_count, align 4, !tbaa !5
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr @test_count, align 4, !tbaa !5
  %234 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %9, ptr noundef @.str.13, ptr noundef @.str.14)
  %235 = icmp eq i32 %234, -1
  br i1 %235, label %236, label %289

236:                                              ; preds = %231
  br label %237

237:                                              ; preds = %236
  br label %238

238:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  %239 = call ptr @__errno_location() #11
  %240 = load i32, ptr %239, align 4, !tbaa !5
  store i32 %240, ptr %10, align 4, !tbaa !5
  %241 = load ptr, ptr @stderr, align 8, !tbaa !9
  %242 = call i32 @s2n_print_stacktrace(ptr noundef %241)
  %243 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %244 = trunc i8 %243 to i1
  br i1 %244, label %245, label %267

245:                                              ; preds = %238
  %246 = load ptr, ptr @stderr, align 8, !tbaa !9
  %247 = call i32 @fileno(ptr noundef %246) #10
  %248 = call i32 @isatty(i32 noundef %247) #10
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %267

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

267:                                              ; preds = %245, %238
  %268 = load i32, ptr %10, align 4, !tbaa !5
  %269 = call ptr @__errno_location() #11
  store i32 %268, ptr %269, align 4, !tbaa !5
  %270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %271 = load i32, ptr @test_count, align 4, !tbaa !5
  %272 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = call ptr @s2n_strerror(i32 noundef %273, ptr noundef @.str.3)
  %275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %276 = load i32, ptr %275, align 4, !tbaa !5
  %277 = call ptr @s2n_strerror_debug(i32 noundef %276, ptr noundef @.str.3)
  %278 = call ptr @__errno_location() #11
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %280 = call ptr @strerror(i32 noundef %279) #10
  %281 = call ptr @__errno_location() #11
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %270, ptr noundef @.str.4, i32 noundef %271, ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 58, ptr noundef %274, ptr noundef %277, ptr noundef %280, i32 noundef %282) #10
  br label %284

284:                                              ; preds = %267, %250
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  br label %285

285:                                              ; preds = %284
  br label %286

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

287:                                              ; No predecessors!
  br label %288

288:                                              ; preds = %287
  br label %289

289:                                              ; preds = %288, %231
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  store ptr null, ptr %11, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %291
  %293 = load i32, ptr @test_count, align 4, !tbaa !5
  %294 = add nsw i32 %293, 1
  store i32 %294, ptr @test_count, align 4, !tbaa !5
  %295 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %11, ptr noundef @.str.16, ptr noundef @.str.17)
  %296 = icmp eq i32 %295, -1
  br i1 %296, label %297, label %350

297:                                              ; preds = %292
  br label %298

298:                                              ; preds = %297
  br label %299

299:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  %300 = call ptr @__errno_location() #11
  %301 = load i32, ptr %300, align 4, !tbaa !5
  store i32 %301, ptr %12, align 4, !tbaa !5
  %302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %303 = call i32 @s2n_print_stacktrace(ptr noundef %302)
  %304 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %305 = trunc i8 %304 to i1
  br i1 %305, label %306, label %328

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

311:                                              ; preds = %306
  %312 = load i32, ptr %12, align 4, !tbaa !5
  %313 = call ptr @__errno_location() #11
  store i32 %312, ptr %313, align 4, !tbaa !5
  %314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %315 = load i32, ptr @test_count, align 4, !tbaa !5
  %316 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %317 = load i32, ptr %316, align 4, !tbaa !5
  %318 = call ptr @s2n_strerror(i32 noundef %317, ptr noundef @.str.3)
  %319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %320 = load i32, ptr %319, align 4, !tbaa !5
  %321 = call ptr @s2n_strerror_debug(i32 noundef %320, ptr noundef @.str.3)
  %322 = call ptr @__errno_location() #11
  %323 = load i32, ptr %322, align 4, !tbaa !5
  %324 = call ptr @strerror(i32 noundef %323) #10
  %325 = call ptr @__errno_location() #11
  %326 = load i32, ptr %325, align 4, !tbaa !5
  %327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %314, ptr noundef @.str, i32 noundef %315, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 62, ptr noundef %318, ptr noundef %321, ptr noundef %324, i32 noundef %326) #10
  br label %345

328:                                              ; preds = %306, %299
  %329 = load i32, ptr %12, align 4, !tbaa !5
  %330 = call ptr @__errno_location() #11
  store i32 %329, ptr %330, align 4, !tbaa !5
  %331 = load ptr, ptr @stderr, align 8, !tbaa !9
  %332 = load i32, ptr @test_count, align 4, !tbaa !5
  %333 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %334 = load i32, ptr %333, align 4, !tbaa !5
  %335 = call ptr @s2n_strerror(i32 noundef %334, ptr noundef @.str.3)
  %336 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %337 = load i32, ptr %336, align 4, !tbaa !5
  %338 = call ptr @s2n_strerror_debug(i32 noundef %337, ptr noundef @.str.3)
  %339 = call ptr @__errno_location() #11
  %340 = load i32, ptr %339, align 4, !tbaa !5
  %341 = call ptr @strerror(i32 noundef %340) #10
  %342 = call ptr @__errno_location() #11
  %343 = load i32, ptr %342, align 4, !tbaa !5
  %344 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %331, ptr noundef @.str.4, i32 noundef %332, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 62, ptr noundef %335, ptr noundef %338, ptr noundef %341, i32 noundef %343) #10
  br label %345

345:                                              ; preds = %328, %311
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  br label %346

346:                                              ; preds = %345
  br label %347

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

348:                                              ; No predecessors!
  br label %349

349:                                              ; preds = %348
  br label %350

350:                                              ; preds = %349, %292
  br label %351

351:                                              ; preds = %350
  br label %352

352:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 12000, ptr %13) #10
  call void @llvm.memset.p0.i64(ptr align 16 %13, i8 0, i64 12000, i1 false)
  br label %353

353:                                              ; preds = %352
  %354 = load i32, ptr @test_count, align 4, !tbaa !5
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr @test_count, align 4, !tbaa !5
  %356 = getelementptr inbounds [12000 x i8], ptr %13, i64 0, i64 0
  %357 = call i32 @s2n_read_test_pem(ptr noundef @.str.19, ptr noundef %356, i64 noundef 12000)
  %358 = icmp eq i32 %357, -1
  br i1 %358, label %359, label %412

359:                                              ; preds = %353
  br label %360

360:                                              ; preds = %359
  br label %361

361:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  %362 = call ptr @__errno_location() #11
  %363 = load i32, ptr %362, align 4, !tbaa !5
  store i32 %363, ptr %14, align 4, !tbaa !5
  %364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %365 = call i32 @s2n_print_stacktrace(ptr noundef %364)
  %366 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %367 = trunc i8 %366 to i1
  br i1 %367, label %368, label %390

368:                                              ; preds = %361
  %369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %370 = call i32 @fileno(ptr noundef %369) #10
  %371 = call i32 @isatty(i32 noundef %370) #10
  %372 = icmp ne i32 %371, 0
  br i1 %372, label %373, label %390

373:                                              ; preds = %368
  %374 = load i32, ptr %14, align 4, !tbaa !5
  %375 = call ptr @__errno_location() #11
  store i32 %374, ptr %375, align 4, !tbaa !5
  %376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %377 = load i32, ptr @test_count, align 4, !tbaa !5
  %378 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %379 = load i32, ptr %378, align 4, !tbaa !5
  %380 = call ptr @s2n_strerror(i32 noundef %379, ptr noundef @.str.3)
  %381 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %382 = load i32, ptr %381, align 4, !tbaa !5
  %383 = call ptr @s2n_strerror_debug(i32 noundef %382, ptr noundef @.str.3)
  %384 = call ptr @__errno_location() #11
  %385 = load i32, ptr %384, align 4, !tbaa !5
  %386 = call ptr @strerror(i32 noundef %385) #10
  %387 = call ptr @__errno_location() #11
  %388 = load i32, ptr %387, align 4, !tbaa !5
  %389 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %376, ptr noundef @.str, i32 noundef %377, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 65, ptr noundef %380, ptr noundef %383, ptr noundef %386, i32 noundef %388) #10
  br label %407

390:                                              ; preds = %368, %361
  %391 = load i32, ptr %14, align 4, !tbaa !5
  %392 = call ptr @__errno_location() #11
  store i32 %391, ptr %392, align 4, !tbaa !5
  %393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %394 = load i32, ptr @test_count, align 4, !tbaa !5
  %395 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %396 = load i32, ptr %395, align 4, !tbaa !5
  %397 = call ptr @s2n_strerror(i32 noundef %396, ptr noundef @.str.3)
  %398 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %399 = load i32, ptr %398, align 4, !tbaa !5
  %400 = call ptr @s2n_strerror_debug(i32 noundef %399, ptr noundef @.str.3)
  %401 = call ptr @__errno_location() #11
  %402 = load i32, ptr %401, align 4, !tbaa !5
  %403 = call ptr @strerror(i32 noundef %402) #10
  %404 = call ptr @__errno_location() #11
  %405 = load i32, ptr %404, align 4, !tbaa !5
  %406 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %393, ptr noundef @.str.4, i32 noundef %394, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 65, ptr noundef %397, ptr noundef %400, ptr noundef %403, i32 noundef %405) #10
  br label %407

407:                                              ; preds = %390, %373
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  br label %408

408:                                              ; preds = %407
  br label %409

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

410:                                              ; No predecessors!
  br label %411

411:                                              ; preds = %410
  br label %412

412:                                              ; preds = %411, %353
  br label %413

413:                                              ; preds = %412
  br label %414

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

415:                                              ; preds = %1478, %414
  %416 = load i64, ptr %16, align 8, !tbaa !15
  %417 = load ptr, ptr getelementptr inbounds (%struct.s2n_security_policy, ptr @security_policy_test_all, i32 0, i32 1), align 8, !tbaa !17
  %418 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %417, i32 0, i32 0
  %419 = load i16, ptr %418, align 8, !tbaa !19
  %420 = zext i16 %419 to i64
  %421 = icmp ult i64 %416, %420
  br i1 %421, label %423, label %422

422:                                              ; preds = %415
  store i32 42, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %1481

423:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %424 = load ptr, ptr getelementptr inbounds (%struct.s2n_security_policy, ptr @security_policy_test_all, i32 0, i32 1), align 8, !tbaa !17
  %425 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %424, i32 0, i32 1
  %426 = load ptr, ptr %425, align 8, !tbaa !22
  %427 = load i64, ptr %16, align 8, !tbaa !15
  %428 = getelementptr inbounds ptr, ptr %426, i64 %427
  %429 = load ptr, ptr %428, align 8, !tbaa !9
  store ptr %429, ptr %18, align 8, !tbaa !9
  %430 = load ptr, ptr %18, align 8, !tbaa !9
  %431 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %430, i32 0, i32 9
  %432 = load ptr, ptr %431, align 8, !tbaa !23
  %433 = icmp ne ptr %432, null
  br i1 %433, label %435, label %434

434:                                              ; preds = %423
  store i32 44, ptr %17, align 4
  br label %1475

435:                                              ; preds = %423
  %436 = load ptr, ptr %18, align 8, !tbaa !9
  %437 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %436, i32 0, i32 9
  %438 = load ptr, ptr %437, align 8, !tbaa !23
  %439 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %438, i32 0, i32 0
  %440 = load ptr, ptr %439, align 8, !tbaa !25
  %441 = getelementptr inbounds %struct.s2n_cipher, ptr %440, i32 0, i32 3
  %442 = load ptr, ptr %441, align 8, !tbaa !27
  %443 = call zeroext i1 %442()
  br i1 %443, label %445, label %444

444:                                              ; preds = %435
  store i32 44, ptr %17, align 4
  br label %1475

445:                                              ; preds = %435
  %446 = load i64, ptr %15, align 8, !tbaa !15
  %447 = add i64 %446, 1
  store i64 %447, ptr %15, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #10
  %448 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %19, i32 0, i32 0
  store i16 1, ptr %448, align 8, !tbaa !19
  %449 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %19, i32 0, i32 1
  store ptr %18, ptr %449, align 8, !tbaa !22
  %450 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %19, i32 0, i32 2
  store i8 0, ptr %450, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 @security_policy_test_all, i64 64, i1 false), !tbaa.struct !30
  %451 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 1
  store ptr %19, ptr %451, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %452 = call ptr @s2n_config_new()
  store ptr %452, ptr %21, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %445
  %454 = load i32, ptr @test_count, align 4, !tbaa !5
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr @test_count, align 4, !tbaa !5
  %456 = load ptr, ptr %21, align 8, !tbaa !9
  %457 = call i32 @s2n_config_set_verification_ca_location(ptr noundef %456, ptr noundef @.str.13, ptr noundef null)
  %458 = icmp eq i32 %457, -1
  br i1 %458, label %459, label %512

459:                                              ; preds = %453
  br label %460

460:                                              ; preds = %459
  br label %461

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

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

473:                                              ; preds = %468
  %474 = load i32, ptr %22, align 4, !tbaa !5
  %475 = call ptr @__errno_location() #11
  store i32 %474, ptr %475, align 4, !tbaa !5
  %476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %477 = load i32, ptr @test_count, align 4, !tbaa !5
  %478 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %479 = load i32, ptr %478, align 4, !tbaa !5
  %480 = call ptr @s2n_strerror(i32 noundef %479, ptr noundef @.str.3)
  %481 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %482 = load i32, ptr %481, align 4, !tbaa !5
  %483 = call ptr @s2n_strerror_debug(i32 noundef %482, ptr noundef @.str.3)
  %484 = call ptr @__errno_location() #11
  %485 = load i32, ptr %484, align 4, !tbaa !5
  %486 = call ptr @strerror(i32 noundef %485) #10
  %487 = call ptr @__errno_location() #11
  %488 = load i32, ptr %487, align 4, !tbaa !5
  %489 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %476, ptr noundef @.str, i32 noundef %477, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 93, ptr noundef %480, ptr noundef %483, ptr noundef %486, i32 noundef %488) #10
  br label %507

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

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

508:                                              ; preds = %507
  br label %509

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

510:                                              ; No predecessors!
  br label %511

511:                                              ; preds = %510
  br label %512

512:                                              ; preds = %511, %453
  br label %513

513:                                              ; preds = %512
  br label %514

514:                                              ; preds = %513
  br label %515

515:                                              ; preds = %514
  %516 = load i32, ptr @test_count, align 4, !tbaa !5
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr @test_count, align 4, !tbaa !5
  %518 = load ptr, ptr %21, align 8, !tbaa !9
  %519 = call i32 @s2n_config_disable_x509_verification(ptr noundef %518)
  %520 = icmp eq i32 %519, -1
  br i1 %520, label %521, label %574

521:                                              ; preds = %515
  br label %522

522:                                              ; preds = %521
  br label %523

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

530:                                              ; preds = %523
  %531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %532 = call i32 @fileno(ptr noundef %531) #10
  %533 = call i32 @isatty(i32 noundef %532) #10
  %534 = icmp ne i32 %533, 0
  br i1 %534, label %535, label %552

535:                                              ; preds = %530
  %536 = load i32, ptr %23, align 4, !tbaa !5
  %537 = call ptr @__errno_location() #11
  store i32 %536, ptr %537, align 4, !tbaa !5
  %538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %539 = load i32, ptr @test_count, align 4, !tbaa !5
  %540 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %541 = load i32, ptr %540, align 4, !tbaa !5
  %542 = call ptr @s2n_strerror(i32 noundef %541, ptr noundef @.str.3)
  %543 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %544 = load i32, ptr %543, align 4, !tbaa !5
  %545 = call ptr @s2n_strerror_debug(i32 noundef %544, ptr noundef @.str.3)
  %546 = call ptr @__errno_location() #11
  %547 = load i32, ptr %546, align 4, !tbaa !5
  %548 = call ptr @strerror(i32 noundef %547) #10
  %549 = call ptr @__errno_location() #11
  %550 = load i32, ptr %549, align 4, !tbaa !5
  %551 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %538, ptr noundef @.str, i32 noundef %539, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 94, ptr noundef %542, ptr noundef %545, ptr noundef %548, i32 noundef %550) #10
  br label %569

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

569:                                              ; preds = %552, %535
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  br label %570

570:                                              ; preds = %569
  br label %571

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

572:                                              ; No predecessors!
  br label %573

573:                                              ; preds = %572
  br label %574

574:                                              ; preds = %573, %515
  br label %575

575:                                              ; preds = %574
  br label %576

576:                                              ; preds = %575
  %577 = load ptr, ptr %21, align 8, !tbaa !9
  %578 = getelementptr inbounds %struct.s2n_config, ptr %577, i32 0, i32 7
  store ptr %20, ptr %578, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %579 = call ptr @s2n_config_new()
  store ptr %579, ptr %24, align 8, !tbaa !9
  br label %580

580:                                              ; preds = %576
  %581 = load i32, ptr @test_count, align 4, !tbaa !5
  %582 = add nsw i32 %581, 1
  store i32 %582, ptr @test_count, align 4, !tbaa !5
  %583 = load ptr, ptr %24, align 8, !tbaa !9
  %584 = load ptr, ptr %9, align 8, !tbaa !9
  %585 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %583, ptr noundef %584)
  %586 = icmp eq i32 %585, -1
  br i1 %586, label %587, label %640

587:                                              ; preds = %580
  br label %588

588:                                              ; preds = %587
  br label %589

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

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

601:                                              ; preds = %596
  %602 = load i32, ptr %25, align 4, !tbaa !5
  %603 = call ptr @__errno_location() #11
  store i32 %602, ptr %603, align 4, !tbaa !5
  %604 = load ptr, ptr @stderr, align 8, !tbaa !9
  %605 = load i32, ptr @test_count, align 4, !tbaa !5
  %606 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %607 = load i32, ptr %606, align 4, !tbaa !5
  %608 = call ptr @s2n_strerror(i32 noundef %607, ptr noundef @.str.3)
  %609 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %610 = load i32, ptr %609, align 4, !tbaa !5
  %611 = call ptr @s2n_strerror_debug(i32 noundef %610, ptr noundef @.str.3)
  %612 = call ptr @__errno_location() #11
  %613 = load i32, ptr %612, align 4, !tbaa !5
  %614 = call ptr @strerror(i32 noundef %613) #10
  %615 = call ptr @__errno_location() #11
  %616 = load i32, ptr %615, align 4, !tbaa !5
  %617 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %604, ptr noundef @.str, i32 noundef %605, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 98, ptr noundef %608, ptr noundef %611, ptr noundef %614, i32 noundef %616) #10
  br label %635

618:                                              ; preds = %596, %589
  %619 = load i32, ptr %25, align 4, !tbaa !5
  %620 = call ptr @__errno_location() #11
  store i32 %619, ptr %620, align 4, !tbaa !5
  %621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %622 = load i32, ptr @test_count, align 4, !tbaa !5
  %623 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %624 = load i32, ptr %623, align 4, !tbaa !5
  %625 = call ptr @s2n_strerror(i32 noundef %624, ptr noundef @.str.3)
  %626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %627 = load i32, ptr %626, align 4, !tbaa !5
  %628 = call ptr @s2n_strerror_debug(i32 noundef %627, ptr noundef @.str.3)
  %629 = call ptr @__errno_location() #11
  %630 = load i32, ptr %629, align 4, !tbaa !5
  %631 = call ptr @strerror(i32 noundef %630) #10
  %632 = call ptr @__errno_location() #11
  %633 = load i32, ptr %632, align 4, !tbaa !5
  %634 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %621, ptr noundef @.str.4, i32 noundef %622, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 98, ptr noundef %625, ptr noundef %628, ptr noundef %631, i32 noundef %633) #10
  br label %635

635:                                              ; preds = %618, %601
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %636

636:                                              ; preds = %635
  br label %637

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

638:                                              ; No predecessors!
  br label %639

639:                                              ; preds = %638
  br label %640

640:                                              ; preds = %639, %580
  br label %641

641:                                              ; preds = %640
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642
  %644 = load i32, ptr @test_count, align 4, !tbaa !5
  %645 = add nsw i32 %644, 1
  store i32 %645, ptr @test_count, align 4, !tbaa !5
  %646 = load ptr, ptr %24, align 8, !tbaa !9
  %647 = load ptr, ptr %11, align 8, !tbaa !9
  %648 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %646, ptr noundef %647)
  %649 = icmp eq i32 %648, -1
  br i1 %649, label %650, label %703

650:                                              ; preds = %643
  br label %651

651:                                              ; preds = %650
  br label %652

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

659:                                              ; preds = %652
  %660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %661 = call i32 @fileno(ptr noundef %660) #10
  %662 = call i32 @isatty(i32 noundef %661) #10
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %664, label %681

664:                                              ; preds = %659
  %665 = load i32, ptr %26, align 4, !tbaa !5
  %666 = call ptr @__errno_location() #11
  store i32 %665, ptr %666, align 4, !tbaa !5
  %667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %668 = load i32, ptr @test_count, align 4, !tbaa !5
  %669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %670 = load i32, ptr %669, align 4, !tbaa !5
  %671 = call ptr @s2n_strerror(i32 noundef %670, ptr noundef @.str.3)
  %672 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %673 = load i32, ptr %672, align 4, !tbaa !5
  %674 = call ptr @s2n_strerror_debug(i32 noundef %673, ptr noundef @.str.3)
  %675 = call ptr @__errno_location() #11
  %676 = load i32, ptr %675, align 4, !tbaa !5
  %677 = call ptr @strerror(i32 noundef %676) #10
  %678 = call ptr @__errno_location() #11
  %679 = load i32, ptr %678, align 4, !tbaa !5
  %680 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %667, ptr noundef @.str, i32 noundef %668, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 99, ptr noundef %671, ptr noundef %674, ptr noundef %677, i32 noundef %679) #10
  br label %698

681:                                              ; preds = %659, %652
  %682 = load i32, ptr %26, align 4, !tbaa !5
  %683 = call ptr @__errno_location() #11
  store i32 %682, ptr %683, align 4, !tbaa !5
  %684 = load ptr, ptr @stderr, align 8, !tbaa !9
  %685 = load i32, ptr @test_count, align 4, !tbaa !5
  %686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %687 = load i32, ptr %686, align 4, !tbaa !5
  %688 = call ptr @s2n_strerror(i32 noundef %687, ptr noundef @.str.3)
  %689 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %690 = load i32, ptr %689, align 4, !tbaa !5
  %691 = call ptr @s2n_strerror_debug(i32 noundef %690, ptr noundef @.str.3)
  %692 = call ptr @__errno_location() #11
  %693 = load i32, ptr %692, align 4, !tbaa !5
  %694 = call ptr @strerror(i32 noundef %693) #10
  %695 = call ptr @__errno_location() #11
  %696 = load i32, ptr %695, align 4, !tbaa !5
  %697 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %684, ptr noundef @.str.4, i32 noundef %685, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 99, ptr noundef %688, ptr noundef %691, ptr noundef %694, i32 noundef %696) #10
  br label %698

698:                                              ; preds = %681, %664
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %699

699:                                              ; preds = %698
  br label %700

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

701:                                              ; No predecessors!
  br label %702

702:                                              ; preds = %701
  br label %703

703:                                              ; preds = %702, %643
  br label %704

704:                                              ; preds = %703
  br label %705

705:                                              ; preds = %704
  br label %706

706:                                              ; preds = %705
  %707 = load i32, ptr @test_count, align 4, !tbaa !5
  %708 = add nsw i32 %707, 1
  store i32 %708, ptr @test_count, align 4, !tbaa !5
  %709 = load ptr, ptr %24, align 8, !tbaa !9
  %710 = getelementptr inbounds [12000 x i8], ptr %13, i64 0, i64 0
  %711 = call i32 @s2n_config_add_dhparams(ptr noundef %709, ptr noundef %710)
  %712 = icmp eq i32 %711, -1
  br i1 %712, label %713, label %766

713:                                              ; preds = %706
  br label %714

714:                                              ; preds = %713
  br label %715

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

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

727:                                              ; preds = %722
  %728 = load i32, ptr %27, align 4, !tbaa !5
  %729 = call ptr @__errno_location() #11
  store i32 %728, ptr %729, align 4, !tbaa !5
  %730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %731 = load i32, ptr @test_count, align 4, !tbaa !5
  %732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %733 = load i32, ptr %732, align 4, !tbaa !5
  %734 = call ptr @s2n_strerror(i32 noundef %733, ptr noundef @.str.3)
  %735 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %736 = load i32, ptr %735, align 4, !tbaa !5
  %737 = call ptr @s2n_strerror_debug(i32 noundef %736, ptr noundef @.str.3)
  %738 = call ptr @__errno_location() #11
  %739 = load i32, ptr %738, align 4, !tbaa !5
  %740 = call ptr @strerror(i32 noundef %739) #10
  %741 = call ptr @__errno_location() #11
  %742 = load i32, ptr %741, align 4, !tbaa !5
  %743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %730, ptr noundef @.str, i32 noundef %731, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 100, ptr noundef %734, ptr noundef %737, ptr noundef %740, i32 noundef %742) #10
  br label %761

744:                                              ; preds = %722, %715
  %745 = load i32, ptr %27, align 4, !tbaa !5
  %746 = call ptr @__errno_location() #11
  store i32 %745, ptr %746, align 4, !tbaa !5
  %747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %748 = load i32, ptr @test_count, align 4, !tbaa !5
  %749 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %750 = load i32, ptr %749, align 4, !tbaa !5
  %751 = call ptr @s2n_strerror(i32 noundef %750, ptr noundef @.str.3)
  %752 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %753 = load i32, ptr %752, align 4, !tbaa !5
  %754 = call ptr @s2n_strerror_debug(i32 noundef %753, ptr noundef @.str.3)
  %755 = call ptr @__errno_location() #11
  %756 = load i32, ptr %755, align 4, !tbaa !5
  %757 = call ptr @strerror(i32 noundef %756) #10
  %758 = call ptr @__errno_location() #11
  %759 = load i32, ptr %758, align 4, !tbaa !5
  %760 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %747, ptr noundef @.str.4, i32 noundef %748, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 100, ptr noundef %751, ptr noundef %754, ptr noundef %757, i32 noundef %759) #10
  br label %761

761:                                              ; preds = %744, %727
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %762

762:                                              ; preds = %761
  br label %763

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

764:                                              ; No predecessors!
  br label %765

765:                                              ; preds = %764
  br label %766

766:                                              ; preds = %765, %706
  br label %767

767:                                              ; preds = %766
  br label %768

768:                                              ; preds = %767
  %769 = load ptr, ptr %24, align 8, !tbaa !9
  %770 = getelementptr inbounds %struct.s2n_config, ptr %769, i32 0, i32 7
  store ptr %20, ptr %770, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %771 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %771, ptr %28, align 8, !tbaa !9
  br label %772

772:                                              ; preds = %768
  %773 = load i32, ptr @test_count, align 4, !tbaa !5
  %774 = add nsw i32 %773, 1
  store i32 %774, ptr @test_count, align 4, !tbaa !5
  %775 = load ptr, ptr %28, align 8, !tbaa !9
  %776 = icmp eq ptr %775, null
  br i1 %776, label %777, label %830

777:                                              ; preds = %772
  br label %778

778:                                              ; preds = %777
  br label %779

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

786:                                              ; preds = %779
  %787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %788 = call i32 @fileno(ptr noundef %787) #10
  %789 = call i32 @isatty(i32 noundef %788) #10
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %791, label %808

791:                                              ; preds = %786
  %792 = load i32, ptr %29, align 4, !tbaa !5
  %793 = call ptr @__errno_location() #11
  store i32 %792, ptr %793, align 4, !tbaa !5
  %794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %795 = load i32, ptr @test_count, align 4, !tbaa !5
  %796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %797 = load i32, ptr %796, align 4, !tbaa !5
  %798 = call ptr @s2n_strerror(i32 noundef %797, ptr noundef @.str.3)
  %799 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %800 = load i32, ptr %799, align 4, !tbaa !5
  %801 = call ptr @s2n_strerror_debug(i32 noundef %800, ptr noundef @.str.3)
  %802 = call ptr @__errno_location() #11
  %803 = load i32, ptr %802, align 4, !tbaa !5
  %804 = call ptr @strerror(i32 noundef %803) #10
  %805 = call ptr @__errno_location() #11
  %806 = load i32, ptr %805, align 4, !tbaa !5
  %807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %794, ptr noundef @.str, i32 noundef %795, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 105, ptr noundef %798, ptr noundef %801, ptr noundef %804, i32 noundef %806) #10
  br label %825

808:                                              ; preds = %786, %779
  %809 = load i32, ptr %29, align 4, !tbaa !5
  %810 = call ptr @__errno_location() #11
  store i32 %809, ptr %810, align 4, !tbaa !5
  %811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %812 = load i32, ptr @test_count, align 4, !tbaa !5
  %813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %814 = load i32, ptr %813, align 4, !tbaa !5
  %815 = call ptr @s2n_strerror(i32 noundef %814, ptr noundef @.str.3)
  %816 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %817 = load i32, ptr %816, align 4, !tbaa !5
  %818 = call ptr @s2n_strerror_debug(i32 noundef %817, ptr noundef @.str.3)
  %819 = call ptr @__errno_location() #11
  %820 = load i32, ptr %819, align 4, !tbaa !5
  %821 = call ptr @strerror(i32 noundef %820) #10
  %822 = call ptr @__errno_location() #11
  %823 = load i32, ptr %822, align 4, !tbaa !5
  %824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %811, ptr noundef @.str.4, i32 noundef %812, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 105, ptr noundef %815, ptr noundef %818, ptr noundef %821, i32 noundef %823) #10
  br label %825

825:                                              ; preds = %808, %791
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %826

826:                                              ; preds = %825
  br label %827

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

828:                                              ; No predecessors!
  br label %829

829:                                              ; preds = %828
  br label %830

830:                                              ; preds = %829, %772
  br label %831

831:                                              ; preds = %830
  br label %832

832:                                              ; preds = %831
  br label %833

833:                                              ; preds = %832
  %834 = load i32, ptr @test_count, align 4, !tbaa !5
  %835 = add nsw i32 %834, 1
  store i32 %835, ptr @test_count, align 4, !tbaa !5
  %836 = load ptr, ptr %28, align 8, !tbaa !9
  %837 = load ptr, ptr %21, align 8, !tbaa !9
  %838 = call i32 @s2n_connection_set_config(ptr noundef %836, ptr noundef %837)
  %839 = icmp eq i32 %838, -1
  br i1 %839, label %840, label %893

840:                                              ; preds = %833
  br label %841

841:                                              ; preds = %840
  br label %842

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

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

854:                                              ; preds = %849
  %855 = load i32, ptr %30, align 4, !tbaa !5
  %856 = call ptr @__errno_location() #11
  store i32 %855, ptr %856, align 4, !tbaa !5
  %857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %858 = load i32, ptr @test_count, align 4, !tbaa !5
  %859 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %860 = load i32, ptr %859, align 4, !tbaa !5
  %861 = call ptr @s2n_strerror(i32 noundef %860, ptr noundef @.str.3)
  %862 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %863 = load i32, ptr %862, align 4, !tbaa !5
  %864 = call ptr @s2n_strerror_debug(i32 noundef %863, ptr noundef @.str.3)
  %865 = call ptr @__errno_location() #11
  %866 = load i32, ptr %865, align 4, !tbaa !5
  %867 = call ptr @strerror(i32 noundef %866) #10
  %868 = call ptr @__errno_location() #11
  %869 = load i32, ptr %868, align 4, !tbaa !5
  %870 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %857, ptr noundef @.str, i32 noundef %858, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 106, ptr noundef %861, ptr noundef %864, ptr noundef %867, i32 noundef %869) #10
  br label %888

871:                                              ; preds = %849, %842
  %872 = load i32, ptr %30, align 4, !tbaa !5
  %873 = call ptr @__errno_location() #11
  store i32 %872, ptr %873, align 4, !tbaa !5
  %874 = load ptr, ptr @stderr, align 8, !tbaa !9
  %875 = load i32, ptr @test_count, align 4, !tbaa !5
  %876 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %877 = load i32, ptr %876, align 4, !tbaa !5
  %878 = call ptr @s2n_strerror(i32 noundef %877, ptr noundef @.str.3)
  %879 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %880 = load i32, ptr %879, align 4, !tbaa !5
  %881 = call ptr @s2n_strerror_debug(i32 noundef %880, ptr noundef @.str.3)
  %882 = call ptr @__errno_location() #11
  %883 = load i32, ptr %882, align 4, !tbaa !5
  %884 = call ptr @strerror(i32 noundef %883) #10
  %885 = call ptr @__errno_location() #11
  %886 = load i32, ptr %885, align 4, !tbaa !5
  %887 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %874, ptr noundef @.str.4, i32 noundef %875, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 106, ptr noundef %878, ptr noundef %881, ptr noundef %884, i32 noundef %886) #10
  br label %888

888:                                              ; preds = %871, %854
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %889

889:                                              ; preds = %888
  br label %890

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

891:                                              ; No predecessors!
  br label %892

892:                                              ; preds = %891
  br label %893

893:                                              ; preds = %892, %833
  br label %894

894:                                              ; preds = %893
  br label %895

895:                                              ; preds = %894
  %896 = load ptr, ptr %28, align 8, !tbaa !9
  %897 = getelementptr inbounds %struct.s2n_connection, ptr %896, i32 0, i32 21
  store i8 30, ptr %897, align 2, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %898 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %898, ptr %31, align 8, !tbaa !9
  br label %899

899:                                              ; preds = %895
  %900 = load i32, ptr @test_count, align 4, !tbaa !5
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr @test_count, align 4, !tbaa !5
  %902 = load ptr, ptr %31, align 8, !tbaa !9
  %903 = icmp eq ptr %902, null
  br i1 %903, label %904, label %957

904:                                              ; preds = %899
  br label %905

905:                                              ; preds = %904
  br label %906

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

913:                                              ; preds = %906
  %914 = load ptr, ptr @stderr, align 8, !tbaa !9
  %915 = call i32 @fileno(ptr noundef %914) #10
  %916 = call i32 @isatty(i32 noundef %915) #10
  %917 = icmp ne i32 %916, 0
  br i1 %917, label %918, label %935

918:                                              ; preds = %913
  %919 = load i32, ptr %32, align 4, !tbaa !5
  %920 = call ptr @__errno_location() #11
  store i32 %919, ptr %920, align 4, !tbaa !5
  %921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %922 = load i32, ptr @test_count, align 4, !tbaa !5
  %923 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %924 = load i32, ptr %923, align 4, !tbaa !5
  %925 = call ptr @s2n_strerror(i32 noundef %924, ptr noundef @.str.3)
  %926 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %927 = load i32, ptr %926, align 4, !tbaa !5
  %928 = call ptr @s2n_strerror_debug(i32 noundef %927, ptr noundef @.str.3)
  %929 = call ptr @__errno_location() #11
  %930 = load i32, ptr %929, align 4, !tbaa !5
  %931 = call ptr @strerror(i32 noundef %930) #10
  %932 = call ptr @__errno_location() #11
  %933 = load i32, ptr %932, align 4, !tbaa !5
  %934 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %921, ptr noundef @.str, i32 noundef %922, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 111, ptr noundef %925, ptr noundef %928, ptr noundef %931, i32 noundef %933) #10
  br label %952

935:                                              ; preds = %913, %906
  %936 = load i32, ptr %32, align 4, !tbaa !5
  %937 = call ptr @__errno_location() #11
  store i32 %936, ptr %937, align 4, !tbaa !5
  %938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %939 = load i32, ptr @test_count, align 4, !tbaa !5
  %940 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %941 = load i32, ptr %940, align 4, !tbaa !5
  %942 = call ptr @s2n_strerror(i32 noundef %941, ptr noundef @.str.3)
  %943 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %944 = load i32, ptr %943, align 4, !tbaa !5
  %945 = call ptr @s2n_strerror_debug(i32 noundef %944, ptr noundef @.str.3)
  %946 = call ptr @__errno_location() #11
  %947 = load i32, ptr %946, align 4, !tbaa !5
  %948 = call ptr @strerror(i32 noundef %947) #10
  %949 = call ptr @__errno_location() #11
  %950 = load i32, ptr %949, align 4, !tbaa !5
  %951 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %938, ptr noundef @.str.4, i32 noundef %939, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 111, ptr noundef %942, ptr noundef %945, ptr noundef %948, i32 noundef %950) #10
  br label %952

952:                                              ; preds = %935, %918
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %953

953:                                              ; preds = %952
  br label %954

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

955:                                              ; No predecessors!
  br label %956

956:                                              ; preds = %955
  br label %957

957:                                              ; preds = %956, %899
  br label %958

958:                                              ; preds = %957
  br label %959

959:                                              ; preds = %958
  br label %960

960:                                              ; preds = %959
  %961 = load i32, ptr @test_count, align 4, !tbaa !5
  %962 = add nsw i32 %961, 1
  store i32 %962, ptr @test_count, align 4, !tbaa !5
  %963 = load ptr, ptr %31, align 8, !tbaa !9
  %964 = load ptr, ptr %24, align 8, !tbaa !9
  %965 = call i32 @s2n_connection_set_config(ptr noundef %963, ptr noundef %964)
  %966 = icmp eq i32 %965, -1
  br i1 %966, label %967, label %1020

967:                                              ; preds = %960
  br label %968

968:                                              ; preds = %967
  br label %969

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

976:                                              ; preds = %969
  %977 = load ptr, ptr @stderr, align 8, !tbaa !9
  %978 = call i32 @fileno(ptr noundef %977) #10
  %979 = call i32 @isatty(i32 noundef %978) #10
  %980 = icmp ne i32 %979, 0
  br i1 %980, label %981, label %998

981:                                              ; preds = %976
  %982 = load i32, ptr %33, align 4, !tbaa !5
  %983 = call ptr @__errno_location() #11
  store i32 %982, ptr %983, align 4, !tbaa !5
  %984 = load ptr, ptr @stderr, align 8, !tbaa !9
  %985 = load i32, ptr @test_count, align 4, !tbaa !5
  %986 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %987 = load i32, ptr %986, align 4, !tbaa !5
  %988 = call ptr @s2n_strerror(i32 noundef %987, ptr noundef @.str.3)
  %989 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %990 = load i32, ptr %989, align 4, !tbaa !5
  %991 = call ptr @s2n_strerror_debug(i32 noundef %990, ptr noundef @.str.3)
  %992 = call ptr @__errno_location() #11
  %993 = load i32, ptr %992, align 4, !tbaa !5
  %994 = call ptr @strerror(i32 noundef %993) #10
  %995 = call ptr @__errno_location() #11
  %996 = load i32, ptr %995, align 4, !tbaa !5
  %997 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %984, ptr noundef @.str, i32 noundef %985, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 112, ptr noundef %988, ptr noundef %991, ptr noundef %994, i32 noundef %996) #10
  br label %1015

998:                                              ; preds = %976, %969
  %999 = load i32, ptr %33, align 4, !tbaa !5
  %1000 = call ptr @__errno_location() #11
  store i32 %999, ptr %1000, align 4, !tbaa !5
  %1001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1002 = load i32, ptr @test_count, align 4, !tbaa !5
  %1003 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1004 = load i32, ptr %1003, align 4, !tbaa !5
  %1005 = call ptr @s2n_strerror(i32 noundef %1004, ptr noundef @.str.3)
  %1006 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1007 = load i32, ptr %1006, align 4, !tbaa !5
  %1008 = call ptr @s2n_strerror_debug(i32 noundef %1007, ptr noundef @.str.3)
  %1009 = call ptr @__errno_location() #11
  %1010 = load i32, ptr %1009, align 4, !tbaa !5
  %1011 = call ptr @strerror(i32 noundef %1010) #10
  %1012 = call ptr @__errno_location() #11
  %1013 = load i32, ptr %1012, align 4, !tbaa !5
  %1014 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1001, ptr noundef @.str.4, i32 noundef %1002, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 112, ptr noundef %1005, ptr noundef %1008, ptr noundef %1011, i32 noundef %1013) #10
  br label %1015

1015:                                             ; preds = %998, %981
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %1016

1016:                                             ; preds = %1015
  br label %1017

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

1018:                                             ; No predecessors!
  br label %1019

1019:                                             ; preds = %1018
  br label %1020

1020:                                             ; preds = %1019, %960
  br label %1021

1021:                                             ; preds = %1020
  br label %1022

1022:                                             ; preds = %1021
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  call void @llvm.memset.p0.i64(ptr align 4 %34, i8 0, i64 8, i1 false)
  br label %1023

1023:                                             ; preds = %1022
  %1024 = load i32, ptr @test_count, align 4, !tbaa !5
  %1025 = add nsw i32 %1024, 1
  store i32 %1025, ptr @test_count, align 4, !tbaa !5
  %1026 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef %34)
  %1027 = icmp eq i32 %1026, -1
  br i1 %1027, label %1028, label %1081

1028:                                             ; preds = %1023
  br label %1029

1029:                                             ; preds = %1028
  br label %1030

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

1037:                                             ; preds = %1030
  %1038 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1039 = call i32 @fileno(ptr noundef %1038) #10
  %1040 = call i32 @isatty(i32 noundef %1039) #10
  %1041 = icmp ne i32 %1040, 0
  br i1 %1041, label %1042, label %1059

1042:                                             ; preds = %1037
  %1043 = load i32, ptr %35, align 4, !tbaa !5
  %1044 = call ptr @__errno_location() #11
  store i32 %1043, ptr %1044, align 4, !tbaa !5
  %1045 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1046 = load i32, ptr @test_count, align 4, !tbaa !5
  %1047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1048 = load i32, ptr %1047, align 4, !tbaa !5
  %1049 = call ptr @s2n_strerror(i32 noundef %1048, ptr noundef @.str.3)
  %1050 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1051 = load i32, ptr %1050, align 4, !tbaa !5
  %1052 = call ptr @s2n_strerror_debug(i32 noundef %1051, ptr noundef @.str.3)
  %1053 = call ptr @__errno_location() #11
  %1054 = load i32, ptr %1053, align 4, !tbaa !5
  %1055 = call ptr @strerror(i32 noundef %1054) #10
  %1056 = call ptr @__errno_location() #11
  %1057 = load i32, ptr %1056, align 4, !tbaa !5
  %1058 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1045, ptr noundef @.str, i32 noundef %1046, ptr noundef @.str.30, ptr noundef @.str.2, i32 noundef 115, ptr noundef %1049, ptr noundef %1052, ptr noundef %1055, i32 noundef %1057) #10
  br label %1076

1059:                                             ; preds = %1037, %1030
  %1060 = load i32, ptr %35, align 4, !tbaa !5
  %1061 = call ptr @__errno_location() #11
  store i32 %1060, ptr %1061, align 4, !tbaa !5
  %1062 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1063 = load i32, ptr @test_count, align 4, !tbaa !5
  %1064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1065 = load i32, ptr %1064, align 4, !tbaa !5
  %1066 = call ptr @s2n_strerror(i32 noundef %1065, ptr noundef @.str.3)
  %1067 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1068 = load i32, ptr %1067, align 4, !tbaa !5
  %1069 = call ptr @s2n_strerror_debug(i32 noundef %1068, ptr noundef @.str.3)
  %1070 = call ptr @__errno_location() #11
  %1071 = load i32, ptr %1070, align 4, !tbaa !5
  %1072 = call ptr @strerror(i32 noundef %1071) #10
  %1073 = call ptr @__errno_location() #11
  %1074 = load i32, ptr %1073, align 4, !tbaa !5
  %1075 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1062, ptr noundef @.str.4, i32 noundef %1063, ptr noundef @.str.30, ptr noundef @.str.2, i32 noundef 115, ptr noundef %1066, ptr noundef %1069, ptr noundef %1072, i32 noundef %1074) #10
  br label %1076

1076:                                             ; preds = %1059, %1042
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %1077

1077:                                             ; preds = %1076
  br label %1078

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

1079:                                             ; No predecessors!
  br label %1080

1080:                                             ; preds = %1079
  br label %1081

1081:                                             ; preds = %1080, %1023
  br label %1082

1082:                                             ; preds = %1081
  br label %1083

1083:                                             ; preds = %1082
  br label %1084

1084:                                             ; preds = %1083
  %1085 = load i32, ptr @test_count, align 4, !tbaa !5
  %1086 = add nsw i32 %1085, 1
  store i32 %1086, ptr @test_count, align 4, !tbaa !5
  %1087 = load ptr, ptr %28, align 8, !tbaa !9
  %1088 = load ptr, ptr %31, align 8, !tbaa !9
  %1089 = call i32 @s2n_connections_set_io_pair(ptr noundef %1087, ptr noundef %1088, ptr noundef %34)
  %1090 = icmp eq i32 %1089, -1
  br i1 %1090, label %1091, label %1144

1091:                                             ; preds = %1084
  br label %1092

1092:                                             ; preds = %1091
  br label %1093

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

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

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

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

1139:                                             ; preds = %1122, %1105
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %1140

1140:                                             ; preds = %1139
  br label %1141

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

1142:                                             ; No predecessors!
  br label %1143

1143:                                             ; preds = %1142
  br label %1144

1144:                                             ; preds = %1143, %1084
  br label %1145

1145:                                             ; preds = %1144
  br label %1146

1146:                                             ; preds = %1145
  br label %1147

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

1154:                                             ; preds = %1147
  br label %1155

1155:                                             ; preds = %1154
  br label %1156

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

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

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

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

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

1203:                                             ; preds = %1202
  br label %1204

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

1205:                                             ; No predecessors!
  br label %1206

1206:                                             ; preds = %1205
  br label %1207

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

1208:                                             ; preds = %1207
  br label %1209

1209:                                             ; preds = %1208
  br label %1210

1210:                                             ; preds = %1209
  %1211 = load i32, ptr @test_count, align 4, !tbaa !5
  %1212 = add nsw i32 %1211, 1
  store i32 %1212, ptr @test_count, align 4, !tbaa !5
  %1213 = load ptr, ptr %31, align 8, !tbaa !9
  %1214 = call i32 @s2n_connection_get_client_protocol_version(ptr noundef %1213)
  %1215 = icmp eq i32 %1214, 30
  br i1 %1215, label %1269, label %1216

1216:                                             ; preds = %1210
  br label %1217

1217:                                             ; preds = %1216
  br label %1218

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

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

1230:                                             ; preds = %1225
  %1231 = load i32, ptr %38, align 4, !tbaa !5
  %1232 = call ptr @__errno_location() #11
  store i32 %1231, ptr %1232, align 4, !tbaa !5
  %1233 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1234 = load i32, ptr @test_count, align 4, !tbaa !5
  %1235 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1236 = load i32, ptr %1235, align 4, !tbaa !5
  %1237 = call ptr @s2n_strerror(i32 noundef %1236, ptr noundef @.str.3)
  %1238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1239 = load i32, ptr %1238, align 4, !tbaa !5
  %1240 = call ptr @s2n_strerror_debug(i32 noundef %1239, ptr noundef @.str.3)
  %1241 = call ptr @__errno_location() #11
  %1242 = load i32, ptr %1241, align 4, !tbaa !5
  %1243 = call ptr @strerror(i32 noundef %1242) #10
  %1244 = call ptr @__errno_location() #11
  %1245 = load i32, ptr %1244, align 4, !tbaa !5
  %1246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1233, ptr noundef @.str, i32 noundef %1234, ptr noundef @.str.33, ptr noundef @.str.2, i32 noundef 119, ptr noundef %1237, ptr noundef %1240, ptr noundef %1243, i32 noundef %1245) #10
  br label %1264

1247:                                             ; preds = %1225, %1218
  %1248 = load i32, ptr %38, align 4, !tbaa !5
  %1249 = call ptr @__errno_location() #11
  store i32 %1248, ptr %1249, align 4, !tbaa !5
  %1250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1251 = load i32, ptr @test_count, align 4, !tbaa !5
  %1252 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1253 = load i32, ptr %1252, align 4, !tbaa !5
  %1254 = call ptr @s2n_strerror(i32 noundef %1253, ptr noundef @.str.3)
  %1255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1256 = load i32, ptr %1255, align 4, !tbaa !5
  %1257 = call ptr @s2n_strerror_debug(i32 noundef %1256, ptr noundef @.str.3)
  %1258 = call ptr @__errno_location() #11
  %1259 = load i32, ptr %1258, align 4, !tbaa !5
  %1260 = call ptr @strerror(i32 noundef %1259) #10
  %1261 = call ptr @__errno_location() #11
  %1262 = load i32, ptr %1261, align 4, !tbaa !5
  %1263 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1250, ptr noundef @.str.4, i32 noundef %1251, ptr noundef @.str.33, ptr noundef @.str.2, i32 noundef 119, ptr noundef %1254, ptr noundef %1257, ptr noundef %1260, i32 noundef %1262) #10
  br label %1264

1264:                                             ; preds = %1247, %1230
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %1265

1265:                                             ; preds = %1264
  br label %1266

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

1267:                                             ; No predecessors!
  br label %1268

1268:                                             ; preds = %1267
  br label %1269

1269:                                             ; preds = %1268, %1210
  br label %1270

1270:                                             ; preds = %1269
  br label %1271

1271:                                             ; preds = %1270
  br label %1272

1272:                                             ; preds = %1271
  %1273 = load i32, ptr @test_count, align 4, !tbaa !5
  %1274 = add nsw i32 %1273, 1
  store i32 %1274, ptr @test_count, align 4, !tbaa !5
  %1275 = load ptr, ptr %31, align 8, !tbaa !9
  %1276 = call i32 @s2n_connection_get_actual_protocol_version(ptr noundef %1275)
  %1277 = icmp eq i32 %1276, 30
  br i1 %1277, label %1331, label %1278

1278:                                             ; preds = %1272
  br label %1279

1279:                                             ; preds = %1278
  br label %1280

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

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

1292:                                             ; preds = %1287
  %1293 = load i32, ptr %39, align 4, !tbaa !5
  %1294 = call ptr @__errno_location() #11
  store i32 %1293, ptr %1294, align 4, !tbaa !5
  %1295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1296 = load i32, ptr @test_count, align 4, !tbaa !5
  %1297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1298 = load i32, ptr %1297, align 4, !tbaa !5
  %1299 = call ptr @s2n_strerror(i32 noundef %1298, ptr noundef @.str.3)
  %1300 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1301 = load i32, ptr %1300, align 4, !tbaa !5
  %1302 = call ptr @s2n_strerror_debug(i32 noundef %1301, ptr noundef @.str.3)
  %1303 = call ptr @__errno_location() #11
  %1304 = load i32, ptr %1303, align 4, !tbaa !5
  %1305 = call ptr @strerror(i32 noundef %1304) #10
  %1306 = call ptr @__errno_location() #11
  %1307 = load i32, ptr %1306, align 4, !tbaa !5
  %1308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1295, ptr noundef @.str, i32 noundef %1296, ptr noundef @.str.34, ptr noundef @.str.2, i32 noundef 120, ptr noundef %1299, ptr noundef %1302, ptr noundef %1305, i32 noundef %1307) #10
  br label %1326

1309:                                             ; preds = %1287, %1280
  %1310 = load i32, ptr %39, align 4, !tbaa !5
  %1311 = call ptr @__errno_location() #11
  store i32 %1310, ptr %1311, align 4, !tbaa !5
  %1312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1313 = load i32, ptr @test_count, align 4, !tbaa !5
  %1314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1315 = load i32, ptr %1314, align 4, !tbaa !5
  %1316 = call ptr @s2n_strerror(i32 noundef %1315, ptr noundef @.str.3)
  %1317 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1318 = load i32, ptr %1317, align 4, !tbaa !5
  %1319 = call ptr @s2n_strerror_debug(i32 noundef %1318, ptr noundef @.str.3)
  %1320 = call ptr @__errno_location() #11
  %1321 = load i32, ptr %1320, align 4, !tbaa !5
  %1322 = call ptr @strerror(i32 noundef %1321) #10
  %1323 = call ptr @__errno_location() #11
  %1324 = load i32, ptr %1323, align 4, !tbaa !5
  %1325 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1312, ptr noundef @.str.4, i32 noundef %1313, ptr noundef @.str.34, ptr noundef @.str.2, i32 noundef 120, ptr noundef %1316, ptr noundef %1319, ptr noundef %1322, i32 noundef %1324) #10
  br label %1326

1326:                                             ; preds = %1309, %1292
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %1327

1327:                                             ; preds = %1326
  br label %1328

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

1329:                                             ; No predecessors!
  br label %1330

1330:                                             ; preds = %1329
  br label %1331

1331:                                             ; preds = %1330, %1272
  br label %1332

1332:                                             ; preds = %1331
  br label %1333

1333:                                             ; preds = %1332
  br label %1334

1334:                                             ; preds = %1333
  %1335 = load i32, ptr @test_count, align 4, !tbaa !5
  %1336 = add nsw i32 %1335, 1
  store i32 %1336, ptr @test_count, align 4, !tbaa !5
  %1337 = load ptr, ptr %28, align 8, !tbaa !9
  %1338 = load ptr, ptr %31, align 8, !tbaa !9
  %1339 = call i32 @s2n_test_send_receive_data(ptr noundef %1337, ptr noundef %1338)
  %1340 = getelementptr inbounds %struct.s2n_result, ptr %40, i32 0, i32 0
  store i32 %1339, ptr %1340, align 4
  %1341 = getelementptr inbounds %struct.s2n_result, ptr %40, i32 0, i32 0
  %1342 = load i32, ptr %1341, align 4
  %1343 = call zeroext i1 @s2n_result_is_ok(i32 %1342)
  br i1 %1343, label %1397, label %1344

1344:                                             ; preds = %1334
  br label %1345

1345:                                             ; preds = %1344
  br label %1346

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

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

1358:                                             ; preds = %1353
  %1359 = load i32, ptr %41, align 4, !tbaa !5
  %1360 = call ptr @__errno_location() #11
  store i32 %1359, ptr %1360, align 4, !tbaa !5
  %1361 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1362 = load i32, ptr @test_count, align 4, !tbaa !5
  %1363 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1364 = load i32, ptr %1363, align 4, !tbaa !5
  %1365 = call ptr @s2n_strerror(i32 noundef %1364, ptr noundef @.str.3)
  %1366 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1367 = load i32, ptr %1366, align 4, !tbaa !5
  %1368 = call ptr @s2n_strerror_debug(i32 noundef %1367, ptr noundef @.str.3)
  %1369 = call ptr @__errno_location() #11
  %1370 = load i32, ptr %1369, align 4, !tbaa !5
  %1371 = call ptr @strerror(i32 noundef %1370) #10
  %1372 = call ptr @__errno_location() #11
  %1373 = load i32, ptr %1372, align 4, !tbaa !5
  %1374 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1361, ptr noundef @.str, i32 noundef %1362, ptr noundef @.str.35, ptr noundef @.str.2, i32 noundef 122, ptr noundef %1365, ptr noundef %1368, ptr noundef %1371, i32 noundef %1373) #10
  br label %1392

1375:                                             ; preds = %1353, %1346
  %1376 = load i32, ptr %41, align 4, !tbaa !5
  %1377 = call ptr @__errno_location() #11
  store i32 %1376, ptr %1377, align 4, !tbaa !5
  %1378 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1379 = load i32, ptr @test_count, align 4, !tbaa !5
  %1380 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1381 = load i32, ptr %1380, align 4, !tbaa !5
  %1382 = call ptr @s2n_strerror(i32 noundef %1381, ptr noundef @.str.3)
  %1383 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1384 = load i32, ptr %1383, align 4, !tbaa !5
  %1385 = call ptr @s2n_strerror_debug(i32 noundef %1384, ptr noundef @.str.3)
  %1386 = call ptr @__errno_location() #11
  %1387 = load i32, ptr %1386, align 4, !tbaa !5
  %1388 = call ptr @strerror(i32 noundef %1387) #10
  %1389 = call ptr @__errno_location() #11
  %1390 = load i32, ptr %1389, align 4, !tbaa !5
  %1391 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1378, ptr noundef @.str.4, i32 noundef %1379, ptr noundef @.str.35, ptr noundef @.str.2, i32 noundef 122, ptr noundef %1382, ptr noundef %1385, ptr noundef %1388, i32 noundef %1390) #10
  br label %1392

1392:                                             ; preds = %1375, %1358
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %1393

1393:                                             ; preds = %1392
  br label %1394

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

1395:                                             ; No predecessors!
  br label %1396

1396:                                             ; preds = %1395
  br label %1397

1397:                                             ; preds = %1396, %1334
  br label %1398

1398:                                             ; preds = %1397
  br label %1399

1399:                                             ; preds = %1398
  br label %1400

1400:                                             ; preds = %1399
  %1401 = load i32, ptr @test_count, align 4, !tbaa !5
  %1402 = add nsw i32 %1401, 1
  store i32 %1402, ptr @test_count, align 4, !tbaa !5
  %1403 = load ptr, ptr %31, align 8, !tbaa !9
  %1404 = load ptr, ptr %28, align 8, !tbaa !9
  %1405 = call i32 @s2n_test_send_receive_data(ptr noundef %1403, ptr noundef %1404)
  %1406 = getelementptr inbounds %struct.s2n_result, ptr %42, i32 0, i32 0
  store i32 %1405, ptr %1406, align 4
  %1407 = getelementptr inbounds %struct.s2n_result, ptr %42, i32 0, i32 0
  %1408 = load i32, ptr %1407, align 4
  %1409 = call zeroext i1 @s2n_result_is_ok(i32 %1408)
  br i1 %1409, label %1463, label %1410

1410:                                             ; preds = %1400
  br label %1411

1411:                                             ; preds = %1410
  br label %1412

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

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

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

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

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

1459:                                             ; preds = %1458
  br label %1460

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

1461:                                             ; No predecessors!
  br label %1462

1462:                                             ; preds = %1461
  br label %1463

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

1464:                                             ; preds = %1463
  br label %1465

1465:                                             ; preds = %1464
  %1466 = call i32 @s2n_io_pair_close(ptr noundef %34)
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  %1467 = call i32 @s2n_connection_ptr_free(ptr noundef %31)
  %1468 = getelementptr inbounds %struct.s2n_result, ptr %44, i32 0, i32 0
  store i32 %1467, ptr %1468, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  %1469 = call i32 @s2n_connection_ptr_free(ptr noundef %28)
  %1470 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  store i32 %1469, ptr %1470, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  %1471 = call i32 @s2n_config_ptr_free(ptr noundef %24)
  %1472 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  store i32 %1471, ptr %1472, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  %1473 = call i32 @s2n_config_ptr_free(ptr noundef %21)
  %1474 = getelementptr inbounds %struct.s2n_result, ptr %47, i32 0, i32 0
  store i32 %1473, ptr %1474, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #10
  store i32 0, ptr %17, align 4
  br label %1475

1475:                                             ; preds = %1465, %444, %434
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  %1476 = load i32, ptr %17, align 4
  switch i32 %1476, label %1705 [
    i32 0, label %1477
    i32 44, label %1478
  ]

1477:                                             ; preds = %1475
  br label %1478

1478:                                             ; preds = %1477, %1475
  %1479 = load i64, ptr %16, align 8, !tbaa !15
  %1480 = add i64 %1479, 1
  store i64 %1480, ptr %16, align 8, !tbaa !15
  br label %415, !llvm.loop !61

1481:                                             ; preds = %422
  br label %1482

1482:                                             ; preds = %1481
  %1483 = load i32, ptr @test_count, align 4, !tbaa !5
  %1484 = add nsw i32 %1483, 1
  store i32 %1484, ptr @test_count, align 4, !tbaa !5
  %1485 = load i64, ptr %15, align 8, !tbaa !15
  %1486 = icmp ugt i64 %1485, 0
  br i1 %1486, label %1540, label %1487

1487:                                             ; preds = %1482
  br label %1488

1488:                                             ; preds = %1487
  br label %1489

1489:                                             ; preds = %1488
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %1490 = call ptr @__errno_location() #11
  %1491 = load i32, ptr %1490, align 4, !tbaa !5
  store i32 %1491, ptr %48, align 4, !tbaa !5
  %1492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1493 = call i32 @s2n_print_stacktrace(ptr noundef %1492)
  %1494 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1495 = trunc i8 %1494 to i1
  br i1 %1495, label %1496, label %1518

1496:                                             ; preds = %1489
  %1497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1498 = call i32 @fileno(ptr noundef %1497) #10
  %1499 = call i32 @isatty(i32 noundef %1498) #10
  %1500 = icmp ne i32 %1499, 0
  br i1 %1500, label %1501, label %1518

1501:                                             ; preds = %1496
  %1502 = load i32, ptr %48, align 4, !tbaa !5
  %1503 = call ptr @__errno_location() #11
  store i32 %1502, ptr %1503, align 4, !tbaa !5
  %1504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1505 = load i32, ptr @test_count, align 4, !tbaa !5
  %1506 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1507 = load i32, ptr %1506, align 4, !tbaa !5
  %1508 = call ptr @s2n_strerror(i32 noundef %1507, ptr noundef @.str.3)
  %1509 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1510 = load i32, ptr %1509, align 4, !tbaa !5
  %1511 = call ptr @s2n_strerror_debug(i32 noundef %1510, ptr noundef @.str.3)
  %1512 = call ptr @__errno_location() #11
  %1513 = load i32, ptr %1512, align 4, !tbaa !5
  %1514 = call ptr @strerror(i32 noundef %1513) #10
  %1515 = call ptr @__errno_location() #11
  %1516 = load i32, ptr %1515, align 4, !tbaa !5
  %1517 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1504, ptr noundef @.str, i32 noundef %1505, ptr noundef @.str.37, ptr noundef @.str.2, i32 noundef 127, ptr noundef %1508, ptr noundef %1511, ptr noundef %1514, i32 noundef %1516) #10
  br label %1535

1518:                                             ; preds = %1496, %1489
  %1519 = load i32, ptr %48, align 4, !tbaa !5
  %1520 = call ptr @__errno_location() #11
  store i32 %1519, ptr %1520, align 4, !tbaa !5
  %1521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1522 = load i32, ptr @test_count, align 4, !tbaa !5
  %1523 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1524 = load i32, ptr %1523, align 4, !tbaa !5
  %1525 = call ptr @s2n_strerror(i32 noundef %1524, ptr noundef @.str.3)
  %1526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1527 = load i32, ptr %1526, align 4, !tbaa !5
  %1528 = call ptr @s2n_strerror_debug(i32 noundef %1527, ptr noundef @.str.3)
  %1529 = call ptr @__errno_location() #11
  %1530 = load i32, ptr %1529, align 4, !tbaa !5
  %1531 = call ptr @strerror(i32 noundef %1530) #10
  %1532 = call ptr @__errno_location() #11
  %1533 = load i32, ptr %1532, align 4, !tbaa !5
  %1534 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1521, ptr noundef @.str.4, i32 noundef %1522, ptr noundef @.str.37, ptr noundef @.str.2, i32 noundef 127, ptr noundef %1525, ptr noundef %1528, ptr noundef %1531, i32 noundef %1533) #10
  br label %1535

1535:                                             ; preds = %1518, %1501
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %1536

1536:                                             ; preds = %1535
  br label %1537

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

1538:                                             ; No predecessors!
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

1540:                                             ; preds = %1539, %1482
  br label %1541

1541:                                             ; preds = %1540
  br label %1542

1542:                                             ; preds = %1541
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %1543

1543:                                             ; preds = %1542
  br label %1544

1544:                                             ; preds = %1543
  %1545 = call i32 @s2n_cleanup()
  %1546 = icmp eq i32 %1545, -1
  br i1 %1546, label %1547, label %1600

1547:                                             ; preds = %1544
  br label %1548

1548:                                             ; preds = %1547
  br label %1549

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

1556:                                             ; preds = %1549
  %1557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1558 = call i32 @fileno(ptr noundef %1557) #10
  %1559 = call i32 @isatty(i32 noundef %1558) #10
  %1560 = icmp ne i32 %1559, 0
  br i1 %1560, label %1561, label %1578

1561:                                             ; preds = %1556
  %1562 = load i32, ptr %49, align 4, !tbaa !5
  %1563 = call ptr @__errno_location() #11
  store i32 %1562, ptr %1563, align 4, !tbaa !5
  %1564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1565 = load i32, ptr @test_count, align 4, !tbaa !5
  %1566 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1567 = load i32, ptr %1566, align 4, !tbaa !5
  %1568 = call ptr @s2n_strerror(i32 noundef %1567, ptr noundef @.str.3)
  %1569 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1570 = load i32, ptr %1569, align 4, !tbaa !5
  %1571 = call ptr @s2n_strerror_debug(i32 noundef %1570, ptr noundef @.str.3)
  %1572 = call ptr @__errno_location() #11
  %1573 = load i32, ptr %1572, align 4, !tbaa !5
  %1574 = call ptr @strerror(i32 noundef %1573) #10
  %1575 = call ptr @__errno_location() #11
  %1576 = load i32, ptr %1575, align 4, !tbaa !5
  %1577 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1564, ptr noundef @.str, i32 noundef %1565, ptr noundef @.str.38, ptr noundef @.str.2, i32 noundef 130, ptr noundef %1568, ptr noundef %1571, ptr noundef %1574, i32 noundef %1576) #10
  br label %1595

1578:                                             ; preds = %1556, %1549
  %1579 = load i32, ptr %49, align 4, !tbaa !5
  %1580 = call ptr @__errno_location() #11
  store i32 %1579, ptr %1580, align 4, !tbaa !5
  %1581 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1582 = load i32, ptr @test_count, align 4, !tbaa !5
  %1583 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1584 = load i32, ptr %1583, align 4, !tbaa !5
  %1585 = call ptr @s2n_strerror(i32 noundef %1584, ptr noundef @.str.3)
  %1586 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1587 = load i32, ptr %1586, align 4, !tbaa !5
  %1588 = call ptr @s2n_strerror_debug(i32 noundef %1587, ptr noundef @.str.3)
  %1589 = call ptr @__errno_location() #11
  %1590 = load i32, ptr %1589, align 4, !tbaa !5
  %1591 = call ptr @strerror(i32 noundef %1590) #10
  %1592 = call ptr @__errno_location() #11
  %1593 = load i32, ptr %1592, align 4, !tbaa !5
  %1594 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1581, ptr noundef @.str.4, i32 noundef %1582, ptr noundef @.str.38, ptr noundef @.str.2, i32 noundef 130, ptr noundef %1585, ptr noundef %1588, ptr noundef %1591, i32 noundef %1593) #10
  br label %1595

1595:                                             ; preds = %1578, %1561
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %1596

1596:                                             ; preds = %1595
  br label %1597

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

1598:                                             ; No predecessors!
  br label %1599

1599:                                             ; preds = %1598
  br label %1600

1600:                                             ; preds = %1599, %1544
  br label %1601

1601:                                             ; preds = %1600
  br label %1602

1602:                                             ; preds = %1601
  br label %1603

1603:                                             ; preds = %1602
  br label %1604

1604:                                             ; preds = %1603
  %1605 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1606 = icmp eq i32 %1605, -1
  br i1 %1606, label %1607, label %1660

1607:                                             ; preds = %1604
  br label %1608

1608:                                             ; preds = %1607
  br label %1609

1609:                                             ; preds = %1608
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  %1610 = call ptr @__errno_location() #11
  %1611 = load i32, ptr %1610, align 4, !tbaa !5
  store i32 %1611, ptr %50, align 4, !tbaa !5
  %1612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1613 = call i32 @s2n_print_stacktrace(ptr noundef %1612)
  %1614 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1615 = trunc i8 %1614 to i1
  br i1 %1615, label %1616, label %1638

1616:                                             ; preds = %1609
  %1617 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1618 = call i32 @fileno(ptr noundef %1617) #10
  %1619 = call i32 @isatty(i32 noundef %1618) #10
  %1620 = icmp ne i32 %1619, 0
  br i1 %1620, label %1621, label %1638

1621:                                             ; preds = %1616
  %1622 = load i32, ptr %50, align 4, !tbaa !5
  %1623 = call ptr @__errno_location() #11
  store i32 %1622, ptr %1623, align 4, !tbaa !5
  %1624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1625 = load i32, ptr @test_count, align 4, !tbaa !5
  %1626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1627 = load i32, ptr %1626, align 4, !tbaa !5
  %1628 = call ptr @s2n_strerror(i32 noundef %1627, ptr noundef @.str.3)
  %1629 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1630 = load i32, ptr %1629, align 4, !tbaa !5
  %1631 = call ptr @s2n_strerror_debug(i32 noundef %1630, ptr noundef @.str.3)
  %1632 = call ptr @__errno_location() #11
  %1633 = load i32, ptr %1632, align 4, !tbaa !5
  %1634 = call ptr @strerror(i32 noundef %1633) #10
  %1635 = call ptr @__errno_location() #11
  %1636 = load i32, ptr %1635, align 4, !tbaa !5
  %1637 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1624, ptr noundef @.str, i32 noundef %1625, ptr noundef @.str.39, ptr noundef @.str.2, i32 noundef 130, ptr noundef %1628, ptr noundef %1631, ptr noundef %1634, i32 noundef %1636) #10
  br label %1655

1638:                                             ; preds = %1616, %1609
  %1639 = load i32, ptr %50, align 4, !tbaa !5
  %1640 = call ptr @__errno_location() #11
  store i32 %1639, ptr %1640, align 4, !tbaa !5
  %1641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1642 = load i32, ptr @test_count, align 4, !tbaa !5
  %1643 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1644 = load i32, ptr %1643, align 4, !tbaa !5
  %1645 = call ptr @s2n_strerror(i32 noundef %1644, ptr noundef @.str.3)
  %1646 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1647 = load i32, ptr %1646, align 4, !tbaa !5
  %1648 = call ptr @s2n_strerror_debug(i32 noundef %1647, ptr noundef @.str.3)
  %1649 = call ptr @__errno_location() #11
  %1650 = load i32, ptr %1649, align 4, !tbaa !5
  %1651 = call ptr @strerror(i32 noundef %1650) #10
  %1652 = call ptr @__errno_location() #11
  %1653 = load i32, ptr %1652, align 4, !tbaa !5
  %1654 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1641, ptr noundef @.str.4, i32 noundef %1642, ptr noundef @.str.39, ptr noundef @.str.2, i32 noundef 130, ptr noundef %1645, ptr noundef %1648, ptr noundef %1651, i32 noundef %1653) #10
  br label %1655

1655:                                             ; preds = %1638, %1621
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %1656

1656:                                             ; preds = %1655
  br label %1657

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

1658:                                             ; No predecessors!
  br label %1659

1659:                                             ; preds = %1658
  br label %1660

1660:                                             ; preds = %1659, %1604
  br label %1661

1661:                                             ; preds = %1660
  br label %1662

1662:                                             ; preds = %1661
  %1663 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1664 = trunc i8 %1663 to i1
  br i1 %1664, label %1665, label %1681

1665:                                             ; preds = %1662
  %1666 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1667 = call i32 @fileno(ptr noundef %1666) #10
  %1668 = call i32 @isatty(i32 noundef %1667) #10
  %1669 = icmp ne i32 %1668, 0
  br i1 %1669, label %1670, label %1681

1670:                                             ; preds = %1665
  %1671 = load i32, ptr @test_count, align 4, !tbaa !5
  %1672 = icmp ne i32 %1671, 0
  br i1 %1672, label %1673, label %1677

1673:                                             ; preds = %1670
  %1674 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1675 = load i32, ptr @test_count, align 4, !tbaa !5
  %1676 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1674, ptr noundef @.str.40, i32 noundef %1675) #10
  br label %1680

1677:                                             ; preds = %1670
  %1678 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1679 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1678, ptr noundef @.str.41) #10
  br label %1680

1680:                                             ; preds = %1677, %1673
  br label %1692

1681:                                             ; preds = %1665, %1662
  %1682 = load i32, ptr @test_count, align 4, !tbaa !5
  %1683 = icmp ne i32 %1682, 0
  br i1 %1683, label %1684, label %1688

1684:                                             ; preds = %1681
  %1685 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1686 = load i32, ptr @test_count, align 4, !tbaa !5
  %1687 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1685, ptr noundef @.str.42, i32 noundef %1686) #10
  br label %1691

1688:                                             ; preds = %1681
  %1689 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1689, ptr noundef @.str.43) #10
  br label %1691

1691:                                             ; preds = %1688, %1684
  br label %1692

1692:                                             ; preds = %1691, %1680
  store i32 0, ptr %3, align 4
  store i32 1, ptr %17, align 4
  br label %1697

1693:                                             ; No predecessors!
  br label %1694

1694:                                             ; preds = %1693
  br label %1695

1695:                                             ; preds = %1694
  br label %1696

1696:                                             ; preds = %1695
  store i32 0, ptr %17, align 4
  br label %1697

1697:                                             ; preds = %1696, %1692
  call void @llvm.lifetime.end.p0(i64 12000, ptr %13) #10
  %1698 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %11)
  %1699 = getelementptr inbounds %struct.s2n_result, ptr %51, i32 0, i32 0
  store i32 %1698, ptr %1699, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  %1700 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %9)
  %1701 = getelementptr inbounds %struct.s2n_result, ptr %52, i32 0, i32 0
  store i32 %1700, ptr %1701, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  %1702 = load i32, ptr %17, align 4
  switch i32 %1702, label %1705 [
    i32 0, label %1703
    i32 1, label %1703
  ]

1703:                                             ; preds = %1697, %1697
  %1704 = load i32, ptr %3, align 4
  ret i32 %1704

1705:                                             ; preds = %1697, %1475
  unreachable
}

declare i32 @fflush(ptr noundef) #4

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #4

declare i32 @s2n_enable_atexit() #4

declare i32 @s2n_init() #4

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) #4

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

declare i32 @s2n_read_test_pem(ptr noundef, ptr noundef, i64 noundef) #4

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

declare ptr @s2n_config_new() #4

declare i32 @s2n_config_ptr_free(ptr noundef) #4

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

declare i32 @s2n_config_disable_x509_verification(ptr noundef) #4

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

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

declare ptr @s2n_connection_new(i32 noundef) #4

declare i32 @s2n_connection_ptr_free(ptr noundef) #4

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

declare i32 @s2n_io_pair_close(ptr noundef) #4

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) #4

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

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

declare i32 @s2n_connection_get_client_protocol_version(ptr noundef) #4

declare i32 @s2n_connection_get_actual_protocol_version(ptr noundef) #4

declare i32 @s2n_cleanup() #4

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

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

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


; 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.s2n_cipher_preferences = type { i16, ptr, 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 [73 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
@stdout = external local_unnamed_addr global ptr, align 8
@.str.9 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [204 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [155 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [96 x i8], align 1
@security_policy_test_all = external local_unnamed_addr constant %struct.s2n_security_policy, align 8
@.str.21 = external hidden unnamed_addr constant [158 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @s2n_test_send_receive_data(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 nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

27:                                               ; preds = %20
  %28 = load ptr, ptr @stderr, align 8, !tbaa !9
  %29 = tail call i32 @fileno(ptr noundef %28) #11
  %30 = tail call i32 @isatty(i32 noundef %29) #11
  %.not95 = icmp eq i32 %30, 0
  br i1 %.not95, label %31, label %32

31:                                               ; preds = %27, %20
  br label %32

32:                                               ; preds = %27, %31
  %.str.4.sink = phi ptr [ @.str.4, %31 ], [ @.str, %27 ]
  store i32 %22, ptr %21, align 4, !tbaa !5
  %33 = load ptr, ptr @stderr, align 8, !tbaa !9
  %34 = load i32, ptr @test_count, align 4, !tbaa !5
  %35 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %36 = load i32, ptr %35, align 4, !tbaa !5
  %37 = tail call ptr @s2n_strerror(i32 noundef %36, ptr noundef nonnull @.str.3) #11
  %38 = load i32, ptr %35, align 4, !tbaa !5
  %39 = tail call ptr @s2n_strerror_debug(i32 noundef %38, ptr noundef nonnull @.str.3) #11
  %40 = load i32, ptr %21, align 4, !tbaa !5
  %41 = tail call ptr @strerror(i32 noundef %40) #11
  %42 = load i32, ptr %21, align 4, !tbaa !5
  %43 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %33, ptr noundef nonnull %.str.4.sink, i32 noundef %34, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 54, ptr noundef %37, ptr noundef %39, ptr noundef %41, i32 noundef %42) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

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

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

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

60:                                               ; preds = %56, %49
  br label %61

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

73:                                               ; preds = %44
  %74 = tail call i32 @s2n_init() #11
  %75 = icmp eq i32 %74, -1
  br i1 %75, label %76, label %100

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

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

87:                                               ; preds = %83, %76
  br label %88

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

100:                                              ; preds = %73
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #11
  store ptr null, ptr %3, align 8, !tbaa !9
  %101 = load i32, ptr @test_count, align 4, !tbaa !5
  %102 = add nsw i32 %101, 1
  store i32 %102, ptr @test_count, align 4, !tbaa !5
  %103 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %3, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14) #11
  %104 = icmp eq i32 %103, -1
  br i1 %104, label %105, label %129

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

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

116:                                              ; preds = %112, %105
  br label %117

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

129:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #11
  store ptr null, ptr %4, align 8, !tbaa !9
  %130 = load i32, ptr @test_count, align 4, !tbaa !5
  %131 = add nsw i32 %130, 1
  store i32 %131, ptr @test_count, align 4, !tbaa !5
  %132 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %4, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17) #11
  %133 = icmp eq i32 %132, -1
  br i1 %133, label %134, label %158

134:                                              ; preds = %129
  %135 = tail call ptr @__errno_location() #12
  %136 = load i32, ptr %135, align 4, !tbaa !5
  %137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %138 = call i32 @s2n_print_stacktrace(ptr noundef %137) #11
  %139 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %140 = trunc nuw i8 %139 to i1
  br i1 %140, label %141, label %145

141:                                              ; preds = %134
  %142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %143 = call i32 @fileno(ptr noundef %142) #11
  %144 = call i32 @isatty(i32 noundef %143) #11
  %.not91 = icmp eq i32 %144, 0
  br i1 %.not91, label %145, label %146

145:                                              ; preds = %141, %134
  br label %146

146:                                              ; preds = %141, %145
  %.str.4.sink159 = phi ptr [ @.str.4, %145 ], [ @.str, %141 ]
  store i32 %136, ptr %135, align 4, !tbaa !5
  %147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %148 = load i32, ptr @test_count, align 4, !tbaa !5
  %149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %150 = load i32, ptr %149, align 4, !tbaa !5
  %151 = call ptr @s2n_strerror(i32 noundef %150, ptr noundef nonnull @.str.3) #11
  %152 = load i32, ptr %149, align 4, !tbaa !5
  %153 = call ptr @s2n_strerror_debug(i32 noundef %152, ptr noundef nonnull @.str.3) #11
  %154 = load i32, ptr %135, align 4, !tbaa !5
  %155 = call ptr @strerror(i32 noundef %154) #11
  %156 = load i32, ptr %135, align 4, !tbaa !5
  %157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %147, ptr noundef nonnull %.str.4.sink159, i32 noundef %148, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.2, i32 noundef 62, ptr noundef %151, ptr noundef %153, ptr noundef %155, i32 noundef %156) #13
  call void @exit(i32 noundef 1) #14
  unreachable

158:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 12000, ptr nonnull %5) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(12000) %5, i8 0, i64 12000, i1 false)
  %159 = load i32, ptr @test_count, align 4, !tbaa !5
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr @test_count, align 4, !tbaa !5
  %161 = call i32 @s2n_read_test_pem(ptr noundef nonnull @.str.19, ptr noundef nonnull %5, i64 noundef 12000) #11
  %162 = icmp eq i32 %161, -1
  br i1 %162, label %171, label %.preheader

.preheader:                                       ; preds = %158
  %163 = load ptr, ptr getelementptr inbounds (i8, ptr @security_policy_test_all, i64 8), align 8, !tbaa !15
  %164 = load i16, ptr %163, align 8, !tbaa !17
  %.not114 = icmp eq i16 %164, 0
  br i1 %.not114, label %._crit_edge.thread, label %.lr.ph

._crit_edge.thread:                               ; preds = %.preheader
  %165 = load i32, ptr @test_count, align 4, !tbaa !5
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr @test_count, align 4, !tbaa !5
  br label %708

.lr.ph:                                           ; preds = %.preheader
  %167 = getelementptr inbounds i8, ptr %163, i64 8
  %168 = getelementptr inbounds i8, ptr %7, i64 8
  %169 = getelementptr inbounds i8, ptr %7, i64 16
  %170 = getelementptr inbounds i8, ptr %8, i64 8
  br label %198

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

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

182:                                              ; preds = %178, %171
  br label %183

183:                                              ; preds = %178, %182
  %.str.4.sink170 = phi ptr [ @.str.4, %182 ], [ @.str, %178 ]
  store i32 %173, ptr %172, align 4, !tbaa !5
  %184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %185 = load i32, ptr @test_count, align 4, !tbaa !5
  %186 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = call ptr @s2n_strerror(i32 noundef %187, ptr noundef nonnull @.str.3) #11
  %189 = load i32, ptr %186, align 4, !tbaa !5
  %190 = call ptr @s2n_strerror_debug(i32 noundef %189, ptr noundef nonnull @.str.3) #11
  %191 = load i32, ptr %172, align 4, !tbaa !5
  %192 = call ptr @strerror(i32 noundef %191) #11
  %193 = load i32, ptr %172, align 4, !tbaa !5
  %194 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %184, ptr noundef nonnull %.str.4.sink170, i32 noundef %185, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 65, ptr noundef %188, ptr noundef %190, ptr noundef %192, i32 noundef %193) #13
  call void @exit(i32 noundef 1) #14
  unreachable

._crit_edge:                                      ; preds = %703
  %195 = icmp eq i64 %.1, 0
  %196 = load i32, ptr @test_count, align 4, !tbaa !5
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr @test_count, align 4, !tbaa !5
  br i1 %195, label %708, label %732

198:                                              ; preds = %.lr.ph, %703
  %.0113 = phi i64 [ 0, %.lr.ph ], [ %.1, %703 ]
  %.063112 = phi i64 [ 0, %.lr.ph ], [ %704, %703 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #11
  %199 = load ptr, ptr %167, align 8, !tbaa !20
  %200 = getelementptr inbounds ptr, ptr %199, i64 %.063112
  %201 = load ptr, ptr %200, align 8, !tbaa !9
  store ptr %201, ptr %6, align 8, !tbaa !9
  %202 = getelementptr inbounds i8, ptr %201, i64 80
  %203 = load ptr, ptr %202, align 8, !tbaa !21
  %.not73 = icmp eq ptr %203, null
  br i1 %.not73, label %703, label %204

204:                                              ; preds = %198
  %205 = load ptr, ptr %203, align 8, !tbaa !23
  %206 = getelementptr inbounds i8, ptr %205, i64 56
  %207 = load ptr, ptr %206, align 8, !tbaa !26
  %208 = call zeroext i1 %207() #11
  br i1 %208, label %209, label %703

209:                                              ; preds = %204
  %210 = add i64 %.0113, 1
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #11
  store i16 1, ptr %7, align 8, !tbaa !17
  store ptr %6, ptr %168, align 8, !tbaa !20
  store i8 0, ptr %169, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, ptr noundef nonnull align 8 dereferenceable(64) @security_policy_test_all, i64 64, i1 false), !tbaa.struct !29
  store ptr %7, ptr %170, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #11
  %211 = call ptr @s2n_config_new() #11
  store ptr %211, ptr %9, align 8, !tbaa !9
  %212 = load i32, ptr @test_count, align 4, !tbaa !5
  %213 = add nsw i32 %212, 1
  store i32 %213, ptr @test_count, align 4, !tbaa !5
  %214 = call i32 @s2n_config_set_verification_ca_location(ptr noundef %211, ptr noundef nonnull @.str.13, ptr noundef null) #11
  %215 = icmp eq i32 %214, -1
  br i1 %215, label %216, label %240

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

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

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

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

240:                                              ; preds = %209
  %241 = load i32, ptr @test_count, align 4, !tbaa !5
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr @test_count, align 4, !tbaa !5
  %243 = load ptr, ptr %9, align 8, !tbaa !9
  %244 = call i32 @s2n_config_disable_x509_verification(ptr noundef %243) #11
  %245 = icmp eq i32 %244, -1
  br i1 %245, label %246, label %270

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

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

257:                                              ; preds = %253, %246
  br label %258

258:                                              ; preds = %253, %257
  %.str.4.sink192 = phi ptr [ @.str.4, %257 ], [ @.str, %253 ]
  store i32 %248, ptr %247, align 4, !tbaa !5
  %259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %260 = load i32, ptr @test_count, align 4, !tbaa !5
  %261 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %262 = load i32, ptr %261, align 4, !tbaa !5
  %263 = call ptr @s2n_strerror(i32 noundef %262, ptr noundef nonnull @.str.3) #11
  %264 = load i32, ptr %261, align 4, !tbaa !5
  %265 = call ptr @s2n_strerror_debug(i32 noundef %264, ptr noundef nonnull @.str.3) #11
  %266 = load i32, ptr %247, align 4, !tbaa !5
  %267 = call ptr @strerror(i32 noundef %266) #11
  %268 = load i32, ptr %247, align 4, !tbaa !5
  %269 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %259, ptr noundef nonnull %.str.4.sink192, i32 noundef %260, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 94, ptr noundef %263, ptr noundef %265, ptr noundef %267, i32 noundef %268) #13
  call void @exit(i32 noundef 1) #14
  unreachable

270:                                              ; preds = %240
  %271 = load ptr, ptr %9, align 8, !tbaa !9
  %272 = getelementptr inbounds i8, ptr %271, i64 96
  store ptr %8, ptr %272, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  %273 = call ptr @s2n_config_new() #11
  store ptr %273, ptr %10, align 8, !tbaa !9
  %274 = load i32, ptr @test_count, align 4, !tbaa !5
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr @test_count, align 4, !tbaa !5
  %276 = load ptr, ptr %3, align 8, !tbaa !9
  %277 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %273, ptr noundef %276) #11
  %278 = icmp eq i32 %277, -1
  br i1 %278, label %279, label %303

279:                                              ; preds = %270
  %280 = tail call ptr @__errno_location() #12
  %281 = load i32, ptr %280, align 4, !tbaa !5
  %282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %283 = call i32 @s2n_print_stacktrace(ptr noundef %282) #11
  %284 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %285 = trunc nuw i8 %284 to i1
  br i1 %285, label %286, label %290

286:                                              ; preds = %279
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = call i32 @fileno(ptr noundef %287) #11
  %289 = call i32 @isatty(i32 noundef %288) #11
  %.not87 = icmp eq i32 %289, 0
  br i1 %.not87, label %290, label %291

290:                                              ; preds = %286, %279
  br label %291

291:                                              ; preds = %286, %290
  %.str.4.sink203 = phi ptr [ @.str.4, %290 ], [ @.str, %286 ]
  store i32 %281, ptr %280, align 4, !tbaa !5
  %292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %293 = load i32, ptr @test_count, align 4, !tbaa !5
  %294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %295 = load i32, ptr %294, align 4, !tbaa !5
  %296 = call ptr @s2n_strerror(i32 noundef %295, ptr noundef nonnull @.str.3) #11
  %297 = load i32, ptr %294, align 4, !tbaa !5
  %298 = call ptr @s2n_strerror_debug(i32 noundef %297, ptr noundef nonnull @.str.3) #11
  %299 = load i32, ptr %280, align 4, !tbaa !5
  %300 = call ptr @strerror(i32 noundef %299) #11
  %301 = load i32, ptr %280, align 4, !tbaa !5
  %302 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %292, ptr noundef nonnull %.str.4.sink203, i32 noundef %293, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 98, ptr noundef %296, ptr noundef %298, ptr noundef %300, i32 noundef %301) #13
  call void @exit(i32 noundef 1) #14
  unreachable

303:                                              ; preds = %270
  %304 = load i32, ptr @test_count, align 4, !tbaa !5
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr @test_count, align 4, !tbaa !5
  %306 = load ptr, ptr %10, align 8, !tbaa !9
  %307 = load ptr, ptr %4, align 8, !tbaa !9
  %308 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %306, ptr noundef %307) #11
  %309 = icmp eq i32 %308, -1
  br i1 %309, label %310, label %334

310:                                              ; preds = %303
  %311 = tail call ptr @__errno_location() #12
  %312 = load i32, ptr %311, align 4, !tbaa !5
  %313 = load ptr, ptr @stderr, align 8, !tbaa !9
  %314 = call i32 @s2n_print_stacktrace(ptr noundef %313) #11
  %315 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %316 = trunc nuw i8 %315 to i1
  br i1 %316, label %317, label %321

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

321:                                              ; preds = %317, %310
  br label %322

322:                                              ; preds = %317, %321
  %.str.4.sink214 = phi ptr [ @.str.4, %321 ], [ @.str, %317 ]
  store i32 %312, ptr %311, align 4, !tbaa !5
  %323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %324 = load i32, ptr @test_count, align 4, !tbaa !5
  %325 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %326 = load i32, ptr %325, align 4, !tbaa !5
  %327 = call ptr @s2n_strerror(i32 noundef %326, ptr noundef nonnull @.str.3) #11
  %328 = load i32, ptr %325, align 4, !tbaa !5
  %329 = call ptr @s2n_strerror_debug(i32 noundef %328, ptr noundef nonnull @.str.3) #11
  %330 = load i32, ptr %311, align 4, !tbaa !5
  %331 = call ptr @strerror(i32 noundef %330) #11
  %332 = load i32, ptr %311, align 4, !tbaa !5
  %333 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %323, ptr noundef nonnull %.str.4.sink214, i32 noundef %324, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 99, ptr noundef %327, ptr noundef %329, ptr noundef %331, i32 noundef %332) #13
  call void @exit(i32 noundef 1) #14
  unreachable

334:                                              ; preds = %303
  %335 = load i32, ptr @test_count, align 4, !tbaa !5
  %336 = add nsw i32 %335, 1
  store i32 %336, ptr @test_count, align 4, !tbaa !5
  %337 = load ptr, ptr %10, align 8, !tbaa !9
  %338 = call i32 @s2n_config_add_dhparams(ptr noundef %337, ptr noundef nonnull %5) #11
  %339 = icmp eq i32 %338, -1
  br i1 %339, label %340, label %364

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

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

351:                                              ; preds = %347, %340
  br label %352

352:                                              ; preds = %347, %351
  %.str.4.sink225 = phi ptr [ @.str.4, %351 ], [ @.str, %347 ]
  store i32 %342, ptr %341, align 4, !tbaa !5
  %353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %354 = load i32, ptr @test_count, align 4, !tbaa !5
  %355 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %356 = load i32, ptr %355, align 4, !tbaa !5
  %357 = call ptr @s2n_strerror(i32 noundef %356, ptr noundef nonnull @.str.3) #11
  %358 = load i32, ptr %355, align 4, !tbaa !5
  %359 = call ptr @s2n_strerror_debug(i32 noundef %358, ptr noundef nonnull @.str.3) #11
  %360 = load i32, ptr %341, align 4, !tbaa !5
  %361 = call ptr @strerror(i32 noundef %360) #11
  %362 = load i32, ptr %341, align 4, !tbaa !5
  %363 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %353, ptr noundef nonnull %.str.4.sink225, i32 noundef %354, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 100, ptr noundef %357, ptr noundef %359, ptr noundef %361, i32 noundef %362) #13
  call void @exit(i32 noundef 1) #14
  unreachable

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

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

378:                                              ; preds = %371
  %379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %380 = call i32 @fileno(ptr noundef %379) #11
  %381 = call i32 @isatty(i32 noundef %380) #11
  %.not84 = icmp eq i32 %381, 0
  br i1 %.not84, label %382, label %383

382:                                              ; preds = %378, %371
  br label %383

383:                                              ; preds = %378, %382
  %.str.4.sink236 = phi ptr [ @.str.4, %382 ], [ @.str, %378 ]
  store i32 %373, ptr %372, align 4, !tbaa !5
  %384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %385 = load i32, ptr @test_count, align 4, !tbaa !5
  %386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %388 = call ptr @s2n_strerror(i32 noundef %387, ptr noundef nonnull @.str.3) #11
  %389 = load i32, ptr %386, align 4, !tbaa !5
  %390 = call ptr @s2n_strerror_debug(i32 noundef %389, ptr noundef nonnull @.str.3) #11
  %391 = load i32, ptr %372, align 4, !tbaa !5
  %392 = call ptr @strerror(i32 noundef %391) #11
  %393 = load i32, ptr %372, align 4, !tbaa !5
  %394 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %384, ptr noundef nonnull %.str.4.sink236, i32 noundef %385, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.2, i32 noundef 105, ptr noundef %388, ptr noundef %390, ptr noundef %392, i32 noundef %393) #13
  call void @exit(i32 noundef 1) #14
  unreachable

395:                                              ; preds = %364
  %396 = add nsw i32 %368, 2
  store i32 %396, ptr @test_count, align 4, !tbaa !5
  %397 = load ptr, ptr %9, align 8, !tbaa !9
  %398 = call i32 @s2n_connection_set_config(ptr noundef nonnull %367, ptr noundef %397) #11
  %399 = icmp eq i32 %398, -1
  br i1 %399, label %400, label %424

400:                                              ; preds = %395
  %401 = tail call ptr @__errno_location() #12
  %402 = load i32, ptr %401, align 4, !tbaa !5
  %403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %404 = call i32 @s2n_print_stacktrace(ptr noundef %403) #11
  %405 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %406 = trunc nuw i8 %405 to i1
  br i1 %406, label %407, label %411

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

411:                                              ; preds = %407, %400
  br label %412

412:                                              ; preds = %407, %411
  %.str.4.sink247 = phi ptr [ @.str.4, %411 ], [ @.str, %407 ]
  store i32 %402, ptr %401, align 4, !tbaa !5
  %413 = load ptr, ptr @stderr, align 8, !tbaa !9
  %414 = load i32, ptr @test_count, align 4, !tbaa !5
  %415 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %416 = load i32, ptr %415, align 4, !tbaa !5
  %417 = call ptr @s2n_strerror(i32 noundef %416, ptr noundef nonnull @.str.3) #11
  %418 = load i32, ptr %415, align 4, !tbaa !5
  %419 = call ptr @s2n_strerror_debug(i32 noundef %418, ptr noundef nonnull @.str.3) #11
  %420 = load i32, ptr %401, align 4, !tbaa !5
  %421 = call ptr @strerror(i32 noundef %420) #11
  %422 = load i32, ptr %401, align 4, !tbaa !5
  %423 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %413, ptr noundef nonnull %.str.4.sink247, i32 noundef %414, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.2, i32 noundef 106, ptr noundef %417, ptr noundef %419, ptr noundef %421, i32 noundef %422) #13
  call void @exit(i32 noundef 1) #14
  unreachable

424:                                              ; preds = %395
  %425 = load ptr, ptr %11, align 8, !tbaa !9
  %426 = getelementptr inbounds i8, ptr %425, i64 218
  store i8 30, ptr %426, align 2, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  %427 = call ptr @s2n_connection_new(i32 noundef 0) #11
  store ptr %427, ptr %12, align 8, !tbaa !9
  %428 = load i32, ptr @test_count, align 4, !tbaa !5
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr @test_count, align 4, !tbaa !5
  %430 = icmp eq ptr %427, null
  br i1 %430, label %431, label %455

431:                                              ; preds = %424
  %432 = tail call ptr @__errno_location() #12
  %433 = load i32, ptr %432, align 4, !tbaa !5
  %434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %435 = call i32 @s2n_print_stacktrace(ptr noundef %434) #11
  %436 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %437 = trunc nuw i8 %436 to i1
  br i1 %437, label %438, label %442

438:                                              ; preds = %431
  %439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %440 = call i32 @fileno(ptr noundef %439) #11
  %441 = call i32 @isatty(i32 noundef %440) #11
  %.not82 = icmp eq i32 %441, 0
  br i1 %.not82, label %442, label %443

442:                                              ; preds = %438, %431
  br label %443

443:                                              ; preds = %438, %442
  %.str.4.sink258 = phi ptr [ @.str.4, %442 ], [ @.str, %438 ]
  store i32 %433, ptr %432, align 4, !tbaa !5
  %444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %445 = load i32, ptr @test_count, align 4, !tbaa !5
  %446 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %447 = load i32, ptr %446, align 4, !tbaa !5
  %448 = call ptr @s2n_strerror(i32 noundef %447, ptr noundef nonnull @.str.3) #11
  %449 = load i32, ptr %446, align 4, !tbaa !5
  %450 = call ptr @s2n_strerror_debug(i32 noundef %449, ptr noundef nonnull @.str.3) #11
  %451 = load i32, ptr %432, align 4, !tbaa !5
  %452 = call ptr @strerror(i32 noundef %451) #11
  %453 = load i32, ptr %432, align 4, !tbaa !5
  %454 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %444, ptr noundef nonnull %.str.4.sink258, i32 noundef %445, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.2, i32 noundef 111, ptr noundef %448, ptr noundef %450, ptr noundef %452, i32 noundef %453) #13
  call void @exit(i32 noundef 1) #14
  unreachable

455:                                              ; preds = %424
  %456 = add nsw i32 %428, 2
  store i32 %456, ptr @test_count, align 4, !tbaa !5
  %457 = load ptr, ptr %10, align 8, !tbaa !9
  %458 = call i32 @s2n_connection_set_config(ptr noundef nonnull %427, ptr noundef %457) #11
  %459 = icmp eq i32 %458, -1
  br i1 %459, label %460, label %484

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

467:                                              ; preds = %460
  %468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %469 = call i32 @fileno(ptr noundef %468) #11
  %470 = call i32 @isatty(i32 noundef %469) #11
  %.not81 = icmp eq i32 %470, 0
  br i1 %.not81, label %471, label %472

471:                                              ; preds = %467, %460
  br label %472

472:                                              ; preds = %467, %471
  %.str.4.sink269 = phi ptr [ @.str.4, %471 ], [ @.str, %467 ]
  store i32 %462, ptr %461, align 4, !tbaa !5
  %473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %474 = load i32, ptr @test_count, align 4, !tbaa !5
  %475 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %476 = load i32, ptr %475, align 4, !tbaa !5
  %477 = call ptr @s2n_strerror(i32 noundef %476, ptr noundef nonnull @.str.3) #11
  %478 = load i32, ptr %475, align 4, !tbaa !5
  %479 = call ptr @s2n_strerror_debug(i32 noundef %478, ptr noundef nonnull @.str.3) #11
  %480 = load i32, ptr %461, align 4, !tbaa !5
  %481 = call ptr @strerror(i32 noundef %480) #11
  %482 = load i32, ptr %461, align 4, !tbaa !5
  %483 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %473, ptr noundef nonnull %.str.4.sink269, i32 noundef %474, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.2, i32 noundef 112, ptr noundef %477, ptr noundef %479, ptr noundef %481, i32 noundef %482) #13
  call void @exit(i32 noundef 1) #14
  unreachable

484:                                              ; preds = %455
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  store i64 0, ptr %13, align 8
  %485 = load i32, ptr @test_count, align 4, !tbaa !5
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr @test_count, align 4, !tbaa !5
  %487 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef nonnull %13) #11
  %488 = icmp eq i32 %487, -1
  br i1 %488, label %489, label %513

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

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

500:                                              ; preds = %496, %489
  br label %501

501:                                              ; preds = %496, %500
  %.str.4.sink280 = phi ptr [ @.str.4, %500 ], [ @.str, %496 ]
  store i32 %491, ptr %490, align 4, !tbaa !5
  %502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %503 = load i32, ptr @test_count, align 4, !tbaa !5
  %504 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %505 = load i32, ptr %504, align 4, !tbaa !5
  %506 = call ptr @s2n_strerror(i32 noundef %505, ptr noundef nonnull @.str.3) #11
  %507 = load i32, ptr %504, align 4, !tbaa !5
  %508 = call ptr @s2n_strerror_debug(i32 noundef %507, ptr noundef nonnull @.str.3) #11
  %509 = load i32, ptr %490, align 4, !tbaa !5
  %510 = call ptr @strerror(i32 noundef %509) #11
  %511 = load i32, ptr %490, align 4, !tbaa !5
  %512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %502, ptr noundef nonnull %.str.4.sink280, i32 noundef %503, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.2, i32 noundef 115, ptr noundef %506, ptr noundef %508, ptr noundef %510, i32 noundef %511) #13
  call void @exit(i32 noundef 1) #14
  unreachable

513:                                              ; preds = %484
  %514 = load i32, ptr @test_count, align 4, !tbaa !5
  %515 = add nsw i32 %514, 1
  store i32 %515, ptr @test_count, align 4, !tbaa !5
  %516 = load ptr, ptr %11, align 8, !tbaa !9
  %517 = load ptr, ptr %12, align 8, !tbaa !9
  %518 = call i32 @s2n_connections_set_io_pair(ptr noundef %516, ptr noundef %517, ptr noundef nonnull %13) #11
  %519 = icmp eq i32 %518, -1
  br i1 %519, label %520, label %544

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

527:                                              ; preds = %520
  %528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %529 = call i32 @fileno(ptr noundef %528) #11
  %530 = call i32 @isatty(i32 noundef %529) #11
  %.not79 = icmp eq i32 %530, 0
  br i1 %.not79, label %531, label %532

531:                                              ; preds = %527, %520
  br label %532

532:                                              ; preds = %527, %531
  %.str.4.sink291 = phi ptr [ @.str.4, %531 ], [ @.str, %527 ]
  store i32 %522, ptr %521, align 4, !tbaa !5
  %533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %534 = load i32, ptr @test_count, align 4, !tbaa !5
  %535 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = call ptr @s2n_strerror(i32 noundef %536, ptr noundef nonnull @.str.3) #11
  %538 = load i32, ptr %535, align 4, !tbaa !5
  %539 = call ptr @s2n_strerror_debug(i32 noundef %538, ptr noundef nonnull @.str.3) #11
  %540 = load i32, ptr %521, align 4, !tbaa !5
  %541 = call ptr @strerror(i32 noundef %540) #11
  %542 = load i32, ptr %521, align 4, !tbaa !5
  %543 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %533, ptr noundef nonnull %.str.4.sink291, i32 noundef %534, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.2, i32 noundef 116, ptr noundef %537, ptr noundef %539, ptr noundef %541, i32 noundef %542) #13
  call void @exit(i32 noundef 1) #14
  unreachable

544:                                              ; preds = %513
  %545 = load i32, ptr @test_count, align 4, !tbaa !5
  %546 = add nsw i32 %545, 1
  store i32 %546, ptr @test_count, align 4, !tbaa !5
  %547 = load ptr, ptr %12, align 8, !tbaa !9
  %548 = load ptr, ptr %11, align 8, !tbaa !9
  %549 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %547, ptr noundef %548) #11
  %550 = icmp eq i32 %549, -1
  br i1 %550, label %551, label %575

551:                                              ; preds = %544
  %552 = tail call ptr @__errno_location() #12
  %553 = load i32, ptr %552, align 4, !tbaa !5
  %554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %555 = call i32 @s2n_print_stacktrace(ptr noundef %554) #11
  %556 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %557 = trunc nuw i8 %556 to i1
  br i1 %557, label %558, label %562

558:                                              ; preds = %551
  %559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %560 = call i32 @fileno(ptr noundef %559) #11
  %561 = call i32 @isatty(i32 noundef %560) #11
  %.not78 = icmp eq i32 %561, 0
  br i1 %.not78, label %562, label %563

562:                                              ; preds = %558, %551
  br label %563

563:                                              ; preds = %558, %562
  %.str.4.sink302 = phi ptr [ @.str.4, %562 ], [ @.str, %558 ]
  store i32 %553, ptr %552, align 4, !tbaa !5
  %564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %565 = load i32, ptr @test_count, align 4, !tbaa !5
  %566 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %567 = load i32, ptr %566, align 4, !tbaa !5
  %568 = call ptr @s2n_strerror(i32 noundef %567, ptr noundef nonnull @.str.3) #11
  %569 = load i32, ptr %566, align 4, !tbaa !5
  %570 = call ptr @s2n_strerror_debug(i32 noundef %569, ptr noundef nonnull @.str.3) #11
  %571 = load i32, ptr %552, align 4, !tbaa !5
  %572 = call ptr @strerror(i32 noundef %571) #11
  %573 = load i32, ptr %552, align 4, !tbaa !5
  %574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %564, ptr noundef nonnull %.str.4.sink302, i32 noundef %565, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.2, i32 noundef 118, ptr noundef %568, ptr noundef %570, ptr noundef %572, i32 noundef %573) #13
  call void @exit(i32 noundef 1) #14
  unreachable

575:                                              ; preds = %544
  %576 = load i32, ptr @test_count, align 4, !tbaa !5
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr @test_count, align 4, !tbaa !5
  %578 = load ptr, ptr %12, align 8, !tbaa !9
  %579 = call i32 @s2n_connection_get_client_protocol_version(ptr noundef %578) #11
  %580 = icmp eq i32 %579, 30
  br i1 %580, label %605, label %581

581:                                              ; preds = %575
  %582 = tail call ptr @__errno_location() #12
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %585 = call i32 @s2n_print_stacktrace(ptr noundef %584) #11
  %586 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %587 = trunc nuw i8 %586 to i1
  br i1 %587, label %588, label %592

588:                                              ; preds = %581
  %589 = load ptr, ptr @stderr, align 8, !tbaa !9
  %590 = call i32 @fileno(ptr noundef %589) #11
  %591 = call i32 @isatty(i32 noundef %590) #11
  %.not74 = icmp eq i32 %591, 0
  br i1 %.not74, label %592, label %593

592:                                              ; preds = %588, %581
  br label %593

593:                                              ; preds = %588, %592
  %.str.4.sink313 = phi ptr [ @.str.4, %592 ], [ @.str, %588 ]
  store i32 %583, ptr %582, align 4, !tbaa !5
  %594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %595 = load i32, ptr @test_count, align 4, !tbaa !5
  %596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %597 = load i32, ptr %596, align 4, !tbaa !5
  %598 = call ptr @s2n_strerror(i32 noundef %597, ptr noundef nonnull @.str.3) #11
  %599 = load i32, ptr %596, align 4, !tbaa !5
  %600 = call ptr @s2n_strerror_debug(i32 noundef %599, ptr noundef nonnull @.str.3) #11
  %601 = load i32, ptr %582, align 4, !tbaa !5
  %602 = call ptr @strerror(i32 noundef %601) #11
  %603 = load i32, ptr %582, align 4, !tbaa !5
  %604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %594, ptr noundef nonnull %.str.4.sink313, i32 noundef %595, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.2, i32 noundef 119, ptr noundef %598, ptr noundef %600, ptr noundef %602, i32 noundef %603) #13
  call void @exit(i32 noundef 1) #14
  unreachable

605:                                              ; preds = %575
  %606 = load i32, ptr @test_count, align 4, !tbaa !5
  %607 = add nsw i32 %606, 1
  store i32 %607, ptr @test_count, align 4, !tbaa !5
  %608 = load ptr, ptr %12, align 8, !tbaa !9
  %609 = call i32 @s2n_connection_get_actual_protocol_version(ptr noundef %608) #11
  %610 = icmp eq i32 %609, 30
  br i1 %610, label %635, label %611

611:                                              ; preds = %605
  %612 = tail call ptr @__errno_location() #12
  %613 = load i32, ptr %612, align 4, !tbaa !5
  %614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %615 = call i32 @s2n_print_stacktrace(ptr noundef %614) #11
  %616 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %617 = trunc nuw i8 %616 to i1
  br i1 %617, label %618, label %622

618:                                              ; preds = %611
  %619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %620 = call i32 @fileno(ptr noundef %619) #11
  %621 = call i32 @isatty(i32 noundef %620) #11
  %.not75 = icmp eq i32 %621, 0
  br i1 %.not75, label %622, label %623

622:                                              ; preds = %618, %611
  br label %623

623:                                              ; preds = %618, %622
  %.str.4.sink324 = phi ptr [ @.str.4, %622 ], [ @.str, %618 ]
  store i32 %613, ptr %612, align 4, !tbaa !5
  %624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %625 = load i32, ptr @test_count, align 4, !tbaa !5
  %626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %627 = load i32, ptr %626, align 4, !tbaa !5
  %628 = call ptr @s2n_strerror(i32 noundef %627, ptr noundef nonnull @.str.3) #11
  %629 = load i32, ptr %626, align 4, !tbaa !5
  %630 = call ptr @s2n_strerror_debug(i32 noundef %629, ptr noundef nonnull @.str.3) #11
  %631 = load i32, ptr %612, align 4, !tbaa !5
  %632 = call ptr @strerror(i32 noundef %631) #11
  %633 = load i32, ptr %612, align 4, !tbaa !5
  %634 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %624, ptr noundef nonnull %.str.4.sink324, i32 noundef %625, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.2, i32 noundef 120, ptr noundef %628, ptr noundef %630, ptr noundef %632, i32 noundef %633) #13
  call void @exit(i32 noundef 1) #14
  unreachable

635:                                              ; preds = %605
  %636 = load i32, ptr @test_count, align 4, !tbaa !5
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr @test_count, align 4, !tbaa !5
  %638 = load ptr, ptr %11, align 8, !tbaa !9
  %639 = load ptr, ptr %12, align 8, !tbaa !9
  %640 = call i32 @s2n_test_send_receive_data(ptr noundef %638, ptr noundef %639)
  %641 = call zeroext i1 @s2n_result_is_ok(i32 %640)
  br i1 %641, label %666, label %642

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

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

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

654:                                              ; preds = %649, %653
  %.str.4.sink335 = phi ptr [ @.str.4, %653 ], [ @.str, %649 ]
  store i32 %644, ptr %643, align 4, !tbaa !5
  %655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %656 = load i32, ptr @test_count, align 4, !tbaa !5
  %657 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %658 = load i32, ptr %657, align 4, !tbaa !5
  %659 = call ptr @s2n_strerror(i32 noundef %658, ptr noundef nonnull @.str.3) #11
  %660 = load i32, ptr %657, align 4, !tbaa !5
  %661 = call ptr @s2n_strerror_debug(i32 noundef %660, ptr noundef nonnull @.str.3) #11
  %662 = load i32, ptr %643, align 4, !tbaa !5
  %663 = call ptr @strerror(i32 noundef %662) #11
  %664 = load i32, ptr %643, align 4, !tbaa !5
  %665 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %655, ptr noundef nonnull %.str.4.sink335, i32 noundef %656, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.2, i32 noundef 122, ptr noundef %659, ptr noundef %661, ptr noundef %663, i32 noundef %664) #13
  call void @exit(i32 noundef 1) #14
  unreachable

666:                                              ; preds = %635
  %667 = load i32, ptr @test_count, align 4, !tbaa !5
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr @test_count, align 4, !tbaa !5
  %669 = load ptr, ptr %12, align 8, !tbaa !9
  %670 = load ptr, ptr %11, align 8, !tbaa !9
  %671 = call i32 @s2n_test_send_receive_data(ptr noundef %669, ptr noundef %670)
  %672 = call zeroext i1 @s2n_result_is_ok(i32 %671)
  br i1 %672, label %697, label %673

673:                                              ; preds = %666
  %674 = tail call ptr @__errno_location() #12
  %675 = load i32, ptr %674, align 4, !tbaa !5
  %676 = load ptr, ptr @stderr, align 8, !tbaa !9
  %677 = call i32 @s2n_print_stacktrace(ptr noundef %676) #11
  %678 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %679 = trunc nuw i8 %678 to i1
  br i1 %679, label %680, label %684

680:                                              ; preds = %673
  %681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %682 = call i32 @fileno(ptr noundef %681) #11
  %683 = call i32 @isatty(i32 noundef %682) #11
  %.not77 = icmp eq i32 %683, 0
  br i1 %.not77, label %684, label %685

684:                                              ; preds = %680, %673
  br label %685

685:                                              ; preds = %680, %684
  %.str.4.sink346 = phi ptr [ @.str.4, %684 ], [ @.str, %680 ]
  store i32 %675, ptr %674, align 4, !tbaa !5
  %686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %687 = load i32, ptr @test_count, align 4, !tbaa !5
  %688 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %689 = load i32, ptr %688, align 4, !tbaa !5
  %690 = call ptr @s2n_strerror(i32 noundef %689, ptr noundef nonnull @.str.3) #11
  %691 = load i32, ptr %688, align 4, !tbaa !5
  %692 = call ptr @s2n_strerror_debug(i32 noundef %691, ptr noundef nonnull @.str.3) #11
  %693 = load i32, ptr %674, align 4, !tbaa !5
  %694 = call ptr @strerror(i32 noundef %693) #11
  %695 = load i32, ptr %674, align 4, !tbaa !5
  %696 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %686, ptr noundef nonnull %.str.4.sink346, i32 noundef %687, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.2, i32 noundef 123, ptr noundef %690, ptr noundef %692, ptr noundef %694, i32 noundef %695) #13
  call void @exit(i32 noundef 1) #14
  unreachable

697:                                              ; preds = %666
  %698 = call i32 @s2n_io_pair_close(ptr noundef nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  %699 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  %700 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  %701 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  %702 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #11
  br label %703

703:                                              ; preds = %204, %198, %697
  %.1 = phi i64 [ %210, %697 ], [ %.0113, %198 ], [ %.0113, %204 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #11
  %704 = add nuw nsw i64 %.063112, 1
  %705 = load i16, ptr %163, align 8, !tbaa !17
  %706 = zext i16 %705 to i64
  %707 = icmp ult i64 %704, %706
  br i1 %707, label %198, label %._crit_edge, !llvm.loop !60

708:                                              ; preds = %._crit_edge.thread, %._crit_edge
  %709 = tail call ptr @__errno_location() #12
  %710 = load i32, ptr %709, align 4, !tbaa !5
  %711 = load ptr, ptr @stderr, align 8, !tbaa !9
  %712 = call i32 @s2n_print_stacktrace(ptr noundef %711) #11
  %713 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %714 = trunc nuw i8 %713 to i1
  br i1 %714, label %715, label %719

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

719:                                              ; preds = %715, %708
  br label %720

720:                                              ; preds = %715, %719
  %.str.4.sink357 = phi ptr [ @.str.4, %719 ], [ @.str, %715 ]
  store i32 %710, ptr %709, align 4, !tbaa !5
  %721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %722 = load i32, ptr @test_count, align 4, !tbaa !5
  %723 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %724 = load i32, ptr %723, align 4, !tbaa !5
  %725 = call ptr @s2n_strerror(i32 noundef %724, ptr noundef nonnull @.str.3) #11
  %726 = load i32, ptr %723, align 4, !tbaa !5
  %727 = call ptr @s2n_strerror_debug(i32 noundef %726, ptr noundef nonnull @.str.3) #11
  %728 = load i32, ptr %709, align 4, !tbaa !5
  %729 = call ptr @strerror(i32 noundef %728) #11
  %730 = load i32, ptr %709, align 4, !tbaa !5
  %731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %721, ptr noundef nonnull %.str.4.sink357, i32 noundef %722, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.2, i32 noundef 127, ptr noundef %725, ptr noundef %727, ptr noundef %729, i32 noundef %730) #13
  call void @exit(i32 noundef 1) #14
  unreachable

732:                                              ; preds = %._crit_edge
  %733 = call i32 @s2n_cleanup() #11
  %734 = icmp eq i32 %733, -1
  br i1 %734, label %735, label %759

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

742:                                              ; preds = %735
  %743 = load ptr, ptr @stderr, align 8, !tbaa !9
  %744 = call i32 @fileno(ptr noundef %743) #11
  %745 = call i32 @isatty(i32 noundef %744) #11
  %.not72 = icmp eq i32 %745, 0
  br i1 %.not72, label %746, label %747

746:                                              ; preds = %742, %735
  br label %747

747:                                              ; preds = %742, %746
  %.str.4.sink368 = phi ptr [ @.str.4, %746 ], [ @.str, %742 ]
  store i32 %737, ptr %736, align 4, !tbaa !5
  %748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %749 = load i32, ptr @test_count, align 4, !tbaa !5
  %750 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %751 = load i32, ptr %750, align 4, !tbaa !5
  %752 = call ptr @s2n_strerror(i32 noundef %751, ptr noundef nonnull @.str.3) #11
  %753 = load i32, ptr %750, align 4, !tbaa !5
  %754 = call ptr @s2n_strerror_debug(i32 noundef %753, ptr noundef nonnull @.str.3) #11
  %755 = load i32, ptr %736, align 4, !tbaa !5
  %756 = call ptr @strerror(i32 noundef %755) #11
  %757 = load i32, ptr %736, align 4, !tbaa !5
  %758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %748, ptr noundef nonnull %.str.4.sink368, i32 noundef %749, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.2, i32 noundef 130, ptr noundef %752, ptr noundef %754, ptr noundef %756, i32 noundef %757) #13
  call void @exit(i32 noundef 1) #14
  unreachable

759:                                              ; preds = %732
  %760 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #11
  %761 = icmp eq i32 %760, -1
  br i1 %761, label %762, label %786

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

769:                                              ; preds = %762
  %770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %771 = call i32 @fileno(ptr noundef %770) #11
  %772 = call i32 @isatty(i32 noundef %771) #11
  %.not71 = icmp eq i32 %772, 0
  br i1 %.not71, label %773, label %774

773:                                              ; preds = %769, %762
  br label %774

774:                                              ; preds = %769, %773
  %.str.4.sink379 = phi ptr [ @.str.4, %773 ], [ @.str, %769 ]
  store i32 %764, ptr %763, align 4, !tbaa !5
  %775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %776 = load i32, ptr @test_count, align 4, !tbaa !5
  %777 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %778 = load i32, ptr %777, align 4, !tbaa !5
  %779 = call ptr @s2n_strerror(i32 noundef %778, ptr noundef nonnull @.str.3) #11
  %780 = load i32, ptr %777, align 4, !tbaa !5
  %781 = call ptr @s2n_strerror_debug(i32 noundef %780, ptr noundef nonnull @.str.3) #11
  %782 = load i32, ptr %763, align 4, !tbaa !5
  %783 = call ptr @strerror(i32 noundef %782) #11
  %784 = load i32, ptr %763, align 4, !tbaa !5
  %785 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %775, ptr noundef nonnull %.str.4.sink379, i32 noundef %776, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.2, i32 noundef 130, ptr noundef %779, ptr noundef %781, ptr noundef %783, i32 noundef %784) #13
  call void @exit(i32 noundef 1) #14
  unreachable

786:                                              ; preds = %759
  %787 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %788 = trunc nuw i8 %787 to i1
  br i1 %788, label %789, label %800

789:                                              ; preds = %786
  %790 = load ptr, ptr @stdout, align 8, !tbaa !9
  %791 = call i32 @fileno(ptr noundef %790) #11
  %792 = call i32 @isatty(i32 noundef %791) #11
  %.not68 = icmp eq i32 %792, 0
  br i1 %.not68, label %800, label %793

793:                                              ; preds = %789
  %794 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not70 = icmp eq i32 %794, 0
  %795 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not70, label %798, label %796

796:                                              ; preds = %793
  %797 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %795, ptr noundef nonnull @.str.40, i32 noundef %794) #11
  br label %807

798:                                              ; preds = %793
  %799 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %795, ptr noundef nonnull @.str.41) #11
  br label %807

800:                                              ; preds = %789, %786
  %801 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not69 = icmp eq i32 %801, 0
  %802 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not69, label %805, label %803

803:                                              ; preds = %800
  %804 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %802, ptr noundef nonnull @.str.42, i32 noundef %801) #11
  br label %807

805:                                              ; preds = %800
  %806 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %802, ptr noundef nonnull @.str.43) #11
  br label %807

807:                                              ; preds = %803, %805, %796, %798
  call void @llvm.lifetime.end.p0(i64 12000, ptr nonnull %5) #11
  %808 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #11
  %809 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %3) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #11
  ret i32 0
}

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #4

declare i32 @s2n_init() local_unnamed_addr #4

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) local_unnamed_addr #4

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

declare i32 @s2n_read_test_pem(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #4

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

declare ptr @s2n_config_new() local_unnamed_addr #4

declare i32 @s2n_config_ptr_free(ptr noundef) local_unnamed_addr #4

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

declare i32 @s2n_config_disable_x509_verification(ptr noundef) local_unnamed_addr #4

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

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #4

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #4

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

declare i32 @s2n_io_pair_close(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) local_unnamed_addr #4

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

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

declare i32 @s2n_connection_get_client_protocol_version(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_connection_get_actual_protocol_version(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_cleanup() local_unnamed_addr #4

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

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

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


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