; LLVM IR from aws/s2n-tls :: tests/unit (s2n_handshake_io_early_data_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_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_result = type { i32 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_record_algorithm = type { ptr, i32, i32, i64 }
%struct.s2n_cipher = type { i32, %union.anon.1, i8, ptr, ptr, ptr, ptr, ptr, ptr }
%union.anon.1 = type { %struct.s2n_composite_cipher }
%struct.s2n_composite_cipher = type { i8, i8, i8, ptr, ptr, ptr, ptr }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon, i32 }
%union.anon = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_sig_scheme_list = type { [128 x i16], i8 }
%struct.s2n_psk_parameters = type { i32, %struct.s2n_array, i16, i16, ptr, i32 }
%struct.s2n_array = type { %struct.s2n_blob, i32, i32 }
%struct.s2n_handshake = type { %struct.s2n_stuffer, ptr, [8 x i8], [48 x i8], [48 x i8], i8, i32, i32, i32, i32, %struct.s2n_offered_early_data, i8, i32 }
%struct.s2n_offered_early_data = type { ptr }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }
%struct.s2n_crypto_parameters = type { ptr, %struct.s2n_session_key, %struct.s2n_session_key, %struct.s2n_hmac_state, %struct.s2n_hmac_state, [16 x i8], [16 x i8], [8 x i8], [8 x i8] }
%struct.s2n_session_key = type { ptr }
%struct.s2n_hmac_state = type { i32, i16, i32, i16, i8, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, [128 x i8], [64 x i8] }
%struct.s2n_hash_state = type { ptr, i32, i8, i64, %union.anon.0 }
%union.anon.0 = type { %struct.s2n_hash_evp_digest }
%struct.s2n_hash_evp_digest = type { %struct.s2n_evp_digest, %struct.s2n_evp_digest }
%struct.s2n_evp_digest = type { ptr, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@s2n_errno = external thread_local global i32, align 4
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [91 x i8], align 1
@stderr = external global ptr, align 8
@.str.22 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [39 x i8], align 1
@__const.main.bad_record = external hidden unnamed_addr constant [21 x i8], align 16
@s2n_tls13_aes_256_gcm_sha384 = external global %struct.s2n_cipher_suite, align 8
@__const.main.test_key_bytes = external hidden unnamed_addr constant [48 x i8], align 16
@.str.28 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_handshake_read_io(ptr noundef) #7

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #7 {
  %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 [21 x i8], align 16
  %10 = alloca ptr, align 8
  %11 = alloca [48 x i8], align 16
  %12 = alloca %struct.s2n_blob, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %struct.s2n_result, align 4
  %18 = alloca i32, align 4
  %19 = alloca %struct.s2n_result, align 4
  %20 = alloca %struct.s2n_stuffer, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %struct.s2n_result, align 4
  %39 = alloca %struct.s2n_result, align 4
  %40 = alloca %struct.s2n_stuffer, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  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 %50

50:                                               ; preds = %2
  br label %51

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

56:                                               ; preds = %51
  %57 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %58 = icmp eq i32 %57, -1
  br i1 %58, label %59, label %110

59:                                               ; preds = %56
  br label %60

60:                                               ; preds = %59
  br label %61

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

68:                                               ; preds = %61
  %69 = load ptr, ptr @stderr, align 8, !tbaa !9
  %70 = call i32 @fileno(ptr noundef %69) #10
  %71 = call i32 @isatty(i32 noundef %70) #10
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %73, label %90

73:                                               ; preds = %68
  %74 = load i32, ptr %6, align 4, !tbaa !5
  %75 = call ptr @__errno_location() #11
  store i32 %74, ptr %75, align 4, !tbaa !5
  %76 = load ptr, ptr @stderr, align 8, !tbaa !9
  %77 = load i32, ptr @test_count, align 4, !tbaa !5
  %78 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %79 = load i32, ptr %78, align 4, !tbaa !5
  %80 = call ptr @s2n_strerror(i32 noundef %79, ptr noundef @.str.24)
  %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_debug(i32 noundef %82, ptr noundef @.str.24)
  %84 = call ptr @__errno_location() #11
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %86 = call ptr @strerror(i32 noundef %85) #10
  %87 = call ptr @__errno_location() #11
  %88 = load i32, ptr %87, align 4, !tbaa !5
  %89 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %76, ptr noundef @.str.22, i32 noundef %77, ptr noundef @.str.23, ptr noundef @.str.21, i32 noundef 26, ptr noundef %80, ptr noundef %83, ptr noundef %86, i32 noundef %88) #10
  br label %107

90:                                               ; preds = %68, %61
  %91 = load i32, ptr %6, align 4, !tbaa !5
  %92 = call ptr @__errno_location() #11
  store i32 %91, ptr %92, align 4, !tbaa !5
  %93 = load ptr, ptr @stderr, align 8, !tbaa !9
  %94 = load i32, ptr @test_count, align 4, !tbaa !5
  %95 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %96 = load i32, ptr %95, align 4, !tbaa !5
  %97 = call ptr @s2n_strerror(i32 noundef %96, ptr noundef @.str.24)
  %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_debug(i32 noundef %99, ptr noundef @.str.24)
  %101 = call ptr @__errno_location() #11
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %103 = call ptr @strerror(i32 noundef %102) #10
  %104 = call ptr @__errno_location() #11
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %93, ptr noundef @.str.25, i32 noundef %94, ptr noundef @.str.23, ptr noundef @.str.21, i32 noundef 26, ptr noundef %97, ptr noundef %100, ptr noundef %103, i32 noundef %105) #10
  br label %107

107:                                              ; preds = %90, %73
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %108

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

109:                                              ; No predecessors!
  br label %110

110:                                              ; preds = %109, %56
  br label %111

111:                                              ; preds = %110
  br label %112

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

117:                                              ; preds = %112
  br label %118

118:                                              ; preds = %117
  br label %119

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

126:                                              ; preds = %119
  %127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %128 = call i32 @fileno(ptr noundef %127) #10
  %129 = call i32 @isatty(i32 noundef %128) #10
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %148

131:                                              ; preds = %126
  %132 = load i32, ptr %7, align 4, !tbaa !5
  %133 = call ptr @__errno_location() #11
  store i32 %132, ptr %133, align 4, !tbaa !5
  %134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %135 = load i32, ptr @test_count, align 4, !tbaa !5
  %136 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %138 = call ptr @s2n_strerror(i32 noundef %137, ptr noundef @.str.24)
  %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_debug(i32 noundef %140, ptr noundef @.str.24)
  %142 = call ptr @__errno_location() #11
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = call ptr @strerror(i32 noundef %143) #10
  %145 = call ptr @__errno_location() #11
  %146 = load i32, ptr %145, align 4, !tbaa !5
  %147 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %134, ptr noundef @.str.22, i32 noundef %135, ptr noundef @.str.26, ptr noundef @.str.21, i32 noundef 26, ptr noundef %138, ptr noundef %141, ptr noundef %144, i32 noundef %146) #10
  br label %165

148:                                              ; preds = %126, %119
  %149 = load i32, ptr %7, align 4, !tbaa !5
  %150 = call ptr @__errno_location() #11
  store i32 %149, ptr %150, align 4, !tbaa !5
  %151 = load ptr, ptr @stderr, align 8, !tbaa !9
  %152 = load i32, ptr @test_count, align 4, !tbaa !5
  %153 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = call ptr @s2n_strerror(i32 noundef %154, ptr noundef @.str.24)
  %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_debug(i32 noundef %157, ptr noundef @.str.24)
  %159 = call ptr @__errno_location() #11
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = call ptr @strerror(i32 noundef %160) #10
  %162 = call ptr @__errno_location() #11
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %151, ptr noundef @.str.25, i32 noundef %152, ptr noundef @.str.26, ptr noundef @.str.21, i32 noundef 26, ptr noundef %155, ptr noundef %158, ptr noundef %161, i32 noundef %163) #10
  br label %165

165:                                              ; preds = %148, %131
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %166

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

167:                                              ; No predecessors!
  br label %168

168:                                              ; preds = %167, %112
  br label %169

169:                                              ; preds = %168
  br label %170

170:                                              ; preds = %169
  br label %171

171:                                              ; preds = %170
  %172 = call i32 @s2n_init()
  %173 = icmp eq i32 %172, -1
  br i1 %173, label %174, label %225

174:                                              ; preds = %171
  br label %175

175:                                              ; preds = %174
  br label %176

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

183:                                              ; preds = %176
  %184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %185 = call i32 @fileno(ptr noundef %184) #10
  %186 = call i32 @isatty(i32 noundef %185) #10
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %205

188:                                              ; preds = %183
  %189 = load i32, ptr %8, align 4, !tbaa !5
  %190 = call ptr @__errno_location() #11
  store i32 %189, ptr %190, align 4, !tbaa !5
  %191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %192 = load i32, ptr @test_count, align 4, !tbaa !5
  %193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = call ptr @s2n_strerror(i32 noundef %194, ptr noundef @.str.24)
  %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_debug(i32 noundef %197, ptr noundef @.str.24)
  %199 = call ptr @__errno_location() #11
  %200 = load i32, ptr %199, align 4, !tbaa !5
  %201 = call ptr @strerror(i32 noundef %200) #10
  %202 = call ptr @__errno_location() #11
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %191, ptr noundef @.str.22, i32 noundef %192, ptr noundef @.str.27, ptr noundef @.str.21, i32 noundef 26, ptr noundef %195, ptr noundef %198, ptr noundef %201, i32 noundef %203) #10
  br label %222

205:                                              ; preds = %183, %176
  %206 = load i32, ptr %8, align 4, !tbaa !5
  %207 = call ptr @__errno_location() #11
  store i32 %206, ptr %207, align 4, !tbaa !5
  %208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %209 = load i32, ptr @test_count, align 4, !tbaa !5
  %210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %211 = load i32, ptr %210, align 4, !tbaa !5
  %212 = call ptr @s2n_strerror(i32 noundef %211, ptr noundef @.str.24)
  %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_debug(i32 noundef %214, ptr noundef @.str.24)
  %216 = call ptr @__errno_location() #11
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %218 = call ptr @strerror(i32 noundef %217) #10
  %219 = call ptr @__errno_location() #11
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %208, ptr noundef @.str.25, i32 noundef %209, ptr noundef @.str.27, ptr noundef @.str.21, i32 noundef 26, ptr noundef %212, ptr noundef %215, ptr noundef %218, i32 noundef %220) #10
  br label %222

222:                                              ; preds = %205, %188
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %223

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

224:                                              ; No predecessors!
  br label %225

225:                                              ; preds = %224, %171
  br label %226

226:                                              ; preds = %225
  br label %227

227:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 21, ptr %9) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %9, ptr align 16 @__const.main.bad_record, i64 21, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  store ptr @s2n_tls13_aes_256_gcm_sha384, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %11) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %11, ptr align 16 @__const.main.test_key_bytes, i64 48, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #10
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 24, i1 false)
  br label %228

228:                                              ; preds = %227
  %229 = load i32, ptr @test_count, align 4, !tbaa !5
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr @test_count, align 4, !tbaa !5
  %231 = getelementptr inbounds [48 x i8], ptr %11, i64 0, i64 0
  %232 = load ptr, ptr %10, align 8, !tbaa !9
  %233 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %232, i32 0, i32 6
  %234 = load ptr, ptr %233, align 8, !tbaa !15
  %235 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %234, i32 0, i32 0
  %236 = load ptr, ptr %235, align 8, !tbaa !17
  %237 = getelementptr inbounds %struct.s2n_cipher, ptr %236, i32 0, i32 2
  %238 = load i8, ptr %237, align 8, !tbaa !20
  %239 = zext i8 %238 to i32
  %240 = call i32 @s2n_blob_init(ptr noundef %12, ptr noundef %231, i32 noundef %239)
  %241 = icmp eq i32 %240, -1
  br i1 %241, label %242, label %295

242:                                              ; preds = %228
  br label %243

243:                                              ; preds = %242
  br label %244

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

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

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

273:                                              ; preds = %251, %244
  %274 = load i32, ptr %13, align 4, !tbaa !5
  %275 = call ptr @__errno_location() #11
  store i32 %274, ptr %275, align 4, !tbaa !5
  %276 = load ptr, ptr @stderr, align 8, !tbaa !9
  %277 = load i32, ptr @test_count, align 4, !tbaa !5
  %278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %280 = call ptr @s2n_strerror(i32 noundef %279, ptr noundef @.str.24)
  %281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = call ptr @s2n_strerror_debug(i32 noundef %282, ptr noundef @.str.24)
  %284 = call ptr @__errno_location() #11
  %285 = load i32, ptr %284, align 4, !tbaa !5
  %286 = call ptr @strerror(i32 noundef %285) #10
  %287 = call ptr @__errno_location() #11
  %288 = load i32, ptr %287, align 4, !tbaa !5
  %289 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %276, ptr noundef @.str.25, i32 noundef %277, ptr noundef @.str.28, ptr noundef @.str.21, i32 noundef 40, ptr noundef %280, ptr noundef %283, ptr noundef %286, i32 noundef %288) #10
  br label %290

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

291:                                              ; preds = %290
  br label %292

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

293:                                              ; No predecessors!
  br label %294

294:                                              ; preds = %293
  br label %295

295:                                              ; preds = %294, %228
  br label %296

296:                                              ; preds = %295
  br label %297

297:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  %298 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %298, ptr %14, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %297
  %300 = load i32, ptr @test_count, align 4, !tbaa !5
  %301 = add nsw i32 %300, 1
  store i32 %301, ptr @test_count, align 4, !tbaa !5
  %302 = load ptr, ptr %14, align 8, !tbaa !9
  %303 = icmp eq ptr %302, null
  br i1 %303, label %304, label %357

304:                                              ; preds = %299
  br label %305

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  %307 = call ptr @__errno_location() #11
  %308 = load i32, ptr %307, align 4, !tbaa !5
  store i32 %308, ptr %15, align 4, !tbaa !5
  %309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %310 = call i32 @s2n_print_stacktrace(ptr noundef %309)
  %311 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %312 = trunc i8 %311 to i1
  br i1 %312, label %313, label %335

313:                                              ; preds = %306
  %314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %315 = call i32 @fileno(ptr noundef %314) #10
  %316 = call i32 @isatty(i32 noundef %315) #10
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %318, label %335

318:                                              ; preds = %313
  %319 = load i32, ptr %15, align 4, !tbaa !5
  %320 = call ptr @__errno_location() #11
  store i32 %319, ptr %320, align 4, !tbaa !5
  %321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %322 = load i32, ptr @test_count, align 4, !tbaa !5
  %323 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %324 = load i32, ptr %323, align 4, !tbaa !5
  %325 = call ptr @s2n_strerror(i32 noundef %324, ptr noundef @.str.24)
  %326 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %327 = load i32, ptr %326, align 4, !tbaa !5
  %328 = call ptr @s2n_strerror_debug(i32 noundef %327, ptr noundef @.str.24)
  %329 = call ptr @__errno_location() #11
  %330 = load i32, ptr %329, align 4, !tbaa !5
  %331 = call ptr @strerror(i32 noundef %330) #10
  %332 = call ptr @__errno_location() #11
  %333 = load i32, ptr %332, align 4, !tbaa !5
  %334 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %321, ptr noundef @.str.22, i32 noundef %322, ptr noundef @.str.29, ptr noundef @.str.21, i32 noundef 62, ptr noundef %325, ptr noundef %328, ptr noundef %331, i32 noundef %333) #10
  br label %352

335:                                              ; preds = %313, %306
  %336 = load i32, ptr %15, align 4, !tbaa !5
  %337 = call ptr @__errno_location() #11
  store i32 %336, ptr %337, align 4, !tbaa !5
  %338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %339 = load i32, ptr @test_count, align 4, !tbaa !5
  %340 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %341 = load i32, ptr %340, align 4, !tbaa !5
  %342 = call ptr @s2n_strerror(i32 noundef %341, ptr noundef @.str.24)
  %343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %344 = load i32, ptr %343, align 4, !tbaa !5
  %345 = call ptr @s2n_strerror_debug(i32 noundef %344, ptr noundef @.str.24)
  %346 = call ptr @__errno_location() #11
  %347 = load i32, ptr %346, align 4, !tbaa !5
  %348 = call ptr @strerror(i32 noundef %347) #10
  %349 = call ptr @__errno_location() #11
  %350 = load i32, ptr %349, align 4, !tbaa !5
  %351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %338, ptr noundef @.str.25, i32 noundef %339, ptr noundef @.str.29, ptr noundef @.str.21, i32 noundef 62, ptr noundef %342, ptr noundef %345, ptr noundef %348, i32 noundef %350) #10
  br label %352

352:                                              ; preds = %335, %318
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  br label %353

353:                                              ; preds = %352
  br label %354

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

355:                                              ; No predecessors!
  br label %356

356:                                              ; preds = %355
  br label %357

357:                                              ; preds = %356, %299
  br label %358

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  br label %360

360:                                              ; preds = %359
  %361 = load i32, ptr @test_count, align 4, !tbaa !5
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr @test_count, align 4, !tbaa !5
  %363 = load ptr, ptr %14, align 8, !tbaa !9
  %364 = call i32 @s2n_connection_set_blinding(ptr noundef %363, i32 noundef 1)
  %365 = icmp eq i32 %364, -1
  br i1 %365, label %366, label %419

366:                                              ; preds = %360
  br label %367

367:                                              ; preds = %366
  br label %368

368:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  %369 = call ptr @__errno_location() #11
  %370 = load i32, ptr %369, align 4, !tbaa !5
  store i32 %370, ptr %16, align 4, !tbaa !5
  %371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %372 = call i32 @s2n_print_stacktrace(ptr noundef %371)
  %373 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %374 = trunc i8 %373 to i1
  br i1 %374, label %375, label %397

375:                                              ; preds = %368
  %376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %377 = call i32 @fileno(ptr noundef %376) #10
  %378 = call i32 @isatty(i32 noundef %377) #10
  %379 = icmp ne i32 %378, 0
  br i1 %379, label %380, label %397

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

397:                                              ; preds = %375, %368
  %398 = load i32, ptr %16, align 4, !tbaa !5
  %399 = call ptr @__errno_location() #11
  store i32 %398, ptr %399, align 4, !tbaa !5
  %400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %401 = load i32, ptr @test_count, align 4, !tbaa !5
  %402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %403 = load i32, ptr %402, align 4, !tbaa !5
  %404 = call ptr @s2n_strerror(i32 noundef %403, ptr noundef @.str.24)
  %405 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %406 = load i32, ptr %405, align 4, !tbaa !5
  %407 = call ptr @s2n_strerror_debug(i32 noundef %406, ptr noundef @.str.24)
  %408 = call ptr @__errno_location() #11
  %409 = load i32, ptr %408, align 4, !tbaa !5
  %410 = call ptr @strerror(i32 noundef %409) #10
  %411 = call ptr @__errno_location() #11
  %412 = load i32, ptr %411, align 4, !tbaa !5
  %413 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %400, ptr noundef @.str.25, i32 noundef %401, ptr noundef @.str.30, ptr noundef @.str.21, i32 noundef 63, ptr noundef %404, ptr noundef %407, ptr noundef %410, i32 noundef %412) #10
  br label %414

414:                                              ; preds = %397, %380
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  br label %415

415:                                              ; preds = %414
  br label %416

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

417:                                              ; No predecessors!
  br label %418

418:                                              ; preds = %417
  br label %419

419:                                              ; preds = %418, %360
  br label %420

420:                                              ; preds = %419
  br label %421

421:                                              ; preds = %420
  %422 = load ptr, ptr %10, align 8, !tbaa !9
  %423 = load ptr, ptr %14, align 8, !tbaa !9
  %424 = getelementptr inbounds %struct.s2n_connection, ptr %423, i32 0, i32 27
  %425 = load ptr, ptr %424, align 8, !tbaa !22
  %426 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %425, i32 0, i32 0
  store ptr %422, ptr %426, align 8, !tbaa !48
  br label %427

427:                                              ; preds = %421
  %428 = load ptr, ptr %14, align 8, !tbaa !9
  %429 = getelementptr inbounds %struct.s2n_connection, ptr %428, i32 0, i32 27
  %430 = load ptr, ptr %429, align 8, !tbaa !22
  %431 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %430, i32 0, i32 0
  %432 = load ptr, ptr %431, align 8, !tbaa !48
  %433 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %432, i32 0, i32 6
  %434 = load ptr, ptr %433, align 8, !tbaa !15
  %435 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %434, i32 0, i32 0
  %436 = load ptr, ptr %435, align 8, !tbaa !17
  %437 = getelementptr inbounds %struct.s2n_cipher, ptr %436, i32 0, i32 4
  %438 = load ptr, ptr %437, align 8, !tbaa !53
  %439 = load ptr, ptr %14, align 8, !tbaa !9
  %440 = getelementptr inbounds %struct.s2n_connection, ptr %439, i32 0, i32 27
  %441 = load ptr, ptr %440, align 8, !tbaa !22
  %442 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %441, i32 0, i32 1
  %443 = call i32 %438(ptr noundef %442)
  %444 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  store i32 %443, ptr %444, align 4
  %445 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  %446 = load i32, ptr %445, align 4
  %447 = call zeroext i1 @s2n_result_is_ok(i32 %446)
  br i1 %447, label %449, label %448

448:                                              ; preds = %427
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %1377

449:                                              ; preds = %427
  br label %450

450:                                              ; preds = %449
  br label %451

451:                                              ; preds = %450
  br label %452

452:                                              ; preds = %451
  %453 = load ptr, ptr %14, align 8, !tbaa !9
  %454 = getelementptr inbounds %struct.s2n_connection, ptr %453, i32 0, i32 27
  %455 = load ptr, ptr %454, align 8, !tbaa !22
  %456 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %455, i32 0, i32 0
  %457 = load ptr, ptr %456, align 8, !tbaa !48
  %458 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %457, i32 0, i32 6
  %459 = load ptr, ptr %458, align 8, !tbaa !15
  %460 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %459, i32 0, i32 0
  %461 = load ptr, ptr %460, align 8, !tbaa !17
  %462 = getelementptr inbounds %struct.s2n_cipher, ptr %461, i32 0, i32 5
  %463 = load ptr, ptr %462, align 8, !tbaa !54
  %464 = load ptr, ptr %14, align 8, !tbaa !9
  %465 = getelementptr inbounds %struct.s2n_connection, ptr %464, i32 0, i32 27
  %466 = load ptr, ptr %465, align 8, !tbaa !22
  %467 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %466, i32 0, i32 1
  %468 = call i32 %463(ptr noundef %467, ptr noundef %12)
  %469 = getelementptr inbounds %struct.s2n_result, ptr %19, i32 0, i32 0
  store i32 %468, ptr %469, align 4
  %470 = getelementptr inbounds %struct.s2n_result, ptr %19, i32 0, i32 0
  %471 = load i32, ptr %470, align 4
  %472 = call zeroext i1 @s2n_result_is_ok(i32 %471)
  br i1 %472, label %474, label %473

473:                                              ; preds = %452
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %1377

474:                                              ; preds = %452
  br label %475

475:                                              ; preds = %474
  br label %476

476:                                              ; preds = %475
  %477 = load ptr, ptr %14, align 8, !tbaa !9
  %478 = getelementptr inbounds %struct.s2n_connection, ptr %477, i32 0, i32 27
  %479 = load ptr, ptr %478, align 8, !tbaa !22
  %480 = load ptr, ptr %14, align 8, !tbaa !9
  %481 = getelementptr inbounds %struct.s2n_connection, ptr %480, i32 0, i32 29
  store ptr %479, ptr %481, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 40, ptr %20) #10
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 40, i1 false)
  br label %482

482:                                              ; preds = %476
  %483 = load i32, ptr @test_count, align 4, !tbaa !5
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr @test_count, align 4, !tbaa !5
  %485 = call i32 @s2n_stuffer_growable_alloc(ptr noundef %20, i32 noundef 8092)
  %486 = icmp eq i32 %485, -1
  br i1 %486, label %487, label %540

487:                                              ; preds = %482
  br label %488

488:                                              ; preds = %487
  br label %489

489:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  %490 = call ptr @__errno_location() #11
  %491 = load i32, ptr %490, align 4, !tbaa !5
  store i32 %491, ptr %21, align 4, !tbaa !5
  %492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %493 = call i32 @s2n_print_stacktrace(ptr noundef %492)
  %494 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %495 = trunc i8 %494 to i1
  br i1 %495, label %496, label %518

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

501:                                              ; preds = %496
  %502 = load i32, ptr %21, align 4, !tbaa !5
  %503 = call ptr @__errno_location() #11
  store i32 %502, ptr %503, align 4, !tbaa !5
  %504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %505 = load i32, ptr @test_count, align 4, !tbaa !5
  %506 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %507 = load i32, ptr %506, align 4, !tbaa !5
  %508 = call ptr @s2n_strerror(i32 noundef %507, ptr noundef @.str.24)
  %509 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %510 = load i32, ptr %509, align 4, !tbaa !5
  %511 = call ptr @s2n_strerror_debug(i32 noundef %510, ptr noundef @.str.24)
  %512 = call ptr @__errno_location() #11
  %513 = load i32, ptr %512, align 4, !tbaa !5
  %514 = call ptr @strerror(i32 noundef %513) #10
  %515 = call ptr @__errno_location() #11
  %516 = load i32, ptr %515, align 4, !tbaa !5
  %517 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %504, ptr noundef @.str.22, i32 noundef %505, ptr noundef @.str.31, ptr noundef @.str.21, i32 noundef 71, ptr noundef %508, ptr noundef %511, ptr noundef %514, i32 noundef %516) #10
  br label %535

518:                                              ; preds = %496, %489
  %519 = load i32, ptr %21, align 4, !tbaa !5
  %520 = call ptr @__errno_location() #11
  store i32 %519, ptr %520, align 4, !tbaa !5
  %521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %522 = load i32, ptr @test_count, align 4, !tbaa !5
  %523 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %524 = load i32, ptr %523, align 4, !tbaa !5
  %525 = call ptr @s2n_strerror(i32 noundef %524, ptr noundef @.str.24)
  %526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %527 = load i32, ptr %526, align 4, !tbaa !5
  %528 = call ptr @s2n_strerror_debug(i32 noundef %527, ptr noundef @.str.24)
  %529 = call ptr @__errno_location() #11
  %530 = load i32, ptr %529, align 4, !tbaa !5
  %531 = call ptr @strerror(i32 noundef %530) #10
  %532 = call ptr @__errno_location() #11
  %533 = load i32, ptr %532, align 4, !tbaa !5
  %534 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %521, ptr noundef @.str.25, i32 noundef %522, ptr noundef @.str.31, ptr noundef @.str.21, i32 noundef 71, ptr noundef %525, ptr noundef %528, ptr noundef %531, i32 noundef %533) #10
  br label %535

535:                                              ; preds = %518, %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %536

536:                                              ; preds = %535
  br label %537

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

538:                                              ; No predecessors!
  br label %539

539:                                              ; preds = %538
  br label %540

540:                                              ; preds = %539, %482
  br label %541

541:                                              ; preds = %540
  br label %542

542:                                              ; preds = %541
  br label %543

543:                                              ; preds = %542
  %544 = load i32, ptr @test_count, align 4, !tbaa !5
  %545 = add nsw i32 %544, 1
  store i32 %545, ptr @test_count, align 4, !tbaa !5
  %546 = load ptr, ptr %14, align 8, !tbaa !9
  %547 = call i32 @s2n_connection_set_io_stuffers(ptr noundef %20, ptr noundef %20, ptr noundef %546)
  %548 = icmp eq i32 %547, -1
  br i1 %548, label %549, label %602

549:                                              ; preds = %543
  br label %550

550:                                              ; preds = %549
  br label %551

551:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  %552 = call ptr @__errno_location() #11
  %553 = load i32, ptr %552, align 4, !tbaa !5
  store i32 %553, ptr %22, align 4, !tbaa !5
  %554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %555 = call i32 @s2n_print_stacktrace(ptr noundef %554)
  %556 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %557 = trunc i8 %556 to i1
  br i1 %557, label %558, label %580

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

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

580:                                              ; preds = %558, %551
  %581 = load i32, ptr %22, align 4, !tbaa !5
  %582 = call ptr @__errno_location() #11
  store i32 %581, ptr %582, align 4, !tbaa !5
  %583 = load ptr, ptr @stderr, align 8, !tbaa !9
  %584 = load i32, ptr @test_count, align 4, !tbaa !5
  %585 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %586 = load i32, ptr %585, align 4, !tbaa !5
  %587 = call ptr @s2n_strerror(i32 noundef %586, ptr noundef @.str.24)
  %588 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %589 = load i32, ptr %588, align 4, !tbaa !5
  %590 = call ptr @s2n_strerror_debug(i32 noundef %589, ptr noundef @.str.24)
  %591 = call ptr @__errno_location() #11
  %592 = load i32, ptr %591, align 4, !tbaa !5
  %593 = call ptr @strerror(i32 noundef %592) #10
  %594 = call ptr @__errno_location() #11
  %595 = load i32, ptr %594, align 4, !tbaa !5
  %596 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %583, ptr noundef @.str.25, i32 noundef %584, ptr noundef @.str.32, ptr noundef @.str.21, i32 noundef 72, ptr noundef %587, ptr noundef %590, ptr noundef %593, i32 noundef %595) #10
  br label %597

597:                                              ; preds = %580, %563
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %598

598:                                              ; preds = %597
  br label %599

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

600:                                              ; No predecessors!
  br label %601

601:                                              ; preds = %600
  br label %602

602:                                              ; preds = %601, %543
  br label %603

603:                                              ; preds = %602
  br label %604

604:                                              ; preds = %603
  br label %605

605:                                              ; preds = %604
  %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 = getelementptr inbounds [21 x i8], ptr %9, i64 0, i64 0
  %609 = call i32 @s2n_stuffer_write_bytes(ptr noundef %20, ptr noundef %608, i32 noundef 21)
  %610 = icmp eq i32 %609, -1
  br i1 %610, label %611, label %664

611:                                              ; preds = %605
  br label %612

612:                                              ; preds = %611
  br label %613

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

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

625:                                              ; preds = %620
  %626 = load i32, ptr %23, align 4, !tbaa !5
  %627 = call ptr @__errno_location() #11
  store i32 %626, ptr %627, align 4, !tbaa !5
  %628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %629 = load i32, ptr @test_count, align 4, !tbaa !5
  %630 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %631 = load i32, ptr %630, align 4, !tbaa !5
  %632 = call ptr @s2n_strerror(i32 noundef %631, ptr noundef @.str.24)
  %633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %634 = load i32, ptr %633, align 4, !tbaa !5
  %635 = call ptr @s2n_strerror_debug(i32 noundef %634, ptr noundef @.str.24)
  %636 = call ptr @__errno_location() #11
  %637 = load i32, ptr %636, align 4, !tbaa !5
  %638 = call ptr @strerror(i32 noundef %637) #10
  %639 = call ptr @__errno_location() #11
  %640 = load i32, ptr %639, align 4, !tbaa !5
  %641 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %628, ptr noundef @.str.22, i32 noundef %629, ptr noundef @.str.33, ptr noundef @.str.21, i32 noundef 74, ptr noundef %632, ptr noundef %635, ptr noundef %638, i32 noundef %640) #10
  br label %659

642:                                              ; preds = %620, %613
  %643 = load i32, ptr %23, align 4, !tbaa !5
  %644 = call ptr @__errno_location() #11
  store i32 %643, ptr %644, align 4, !tbaa !5
  %645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %646 = load i32, ptr @test_count, align 4, !tbaa !5
  %647 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %648 = load i32, ptr %647, align 4, !tbaa !5
  %649 = call ptr @s2n_strerror(i32 noundef %648, ptr noundef @.str.24)
  %650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %651 = load i32, ptr %650, align 4, !tbaa !5
  %652 = call ptr @s2n_strerror_debug(i32 noundef %651, ptr noundef @.str.24)
  %653 = call ptr @__errno_location() #11
  %654 = load i32, ptr %653, align 4, !tbaa !5
  %655 = call ptr @strerror(i32 noundef %654) #10
  %656 = call ptr @__errno_location() #11
  %657 = load i32, ptr %656, align 4, !tbaa !5
  %658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %645, ptr noundef @.str.25, i32 noundef %646, ptr noundef @.str.33, ptr noundef @.str.21, i32 noundef 74, ptr noundef %649, ptr noundef %652, ptr noundef %655, i32 noundef %657) #10
  br label %659

659:                                              ; preds = %642, %625
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  br label %660

660:                                              ; preds = %659
  br label %661

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

662:                                              ; No predecessors!
  br label %663

663:                                              ; preds = %662
  br label %664

664:                                              ; preds = %663, %605
  br label %665

665:                                              ; preds = %664
  br label %666

666:                                              ; preds = %665
  br label %667

667:                                              ; preds = %666
  %668 = load i32, ptr @test_count, align 4, !tbaa !5
  %669 = add nsw i32 %668, 1
  store i32 %669, ptr @test_count, align 4, !tbaa !5
  %670 = call i32 @s2n_stuffer_reread(ptr noundef %20)
  %671 = icmp eq i32 %670, -1
  br i1 %671, label %672, label %725

672:                                              ; preds = %667
  br label %673

673:                                              ; preds = %672
  br label %674

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

681:                                              ; preds = %674
  %682 = load ptr, ptr @stderr, align 8, !tbaa !9
  %683 = call i32 @fileno(ptr noundef %682) #10
  %684 = call i32 @isatty(i32 noundef %683) #10
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %686, label %703

686:                                              ; preds = %681
  %687 = load i32, ptr %24, align 4, !tbaa !5
  %688 = call ptr @__errno_location() #11
  store i32 %687, ptr %688, align 4, !tbaa !5
  %689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %690 = load i32, ptr @test_count, align 4, !tbaa !5
  %691 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %692 = load i32, ptr %691, align 4, !tbaa !5
  %693 = call ptr @s2n_strerror(i32 noundef %692, ptr noundef @.str.24)
  %694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %695 = load i32, ptr %694, align 4, !tbaa !5
  %696 = call ptr @s2n_strerror_debug(i32 noundef %695, ptr noundef @.str.24)
  %697 = call ptr @__errno_location() #11
  %698 = load i32, ptr %697, align 4, !tbaa !5
  %699 = call ptr @strerror(i32 noundef %698) #10
  %700 = call ptr @__errno_location() #11
  %701 = load i32, ptr %700, align 4, !tbaa !5
  %702 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %689, ptr noundef @.str.22, i32 noundef %690, ptr noundef @.str.34, ptr noundef @.str.21, i32 noundef 78, ptr noundef %693, ptr noundef %696, ptr noundef %699, i32 noundef %701) #10
  br label %720

703:                                              ; preds = %681, %674
  %704 = load i32, ptr %24, align 4, !tbaa !5
  %705 = call ptr @__errno_location() #11
  store i32 %704, ptr %705, align 4, !tbaa !5
  %706 = load ptr, ptr @stderr, align 8, !tbaa !9
  %707 = load i32, ptr @test_count, align 4, !tbaa !5
  %708 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %709 = load i32, ptr %708, align 4, !tbaa !5
  %710 = call ptr @s2n_strerror(i32 noundef %709, ptr noundef @.str.24)
  %711 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %712 = load i32, ptr %711, align 4, !tbaa !5
  %713 = call ptr @s2n_strerror_debug(i32 noundef %712, ptr noundef @.str.24)
  %714 = call ptr @__errno_location() #11
  %715 = load i32, ptr %714, align 4, !tbaa !5
  %716 = call ptr @strerror(i32 noundef %715) #10
  %717 = call ptr @__errno_location() #11
  %718 = load i32, ptr %717, align 4, !tbaa !5
  %719 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %706, ptr noundef @.str.25, i32 noundef %707, ptr noundef @.str.34, ptr noundef @.str.21, i32 noundef 78, ptr noundef %710, ptr noundef %713, ptr noundef %716, i32 noundef %718) #10
  br label %720

720:                                              ; preds = %703, %686
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %721

721:                                              ; preds = %720
  br label %722

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

723:                                              ; No predecessors!
  br label %724

724:                                              ; preds = %723
  br label %725

725:                                              ; preds = %724, %667
  br label %726

726:                                              ; preds = %725
  br label %727

727:                                              ; preds = %726
  %728 = load ptr, ptr %14, align 8, !tbaa !9
  %729 = getelementptr inbounds %struct.s2n_connection, ptr %728, i32 0, i32 89
  store i32 2, ptr %729, align 8, !tbaa !56
  br label %730

730:                                              ; preds = %727
  br label %731

731:                                              ; preds = %730
  br label %732

732:                                              ; preds = %731
  %733 = load i32, ptr @test_count, align 4, !tbaa !5
  %734 = add nsw i32 %733, 1
  store i32 %734, ptr @test_count, align 4, !tbaa !5
  %735 = load ptr, ptr %14, align 8, !tbaa !9
  %736 = call i32 @s2n_handshake_read_io(ptr noundef %735)
  %737 = icmp eq i32 %736, -1
  br i1 %737, label %791, label %738

738:                                              ; preds = %732
  br label %739

739:                                              ; preds = %738
  br label %740

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

747:                                              ; preds = %740
  %748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %749 = call i32 @fileno(ptr noundef %748) #10
  %750 = call i32 @isatty(i32 noundef %749) #10
  %751 = icmp ne i32 %750, 0
  br i1 %751, label %752, label %769

752:                                              ; preds = %747
  %753 = load i32, ptr %25, align 4, !tbaa !5
  %754 = call ptr @__errno_location() #11
  store i32 %753, ptr %754, align 4, !tbaa !5
  %755 = load ptr, ptr @stderr, align 8, !tbaa !9
  %756 = load i32, ptr @test_count, align 4, !tbaa !5
  %757 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %758 = load i32, ptr %757, align 4, !tbaa !5
  %759 = call ptr @s2n_strerror(i32 noundef %758, ptr noundef @.str.24)
  %760 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %761 = load i32, ptr %760, align 4, !tbaa !5
  %762 = call ptr @s2n_strerror_debug(i32 noundef %761, ptr noundef @.str.24)
  %763 = call ptr @__errno_location() #11
  %764 = load i32, ptr %763, align 4, !tbaa !5
  %765 = call ptr @strerror(i32 noundef %764) #10
  %766 = call ptr @__errno_location() #11
  %767 = load i32, ptr %766, align 4, !tbaa !5
  %768 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %755, ptr noundef @.str.22, i32 noundef %756, ptr noundef @.str.35, ptr noundef @.str.21, i32 noundef 80, ptr noundef %759, ptr noundef %762, ptr noundef %765, i32 noundef %767) #10
  br label %786

769:                                              ; preds = %747, %740
  %770 = load i32, ptr %25, align 4, !tbaa !5
  %771 = call ptr @__errno_location() #11
  store i32 %770, ptr %771, align 4, !tbaa !5
  %772 = load ptr, ptr @stderr, align 8, !tbaa !9
  %773 = load i32, ptr @test_count, align 4, !tbaa !5
  %774 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %775 = load i32, ptr %774, align 4, !tbaa !5
  %776 = call ptr @s2n_strerror(i32 noundef %775, ptr noundef @.str.24)
  %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_debug(i32 noundef %778, ptr noundef @.str.24)
  %780 = call ptr @__errno_location() #11
  %781 = load i32, ptr %780, align 4, !tbaa !5
  %782 = call ptr @strerror(i32 noundef %781) #10
  %783 = call ptr @__errno_location() #11
  %784 = load i32, ptr %783, align 4, !tbaa !5
  %785 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %772, ptr noundef @.str.25, i32 noundef %773, ptr noundef @.str.35, ptr noundef @.str.21, i32 noundef 80, ptr noundef %776, ptr noundef %779, ptr noundef %782, i32 noundef %784) #10
  br label %786

786:                                              ; preds = %769, %752
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %787

787:                                              ; preds = %786
  br label %788

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

789:                                              ; No predecessors!
  br label %790

790:                                              ; preds = %789
  br label %791

791:                                              ; preds = %790, %732
  br label %792

792:                                              ; preds = %791
  br label %793

793:                                              ; preds = %792
  br label %794

794:                                              ; preds = %793
  %795 = load i32, ptr @test_count, align 4, !tbaa !5
  %796 = add nsw i32 %795, 1
  store i32 %796, ptr @test_count, align 4, !tbaa !5
  %797 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %798 = load i32, ptr %797, align 4, !tbaa !5
  %799 = icmp eq i32 %798, 335544321
  br i1 %799, label %853, label %800

800:                                              ; preds = %794
  br label %801

801:                                              ; preds = %800
  br label %802

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

809:                                              ; preds = %802
  %810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %811 = call i32 @fileno(ptr noundef %810) #10
  %812 = call i32 @isatty(i32 noundef %811) #10
  %813 = icmp ne i32 %812, 0
  br i1 %813, label %814, label %831

814:                                              ; preds = %809
  %815 = load i32, ptr %26, align 4, !tbaa !5
  %816 = call ptr @__errno_location() #11
  store i32 %815, ptr %816, align 4, !tbaa !5
  %817 = load ptr, ptr @stderr, align 8, !tbaa !9
  %818 = load i32, ptr @test_count, align 4, !tbaa !5
  %819 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %820 = load i32, ptr %819, align 4, !tbaa !5
  %821 = call ptr @s2n_strerror(i32 noundef %820, ptr noundef @.str.24)
  %822 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %823 = load i32, ptr %822, align 4, !tbaa !5
  %824 = call ptr @s2n_strerror_debug(i32 noundef %823, ptr noundef @.str.24)
  %825 = call ptr @__errno_location() #11
  %826 = load i32, ptr %825, align 4, !tbaa !5
  %827 = call ptr @strerror(i32 noundef %826) #10
  %828 = call ptr @__errno_location() #11
  %829 = load i32, ptr %828, align 4, !tbaa !5
  %830 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %817, ptr noundef @.str.22, i32 noundef %818, ptr noundef @.str.36, ptr noundef @.str.21, i32 noundef 80, ptr noundef %821, ptr noundef %824, ptr noundef %827, i32 noundef %829) #10
  br label %848

831:                                              ; preds = %809, %802
  %832 = load i32, ptr %26, align 4, !tbaa !5
  %833 = call ptr @__errno_location() #11
  store i32 %832, ptr %833, align 4, !tbaa !5
  %834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %835 = load i32, ptr @test_count, align 4, !tbaa !5
  %836 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %837 = load i32, ptr %836, align 4, !tbaa !5
  %838 = call ptr @s2n_strerror(i32 noundef %837, ptr noundef @.str.24)
  %839 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %840 = load i32, ptr %839, align 4, !tbaa !5
  %841 = call ptr @s2n_strerror_debug(i32 noundef %840, ptr noundef @.str.24)
  %842 = call ptr @__errno_location() #11
  %843 = load i32, ptr %842, align 4, !tbaa !5
  %844 = call ptr @strerror(i32 noundef %843) #10
  %845 = call ptr @__errno_location() #11
  %846 = load i32, ptr %845, align 4, !tbaa !5
  %847 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %834, ptr noundef @.str.25, i32 noundef %835, ptr noundef @.str.36, ptr noundef @.str.21, i32 noundef 80, ptr noundef %838, ptr noundef %841, ptr noundef %844, i32 noundef %846) #10
  br label %848

848:                                              ; preds = %831, %814
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %849

849:                                              ; preds = %848
  br label %850

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

851:                                              ; No predecessors!
  br label %852

852:                                              ; preds = %851
  br label %853

853:                                              ; preds = %852, %794
  br label %854

854:                                              ; preds = %853
  br label %855

855:                                              ; preds = %854
  br label %856

856:                                              ; preds = %855
  %857 = load i32, ptr @test_count, align 4, !tbaa !5
  %858 = add nsw i32 %857, 1
  store i32 %858, ptr @test_count, align 4, !tbaa !5
  %859 = call 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_debug(i32 noundef %860, ptr noundef @.str.24)
  %862 = icmp eq ptr %861, null
  br i1 %862, label %863, label %916

863:                                              ; preds = %856
  br label %864

864:                                              ; preds = %863
  br label %865

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

872:                                              ; preds = %865
  %873 = load ptr, ptr @stderr, align 8, !tbaa !9
  %874 = call i32 @fileno(ptr noundef %873) #10
  %875 = call i32 @isatty(i32 noundef %874) #10
  %876 = icmp ne i32 %875, 0
  br i1 %876, label %877, label %894

877:                                              ; preds = %872
  %878 = load i32, ptr %27, align 4, !tbaa !5
  %879 = call ptr @__errno_location() #11
  store i32 %878, ptr %879, align 4, !tbaa !5
  %880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %881 = load i32, ptr @test_count, align 4, !tbaa !5
  %882 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %883 = load i32, ptr %882, align 4, !tbaa !5
  %884 = call ptr @s2n_strerror(i32 noundef %883, ptr noundef @.str.24)
  %885 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %886 = load i32, ptr %885, align 4, !tbaa !5
  %887 = call ptr @s2n_strerror_debug(i32 noundef %886, ptr noundef @.str.24)
  %888 = call ptr @__errno_location() #11
  %889 = load i32, ptr %888, align 4, !tbaa !5
  %890 = call ptr @strerror(i32 noundef %889) #10
  %891 = call ptr @__errno_location() #11
  %892 = load i32, ptr %891, align 4, !tbaa !5
  %893 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %880, ptr noundef @.str.22, i32 noundef %881, ptr noundef @.str.37, ptr noundef @.str.21, i32 noundef 80, ptr noundef %884, ptr noundef %887, ptr noundef %890, i32 noundef %892) #10
  br label %911

894:                                              ; preds = %872, %865
  %895 = load i32, ptr %27, align 4, !tbaa !5
  %896 = call ptr @__errno_location() #11
  store i32 %895, ptr %896, align 4, !tbaa !5
  %897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %898 = load i32, ptr @test_count, align 4, !tbaa !5
  %899 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %900 = load i32, ptr %899, align 4, !tbaa !5
  %901 = call ptr @s2n_strerror(i32 noundef %900, ptr noundef @.str.24)
  %902 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %903 = load i32, ptr %902, align 4, !tbaa !5
  %904 = call ptr @s2n_strerror_debug(i32 noundef %903, ptr noundef @.str.24)
  %905 = call ptr @__errno_location() #11
  %906 = load i32, ptr %905, align 4, !tbaa !5
  %907 = call ptr @strerror(i32 noundef %906) #10
  %908 = call ptr @__errno_location() #11
  %909 = load i32, ptr %908, align 4, !tbaa !5
  %910 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %897, ptr noundef @.str.25, i32 noundef %898, ptr noundef @.str.37, ptr noundef @.str.21, i32 noundef 80, ptr noundef %901, ptr noundef %904, ptr noundef %907, i32 noundef %909) #10
  br label %911

911:                                              ; preds = %894, %877
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %912

912:                                              ; preds = %911
  br label %913

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

914:                                              ; No predecessors!
  br label %915

915:                                              ; preds = %914
  br label %916

916:                                              ; preds = %915, %856
  br label %917

917:                                              ; preds = %916
  br label %918

918:                                              ; preds = %917
  br label %919

919:                                              ; preds = %918
  br label %920

920:                                              ; preds = %919
  br label %921

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

924:                                              ; preds = %921
  br label %925

925:                                              ; preds = %924
  br label %926

926:                                              ; preds = %925
  br label %927

927:                                              ; preds = %926
  br label %928

928:                                              ; preds = %927
  %929 = load i32, ptr @test_count, align 4, !tbaa !5
  %930 = add nsw i32 %929, 1
  store i32 %930, ptr @test_count, align 4, !tbaa !5
  %931 = call i32 @s2n_stuffer_reread(ptr noundef %20)
  %932 = icmp eq i32 %931, -1
  br i1 %932, label %933, label %986

933:                                              ; preds = %928
  br label %934

934:                                              ; preds = %933
  br label %935

935:                                              ; preds = %934
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  %936 = call ptr @__errno_location() #11
  %937 = load i32, ptr %936, align 4, !tbaa !5
  store i32 %937, ptr %28, align 4, !tbaa !5
  %938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %939 = call i32 @s2n_print_stacktrace(ptr noundef %938)
  %940 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %941 = trunc i8 %940 to i1
  br i1 %941, label %942, label %964

942:                                              ; preds = %935
  %943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %944 = call i32 @fileno(ptr noundef %943) #10
  %945 = call i32 @isatty(i32 noundef %944) #10
  %946 = icmp ne i32 %945, 0
  br i1 %946, label %947, label %964

947:                                              ; preds = %942
  %948 = load i32, ptr %28, align 4, !tbaa !5
  %949 = call ptr @__errno_location() #11
  store i32 %948, ptr %949, align 4, !tbaa !5
  %950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %951 = load i32, ptr @test_count, align 4, !tbaa !5
  %952 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %953 = load i32, ptr %952, align 4, !tbaa !5
  %954 = call ptr @s2n_strerror(i32 noundef %953, ptr noundef @.str.24)
  %955 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %956 = load i32, ptr %955, align 4, !tbaa !5
  %957 = call ptr @s2n_strerror_debug(i32 noundef %956, ptr noundef @.str.24)
  %958 = call ptr @__errno_location() #11
  %959 = load i32, ptr %958, align 4, !tbaa !5
  %960 = call ptr @strerror(i32 noundef %959) #10
  %961 = call ptr @__errno_location() #11
  %962 = load i32, ptr %961, align 4, !tbaa !5
  %963 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %950, ptr noundef @.str.22, i32 noundef %951, ptr noundef @.str.34, ptr noundef @.str.21, i32 noundef 85, ptr noundef %954, ptr noundef %957, ptr noundef %960, i32 noundef %962) #10
  br label %981

964:                                              ; preds = %942, %935
  %965 = load i32, ptr %28, align 4, !tbaa !5
  %966 = call ptr @__errno_location() #11
  store i32 %965, ptr %966, align 4, !tbaa !5
  %967 = load ptr, ptr @stderr, align 8, !tbaa !9
  %968 = load i32, ptr @test_count, align 4, !tbaa !5
  %969 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %970 = load i32, ptr %969, align 4, !tbaa !5
  %971 = call ptr @s2n_strerror(i32 noundef %970, ptr noundef @.str.24)
  %972 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %973 = load i32, ptr %972, align 4, !tbaa !5
  %974 = call ptr @s2n_strerror_debug(i32 noundef %973, ptr noundef @.str.24)
  %975 = call ptr @__errno_location() #11
  %976 = load i32, ptr %975, align 4, !tbaa !5
  %977 = call ptr @strerror(i32 noundef %976) #10
  %978 = call ptr @__errno_location() #11
  %979 = load i32, ptr %978, align 4, !tbaa !5
  %980 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %967, ptr noundef @.str.25, i32 noundef %968, ptr noundef @.str.34, ptr noundef @.str.21, i32 noundef 85, ptr noundef %971, ptr noundef %974, ptr noundef %977, i32 noundef %979) #10
  br label %981

981:                                              ; preds = %964, %947
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %982

982:                                              ; preds = %981
  br label %983

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

984:                                              ; No predecessors!
  br label %985

985:                                              ; preds = %984
  br label %986

986:                                              ; preds = %985, %928
  br label %987

987:                                              ; preds = %986
  br label %988

988:                                              ; preds = %987
  %989 = load ptr, ptr %14, align 8, !tbaa !9
  %990 = getelementptr inbounds %struct.s2n_connection, ptr %989, i32 0, i32 89
  store i32 3, ptr %990, align 8, !tbaa !56
  br label %991

991:                                              ; preds = %988
  br label %992

992:                                              ; preds = %991
  br label %993

993:                                              ; preds = %992
  %994 = load i32, ptr @test_count, align 4, !tbaa !5
  %995 = add nsw i32 %994, 1
  store i32 %995, ptr @test_count, align 4, !tbaa !5
  %996 = load ptr, ptr %14, align 8, !tbaa !9
  %997 = call i32 @s2n_handshake_read_io(ptr noundef %996)
  %998 = icmp eq i32 %997, -1
  br i1 %998, label %1052, label %999

999:                                              ; preds = %993
  br label %1000

1000:                                             ; preds = %999
  br label %1001

1001:                                             ; preds = %1000
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  %1002 = call ptr @__errno_location() #11
  %1003 = load i32, ptr %1002, align 4, !tbaa !5
  store i32 %1003, ptr %29, align 4, !tbaa !5
  %1004 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1005 = call i32 @s2n_print_stacktrace(ptr noundef %1004)
  %1006 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1007 = trunc i8 %1006 to i1
  br i1 %1007, label %1008, label %1030

1008:                                             ; preds = %1001
  %1009 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1010 = call i32 @fileno(ptr noundef %1009) #10
  %1011 = call i32 @isatty(i32 noundef %1010) #10
  %1012 = icmp ne i32 %1011, 0
  br i1 %1012, label %1013, label %1030

1013:                                             ; preds = %1008
  %1014 = load i32, ptr %29, align 4, !tbaa !5
  %1015 = call ptr @__errno_location() #11
  store i32 %1014, ptr %1015, align 4, !tbaa !5
  %1016 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1017 = load i32, ptr @test_count, align 4, !tbaa !5
  %1018 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1019 = load i32, ptr %1018, align 4, !tbaa !5
  %1020 = call ptr @s2n_strerror(i32 noundef %1019, ptr noundef @.str.24)
  %1021 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1022 = load i32, ptr %1021, align 4, !tbaa !5
  %1023 = call ptr @s2n_strerror_debug(i32 noundef %1022, ptr noundef @.str.24)
  %1024 = call ptr @__errno_location() #11
  %1025 = load i32, ptr %1024, align 4, !tbaa !5
  %1026 = call ptr @strerror(i32 noundef %1025) #10
  %1027 = call ptr @__errno_location() #11
  %1028 = load i32, ptr %1027, align 4, !tbaa !5
  %1029 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1016, ptr noundef @.str.22, i32 noundef %1017, ptr noundef @.str.35, ptr noundef @.str.21, i32 noundef 87, ptr noundef %1020, ptr noundef %1023, ptr noundef %1026, i32 noundef %1028) #10
  br label %1047

1030:                                             ; preds = %1008, %1001
  %1031 = load i32, ptr %29, align 4, !tbaa !5
  %1032 = call ptr @__errno_location() #11
  store i32 %1031, ptr %1032, align 4, !tbaa !5
  %1033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1034 = load i32, ptr @test_count, align 4, !tbaa !5
  %1035 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1036 = load i32, ptr %1035, align 4, !tbaa !5
  %1037 = call ptr @s2n_strerror(i32 noundef %1036, ptr noundef @.str.24)
  %1038 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1039 = load i32, ptr %1038, align 4, !tbaa !5
  %1040 = call ptr @s2n_strerror_debug(i32 noundef %1039, ptr noundef @.str.24)
  %1041 = call ptr @__errno_location() #11
  %1042 = load i32, ptr %1041, align 4, !tbaa !5
  %1043 = call ptr @strerror(i32 noundef %1042) #10
  %1044 = call ptr @__errno_location() #11
  %1045 = load i32, ptr %1044, align 4, !tbaa !5
  %1046 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1033, ptr noundef @.str.25, i32 noundef %1034, ptr noundef @.str.35, ptr noundef @.str.21, i32 noundef 87, ptr noundef %1037, ptr noundef %1040, ptr noundef %1043, i32 noundef %1045) #10
  br label %1047

1047:                                             ; preds = %1030, %1013
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %1048

1048:                                             ; preds = %1047
  br label %1049

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

1050:                                             ; No predecessors!
  br label %1051

1051:                                             ; preds = %1050
  br label %1052

1052:                                             ; preds = %1051, %993
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

1054:                                             ; preds = %1053
  br label %1055

1055:                                             ; preds = %1054
  %1056 = load i32, ptr @test_count, align 4, !tbaa !5
  %1057 = add nsw i32 %1056, 1
  store i32 %1057, ptr @test_count, align 4, !tbaa !5
  %1058 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1059 = load i32, ptr %1058, align 4, !tbaa !5
  %1060 = icmp eq i32 %1059, 335544321
  br i1 %1060, label %1114, label %1061

1061:                                             ; preds = %1055
  br label %1062

1062:                                             ; preds = %1061
  br label %1063

1063:                                             ; preds = %1062
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  %1064 = call ptr @__errno_location() #11
  %1065 = load i32, ptr %1064, align 4, !tbaa !5
  store i32 %1065, ptr %30, align 4, !tbaa !5
  %1066 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1067 = call i32 @s2n_print_stacktrace(ptr noundef %1066)
  %1068 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1069 = trunc i8 %1068 to i1
  br i1 %1069, label %1070, label %1092

1070:                                             ; preds = %1063
  %1071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1072 = call i32 @fileno(ptr noundef %1071) #10
  %1073 = call i32 @isatty(i32 noundef %1072) #10
  %1074 = icmp ne i32 %1073, 0
  br i1 %1074, label %1075, label %1092

1075:                                             ; preds = %1070
  %1076 = load i32, ptr %30, align 4, !tbaa !5
  %1077 = call ptr @__errno_location() #11
  store i32 %1076, ptr %1077, align 4, !tbaa !5
  %1078 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1079 = load i32, ptr @test_count, align 4, !tbaa !5
  %1080 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1081 = load i32, ptr %1080, align 4, !tbaa !5
  %1082 = call ptr @s2n_strerror(i32 noundef %1081, ptr noundef @.str.24)
  %1083 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1084 = load i32, ptr %1083, align 4, !tbaa !5
  %1085 = call ptr @s2n_strerror_debug(i32 noundef %1084, ptr noundef @.str.24)
  %1086 = call ptr @__errno_location() #11
  %1087 = load i32, ptr %1086, align 4, !tbaa !5
  %1088 = call ptr @strerror(i32 noundef %1087) #10
  %1089 = call ptr @__errno_location() #11
  %1090 = load i32, ptr %1089, align 4, !tbaa !5
  %1091 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1078, ptr noundef @.str.22, i32 noundef %1079, ptr noundef @.str.36, ptr noundef @.str.21, i32 noundef 87, ptr noundef %1082, ptr noundef %1085, ptr noundef %1088, i32 noundef %1090) #10
  br label %1109

1092:                                             ; preds = %1070, %1063
  %1093 = load i32, ptr %30, align 4, !tbaa !5
  %1094 = call ptr @__errno_location() #11
  store i32 %1093, ptr %1094, align 4, !tbaa !5
  %1095 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1096 = load i32, ptr @test_count, align 4, !tbaa !5
  %1097 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1098 = load i32, ptr %1097, align 4, !tbaa !5
  %1099 = call ptr @s2n_strerror(i32 noundef %1098, ptr noundef @.str.24)
  %1100 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1101 = load i32, ptr %1100, align 4, !tbaa !5
  %1102 = call ptr @s2n_strerror_debug(i32 noundef %1101, ptr noundef @.str.24)
  %1103 = call ptr @__errno_location() #11
  %1104 = load i32, ptr %1103, align 4, !tbaa !5
  %1105 = call ptr @strerror(i32 noundef %1104) #10
  %1106 = call ptr @__errno_location() #11
  %1107 = load i32, ptr %1106, align 4, !tbaa !5
  %1108 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1095, ptr noundef @.str.25, i32 noundef %1096, ptr noundef @.str.36, ptr noundef @.str.21, i32 noundef 87, ptr noundef %1099, ptr noundef %1102, ptr noundef %1105, i32 noundef %1107) #10
  br label %1109

1109:                                             ; preds = %1092, %1075
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %1110

1110:                                             ; preds = %1109
  br label %1111

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

1112:                                             ; No predecessors!
  br label %1113

1113:                                             ; preds = %1112
  br label %1114

1114:                                             ; preds = %1113, %1055
  br label %1115

1115:                                             ; preds = %1114
  br label %1116

1116:                                             ; preds = %1115
  br label %1117

1117:                                             ; preds = %1116
  %1118 = load i32, ptr @test_count, align 4, !tbaa !5
  %1119 = add nsw i32 %1118, 1
  store i32 %1119, ptr @test_count, align 4, !tbaa !5
  %1120 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1121 = load i32, ptr %1120, align 4, !tbaa !5
  %1122 = call ptr @s2n_strerror_debug(i32 noundef %1121, ptr noundef @.str.24)
  %1123 = icmp eq ptr %1122, null
  br i1 %1123, label %1124, label %1177

1124:                                             ; preds = %1117
  br label %1125

1125:                                             ; preds = %1124
  br label %1126

1126:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  %1127 = call ptr @__errno_location() #11
  %1128 = load i32, ptr %1127, align 4, !tbaa !5
  store i32 %1128, ptr %31, align 4, !tbaa !5
  %1129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1130 = call i32 @s2n_print_stacktrace(ptr noundef %1129)
  %1131 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1132 = trunc i8 %1131 to i1
  br i1 %1132, label %1133, label %1155

1133:                                             ; preds = %1126
  %1134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1135 = call i32 @fileno(ptr noundef %1134) #10
  %1136 = call i32 @isatty(i32 noundef %1135) #10
  %1137 = icmp ne i32 %1136, 0
  br i1 %1137, label %1138, label %1155

1138:                                             ; preds = %1133
  %1139 = load i32, ptr %31, align 4, !tbaa !5
  %1140 = call ptr @__errno_location() #11
  store i32 %1139, ptr %1140, align 4, !tbaa !5
  %1141 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1142 = load i32, ptr @test_count, align 4, !tbaa !5
  %1143 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1144 = load i32, ptr %1143, align 4, !tbaa !5
  %1145 = call ptr @s2n_strerror(i32 noundef %1144, ptr noundef @.str.24)
  %1146 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1147 = load i32, ptr %1146, align 4, !tbaa !5
  %1148 = call ptr @s2n_strerror_debug(i32 noundef %1147, ptr noundef @.str.24)
  %1149 = call ptr @__errno_location() #11
  %1150 = load i32, ptr %1149, align 4, !tbaa !5
  %1151 = call ptr @strerror(i32 noundef %1150) #10
  %1152 = call ptr @__errno_location() #11
  %1153 = load i32, ptr %1152, align 4, !tbaa !5
  %1154 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1141, ptr noundef @.str.22, i32 noundef %1142, ptr noundef @.str.37, ptr noundef @.str.21, i32 noundef 87, ptr noundef %1145, ptr noundef %1148, ptr noundef %1151, i32 noundef %1153) #10
  br label %1172

1155:                                             ; preds = %1133, %1126
  %1156 = load i32, ptr %31, align 4, !tbaa !5
  %1157 = call ptr @__errno_location() #11
  store i32 %1156, ptr %1157, align 4, !tbaa !5
  %1158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1159 = load i32, ptr @test_count, align 4, !tbaa !5
  %1160 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1161 = load i32, ptr %1160, align 4, !tbaa !5
  %1162 = call ptr @s2n_strerror(i32 noundef %1161, ptr noundef @.str.24)
  %1163 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1164 = load i32, ptr %1163, align 4, !tbaa !5
  %1165 = call ptr @s2n_strerror_debug(i32 noundef %1164, ptr noundef @.str.24)
  %1166 = call ptr @__errno_location() #11
  %1167 = load i32, ptr %1166, align 4, !tbaa !5
  %1168 = call ptr @strerror(i32 noundef %1167) #10
  %1169 = call ptr @__errno_location() #11
  %1170 = load i32, ptr %1169, align 4, !tbaa !5
  %1171 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1158, ptr noundef @.str.25, i32 noundef %1159, ptr noundef @.str.37, ptr noundef @.str.21, i32 noundef 87, ptr noundef %1162, ptr noundef %1165, ptr noundef %1168, i32 noundef %1170) #10
  br label %1172

1172:                                             ; preds = %1155, %1138
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %1173

1173:                                             ; preds = %1172
  br label %1174

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

1175:                                             ; No predecessors!
  br label %1176

1176:                                             ; preds = %1175
  br label %1177

1177:                                             ; preds = %1176, %1117
  br label %1178

1178:                                             ; preds = %1177
  br label %1179

1179:                                             ; preds = %1178
  br label %1180

1180:                                             ; preds = %1179
  br label %1181

1181:                                             ; preds = %1180
  br label %1182

1182:                                             ; preds = %1181
  %1183 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1183, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1184 = call ptr @__errno_location() #11
  store i32 0, ptr %1184, align 4, !tbaa !5
  br label %1185

1185:                                             ; preds = %1182
  br label %1186

1186:                                             ; preds = %1185
  br label %1187

1187:                                             ; preds = %1186
  br label %1188

1188:                                             ; preds = %1187
  br label %1189

1189:                                             ; preds = %1188
  %1190 = load i32, ptr @test_count, align 4, !tbaa !5
  %1191 = add nsw i32 %1190, 1
  store i32 %1191, ptr @test_count, align 4, !tbaa !5
  %1192 = call i32 @s2n_stuffer_reread(ptr noundef %20)
  %1193 = icmp eq i32 %1192, -1
  br i1 %1193, label %1194, label %1247

1194:                                             ; preds = %1189
  br label %1195

1195:                                             ; preds = %1194
  br label %1196

1196:                                             ; preds = %1195
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  %1197 = call ptr @__errno_location() #11
  %1198 = load i32, ptr %1197, align 4, !tbaa !5
  store i32 %1198, ptr %32, align 4, !tbaa !5
  %1199 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1200 = call i32 @s2n_print_stacktrace(ptr noundef %1199)
  %1201 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1202 = trunc i8 %1201 to i1
  br i1 %1202, label %1203, label %1225

1203:                                             ; preds = %1196
  %1204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1205 = call i32 @fileno(ptr noundef %1204) #10
  %1206 = call i32 @isatty(i32 noundef %1205) #10
  %1207 = icmp ne i32 %1206, 0
  br i1 %1207, label %1208, label %1225

1208:                                             ; preds = %1203
  %1209 = load i32, ptr %32, align 4, !tbaa !5
  %1210 = call ptr @__errno_location() #11
  store i32 %1209, ptr %1210, align 4, !tbaa !5
  %1211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1212 = load i32, ptr @test_count, align 4, !tbaa !5
  %1213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1214 = load i32, ptr %1213, align 4, !tbaa !5
  %1215 = call ptr @s2n_strerror(i32 noundef %1214, ptr noundef @.str.24)
  %1216 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1217 = load i32, ptr %1216, align 4, !tbaa !5
  %1218 = call ptr @s2n_strerror_debug(i32 noundef %1217, ptr noundef @.str.24)
  %1219 = call ptr @__errno_location() #11
  %1220 = load i32, ptr %1219, align 4, !tbaa !5
  %1221 = call ptr @strerror(i32 noundef %1220) #10
  %1222 = call ptr @__errno_location() #11
  %1223 = load i32, ptr %1222, align 4, !tbaa !5
  %1224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1211, ptr noundef @.str.22, i32 noundef %1212, ptr noundef @.str.34, ptr noundef @.str.21, i32 noundef 92, ptr noundef %1215, ptr noundef %1218, ptr noundef %1221, i32 noundef %1223) #10
  br label %1242

1225:                                             ; preds = %1203, %1196
  %1226 = load i32, ptr %32, align 4, !tbaa !5
  %1227 = call ptr @__errno_location() #11
  store i32 %1226, ptr %1227, align 4, !tbaa !5
  %1228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1229 = load i32, ptr @test_count, align 4, !tbaa !5
  %1230 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1231 = load i32, ptr %1230, align 4, !tbaa !5
  %1232 = call ptr @s2n_strerror(i32 noundef %1231, ptr noundef @.str.24)
  %1233 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1234 = load i32, ptr %1233, align 4, !tbaa !5
  %1235 = call ptr @s2n_strerror_debug(i32 noundef %1234, ptr noundef @.str.24)
  %1236 = call ptr @__errno_location() #11
  %1237 = load i32, ptr %1236, align 4, !tbaa !5
  %1238 = call ptr @strerror(i32 noundef %1237) #10
  %1239 = call ptr @__errno_location() #11
  %1240 = load i32, ptr %1239, align 4, !tbaa !5
  %1241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1228, ptr noundef @.str.25, i32 noundef %1229, ptr noundef @.str.34, ptr noundef @.str.21, i32 noundef 92, ptr noundef %1232, ptr noundef %1235, ptr noundef %1238, i32 noundef %1240) #10
  br label %1242

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

1243:                                             ; preds = %1242
  br label %1244

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

1245:                                             ; No predecessors!
  br label %1246

1246:                                             ; preds = %1245
  br label %1247

1247:                                             ; preds = %1246, %1189
  br label %1248

1248:                                             ; preds = %1247
  br label %1249

1249:                                             ; preds = %1248
  %1250 = load ptr, ptr %14, align 8, !tbaa !9
  %1251 = getelementptr inbounds %struct.s2n_connection, ptr %1250, i32 0, i32 89
  store i32 4, ptr %1251, align 8, !tbaa !56
  br label %1252

1252:                                             ; preds = %1249
  %1253 = load i32, ptr @test_count, align 4, !tbaa !5
  %1254 = add nsw i32 %1253, 1
  store i32 %1254, ptr @test_count, align 4, !tbaa !5
  %1255 = load ptr, ptr %14, align 8, !tbaa !9
  %1256 = call i32 @s2n_handshake_read_io(ptr noundef %1255)
  %1257 = icmp eq i32 %1256, -1
  br i1 %1257, label %1258, label %1311

1258:                                             ; preds = %1252
  br label %1259

1259:                                             ; preds = %1258
  br label %1260

1260:                                             ; preds = %1259
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  %1261 = call ptr @__errno_location() #11
  %1262 = load i32, ptr %1261, align 4, !tbaa !5
  store i32 %1262, ptr %33, align 4, !tbaa !5
  %1263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1264 = call i32 @s2n_print_stacktrace(ptr noundef %1263)
  %1265 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1266 = trunc i8 %1265 to i1
  br i1 %1266, label %1267, label %1289

1267:                                             ; preds = %1260
  %1268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1269 = call i32 @fileno(ptr noundef %1268) #10
  %1270 = call i32 @isatty(i32 noundef %1269) #10
  %1271 = icmp ne i32 %1270, 0
  br i1 %1271, label %1272, label %1289

1272:                                             ; preds = %1267
  %1273 = load i32, ptr %33, align 4, !tbaa !5
  %1274 = call ptr @__errno_location() #11
  store i32 %1273, ptr %1274, align 4, !tbaa !5
  %1275 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1276 = load i32, ptr @test_count, align 4, !tbaa !5
  %1277 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1278 = load i32, ptr %1277, align 4, !tbaa !5
  %1279 = call ptr @s2n_strerror(i32 noundef %1278, ptr noundef @.str.24)
  %1280 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1281 = load i32, ptr %1280, align 4, !tbaa !5
  %1282 = call ptr @s2n_strerror_debug(i32 noundef %1281, ptr noundef @.str.24)
  %1283 = call ptr @__errno_location() #11
  %1284 = load i32, ptr %1283, align 4, !tbaa !5
  %1285 = call ptr @strerror(i32 noundef %1284) #10
  %1286 = call ptr @__errno_location() #11
  %1287 = load i32, ptr %1286, align 4, !tbaa !5
  %1288 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1275, ptr noundef @.str.22, i32 noundef %1276, ptr noundef @.str.38, ptr noundef @.str.21, i32 noundef 94, ptr noundef %1279, ptr noundef %1282, ptr noundef %1285, i32 noundef %1287) #10
  br label %1306

1289:                                             ; preds = %1267, %1260
  %1290 = load i32, ptr %33, align 4, !tbaa !5
  %1291 = call ptr @__errno_location() #11
  store i32 %1290, ptr %1291, align 4, !tbaa !5
  %1292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1293 = load i32, ptr @test_count, align 4, !tbaa !5
  %1294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1295 = load i32, ptr %1294, align 4, !tbaa !5
  %1296 = call ptr @s2n_strerror(i32 noundef %1295, ptr noundef @.str.24)
  %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_debug(i32 noundef %1298, ptr noundef @.str.24)
  %1300 = call ptr @__errno_location() #11
  %1301 = load i32, ptr %1300, align 4, !tbaa !5
  %1302 = call ptr @strerror(i32 noundef %1301) #10
  %1303 = call ptr @__errno_location() #11
  %1304 = load i32, ptr %1303, align 4, !tbaa !5
  %1305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1292, ptr noundef @.str.25, i32 noundef %1293, ptr noundef @.str.38, ptr noundef @.str.21, i32 noundef 94, ptr noundef %1296, ptr noundef %1299, ptr noundef %1302, i32 noundef %1304) #10
  br label %1306

1306:                                             ; preds = %1289, %1272
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %1307

1307:                                             ; preds = %1306
  br label %1308

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

1309:                                             ; No predecessors!
  br label %1310

1310:                                             ; preds = %1309
  br label %1311

1311:                                             ; preds = %1310, %1252
  br label %1312

1312:                                             ; preds = %1311
  br label %1313

1313:                                             ; preds = %1312
  br label %1314

1314:                                             ; preds = %1313
  %1315 = load i32, ptr @test_count, align 4, !tbaa !5
  %1316 = add nsw i32 %1315, 1
  store i32 %1316, ptr @test_count, align 4, !tbaa !5
  %1317 = load ptr, ptr %14, align 8, !tbaa !9
  %1318 = call i32 @s2n_connection_free(ptr noundef %1317)
  %1319 = icmp eq i32 %1318, -1
  br i1 %1319, label %1320, label %1373

1320:                                             ; preds = %1314
  br label %1321

1321:                                             ; preds = %1320
  br label %1322

1322:                                             ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  %1323 = call ptr @__errno_location() #11
  %1324 = load i32, ptr %1323, align 4, !tbaa !5
  store i32 %1324, ptr %34, align 4, !tbaa !5
  %1325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1326 = call i32 @s2n_print_stacktrace(ptr noundef %1325)
  %1327 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1328 = trunc i8 %1327 to i1
  br i1 %1328, label %1329, label %1351

1329:                                             ; preds = %1322
  %1330 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1331 = call i32 @fileno(ptr noundef %1330) #10
  %1332 = call i32 @isatty(i32 noundef %1331) #10
  %1333 = icmp ne i32 %1332, 0
  br i1 %1333, label %1334, label %1351

1334:                                             ; preds = %1329
  %1335 = load i32, ptr %34, align 4, !tbaa !5
  %1336 = call ptr @__errno_location() #11
  store i32 %1335, ptr %1336, align 4, !tbaa !5
  %1337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1338 = load i32, ptr @test_count, align 4, !tbaa !5
  %1339 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1340 = load i32, ptr %1339, align 4, !tbaa !5
  %1341 = call ptr @s2n_strerror(i32 noundef %1340, ptr noundef @.str.24)
  %1342 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1343 = load i32, ptr %1342, align 4, !tbaa !5
  %1344 = call ptr @s2n_strerror_debug(i32 noundef %1343, ptr noundef @.str.24)
  %1345 = call ptr @__errno_location() #11
  %1346 = load i32, ptr %1345, align 4, !tbaa !5
  %1347 = call ptr @strerror(i32 noundef %1346) #10
  %1348 = call ptr @__errno_location() #11
  %1349 = load i32, ptr %1348, align 4, !tbaa !5
  %1350 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1337, ptr noundef @.str.22, i32 noundef %1338, ptr noundef @.str.39, ptr noundef @.str.21, i32 noundef 97, ptr noundef %1341, ptr noundef %1344, ptr noundef %1347, i32 noundef %1349) #10
  br label %1368

1351:                                             ; preds = %1329, %1322
  %1352 = load i32, ptr %34, align 4, !tbaa !5
  %1353 = call ptr @__errno_location() #11
  store i32 %1352, ptr %1353, align 4, !tbaa !5
  %1354 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1355 = load i32, ptr @test_count, align 4, !tbaa !5
  %1356 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1357 = load i32, ptr %1356, align 4, !tbaa !5
  %1358 = call ptr @s2n_strerror(i32 noundef %1357, ptr noundef @.str.24)
  %1359 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1360 = load i32, ptr %1359, align 4, !tbaa !5
  %1361 = call ptr @s2n_strerror_debug(i32 noundef %1360, ptr noundef @.str.24)
  %1362 = call ptr @__errno_location() #11
  %1363 = load i32, ptr %1362, align 4, !tbaa !5
  %1364 = call ptr @strerror(i32 noundef %1363) #10
  %1365 = call ptr @__errno_location() #11
  %1366 = load i32, ptr %1365, align 4, !tbaa !5
  %1367 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1354, ptr noundef @.str.25, i32 noundef %1355, ptr noundef @.str.39, ptr noundef @.str.21, i32 noundef 97, ptr noundef %1358, ptr noundef %1361, ptr noundef %1364, i32 noundef %1366) #10
  br label %1368

1368:                                             ; preds = %1351, %1334
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %1369

1369:                                             ; preds = %1368
  br label %1370

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

1371:                                             ; No predecessors!
  br label %1372

1372:                                             ; preds = %1371
  br label %1373

1373:                                             ; preds = %1372, %1314
  br label %1374

1374:                                             ; preds = %1373
  br label %1375

1375:                                             ; preds = %1374
  %1376 = call i32 @s2n_stuffer_free(ptr noundef %20)
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #10
  store i32 0, ptr %18, align 4
  br label %1377

1377:                                             ; preds = %1375, %473, %448
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  %1378 = load i32, ptr %18, align 4
  switch i32 %1378, label %2169 [
    i32 0, label %1379
  ]

1379:                                             ; preds = %1377
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %1380 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %1380, ptr %35, align 8, !tbaa !9
  br label %1381

1381:                                             ; preds = %1379
  %1382 = load i32, ptr @test_count, align 4, !tbaa !5
  %1383 = add nsw i32 %1382, 1
  store i32 %1383, ptr @test_count, align 4, !tbaa !5
  %1384 = load ptr, ptr %35, align 8, !tbaa !9
  %1385 = icmp eq ptr %1384, null
  br i1 %1385, label %1386, label %1439

1386:                                             ; preds = %1381
  br label %1387

1387:                                             ; preds = %1386
  br label %1388

1388:                                             ; preds = %1387
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  %1389 = call ptr @__errno_location() #11
  %1390 = load i32, ptr %1389, align 4, !tbaa !5
  store i32 %1390, ptr %36, align 4, !tbaa !5
  %1391 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1392 = call i32 @s2n_print_stacktrace(ptr noundef %1391)
  %1393 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1394 = trunc i8 %1393 to i1
  br i1 %1394, label %1395, label %1417

1395:                                             ; preds = %1388
  %1396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1397 = call i32 @fileno(ptr noundef %1396) #10
  %1398 = call i32 @isatty(i32 noundef %1397) #10
  %1399 = icmp ne i32 %1398, 0
  br i1 %1399, label %1400, label %1417

1400:                                             ; preds = %1395
  %1401 = load i32, ptr %36, align 4, !tbaa !5
  %1402 = call ptr @__errno_location() #11
  store i32 %1401, ptr %1402, align 4, !tbaa !5
  %1403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1404 = load i32, ptr @test_count, align 4, !tbaa !5
  %1405 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1406 = load i32, ptr %1405, align 4, !tbaa !5
  %1407 = call ptr @s2n_strerror(i32 noundef %1406, ptr noundef @.str.24)
  %1408 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1409 = load i32, ptr %1408, align 4, !tbaa !5
  %1410 = call ptr @s2n_strerror_debug(i32 noundef %1409, ptr noundef @.str.24)
  %1411 = call ptr @__errno_location() #11
  %1412 = load i32, ptr %1411, align 4, !tbaa !5
  %1413 = call ptr @strerror(i32 noundef %1412) #10
  %1414 = call ptr @__errno_location() #11
  %1415 = load i32, ptr %1414, align 4, !tbaa !5
  %1416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1403, ptr noundef @.str.22, i32 noundef %1404, ptr noundef @.str.40, ptr noundef @.str.21, i32 noundef 106, ptr noundef %1407, ptr noundef %1410, ptr noundef %1413, i32 noundef %1415) #10
  br label %1434

1417:                                             ; preds = %1395, %1388
  %1418 = load i32, ptr %36, align 4, !tbaa !5
  %1419 = call ptr @__errno_location() #11
  store i32 %1418, ptr %1419, align 4, !tbaa !5
  %1420 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1421 = load i32, ptr @test_count, align 4, !tbaa !5
  %1422 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1423 = load i32, ptr %1422, align 4, !tbaa !5
  %1424 = call ptr @s2n_strerror(i32 noundef %1423, ptr noundef @.str.24)
  %1425 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1426 = load i32, ptr %1425, align 4, !tbaa !5
  %1427 = call ptr @s2n_strerror_debug(i32 noundef %1426, ptr noundef @.str.24)
  %1428 = call ptr @__errno_location() #11
  %1429 = load i32, ptr %1428, align 4, !tbaa !5
  %1430 = call ptr @strerror(i32 noundef %1429) #10
  %1431 = call ptr @__errno_location() #11
  %1432 = load i32, ptr %1431, align 4, !tbaa !5
  %1433 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1420, ptr noundef @.str.25, i32 noundef %1421, ptr noundef @.str.40, ptr noundef @.str.21, i32 noundef 106, ptr noundef %1424, ptr noundef %1427, ptr noundef %1430, i32 noundef %1432) #10
  br label %1434

1434:                                             ; preds = %1417, %1400
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %1435

1435:                                             ; preds = %1434
  br label %1436

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

1437:                                             ; No predecessors!
  br label %1438

1438:                                             ; preds = %1437
  br label %1439

1439:                                             ; preds = %1438, %1381
  br label %1440

1440:                                             ; preds = %1439
  br label %1441

1441:                                             ; preds = %1440
  br label %1442

1442:                                             ; preds = %1441
  %1443 = load i32, ptr @test_count, align 4, !tbaa !5
  %1444 = add nsw i32 %1443, 1
  store i32 %1444, ptr @test_count, align 4, !tbaa !5
  %1445 = load ptr, ptr %35, align 8, !tbaa !9
  %1446 = call i32 @s2n_connection_set_blinding(ptr noundef %1445, i32 noundef 1)
  %1447 = icmp eq i32 %1446, -1
  br i1 %1447, label %1448, label %1501

1448:                                             ; preds = %1442
  br label %1449

1449:                                             ; preds = %1448
  br label %1450

1450:                                             ; preds = %1449
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  %1451 = call ptr @__errno_location() #11
  %1452 = load i32, ptr %1451, align 4, !tbaa !5
  store i32 %1452, ptr %37, align 4, !tbaa !5
  %1453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1454 = call i32 @s2n_print_stacktrace(ptr noundef %1453)
  %1455 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1456 = trunc i8 %1455 to i1
  br i1 %1456, label %1457, label %1479

1457:                                             ; preds = %1450
  %1458 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1459 = call i32 @fileno(ptr noundef %1458) #10
  %1460 = call i32 @isatty(i32 noundef %1459) #10
  %1461 = icmp ne i32 %1460, 0
  br i1 %1461, label %1462, label %1479

1462:                                             ; preds = %1457
  %1463 = load i32, ptr %37, align 4, !tbaa !5
  %1464 = call ptr @__errno_location() #11
  store i32 %1463, ptr %1464, align 4, !tbaa !5
  %1465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1466 = load i32, ptr @test_count, align 4, !tbaa !5
  %1467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1468 = load i32, ptr %1467, align 4, !tbaa !5
  %1469 = call ptr @s2n_strerror(i32 noundef %1468, ptr noundef @.str.24)
  %1470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1471 = load i32, ptr %1470, align 4, !tbaa !5
  %1472 = call ptr @s2n_strerror_debug(i32 noundef %1471, ptr noundef @.str.24)
  %1473 = call ptr @__errno_location() #11
  %1474 = load i32, ptr %1473, align 4, !tbaa !5
  %1475 = call ptr @strerror(i32 noundef %1474) #10
  %1476 = call ptr @__errno_location() #11
  %1477 = load i32, ptr %1476, align 4, !tbaa !5
  %1478 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1465, ptr noundef @.str.22, i32 noundef %1466, ptr noundef @.str.41, ptr noundef @.str.21, i32 noundef 107, ptr noundef %1469, ptr noundef %1472, ptr noundef %1475, i32 noundef %1477) #10
  br label %1496

1479:                                             ; preds = %1457, %1450
  %1480 = load i32, ptr %37, align 4, !tbaa !5
  %1481 = call ptr @__errno_location() #11
  store i32 %1480, ptr %1481, align 4, !tbaa !5
  %1482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1483 = load i32, ptr @test_count, align 4, !tbaa !5
  %1484 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1485 = load i32, ptr %1484, align 4, !tbaa !5
  %1486 = call ptr @s2n_strerror(i32 noundef %1485, ptr noundef @.str.24)
  %1487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1488 = load i32, ptr %1487, align 4, !tbaa !5
  %1489 = call ptr @s2n_strerror_debug(i32 noundef %1488, ptr noundef @.str.24)
  %1490 = call ptr @__errno_location() #11
  %1491 = load i32, ptr %1490, align 4, !tbaa !5
  %1492 = call ptr @strerror(i32 noundef %1491) #10
  %1493 = call ptr @__errno_location() #11
  %1494 = load i32, ptr %1493, align 4, !tbaa !5
  %1495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1482, ptr noundef @.str.25, i32 noundef %1483, ptr noundef @.str.41, ptr noundef @.str.21, i32 noundef 107, ptr noundef %1486, ptr noundef %1489, ptr noundef %1492, i32 noundef %1494) #10
  br label %1496

1496:                                             ; preds = %1479, %1462
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %1497

1497:                                             ; preds = %1496
  br label %1498

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

1499:                                             ; No predecessors!
  br label %1500

1500:                                             ; preds = %1499
  br label %1501

1501:                                             ; preds = %1500, %1442
  br label %1502

1502:                                             ; preds = %1501
  br label %1503

1503:                                             ; preds = %1502
  %1504 = load ptr, ptr %10, align 8, !tbaa !9
  %1505 = load ptr, ptr %35, align 8, !tbaa !9
  %1506 = getelementptr inbounds %struct.s2n_connection, ptr %1505, i32 0, i32 27
  %1507 = load ptr, ptr %1506, align 8, !tbaa !22
  %1508 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1507, i32 0, i32 0
  store ptr %1504, ptr %1508, align 8, !tbaa !48
  br label %1509

1509:                                             ; preds = %1503
  %1510 = load ptr, ptr %35, align 8, !tbaa !9
  %1511 = getelementptr inbounds %struct.s2n_connection, ptr %1510, i32 0, i32 27
  %1512 = load ptr, ptr %1511, align 8, !tbaa !22
  %1513 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1512, i32 0, i32 0
  %1514 = load ptr, ptr %1513, align 8, !tbaa !48
  %1515 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %1514, i32 0, i32 6
  %1516 = load ptr, ptr %1515, align 8, !tbaa !15
  %1517 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %1516, i32 0, i32 0
  %1518 = load ptr, ptr %1517, align 8, !tbaa !17
  %1519 = getelementptr inbounds %struct.s2n_cipher, ptr %1518, i32 0, i32 4
  %1520 = load ptr, ptr %1519, align 8, !tbaa !53
  %1521 = load ptr, ptr %35, align 8, !tbaa !9
  %1522 = getelementptr inbounds %struct.s2n_connection, ptr %1521, i32 0, i32 27
  %1523 = load ptr, ptr %1522, align 8, !tbaa !22
  %1524 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1523, i32 0, i32 2
  %1525 = call i32 %1520(ptr noundef %1524)
  %1526 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  store i32 %1525, ptr %1526, align 4
  %1527 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  %1528 = load i32, ptr %1527, align 4
  %1529 = call zeroext i1 @s2n_result_is_ok(i32 %1528)
  br i1 %1529, label %1531, label %1530

1530:                                             ; preds = %1509
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %2012

1531:                                             ; preds = %1509
  br label %1532

1532:                                             ; preds = %1531
  br label %1533

1533:                                             ; preds = %1532
  br label %1534

1534:                                             ; preds = %1533
  %1535 = load ptr, ptr %35, align 8, !tbaa !9
  %1536 = getelementptr inbounds %struct.s2n_connection, ptr %1535, i32 0, i32 27
  %1537 = load ptr, ptr %1536, align 8, !tbaa !22
  %1538 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1537, i32 0, i32 0
  %1539 = load ptr, ptr %1538, align 8, !tbaa !48
  %1540 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %1539, i32 0, i32 6
  %1541 = load ptr, ptr %1540, align 8, !tbaa !15
  %1542 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %1541, i32 0, i32 0
  %1543 = load ptr, ptr %1542, align 8, !tbaa !17
  %1544 = getelementptr inbounds %struct.s2n_cipher, ptr %1543, i32 0, i32 5
  %1545 = load ptr, ptr %1544, align 8, !tbaa !54
  %1546 = load ptr, ptr %35, align 8, !tbaa !9
  %1547 = getelementptr inbounds %struct.s2n_connection, ptr %1546, i32 0, i32 27
  %1548 = load ptr, ptr %1547, align 8, !tbaa !22
  %1549 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1548, i32 0, i32 2
  %1550 = call i32 %1545(ptr noundef %1549, ptr noundef %12)
  %1551 = getelementptr inbounds %struct.s2n_result, ptr %39, i32 0, i32 0
  store i32 %1550, ptr %1551, align 4
  %1552 = getelementptr inbounds %struct.s2n_result, ptr %39, i32 0, i32 0
  %1553 = load i32, ptr %1552, align 4
  %1554 = call zeroext i1 @s2n_result_is_ok(i32 %1553)
  br i1 %1554, label %1556, label %1555

1555:                                             ; preds = %1534
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %2012

1556:                                             ; preds = %1534
  br label %1557

1557:                                             ; preds = %1556
  br label %1558

1558:                                             ; preds = %1557
  %1559 = load ptr, ptr %35, align 8, !tbaa !9
  %1560 = getelementptr inbounds %struct.s2n_connection, ptr %1559, i32 0, i32 27
  %1561 = load ptr, ptr %1560, align 8, !tbaa !22
  %1562 = load ptr, ptr %35, align 8, !tbaa !9
  %1563 = getelementptr inbounds %struct.s2n_connection, ptr %1562, i32 0, i32 30
  store ptr %1561, ptr %1563, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 40, ptr %40) #10
  call void @llvm.memset.p0.i64(ptr align 8 %40, i8 0, i64 40, i1 false)
  br label %1564

1564:                                             ; preds = %1558
  %1565 = load i32, ptr @test_count, align 4, !tbaa !5
  %1566 = add nsw i32 %1565, 1
  store i32 %1566, ptr @test_count, align 4, !tbaa !5
  %1567 = call i32 @s2n_stuffer_growable_alloc(ptr noundef %40, i32 noundef 8092)
  %1568 = icmp eq i32 %1567, -1
  br i1 %1568, label %1569, label %1622

1569:                                             ; preds = %1564
  br label %1570

1570:                                             ; preds = %1569
  br label %1571

1571:                                             ; preds = %1570
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  %1572 = call ptr @__errno_location() #11
  %1573 = load i32, ptr %1572, align 4, !tbaa !5
  store i32 %1573, ptr %41, align 4, !tbaa !5
  %1574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1575 = call i32 @s2n_print_stacktrace(ptr noundef %1574)
  %1576 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1577 = trunc i8 %1576 to i1
  br i1 %1577, label %1578, label %1600

1578:                                             ; preds = %1571
  %1579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1580 = call i32 @fileno(ptr noundef %1579) #10
  %1581 = call i32 @isatty(i32 noundef %1580) #10
  %1582 = icmp ne i32 %1581, 0
  br i1 %1582, label %1583, label %1600

1583:                                             ; preds = %1578
  %1584 = load i32, ptr %41, align 4, !tbaa !5
  %1585 = call ptr @__errno_location() #11
  store i32 %1584, ptr %1585, align 4, !tbaa !5
  %1586 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1587 = load i32, ptr @test_count, align 4, !tbaa !5
  %1588 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1589 = load i32, ptr %1588, align 4, !tbaa !5
  %1590 = call ptr @s2n_strerror(i32 noundef %1589, ptr noundef @.str.24)
  %1591 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1592 = load i32, ptr %1591, align 4, !tbaa !5
  %1593 = call ptr @s2n_strerror_debug(i32 noundef %1592, ptr noundef @.str.24)
  %1594 = call ptr @__errno_location() #11
  %1595 = load i32, ptr %1594, align 4, !tbaa !5
  %1596 = call ptr @strerror(i32 noundef %1595) #10
  %1597 = call ptr @__errno_location() #11
  %1598 = load i32, ptr %1597, align 4, !tbaa !5
  %1599 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1586, ptr noundef @.str.22, i32 noundef %1587, ptr noundef @.str.31, ptr noundef @.str.21, i32 noundef 115, ptr noundef %1590, ptr noundef %1593, ptr noundef %1596, i32 noundef %1598) #10
  br label %1617

1600:                                             ; preds = %1578, %1571
  %1601 = load i32, ptr %41, align 4, !tbaa !5
  %1602 = call ptr @__errno_location() #11
  store i32 %1601, ptr %1602, align 4, !tbaa !5
  %1603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1604 = load i32, ptr @test_count, align 4, !tbaa !5
  %1605 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1606 = load i32, ptr %1605, align 4, !tbaa !5
  %1607 = call ptr @s2n_strerror(i32 noundef %1606, ptr noundef @.str.24)
  %1608 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1609 = load i32, ptr %1608, align 4, !tbaa !5
  %1610 = call ptr @s2n_strerror_debug(i32 noundef %1609, ptr noundef @.str.24)
  %1611 = call ptr @__errno_location() #11
  %1612 = load i32, ptr %1611, align 4, !tbaa !5
  %1613 = call ptr @strerror(i32 noundef %1612) #10
  %1614 = call ptr @__errno_location() #11
  %1615 = load i32, ptr %1614, align 4, !tbaa !5
  %1616 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1603, ptr noundef @.str.25, i32 noundef %1604, ptr noundef @.str.31, ptr noundef @.str.21, i32 noundef 115, ptr noundef %1607, ptr noundef %1610, ptr noundef %1613, i32 noundef %1615) #10
  br label %1617

1617:                                             ; preds = %1600, %1583
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %1618

1618:                                             ; preds = %1617
  br label %1619

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

1620:                                             ; No predecessors!
  br label %1621

1621:                                             ; preds = %1620
  br label %1622

1622:                                             ; preds = %1621, %1564
  br label %1623

1623:                                             ; preds = %1622
  br label %1624

1624:                                             ; preds = %1623
  br label %1625

1625:                                             ; preds = %1624
  %1626 = load i32, ptr @test_count, align 4, !tbaa !5
  %1627 = add nsw i32 %1626, 1
  store i32 %1627, ptr @test_count, align 4, !tbaa !5
  %1628 = load ptr, ptr %35, align 8, !tbaa !9
  %1629 = call i32 @s2n_connection_set_io_stuffers(ptr noundef %40, ptr noundef %40, ptr noundef %1628)
  %1630 = icmp eq i32 %1629, -1
  br i1 %1630, label %1631, label %1684

1631:                                             ; preds = %1625
  br label %1632

1632:                                             ; preds = %1631
  br label %1633

1633:                                             ; preds = %1632
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  %1634 = call ptr @__errno_location() #11
  %1635 = load i32, ptr %1634, align 4, !tbaa !5
  store i32 %1635, ptr %42, align 4, !tbaa !5
  %1636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1637 = call i32 @s2n_print_stacktrace(ptr noundef %1636)
  %1638 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1639 = trunc i8 %1638 to i1
  br i1 %1639, label %1640, label %1662

1640:                                             ; preds = %1633
  %1641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1642 = call i32 @fileno(ptr noundef %1641) #10
  %1643 = call i32 @isatty(i32 noundef %1642) #10
  %1644 = icmp ne i32 %1643, 0
  br i1 %1644, label %1645, label %1662

1645:                                             ; preds = %1640
  %1646 = load i32, ptr %42, align 4, !tbaa !5
  %1647 = call ptr @__errno_location() #11
  store i32 %1646, ptr %1647, align 4, !tbaa !5
  %1648 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1649 = load i32, ptr @test_count, align 4, !tbaa !5
  %1650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1651 = load i32, ptr %1650, align 4, !tbaa !5
  %1652 = call ptr @s2n_strerror(i32 noundef %1651, ptr noundef @.str.24)
  %1653 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1654 = load i32, ptr %1653, align 4, !tbaa !5
  %1655 = call ptr @s2n_strerror_debug(i32 noundef %1654, ptr noundef @.str.24)
  %1656 = call ptr @__errno_location() #11
  %1657 = load i32, ptr %1656, align 4, !tbaa !5
  %1658 = call ptr @strerror(i32 noundef %1657) #10
  %1659 = call ptr @__errno_location() #11
  %1660 = load i32, ptr %1659, align 4, !tbaa !5
  %1661 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1648, ptr noundef @.str.22, i32 noundef %1649, ptr noundef @.str.42, ptr noundef @.str.21, i32 noundef 116, ptr noundef %1652, ptr noundef %1655, ptr noundef %1658, i32 noundef %1660) #10
  br label %1679

1662:                                             ; preds = %1640, %1633
  %1663 = load i32, ptr %42, align 4, !tbaa !5
  %1664 = call ptr @__errno_location() #11
  store i32 %1663, ptr %1664, align 4, !tbaa !5
  %1665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1666 = load i32, ptr @test_count, align 4, !tbaa !5
  %1667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1668 = load i32, ptr %1667, align 4, !tbaa !5
  %1669 = call ptr @s2n_strerror(i32 noundef %1668, ptr noundef @.str.24)
  %1670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1671 = load i32, ptr %1670, align 4, !tbaa !5
  %1672 = call ptr @s2n_strerror_debug(i32 noundef %1671, ptr noundef @.str.24)
  %1673 = call ptr @__errno_location() #11
  %1674 = load i32, ptr %1673, align 4, !tbaa !5
  %1675 = call ptr @strerror(i32 noundef %1674) #10
  %1676 = call ptr @__errno_location() #11
  %1677 = load i32, ptr %1676, align 4, !tbaa !5
  %1678 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1665, ptr noundef @.str.25, i32 noundef %1666, ptr noundef @.str.42, ptr noundef @.str.21, i32 noundef 116, ptr noundef %1669, ptr noundef %1672, ptr noundef %1675, i32 noundef %1677) #10
  br label %1679

1679:                                             ; preds = %1662, %1645
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %1680

1680:                                             ; preds = %1679
  br label %1681

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

1682:                                             ; No predecessors!
  br label %1683

1683:                                             ; preds = %1682
  br label %1684

1684:                                             ; preds = %1683, %1625
  br label %1685

1685:                                             ; preds = %1684
  br label %1686

1686:                                             ; preds = %1685
  br label %1687

1687:                                             ; preds = %1686
  %1688 = load i32, ptr @test_count, align 4, !tbaa !5
  %1689 = add nsw i32 %1688, 1
  store i32 %1689, ptr @test_count, align 4, !tbaa !5
  %1690 = getelementptr inbounds [21 x i8], ptr %9, i64 0, i64 0
  %1691 = call i32 @s2n_stuffer_write_bytes(ptr noundef %40, ptr noundef %1690, i32 noundef 21)
  %1692 = icmp eq i32 %1691, -1
  br i1 %1692, label %1693, label %1746

1693:                                             ; preds = %1687
  br label %1694

1694:                                             ; preds = %1693
  br label %1695

1695:                                             ; preds = %1694
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %1696 = call ptr @__errno_location() #11
  %1697 = load i32, ptr %1696, align 4, !tbaa !5
  store i32 %1697, ptr %43, align 4, !tbaa !5
  %1698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1699 = call i32 @s2n_print_stacktrace(ptr noundef %1698)
  %1700 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1701 = trunc i8 %1700 to i1
  br i1 %1701, label %1702, label %1724

1702:                                             ; preds = %1695
  %1703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1704 = call i32 @fileno(ptr noundef %1703) #10
  %1705 = call i32 @isatty(i32 noundef %1704) #10
  %1706 = icmp ne i32 %1705, 0
  br i1 %1706, label %1707, label %1724

1707:                                             ; preds = %1702
  %1708 = load i32, ptr %43, align 4, !tbaa !5
  %1709 = call ptr @__errno_location() #11
  store i32 %1708, ptr %1709, align 4, !tbaa !5
  %1710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1711 = load i32, ptr @test_count, align 4, !tbaa !5
  %1712 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1713 = load i32, ptr %1712, align 4, !tbaa !5
  %1714 = call ptr @s2n_strerror(i32 noundef %1713, ptr noundef @.str.24)
  %1715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1716 = load i32, ptr %1715, align 4, !tbaa !5
  %1717 = call ptr @s2n_strerror_debug(i32 noundef %1716, ptr noundef @.str.24)
  %1718 = call ptr @__errno_location() #11
  %1719 = load i32, ptr %1718, align 4, !tbaa !5
  %1720 = call ptr @strerror(i32 noundef %1719) #10
  %1721 = call ptr @__errno_location() #11
  %1722 = load i32, ptr %1721, align 4, !tbaa !5
  %1723 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1710, ptr noundef @.str.22, i32 noundef %1711, ptr noundef @.str.33, ptr noundef @.str.21, i32 noundef 118, ptr noundef %1714, ptr noundef %1717, ptr noundef %1720, i32 noundef %1722) #10
  br label %1741

1724:                                             ; preds = %1702, %1695
  %1725 = load i32, ptr %43, align 4, !tbaa !5
  %1726 = call ptr @__errno_location() #11
  store i32 %1725, ptr %1726, align 4, !tbaa !5
  %1727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1728 = load i32, ptr @test_count, align 4, !tbaa !5
  %1729 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1730 = load i32, ptr %1729, align 4, !tbaa !5
  %1731 = call ptr @s2n_strerror(i32 noundef %1730, ptr noundef @.str.24)
  %1732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1733 = load i32, ptr %1732, align 4, !tbaa !5
  %1734 = call ptr @s2n_strerror_debug(i32 noundef %1733, ptr noundef @.str.24)
  %1735 = call ptr @__errno_location() #11
  %1736 = load i32, ptr %1735, align 4, !tbaa !5
  %1737 = call ptr @strerror(i32 noundef %1736) #10
  %1738 = call ptr @__errno_location() #11
  %1739 = load i32, ptr %1738, align 4, !tbaa !5
  %1740 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1727, ptr noundef @.str.25, i32 noundef %1728, ptr noundef @.str.33, ptr noundef @.str.21, i32 noundef 118, ptr noundef %1731, ptr noundef %1734, ptr noundef %1737, i32 noundef %1739) #10
  br label %1741

1741:                                             ; preds = %1724, %1707
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %1742

1742:                                             ; preds = %1741
  br label %1743

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

1744:                                             ; No predecessors!
  br label %1745

1745:                                             ; preds = %1744
  br label %1746

1746:                                             ; preds = %1745, %1687
  br label %1747

1747:                                             ; preds = %1746
  br label %1748

1748:                                             ; preds = %1747
  %1749 = load ptr, ptr %35, align 8, !tbaa !9
  %1750 = getelementptr inbounds %struct.s2n_connection, ptr %1749, i32 0, i32 89
  store i32 4, ptr %1750, align 8, !tbaa !56
  br label %1751

1751:                                             ; preds = %1748
  br label %1752

1752:                                             ; preds = %1751
  br label %1753

1753:                                             ; preds = %1752
  %1754 = load i32, ptr @test_count, align 4, !tbaa !5
  %1755 = add nsw i32 %1754, 1
  store i32 %1755, ptr @test_count, align 4, !tbaa !5
  %1756 = load ptr, ptr %35, align 8, !tbaa !9
  %1757 = call i32 @s2n_handshake_read_io(ptr noundef %1756)
  %1758 = icmp eq i32 %1757, -1
  br i1 %1758, label %1812, label %1759

1759:                                             ; preds = %1753
  br label %1760

1760:                                             ; preds = %1759
  br label %1761

1761:                                             ; preds = %1760
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  %1762 = call ptr @__errno_location() #11
  %1763 = load i32, ptr %1762, align 4, !tbaa !5
  store i32 %1763, ptr %44, align 4, !tbaa !5
  %1764 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1765 = call i32 @s2n_print_stacktrace(ptr noundef %1764)
  %1766 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1767 = trunc i8 %1766 to i1
  br i1 %1767, label %1768, label %1790

1768:                                             ; preds = %1761
  %1769 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1770 = call i32 @fileno(ptr noundef %1769) #10
  %1771 = call i32 @isatty(i32 noundef %1770) #10
  %1772 = icmp ne i32 %1771, 0
  br i1 %1772, label %1773, label %1790

1773:                                             ; preds = %1768
  %1774 = load i32, ptr %44, align 4, !tbaa !5
  %1775 = call ptr @__errno_location() #11
  store i32 %1774, ptr %1775, align 4, !tbaa !5
  %1776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1777 = load i32, ptr @test_count, align 4, !tbaa !5
  %1778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1779 = load i32, ptr %1778, align 4, !tbaa !5
  %1780 = call ptr @s2n_strerror(i32 noundef %1779, ptr noundef @.str.24)
  %1781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1782 = load i32, ptr %1781, align 4, !tbaa !5
  %1783 = call ptr @s2n_strerror_debug(i32 noundef %1782, ptr noundef @.str.24)
  %1784 = call ptr @__errno_location() #11
  %1785 = load i32, ptr %1784, align 4, !tbaa !5
  %1786 = call ptr @strerror(i32 noundef %1785) #10
  %1787 = call ptr @__errno_location() #11
  %1788 = load i32, ptr %1787, align 4, !tbaa !5
  %1789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1776, ptr noundef @.str.22, i32 noundef %1777, ptr noundef @.str.43, ptr noundef @.str.21, i32 noundef 121, ptr noundef %1780, ptr noundef %1783, ptr noundef %1786, i32 noundef %1788) #10
  br label %1807

1790:                                             ; preds = %1768, %1761
  %1791 = load i32, ptr %44, align 4, !tbaa !5
  %1792 = call ptr @__errno_location() #11
  store i32 %1791, ptr %1792, align 4, !tbaa !5
  %1793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1794 = load i32, ptr @test_count, align 4, !tbaa !5
  %1795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1796 = load i32, ptr %1795, align 4, !tbaa !5
  %1797 = call ptr @s2n_strerror(i32 noundef %1796, ptr noundef @.str.24)
  %1798 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1799 = load i32, ptr %1798, align 4, !tbaa !5
  %1800 = call ptr @s2n_strerror_debug(i32 noundef %1799, ptr noundef @.str.24)
  %1801 = call ptr @__errno_location() #11
  %1802 = load i32, ptr %1801, align 4, !tbaa !5
  %1803 = call ptr @strerror(i32 noundef %1802) #10
  %1804 = call ptr @__errno_location() #11
  %1805 = load i32, ptr %1804, align 4, !tbaa !5
  %1806 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1793, ptr noundef @.str.25, i32 noundef %1794, ptr noundef @.str.43, ptr noundef @.str.21, i32 noundef 121, ptr noundef %1797, ptr noundef %1800, ptr noundef %1803, i32 noundef %1805) #10
  br label %1807

1807:                                             ; preds = %1790, %1773
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %1808

1808:                                             ; preds = %1807
  br label %1809

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

1810:                                             ; No predecessors!
  br label %1811

1811:                                             ; preds = %1810
  br label %1812

1812:                                             ; preds = %1811, %1753
  br label %1813

1813:                                             ; preds = %1812
  br label %1814

1814:                                             ; preds = %1813
  br label %1815

1815:                                             ; preds = %1814
  %1816 = load i32, ptr @test_count, align 4, !tbaa !5
  %1817 = add nsw i32 %1816, 1
  store i32 %1817, ptr @test_count, align 4, !tbaa !5
  %1818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1819 = load i32, ptr %1818, align 4, !tbaa !5
  %1820 = icmp eq i32 %1819, 335544321
  br i1 %1820, label %1874, label %1821

1821:                                             ; preds = %1815
  br label %1822

1822:                                             ; preds = %1821
  br label %1823

1823:                                             ; preds = %1822
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  %1824 = call ptr @__errno_location() #11
  %1825 = load i32, ptr %1824, align 4, !tbaa !5
  store i32 %1825, ptr %45, align 4, !tbaa !5
  %1826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1827 = call i32 @s2n_print_stacktrace(ptr noundef %1826)
  %1828 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1829 = trunc i8 %1828 to i1
  br i1 %1829, label %1830, label %1852

1830:                                             ; preds = %1823
  %1831 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1832 = call i32 @fileno(ptr noundef %1831) #10
  %1833 = call i32 @isatty(i32 noundef %1832) #10
  %1834 = icmp ne i32 %1833, 0
  br i1 %1834, label %1835, label %1852

1835:                                             ; preds = %1830
  %1836 = load i32, ptr %45, align 4, !tbaa !5
  %1837 = call ptr @__errno_location() #11
  store i32 %1836, ptr %1837, align 4, !tbaa !5
  %1838 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1839 = load i32, ptr @test_count, align 4, !tbaa !5
  %1840 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1841 = load i32, ptr %1840, align 4, !tbaa !5
  %1842 = call ptr @s2n_strerror(i32 noundef %1841, ptr noundef @.str.24)
  %1843 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1844 = load i32, ptr %1843, align 4, !tbaa !5
  %1845 = call ptr @s2n_strerror_debug(i32 noundef %1844, ptr noundef @.str.24)
  %1846 = call ptr @__errno_location() #11
  %1847 = load i32, ptr %1846, align 4, !tbaa !5
  %1848 = call ptr @strerror(i32 noundef %1847) #10
  %1849 = call ptr @__errno_location() #11
  %1850 = load i32, ptr %1849, align 4, !tbaa !5
  %1851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1838, ptr noundef @.str.22, i32 noundef %1839, ptr noundef @.str.36, ptr noundef @.str.21, i32 noundef 121, ptr noundef %1842, ptr noundef %1845, ptr noundef %1848, i32 noundef %1850) #10
  br label %1869

1852:                                             ; preds = %1830, %1823
  %1853 = load i32, ptr %45, align 4, !tbaa !5
  %1854 = call ptr @__errno_location() #11
  store i32 %1853, ptr %1854, align 4, !tbaa !5
  %1855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1856 = load i32, ptr @test_count, align 4, !tbaa !5
  %1857 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1858 = load i32, ptr %1857, align 4, !tbaa !5
  %1859 = call ptr @s2n_strerror(i32 noundef %1858, ptr noundef @.str.24)
  %1860 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1861 = load i32, ptr %1860, align 4, !tbaa !5
  %1862 = call ptr @s2n_strerror_debug(i32 noundef %1861, ptr noundef @.str.24)
  %1863 = call ptr @__errno_location() #11
  %1864 = load i32, ptr %1863, align 4, !tbaa !5
  %1865 = call ptr @strerror(i32 noundef %1864) #10
  %1866 = call ptr @__errno_location() #11
  %1867 = load i32, ptr %1866, align 4, !tbaa !5
  %1868 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1855, ptr noundef @.str.25, i32 noundef %1856, ptr noundef @.str.36, ptr noundef @.str.21, i32 noundef 121, ptr noundef %1859, ptr noundef %1862, ptr noundef %1865, i32 noundef %1867) #10
  br label %1869

1869:                                             ; preds = %1852, %1835
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %1870

1870:                                             ; preds = %1869
  br label %1871

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

1872:                                             ; No predecessors!
  br label %1873

1873:                                             ; preds = %1872
  br label %1874

1874:                                             ; preds = %1873, %1815
  br label %1875

1875:                                             ; preds = %1874
  br label %1876

1876:                                             ; preds = %1875
  br label %1877

1877:                                             ; preds = %1876
  %1878 = load i32, ptr @test_count, align 4, !tbaa !5
  %1879 = add nsw i32 %1878, 1
  store i32 %1879, ptr @test_count, align 4, !tbaa !5
  %1880 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1881 = load i32, ptr %1880, align 4, !tbaa !5
  %1882 = call ptr @s2n_strerror_debug(i32 noundef %1881, ptr noundef @.str.24)
  %1883 = icmp eq ptr %1882, null
  br i1 %1883, label %1884, label %1937

1884:                                             ; preds = %1877
  br label %1885

1885:                                             ; preds = %1884
  br label %1886

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

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

1898:                                             ; preds = %1893
  %1899 = load i32, ptr %46, align 4, !tbaa !5
  %1900 = call ptr @__errno_location() #11
  store i32 %1899, ptr %1900, align 4, !tbaa !5
  %1901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1902 = load i32, ptr @test_count, align 4, !tbaa !5
  %1903 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1904 = load i32, ptr %1903, align 4, !tbaa !5
  %1905 = call ptr @s2n_strerror(i32 noundef %1904, ptr noundef @.str.24)
  %1906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1907 = load i32, ptr %1906, align 4, !tbaa !5
  %1908 = call ptr @s2n_strerror_debug(i32 noundef %1907, ptr noundef @.str.24)
  %1909 = call ptr @__errno_location() #11
  %1910 = load i32, ptr %1909, align 4, !tbaa !5
  %1911 = call ptr @strerror(i32 noundef %1910) #10
  %1912 = call ptr @__errno_location() #11
  %1913 = load i32, ptr %1912, align 4, !tbaa !5
  %1914 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1901, ptr noundef @.str.22, i32 noundef %1902, ptr noundef @.str.37, ptr noundef @.str.21, i32 noundef 121, ptr noundef %1905, ptr noundef %1908, ptr noundef %1911, i32 noundef %1913) #10
  br label %1932

1915:                                             ; preds = %1893, %1886
  %1916 = load i32, ptr %46, align 4, !tbaa !5
  %1917 = call ptr @__errno_location() #11
  store i32 %1916, ptr %1917, align 4, !tbaa !5
  %1918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1919 = load i32, ptr @test_count, align 4, !tbaa !5
  %1920 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1921 = load i32, ptr %1920, align 4, !tbaa !5
  %1922 = call ptr @s2n_strerror(i32 noundef %1921, ptr noundef @.str.24)
  %1923 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1924 = load i32, ptr %1923, align 4, !tbaa !5
  %1925 = call ptr @s2n_strerror_debug(i32 noundef %1924, ptr noundef @.str.24)
  %1926 = call ptr @__errno_location() #11
  %1927 = load i32, ptr %1926, align 4, !tbaa !5
  %1928 = call ptr @strerror(i32 noundef %1927) #10
  %1929 = call ptr @__errno_location() #11
  %1930 = load i32, ptr %1929, align 4, !tbaa !5
  %1931 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1918, ptr noundef @.str.25, i32 noundef %1919, ptr noundef @.str.37, ptr noundef @.str.21, i32 noundef 121, ptr noundef %1922, ptr noundef %1925, ptr noundef %1928, i32 noundef %1930) #10
  br label %1932

1932:                                             ; preds = %1915, %1898
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %1933

1933:                                             ; preds = %1932
  br label %1934

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

1935:                                             ; No predecessors!
  br label %1936

1936:                                             ; preds = %1935
  br label %1937

1937:                                             ; preds = %1936, %1877
  br label %1938

1938:                                             ; preds = %1937
  br label %1939

1939:                                             ; preds = %1938
  br label %1940

1940:                                             ; preds = %1939
  br label %1941

1941:                                             ; preds = %1940
  br label %1942

1942:                                             ; preds = %1941
  %1943 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1943, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1944 = call ptr @__errno_location() #11
  store i32 0, ptr %1944, align 4, !tbaa !5
  br label %1945

1945:                                             ; preds = %1942
  br label %1946

1946:                                             ; preds = %1945
  br label %1947

1947:                                             ; preds = %1946
  br label %1948

1948:                                             ; preds = %1947
  br label %1949

1949:                                             ; preds = %1948
  %1950 = load i32, ptr @test_count, align 4, !tbaa !5
  %1951 = add nsw i32 %1950, 1
  store i32 %1951, ptr @test_count, align 4, !tbaa !5
  %1952 = load ptr, ptr %35, align 8, !tbaa !9
  %1953 = call i32 @s2n_connection_free(ptr noundef %1952)
  %1954 = icmp eq i32 %1953, -1
  br i1 %1954, label %1955, label %2008

1955:                                             ; preds = %1949
  br label %1956

1956:                                             ; preds = %1955
  br label %1957

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

1964:                                             ; preds = %1957
  %1965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1966 = call i32 @fileno(ptr noundef %1965) #10
  %1967 = call i32 @isatty(i32 noundef %1966) #10
  %1968 = icmp ne i32 %1967, 0
  br i1 %1968, label %1969, label %1986

1969:                                             ; preds = %1964
  %1970 = load i32, ptr %47, align 4, !tbaa !5
  %1971 = call ptr @__errno_location() #11
  store i32 %1970, ptr %1971, align 4, !tbaa !5
  %1972 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1973 = load i32, ptr @test_count, align 4, !tbaa !5
  %1974 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1975 = load i32, ptr %1974, align 4, !tbaa !5
  %1976 = call ptr @s2n_strerror(i32 noundef %1975, ptr noundef @.str.24)
  %1977 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1978 = load i32, ptr %1977, align 4, !tbaa !5
  %1979 = call ptr @s2n_strerror_debug(i32 noundef %1978, ptr noundef @.str.24)
  %1980 = call ptr @__errno_location() #11
  %1981 = load i32, ptr %1980, align 4, !tbaa !5
  %1982 = call ptr @strerror(i32 noundef %1981) #10
  %1983 = call ptr @__errno_location() #11
  %1984 = load i32, ptr %1983, align 4, !tbaa !5
  %1985 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1972, ptr noundef @.str.22, i32 noundef %1973, ptr noundef @.str.44, ptr noundef @.str.21, i32 noundef 123, ptr noundef %1976, ptr noundef %1979, ptr noundef %1982, i32 noundef %1984) #10
  br label %2003

1986:                                             ; preds = %1964, %1957
  %1987 = load i32, ptr %47, align 4, !tbaa !5
  %1988 = call ptr @__errno_location() #11
  store i32 %1987, ptr %1988, align 4, !tbaa !5
  %1989 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1990 = load i32, ptr @test_count, align 4, !tbaa !5
  %1991 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1992 = load i32, ptr %1991, align 4, !tbaa !5
  %1993 = call ptr @s2n_strerror(i32 noundef %1992, ptr noundef @.str.24)
  %1994 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1995 = load i32, ptr %1994, align 4, !tbaa !5
  %1996 = call ptr @s2n_strerror_debug(i32 noundef %1995, ptr noundef @.str.24)
  %1997 = call ptr @__errno_location() #11
  %1998 = load i32, ptr %1997, align 4, !tbaa !5
  %1999 = call ptr @strerror(i32 noundef %1998) #10
  %2000 = call ptr @__errno_location() #11
  %2001 = load i32, ptr %2000, align 4, !tbaa !5
  %2002 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1989, ptr noundef @.str.25, i32 noundef %1990, ptr noundef @.str.44, ptr noundef @.str.21, i32 noundef 123, ptr noundef %1993, ptr noundef %1996, ptr noundef %1999, i32 noundef %2001) #10
  br label %2003

2003:                                             ; preds = %1986, %1969
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %2004

2004:                                             ; preds = %2003
  br label %2005

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

2006:                                             ; No predecessors!
  br label %2007

2007:                                             ; preds = %2006
  br label %2008

2008:                                             ; preds = %2007, %1949
  br label %2009

2009:                                             ; preds = %2008
  br label %2010

2010:                                             ; preds = %2009
  %2011 = call i32 @s2n_stuffer_free(ptr noundef %40)
  call void @llvm.lifetime.end.p0(i64 40, ptr %40) #10
  store i32 0, ptr %18, align 4
  br label %2012

2012:                                             ; preds = %2010, %1555, %1530
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  %2013 = load i32, ptr %18, align 4
  switch i32 %2013, label %2169 [
    i32 0, label %2014
  ]

2014:                                             ; preds = %2012
  br label %2015

2015:                                             ; preds = %2014
  br label %2016

2016:                                             ; preds = %2015
  %2017 = call i32 @s2n_cleanup()
  %2018 = icmp eq i32 %2017, -1
  br i1 %2018, label %2019, label %2072

2019:                                             ; preds = %2016
  br label %2020

2020:                                             ; preds = %2019
  br label %2021

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

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

2033:                                             ; preds = %2028
  %2034 = load i32, ptr %48, align 4, !tbaa !5
  %2035 = call ptr @__errno_location() #11
  store i32 %2034, ptr %2035, align 4, !tbaa !5
  %2036 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2037 = load i32, ptr @test_count, align 4, !tbaa !5
  %2038 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2039 = load i32, ptr %2038, align 4, !tbaa !5
  %2040 = call ptr @s2n_strerror(i32 noundef %2039, ptr noundef @.str.24)
  %2041 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2042 = load i32, ptr %2041, align 4, !tbaa !5
  %2043 = call ptr @s2n_strerror_debug(i32 noundef %2042, ptr noundef @.str.24)
  %2044 = call ptr @__errno_location() #11
  %2045 = load i32, ptr %2044, align 4, !tbaa !5
  %2046 = call ptr @strerror(i32 noundef %2045) #10
  %2047 = call ptr @__errno_location() #11
  %2048 = load i32, ptr %2047, align 4, !tbaa !5
  %2049 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2036, ptr noundef @.str.22, i32 noundef %2037, ptr noundef @.str.45, ptr noundef @.str.21, i32 noundef 128, ptr noundef %2040, ptr noundef %2043, ptr noundef %2046, i32 noundef %2048) #10
  br label %2067

2050:                                             ; preds = %2028, %2021
  %2051 = load i32, ptr %48, align 4, !tbaa !5
  %2052 = call ptr @__errno_location() #11
  store i32 %2051, ptr %2052, align 4, !tbaa !5
  %2053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2054 = load i32, ptr @test_count, align 4, !tbaa !5
  %2055 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2056 = load i32, ptr %2055, align 4, !tbaa !5
  %2057 = call ptr @s2n_strerror(i32 noundef %2056, ptr noundef @.str.24)
  %2058 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2059 = load i32, ptr %2058, align 4, !tbaa !5
  %2060 = call ptr @s2n_strerror_debug(i32 noundef %2059, ptr noundef @.str.24)
  %2061 = call ptr @__errno_location() #11
  %2062 = load i32, ptr %2061, align 4, !tbaa !5
  %2063 = call ptr @strerror(i32 noundef %2062) #10
  %2064 = call ptr @__errno_location() #11
  %2065 = load i32, ptr %2064, align 4, !tbaa !5
  %2066 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2053, ptr noundef @.str.25, i32 noundef %2054, ptr noundef @.str.45, ptr noundef @.str.21, i32 noundef 128, ptr noundef %2057, ptr noundef %2060, ptr noundef %2063, i32 noundef %2065) #10
  br label %2067

2067:                                             ; preds = %2050, %2033
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %2068

2068:                                             ; preds = %2067
  br label %2069

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

2070:                                             ; No predecessors!
  br label %2071

2071:                                             ; preds = %2070
  br label %2072

2072:                                             ; preds = %2071, %2016
  br label %2073

2073:                                             ; preds = %2072
  br label %2074

2074:                                             ; preds = %2073
  br label %2075

2075:                                             ; preds = %2074
  br label %2076

2076:                                             ; preds = %2075
  %2077 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %2078 = icmp eq i32 %2077, -1
  br i1 %2078, label %2079, label %2132

2079:                                             ; preds = %2076
  br label %2080

2080:                                             ; preds = %2079
  br label %2081

2081:                                             ; preds = %2080
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  %2082 = call ptr @__errno_location() #11
  %2083 = load i32, ptr %2082, align 4, !tbaa !5
  store i32 %2083, ptr %49, align 4, !tbaa !5
  %2084 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2085 = call i32 @s2n_print_stacktrace(ptr noundef %2084)
  %2086 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2087 = trunc i8 %2086 to i1
  br i1 %2087, label %2088, label %2110

2088:                                             ; preds = %2081
  %2089 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2090 = call i32 @fileno(ptr noundef %2089) #10
  %2091 = call i32 @isatty(i32 noundef %2090) #10
  %2092 = icmp ne i32 %2091, 0
  br i1 %2092, label %2093, label %2110

2093:                                             ; preds = %2088
  %2094 = load i32, ptr %49, align 4, !tbaa !5
  %2095 = call ptr @__errno_location() #11
  store i32 %2094, ptr %2095, align 4, !tbaa !5
  %2096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2097 = load i32, ptr @test_count, align 4, !tbaa !5
  %2098 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2099 = load i32, ptr %2098, align 4, !tbaa !5
  %2100 = call ptr @s2n_strerror(i32 noundef %2099, ptr noundef @.str.24)
  %2101 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2102 = load i32, ptr %2101, align 4, !tbaa !5
  %2103 = call ptr @s2n_strerror_debug(i32 noundef %2102, ptr noundef @.str.24)
  %2104 = call ptr @__errno_location() #11
  %2105 = load i32, ptr %2104, align 4, !tbaa !5
  %2106 = call ptr @strerror(i32 noundef %2105) #10
  %2107 = call ptr @__errno_location() #11
  %2108 = load i32, ptr %2107, align 4, !tbaa !5
  %2109 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2096, ptr noundef @.str.22, i32 noundef %2097, ptr noundef @.str.46, ptr noundef @.str.21, i32 noundef 128, ptr noundef %2100, ptr noundef %2103, ptr noundef %2106, i32 noundef %2108) #10
  br label %2127

2110:                                             ; preds = %2088, %2081
  %2111 = load i32, ptr %49, align 4, !tbaa !5
  %2112 = call ptr @__errno_location() #11
  store i32 %2111, ptr %2112, align 4, !tbaa !5
  %2113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2114 = load i32, ptr @test_count, align 4, !tbaa !5
  %2115 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2116 = load i32, ptr %2115, align 4, !tbaa !5
  %2117 = call ptr @s2n_strerror(i32 noundef %2116, ptr noundef @.str.24)
  %2118 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2119 = load i32, ptr %2118, align 4, !tbaa !5
  %2120 = call ptr @s2n_strerror_debug(i32 noundef %2119, ptr noundef @.str.24)
  %2121 = call ptr @__errno_location() #11
  %2122 = load i32, ptr %2121, align 4, !tbaa !5
  %2123 = call ptr @strerror(i32 noundef %2122) #10
  %2124 = call ptr @__errno_location() #11
  %2125 = load i32, ptr %2124, align 4, !tbaa !5
  %2126 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2113, ptr noundef @.str.25, i32 noundef %2114, ptr noundef @.str.46, ptr noundef @.str.21, i32 noundef 128, ptr noundef %2117, ptr noundef %2120, ptr noundef %2123, i32 noundef %2125) #10
  br label %2127

2127:                                             ; preds = %2110, %2093
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %2128

2128:                                             ; preds = %2127
  br label %2129

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

2130:                                             ; No predecessors!
  br label %2131

2131:                                             ; preds = %2130
  br label %2132

2132:                                             ; preds = %2131, %2076
  br label %2133

2133:                                             ; preds = %2132
  br label %2134

2134:                                             ; preds = %2133
  %2135 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2136 = trunc i8 %2135 to i1
  br i1 %2136, label %2137, label %2153

2137:                                             ; preds = %2134
  %2138 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2139 = call i32 @fileno(ptr noundef %2138) #10
  %2140 = call i32 @isatty(i32 noundef %2139) #10
  %2141 = icmp ne i32 %2140, 0
  br i1 %2141, label %2142, label %2153

2142:                                             ; preds = %2137
  %2143 = load i32, ptr @test_count, align 4, !tbaa !5
  %2144 = icmp ne i32 %2143, 0
  br i1 %2144, label %2145, label %2149

2145:                                             ; preds = %2142
  %2146 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2147 = load i32, ptr @test_count, align 4, !tbaa !5
  %2148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2146, ptr noundef @.str.47, i32 noundef %2147) #10
  br label %2152

2149:                                             ; preds = %2142
  %2150 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2151 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2150, ptr noundef @.str.48) #10
  br label %2152

2152:                                             ; preds = %2149, %2145
  br label %2164

2153:                                             ; preds = %2137, %2134
  %2154 = load i32, ptr @test_count, align 4, !tbaa !5
  %2155 = icmp ne i32 %2154, 0
  br i1 %2155, label %2156, label %2160

2156:                                             ; preds = %2153
  %2157 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2158 = load i32, ptr @test_count, align 4, !tbaa !5
  %2159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2157, ptr noundef @.str.49, i32 noundef %2158) #10
  br label %2163

2160:                                             ; preds = %2153
  %2161 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2162 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2161, ptr noundef @.str.50) #10
  br label %2163

2163:                                             ; preds = %2160, %2156
  br label %2164

2164:                                             ; preds = %2163, %2152
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %2169

2165:                                             ; No predecessors!
  br label %2166

2166:                                             ; preds = %2165
  br label %2167

2167:                                             ; preds = %2166
  br label %2168

2168:                                             ; preds = %2167
  store i32 0, ptr %18, align 4
  br label %2169

2169:                                             ; preds = %2168, %2164, %2012, %1377
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 21, ptr %9) #10
  %2170 = load i32, ptr %18, align 4
  switch i32 %2170, label %2173 [
    i32 0, label %2171
    i32 1, label %2171
  ]

2171:                                             ; preds = %2169, %2169
  %2172 = load i32, ptr %3, align 4
  ret i32 %2172

2173:                                             ; preds = %2169
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

declare ptr @s2n_connection_new(i32 noundef) #2

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

declare i32 @s2n_stuffer_free(ptr noundef) #2

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

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

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

declare i32 @s2n_stuffer_reread(ptr noundef) #2

declare void @s2n_debug_info_reset() #2

declare i32 @s2n_connection_free(ptr noundef) #2

declare i32 @s2n_cleanup() #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #8 = { 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 = { 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 #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, !10, i64 48}
!16 = !{!"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}
!17 = !{!18, !10, i64 0}
!18 = !{!"s2n_record_algorithm", !10, i64 0, !6, i64 8, !6, i64 12, !19, i64 16}
!19 = !{!"long", !7, i64 0}
!20 = !{!21, !7, i64 48}
!21 = !{!"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}
!22 = !{!23, !10, i64 232}
!23 = !{!"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, !24, i64 160, !19, i64 168, !19, 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, !25, i64 240, !10, i64 632, !10, i64 640, !26, i64 648, !32, i64 1144, !35, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !38, i64 1776, !38, i64 1816, !38, i64 1856, !38, i64 1896, !6, i64 1936, !19, i64 1944, !7, i64 1952, !38, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !39, i64 2004, !39, i64 2008, !40, i64 2016, !37, i64 2208, !6, i64 2212, !37, i64 2216, !19, i64 2224, !7, i64 2232, !19, i64 2240, !19, i64 2248, !19, i64 2256, !39, i64 2264, !39, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !31, i64 2792, !6, i64 2816, !31, i64 2824, !31, i64 2848, !31, i64 2872, !42, i64 2896, !44, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !31, i64 3784, !6, i64 3808, !46, i64 3816, !7, i64 3848, !38, i64 3992, !31, i64 4032, !31, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !37, i64 4084, !37, i64 4086, !6, i64 4088, !6, i64 4092, !31, i64 4096, !6, i64 4120, !47, i64 4128, !39, i64 4176, !7, i64 4180, !7, i64 4181}
!24 = !{!"s2n_timer", !19, i64 0}
!25 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!26 = !{!"s2n_kex_parameters", !27, i64 0, !28, i64 8, !7, i64 24, !28, i64 56, !29, i64 72, !29, i64 184, !7, i64 296, !30, i64 360, !31, i64 448, !31, i64 472}
!27 = !{!"s2n_dh_params", !10, i64 0}
!28 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!29 = !{!"s2n_kem_group_params", !10, i64 0, !30, i64 8, !28, i64 96}
!30 = !{!"s2n_kem_params", !10, i64 0, !31, i64 8, !31, i64 32, !31, i64 56, !12, i64 80}
!31 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!32 = !{!"s2n_handshake_parameters", !33, i64 0, !33, i64 48, !31, i64 96, !6, i64 120, !34, 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}
!33 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!34 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!35 = !{!"s2n_psk_parameters", !6, i64 0, !36, i64 8, !37, i64 40, !37, i64 42, !10, i64 48, !6, i64 56}
!36 = !{!"s2n_array", !31, i64 0, !6, i64 24, !6, i64 28}
!37 = !{!"short", !7, i64 0}
!38 = !{!"s2n_stuffer", !31, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!39 = !{!"", !6, i64 0}
!40 = !{!"s2n_handshake", !38, 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, !41, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!41 = !{!"s2n_offered_early_data", !10, i64 0}
!42 = !{!"s2n_client_hello", !31, i64 0, !43, i64 24, !31, i64 728, !31, i64 752, !31, 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}
!43 = !{!"", !7, i64 0, !31, i64 672, !37, i64 696}
!44 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !37, i64 18, !10, i64 24, !6, i64 32, !10, i64 40, !45, i64 48, !12, i64 52}
!45 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!46 = !{!"s2n_ticket_fields", !31, i64 0, !6, i64 24}
!47 = !{!"s2n_post_handshake", !38, i64 0, !7, i64 40}
!48 = !{!49, !10, i64 0}
!49 = !{!"s2n_crypto_parameters", !10, i64 0, !50, i64 8, !50, i64 16, !51, i64 24, !51, i64 456, !7, i64 888, !7, i64 904, !7, i64 920, !7, i64 928}
!50 = !{!"s2n_session_key", !10, i64 0}
!51 = !{!"s2n_hmac_state", !6, i64 0, !37, i64 4, !6, i64 8, !37, i64 12, !7, i64 14, !52, i64 16, !52, i64 72, !52, i64 128, !52, i64 184, !7, i64 240, !7, i64 368}
!52 = !{!"s2n_hash_state", !10, i64 0, !6, i64 8, !7, i64 12, !19, i64 16, !7, i64 24}
!53 = !{!21, !10, i64 64}
!54 = !{!21, !10, i64 72}
!55 = !{!23, !10, i64 632}
!56 = !{!23, !6, i64 4088}
!57 = !{!23, !10, i64 640}


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

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [91 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.22 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [39 x i8], align 1
@__const.main.bad_record = external hidden unnamed_addr constant [21 x i8], align 16
@s2n_tls13_aes_256_gcm_sha384 = external global %struct.s2n_cipher_suite, align 8
@__const.main.test_key_bytes = external hidden unnamed_addr constant [48 x i8], align 16
@.str.28 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_handshake_read_io(ptr noundef) local_unnamed_addr #7

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

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

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

25:                                               ; preds = %21, %14
  br label %26

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

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

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

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

54:                                               ; preds = %50, %43
  br label %55

55:                                               ; preds = %50, %54
  %.str.25.sink156 = phi ptr [ @.str.25, %54 ], [ @.str.22, %50 ]
  store i32 %45, ptr %44, align 4, !tbaa !5
  %56 = load ptr, ptr @stderr, align 8, !tbaa !9
  %57 = load i32, ptr @test_count, align 4, !tbaa !5
  %58 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %59 = load i32, ptr %58, align 4, !tbaa !5
  %60 = tail call ptr @s2n_strerror(i32 noundef %59, ptr noundef nonnull @.str.24) #11
  %61 = load i32, ptr %58, align 4, !tbaa !5
  %62 = tail call ptr @s2n_strerror_debug(i32 noundef %61, ptr noundef nonnull @.str.24) #11
  %63 = load i32, ptr %44, align 4, !tbaa !5
  %64 = tail call ptr @strerror(i32 noundef %63) #11
  %65 = load i32, ptr %44, align 4, !tbaa !5
  %66 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %56, ptr noundef nonnull %.str.25.sink156, i32 noundef %57, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.21, i32 noundef 26, ptr noundef %60, ptr noundef %62, ptr noundef %64, i32 noundef %65) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

67:                                               ; preds = %38
  %68 = tail call i32 @s2n_init() #11
  %69 = icmp eq i32 %68, -1
  br i1 %69, label %70, label %94

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

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

81:                                               ; preds = %77, %70
  br label %82

82:                                               ; preds = %77, %81
  %.str.25.sink167 = phi ptr [ @.str.25, %81 ], [ @.str.22, %77 ]
  store i32 %72, ptr %71, align 4, !tbaa !5
  %83 = load ptr, ptr @stderr, align 8, !tbaa !9
  %84 = load i32, ptr @test_count, align 4, !tbaa !5
  %85 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %86 = load i32, ptr %85, align 4, !tbaa !5
  %87 = tail call ptr @s2n_strerror(i32 noundef %86, ptr noundef nonnull @.str.24) #11
  %88 = load i32, ptr %85, align 4, !tbaa !5
  %89 = tail call ptr @s2n_strerror_debug(i32 noundef %88, ptr noundef nonnull @.str.24) #11
  %90 = load i32, ptr %71, align 4, !tbaa !5
  %91 = tail call ptr @strerror(i32 noundef %90) #11
  %92 = load i32, ptr %71, align 4, !tbaa !5
  %93 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %83, ptr noundef nonnull %.str.25.sink167, i32 noundef %84, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.21, i32 noundef 26, ptr noundef %87, ptr noundef %89, ptr noundef %91, i32 noundef %92) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

94:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 21, ptr nonnull %3) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(21) %3, ptr noundef nonnull align 16 dereferenceable(21) @__const.main.bad_record, i64 21, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %4, ptr noundef nonnull align 16 dereferenceable(48) @__const.main.test_key_bytes, i64 48, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false)
  %95 = load i32, ptr @test_count, align 4, !tbaa !5
  %96 = add nsw i32 %95, 1
  store i32 %96, ptr @test_count, align 4, !tbaa !5
  %97 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_tls13_aes_256_gcm_sha384, i64 48), align 8, !tbaa !15
  %98 = load ptr, ptr %97, align 8, !tbaa !17
  %99 = getelementptr inbounds i8, ptr %98, i64 48
  %100 = load i8, ptr %99, align 8, !tbaa !20
  %101 = zext i8 %100 to i32
  %102 = call i32 @s2n_blob_init(ptr noundef nonnull %5, ptr noundef nonnull %4, i32 noundef %101) #11
  %103 = icmp eq i32 %102, -1
  br i1 %103, label %104, label %128

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

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

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

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

128:                                              ; preds = %94
  %129 = call ptr @s2n_connection_new(i32 noundef 0) #11
  %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 = icmp eq ptr %129, null
  br i1 %132, label %133, label %157

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

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

144:                                              ; preds = %140, %133
  br label %145

145:                                              ; preds = %140, %144
  %.str.25.sink189 = phi ptr [ @.str.25, %144 ], [ @.str.22, %140 ]
  store i32 %135, ptr %134, align 4, !tbaa !5
  %146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %147 = load i32, ptr @test_count, align 4, !tbaa !5
  %148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = call ptr @s2n_strerror(i32 noundef %149, ptr noundef nonnull @.str.24) #11
  %151 = load i32, ptr %148, align 4, !tbaa !5
  %152 = call ptr @s2n_strerror_debug(i32 noundef %151, ptr noundef nonnull @.str.24) #11
  %153 = load i32, ptr %134, align 4, !tbaa !5
  %154 = call ptr @strerror(i32 noundef %153) #11
  %155 = load i32, ptr %134, align 4, !tbaa !5
  %156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %146, ptr noundef nonnull %.str.25.sink189, i32 noundef %147, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.21, i32 noundef 62, ptr noundef %150, ptr noundef %152, ptr noundef %154, i32 noundef %155) #13
  call void @exit(i32 noundef 1) #14
  unreachable

157:                                              ; preds = %128
  %158 = add nsw i32 %130, 2
  store i32 %158, ptr @test_count, align 4, !tbaa !5
  %159 = call i32 @s2n_connection_set_blinding(ptr noundef nonnull %129, i32 noundef 1) #11
  %160 = icmp eq i32 %159, -1
  br i1 %160, label %161, label %185

161:                                              ; preds = %157
  %162 = tail call ptr @__errno_location() #12
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = load ptr, ptr @stderr, align 8, !tbaa !9
  %165 = call i32 @s2n_print_stacktrace(ptr noundef %164) #11
  %166 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %167 = trunc nuw i8 %166 to i1
  br i1 %167, label %168, label %172

168:                                              ; preds = %161
  %169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %170 = call i32 @fileno(ptr noundef %169) #11
  %171 = call i32 @isatty(i32 noundef %170) #11
  %.not134 = icmp eq i32 %171, 0
  br i1 %.not134, label %172, label %173

172:                                              ; preds = %168, %161
  br label %173

173:                                              ; preds = %168, %172
  %.str.25.sink200 = phi ptr [ @.str.25, %172 ], [ @.str.22, %168 ]
  store i32 %163, ptr %162, align 4, !tbaa !5
  %174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %175 = load i32, ptr @test_count, align 4, !tbaa !5
  %176 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = call ptr @s2n_strerror(i32 noundef %177, ptr noundef nonnull @.str.24) #11
  %179 = load i32, ptr %176, align 4, !tbaa !5
  %180 = call ptr @s2n_strerror_debug(i32 noundef %179, ptr noundef nonnull @.str.24) #11
  %181 = load i32, ptr %162, align 4, !tbaa !5
  %182 = call ptr @strerror(i32 noundef %181) #11
  %183 = load i32, ptr %162, align 4, !tbaa !5
  %184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef nonnull %.str.25.sink200, i32 noundef %175, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.21, i32 noundef 63, ptr noundef %178, ptr noundef %180, ptr noundef %182, i32 noundef %183) #13
  call void @exit(i32 noundef 1) #14
  unreachable

185:                                              ; preds = %157
  %186 = getelementptr inbounds i8, ptr %129, i64 232
  %187 = load ptr, ptr %186, align 8, !tbaa !22
  store ptr @s2n_tls13_aes_256_gcm_sha384, ptr %187, align 8, !tbaa !48
  %188 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_tls13_aes_256_gcm_sha384, i64 48), align 8, !tbaa !15
  %189 = load ptr, ptr %188, align 8, !tbaa !17
  %190 = getelementptr inbounds i8, ptr %189, i64 64
  %191 = load ptr, ptr %190, align 8, !tbaa !53
  %192 = getelementptr inbounds i8, ptr %187, i64 8
  %193 = call i32 %191(ptr noundef nonnull %192) #11
  %194 = call zeroext i1 @s2n_result_is_ok(i32 %193)
  br i1 %194, label %195, label %.thread

195:                                              ; preds = %185
  %196 = load ptr, ptr %186, align 8, !tbaa !22
  %197 = load ptr, ptr %196, align 8, !tbaa !48
  %198 = getelementptr inbounds i8, ptr %197, i64 48
  %199 = load ptr, ptr %198, align 8, !tbaa !15
  %200 = load ptr, ptr %199, align 8, !tbaa !17
  %201 = getelementptr inbounds i8, ptr %200, i64 72
  %202 = load ptr, ptr %201, align 8, !tbaa !54
  %203 = getelementptr inbounds i8, ptr %196, i64 8
  %204 = call i32 %202(ptr noundef nonnull %203, ptr noundef nonnull %5) #11
  %205 = call zeroext i1 @s2n_result_is_ok(i32 %204)
  br i1 %205, label %206, label %.thread

206:                                              ; preds = %195
  %207 = load ptr, ptr %186, align 8, !tbaa !22
  %208 = getelementptr inbounds i8, ptr %129, i64 632
  store ptr %207, ptr %208, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %6, i8 0, i64 40, i1 false)
  %209 = load i32, ptr @test_count, align 4, !tbaa !5
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr @test_count, align 4, !tbaa !5
  %211 = call i32 @s2n_stuffer_growable_alloc(ptr noundef nonnull %6, i32 noundef 8092) #11
  %212 = icmp eq i32 %211, -1
  br i1 %212, label %213, label %237

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

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

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

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

237:                                              ; preds = %206
  %238 = load i32, ptr @test_count, align 4, !tbaa !5
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr @test_count, align 4, !tbaa !5
  %240 = call i32 @s2n_connection_set_io_stuffers(ptr noundef nonnull %6, ptr noundef nonnull %6, ptr noundef nonnull %129) #11
  %241 = icmp eq i32 %240, -1
  br i1 %241, label %242, label %266

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

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

253:                                              ; preds = %249, %242
  br label %254

254:                                              ; preds = %249, %253
  %.str.25.sink222 = phi ptr [ @.str.25, %253 ], [ @.str.22, %249 ]
  store i32 %244, ptr %243, align 4, !tbaa !5
  %255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %256 = load i32, ptr @test_count, align 4, !tbaa !5
  %257 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %258 = load i32, ptr %257, align 4, !tbaa !5
  %259 = call ptr @s2n_strerror(i32 noundef %258, ptr noundef nonnull @.str.24) #11
  %260 = load i32, ptr %257, align 4, !tbaa !5
  %261 = call ptr @s2n_strerror_debug(i32 noundef %260, ptr noundef nonnull @.str.24) #11
  %262 = load i32, ptr %243, align 4, !tbaa !5
  %263 = call ptr @strerror(i32 noundef %262) #11
  %264 = load i32, ptr %243, align 4, !tbaa !5
  %265 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %255, ptr noundef nonnull %.str.25.sink222, i32 noundef %256, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.21, i32 noundef 72, ptr noundef %259, ptr noundef %261, ptr noundef %263, i32 noundef %264) #13
  call void @exit(i32 noundef 1) #14
  unreachable

266:                                              ; preds = %237
  %267 = load i32, ptr @test_count, align 4, !tbaa !5
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr @test_count, align 4, !tbaa !5
  %269 = call i32 @s2n_stuffer_write_bytes(ptr noundef nonnull %6, ptr noundef nonnull %3, i32 noundef 21) #11
  %270 = icmp eq i32 %269, -1
  br i1 %270, label %271, label %295

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

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

282:                                              ; preds = %278, %271
  br label %283

283:                                              ; preds = %278, %282
  %.str.25.sink233 = phi ptr [ @.str.25, %282 ], [ @.str.22, %278 ]
  store i32 %273, ptr %272, align 4, !tbaa !5
  %284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %285 = load i32, ptr @test_count, align 4, !tbaa !5
  %286 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %287 = load i32, ptr %286, align 4, !tbaa !5
  %288 = call ptr @s2n_strerror(i32 noundef %287, ptr noundef nonnull @.str.24) #11
  %289 = load i32, ptr %286, align 4, !tbaa !5
  %290 = call ptr @s2n_strerror_debug(i32 noundef %289, ptr noundef nonnull @.str.24) #11
  %291 = load i32, ptr %272, align 4, !tbaa !5
  %292 = call ptr @strerror(i32 noundef %291) #11
  %293 = load i32, ptr %272, align 4, !tbaa !5
  %294 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %284, ptr noundef nonnull %.str.25.sink233, i32 noundef %285, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.21, i32 noundef 74, ptr noundef %288, ptr noundef %290, ptr noundef %292, i32 noundef %293) #13
  call void @exit(i32 noundef 1) #14
  unreachable

295:                                              ; preds = %266
  %296 = load i32, ptr @test_count, align 4, !tbaa !5
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr @test_count, align 4, !tbaa !5
  %298 = call i32 @s2n_stuffer_reread(ptr noundef nonnull %6) #11
  %299 = icmp eq i32 %298, -1
  br i1 %299, label %300, label %324

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

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

311:                                              ; preds = %307, %300
  br label %312

312:                                              ; preds = %307, %311
  %.str.25.sink244 = phi ptr [ @.str.25, %311 ], [ @.str.22, %307 ]
  store i32 %302, ptr %301, align 4, !tbaa !5
  %313 = load ptr, ptr @stderr, align 8, !tbaa !9
  %314 = load i32, ptr @test_count, align 4, !tbaa !5
  %315 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %316 = load i32, ptr %315, align 4, !tbaa !5
  %317 = call ptr @s2n_strerror(i32 noundef %316, ptr noundef nonnull @.str.24) #11
  %318 = load i32, ptr %315, align 4, !tbaa !5
  %319 = call ptr @s2n_strerror_debug(i32 noundef %318, ptr noundef nonnull @.str.24) #11
  %320 = load i32, ptr %301, align 4, !tbaa !5
  %321 = call ptr @strerror(i32 noundef %320) #11
  %322 = load i32, ptr %301, align 4, !tbaa !5
  %323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %313, ptr noundef nonnull %.str.25.sink244, i32 noundef %314, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.21, i32 noundef 78, ptr noundef %317, ptr noundef %319, ptr noundef %321, i32 noundef %322) #13
  call void @exit(i32 noundef 1) #14
  unreachable

324:                                              ; preds = %295
  %325 = getelementptr inbounds i8, ptr %129, i64 4088
  store i32 2, ptr %325, align 8, !tbaa !56
  %326 = load i32, ptr @test_count, align 4, !tbaa !5
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr @test_count, align 4, !tbaa !5
  %328 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %129)
  %329 = icmp eq i32 %328, -1
  br i1 %329, label %354, label %330

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

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

341:                                              ; preds = %337, %330
  br label %342

342:                                              ; preds = %337, %341
  %.str.25.sink255 = phi ptr [ @.str.25, %341 ], [ @.str.22, %337 ]
  store i32 %332, ptr %331, align 4, !tbaa !5
  %343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %344 = load i32, ptr @test_count, align 4, !tbaa !5
  %345 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %346 = load i32, ptr %345, align 4, !tbaa !5
  %347 = call ptr @s2n_strerror(i32 noundef %346, ptr noundef nonnull @.str.24) #11
  %348 = load i32, ptr %345, align 4, !tbaa !5
  %349 = call ptr @s2n_strerror_debug(i32 noundef %348, ptr noundef nonnull @.str.24) #11
  %350 = load i32, ptr %331, align 4, !tbaa !5
  %351 = call ptr @strerror(i32 noundef %350) #11
  %352 = load i32, ptr %331, align 4, !tbaa !5
  %353 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %343, ptr noundef nonnull %.str.25.sink255, i32 noundef %344, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.21, i32 noundef 80, ptr noundef %347, ptr noundef %349, ptr noundef %351, i32 noundef %352) #13
  call void @exit(i32 noundef 1) #14
  unreachable

354:                                              ; preds = %324
  %355 = load i32, ptr @test_count, align 4, !tbaa !5
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr @test_count, align 4, !tbaa !5
  %357 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %358 = load i32, ptr %357, align 4, !tbaa !5
  %359 = icmp eq i32 %358, 335544321
  br i1 %359, label %383, label %360

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

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

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

372:                                              ; preds = %367, %371
  %.str.25.sink266 = phi ptr [ @.str.25, %371 ], [ @.str.22, %367 ]
  store i32 %362, ptr %361, align 4, !tbaa !5
  %373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %374 = load i32, ptr @test_count, align 4, !tbaa !5
  %375 = load i32, ptr %357, align 4, !tbaa !5
  %376 = call ptr @s2n_strerror(i32 noundef %375, ptr noundef nonnull @.str.24) #11
  %377 = load i32, ptr %357, align 4, !tbaa !5
  %378 = call ptr @s2n_strerror_debug(i32 noundef %377, ptr noundef nonnull @.str.24) #11
  %379 = load i32, ptr %361, align 4, !tbaa !5
  %380 = call ptr @strerror(i32 noundef %379) #11
  %381 = load i32, ptr %361, align 4, !tbaa !5
  %382 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %373, ptr noundef nonnull %.str.25.sink266, i32 noundef %374, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.21, i32 noundef 80, ptr noundef %376, ptr noundef %378, ptr noundef %380, i32 noundef %381) #13
  call void @exit(i32 noundef 1) #14
  unreachable

383:                                              ; preds = %354
  %384 = add nsw i32 %355, 2
  store i32 %384, ptr @test_count, align 4, !tbaa !5
  %385 = call ptr @s2n_strerror_debug(i32 noundef 335544321, ptr noundef nonnull @.str.24) #11
  %386 = icmp eq ptr %385, null
  br i1 %386, label %387, label %410

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

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

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

399:                                              ; preds = %394, %398
  %.str.25.sink275 = phi ptr [ @.str.25, %398 ], [ @.str.22, %394 ]
  store i32 %389, ptr %388, align 4, !tbaa !5
  %400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %401 = load i32, ptr @test_count, align 4, !tbaa !5
  %402 = load i32, ptr %357, align 4, !tbaa !5
  %403 = call ptr @s2n_strerror(i32 noundef %402, ptr noundef nonnull @.str.24) #11
  %404 = load i32, ptr %357, align 4, !tbaa !5
  %405 = call ptr @s2n_strerror_debug(i32 noundef %404, ptr noundef nonnull @.str.24) #11
  %406 = load i32, ptr %388, align 4, !tbaa !5
  %407 = call ptr @strerror(i32 noundef %406) #11
  %408 = load i32, ptr %388, align 4, !tbaa !5
  %409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %400, ptr noundef nonnull %.str.25.sink275, i32 noundef %401, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.21, i32 noundef 80, ptr noundef %403, ptr noundef %405, ptr noundef %407, i32 noundef %408) #13
  call void @exit(i32 noundef 1) #14
  unreachable

410:                                              ; preds = %383
  store i32 0, ptr %357, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  %411 = tail call ptr @__errno_location() #12
  store i32 0, ptr %411, align 4, !tbaa !5
  %412 = load i32, ptr @test_count, align 4, !tbaa !5
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr @test_count, align 4, !tbaa !5
  %414 = call i32 @s2n_stuffer_reread(ptr noundef nonnull %6) #11
  %415 = icmp eq i32 %414, -1
  br i1 %415, label %416, label %438

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

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

426:                                              ; preds = %422, %416
  br label %427

427:                                              ; preds = %422, %426
  %.str.25.sink284 = phi ptr [ @.str.25, %426 ], [ @.str.22, %422 ]
  store i32 %417, ptr %411, align 4, !tbaa !5
  %428 = load ptr, ptr @stderr, align 8, !tbaa !9
  %429 = load i32, ptr @test_count, align 4, !tbaa !5
  %430 = load i32, ptr %357, align 4, !tbaa !5
  %431 = call ptr @s2n_strerror(i32 noundef %430, ptr noundef nonnull @.str.24) #11
  %432 = load i32, ptr %357, align 4, !tbaa !5
  %433 = call ptr @s2n_strerror_debug(i32 noundef %432, ptr noundef nonnull @.str.24) #11
  %434 = load i32, ptr %411, align 4, !tbaa !5
  %435 = call ptr @strerror(i32 noundef %434) #11
  %436 = load i32, ptr %411, align 4, !tbaa !5
  %437 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %428, ptr noundef nonnull %.str.25.sink284, i32 noundef %429, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.21, i32 noundef 85, ptr noundef %431, ptr noundef %433, ptr noundef %435, i32 noundef %436) #13
  call void @exit(i32 noundef 1) #14
  unreachable

438:                                              ; preds = %410
  store i32 3, ptr %325, align 8, !tbaa !56
  %439 = load i32, ptr @test_count, align 4, !tbaa !5
  %440 = add nsw i32 %439, 1
  store i32 %440, ptr @test_count, align 4, !tbaa !5
  %441 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %129)
  %442 = icmp eq i32 %441, -1
  br i1 %442, label %465, label %443

443:                                              ; preds = %438
  %444 = load i32, ptr %411, align 4, !tbaa !5
  %445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %446 = call i32 @s2n_print_stacktrace(ptr noundef %445) #11
  %447 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %448 = trunc nuw i8 %447 to i1
  br i1 %448, label %449, label %453

449:                                              ; preds = %443
  %450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %451 = call i32 @fileno(ptr noundef %450) #11
  %452 = call i32 @isatty(i32 noundef %451) #11
  %.not108 = icmp eq i32 %452, 0
  br i1 %.not108, label %453, label %454

453:                                              ; preds = %449, %443
  br label %454

454:                                              ; preds = %449, %453
  %.str.25.sink293 = phi ptr [ @.str.25, %453 ], [ @.str.22, %449 ]
  store i32 %444, ptr %411, align 4, !tbaa !5
  %455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %456 = load i32, ptr @test_count, align 4, !tbaa !5
  %457 = load i32, ptr %357, align 4, !tbaa !5
  %458 = call ptr @s2n_strerror(i32 noundef %457, ptr noundef nonnull @.str.24) #11
  %459 = load i32, ptr %357, align 4, !tbaa !5
  %460 = call ptr @s2n_strerror_debug(i32 noundef %459, ptr noundef nonnull @.str.24) #11
  %461 = load i32, ptr %411, align 4, !tbaa !5
  %462 = call ptr @strerror(i32 noundef %461) #11
  %463 = load i32, ptr %411, align 4, !tbaa !5
  %464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %455, ptr noundef nonnull %.str.25.sink293, i32 noundef %456, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.21, i32 noundef 87, ptr noundef %458, ptr noundef %460, ptr noundef %462, i32 noundef %463) #13
  call void @exit(i32 noundef 1) #14
  unreachable

465:                                              ; preds = %438
  %466 = load i32, ptr @test_count, align 4, !tbaa !5
  %467 = add nsw i32 %466, 1
  store i32 %467, ptr @test_count, align 4, !tbaa !5
  %468 = load i32, ptr %357, align 4, !tbaa !5
  %469 = icmp eq i32 %468, 335544321
  br i1 %469, label %492, label %470

470:                                              ; preds = %465
  %471 = load i32, ptr %411, align 4, !tbaa !5
  %472 = load ptr, ptr @stderr, align 8, !tbaa !9
  %473 = call i32 @s2n_print_stacktrace(ptr noundef %472) #11
  %474 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %475 = trunc nuw i8 %474 to i1
  br i1 %475, label %476, label %480

476:                                              ; preds = %470
  %477 = load ptr, ptr @stderr, align 8, !tbaa !9
  %478 = call i32 @fileno(ptr noundef %477) #11
  %479 = call i32 @isatty(i32 noundef %478) #11
  %.not109 = icmp eq i32 %479, 0
  br i1 %.not109, label %480, label %481

480:                                              ; preds = %476, %470
  br label %481

481:                                              ; preds = %476, %480
  %.str.25.sink302 = phi ptr [ @.str.25, %480 ], [ @.str.22, %476 ]
  store i32 %471, ptr %411, align 4, !tbaa !5
  %482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %483 = load i32, ptr @test_count, align 4, !tbaa !5
  %484 = load i32, ptr %357, align 4, !tbaa !5
  %485 = call ptr @s2n_strerror(i32 noundef %484, ptr noundef nonnull @.str.24) #11
  %486 = load i32, ptr %357, align 4, !tbaa !5
  %487 = call ptr @s2n_strerror_debug(i32 noundef %486, ptr noundef nonnull @.str.24) #11
  %488 = load i32, ptr %411, align 4, !tbaa !5
  %489 = call ptr @strerror(i32 noundef %488) #11
  %490 = load i32, ptr %411, align 4, !tbaa !5
  %491 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %482, ptr noundef nonnull %.str.25.sink302, i32 noundef %483, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.21, i32 noundef 87, ptr noundef %485, ptr noundef %487, ptr noundef %489, i32 noundef %490) #13
  call void @exit(i32 noundef 1) #14
  unreachable

492:                                              ; preds = %465
  %493 = add nsw i32 %466, 2
  store i32 %493, ptr @test_count, align 4, !tbaa !5
  %494 = call ptr @s2n_strerror_debug(i32 noundef 335544321, ptr noundef nonnull @.str.24) #11
  %495 = icmp eq ptr %494, null
  br i1 %495, label %496, label %518

496:                                              ; preds = %492
  %497 = load i32, ptr %411, align 4, !tbaa !5
  %498 = load ptr, ptr @stderr, align 8, !tbaa !9
  %499 = call i32 @s2n_print_stacktrace(ptr noundef %498) #11
  %500 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %501 = trunc nuw i8 %500 to i1
  br i1 %501, label %502, label %506

502:                                              ; preds = %496
  %503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %504 = call i32 @fileno(ptr noundef %503) #11
  %505 = call i32 @isatty(i32 noundef %504) #11
  %.not127 = icmp eq i32 %505, 0
  br i1 %.not127, label %506, label %507

506:                                              ; preds = %502, %496
  br label %507

507:                                              ; preds = %502, %506
  %.str.25.sink311 = phi ptr [ @.str.25, %506 ], [ @.str.22, %502 ]
  store i32 %497, ptr %411, align 4, !tbaa !5
  %508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %509 = load i32, ptr @test_count, align 4, !tbaa !5
  %510 = load i32, ptr %357, align 4, !tbaa !5
  %511 = call ptr @s2n_strerror(i32 noundef %510, ptr noundef nonnull @.str.24) #11
  %512 = load i32, ptr %357, align 4, !tbaa !5
  %513 = call ptr @s2n_strerror_debug(i32 noundef %512, ptr noundef nonnull @.str.24) #11
  %514 = load i32, ptr %411, align 4, !tbaa !5
  %515 = call ptr @strerror(i32 noundef %514) #11
  %516 = load i32, ptr %411, align 4, !tbaa !5
  %517 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %508, ptr noundef nonnull %.str.25.sink311, i32 noundef %509, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.21, i32 noundef 87, ptr noundef %511, ptr noundef %513, ptr noundef %515, i32 noundef %516) #13
  call void @exit(i32 noundef 1) #14
  unreachable

518:                                              ; preds = %492
  store i32 0, ptr %357, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %411, align 4, !tbaa !5
  %519 = load i32, ptr @test_count, align 4, !tbaa !5
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr @test_count, align 4, !tbaa !5
  %521 = call i32 @s2n_stuffer_reread(ptr noundef nonnull %6) #11
  %522 = icmp eq i32 %521, -1
  br i1 %522, label %523, label %545

523:                                              ; preds = %518
  %524 = load i32, ptr %411, align 4, !tbaa !5
  %525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %526 = call i32 @s2n_print_stacktrace(ptr noundef %525) #11
  %527 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %528 = trunc nuw i8 %527 to i1
  br i1 %528, label %529, label %533

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

533:                                              ; preds = %529, %523
  br label %534

534:                                              ; preds = %529, %533
  %.str.25.sink320 = phi ptr [ @.str.25, %533 ], [ @.str.22, %529 ]
  store i32 %524, ptr %411, align 4, !tbaa !5
  %535 = load ptr, ptr @stderr, align 8, !tbaa !9
  %536 = load i32, ptr @test_count, align 4, !tbaa !5
  %537 = load i32, ptr %357, align 4, !tbaa !5
  %538 = call ptr @s2n_strerror(i32 noundef %537, ptr noundef nonnull @.str.24) #11
  %539 = load i32, ptr %357, align 4, !tbaa !5
  %540 = call ptr @s2n_strerror_debug(i32 noundef %539, ptr noundef nonnull @.str.24) #11
  %541 = load i32, ptr %411, align 4, !tbaa !5
  %542 = call ptr @strerror(i32 noundef %541) #11
  %543 = load i32, ptr %411, align 4, !tbaa !5
  %544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %535, ptr noundef nonnull %.str.25.sink320, i32 noundef %536, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.21, i32 noundef 92, ptr noundef %538, ptr noundef %540, ptr noundef %542, i32 noundef %543) #13
  call void @exit(i32 noundef 1) #14
  unreachable

545:                                              ; preds = %518
  store i32 4, ptr %325, align 8, !tbaa !56
  %546 = load i32, ptr @test_count, align 4, !tbaa !5
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr @test_count, align 4, !tbaa !5
  %548 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %129)
  %549 = icmp eq i32 %548, -1
  br i1 %549, label %550, label %572

550:                                              ; preds = %545
  %551 = load i32, ptr %411, align 4, !tbaa !5
  %552 = load ptr, ptr @stderr, align 8, !tbaa !9
  %553 = call i32 @s2n_print_stacktrace(ptr noundef %552) #11
  %554 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %555 = trunc nuw i8 %554 to i1
  br i1 %555, label %556, label %560

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

560:                                              ; preds = %556, %550
  br label %561

561:                                              ; preds = %556, %560
  %.str.25.sink329 = phi ptr [ @.str.25, %560 ], [ @.str.22, %556 ]
  store i32 %551, ptr %411, align 4, !tbaa !5
  %562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %563 = load i32, ptr @test_count, align 4, !tbaa !5
  %564 = load i32, ptr %357, align 4, !tbaa !5
  %565 = call ptr @s2n_strerror(i32 noundef %564, ptr noundef nonnull @.str.24) #11
  %566 = load i32, ptr %357, align 4, !tbaa !5
  %567 = call ptr @s2n_strerror_debug(i32 noundef %566, ptr noundef nonnull @.str.24) #11
  %568 = load i32, ptr %411, align 4, !tbaa !5
  %569 = call ptr @strerror(i32 noundef %568) #11
  %570 = load i32, ptr %411, align 4, !tbaa !5
  %571 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %562, ptr noundef nonnull %.str.25.sink329, i32 noundef %563, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.21, i32 noundef 94, ptr noundef %565, ptr noundef %567, ptr noundef %569, i32 noundef %570) #13
  call void @exit(i32 noundef 1) #14
  unreachable

572:                                              ; preds = %545
  %573 = load i32, ptr @test_count, align 4, !tbaa !5
  %574 = add nsw i32 %573, 1
  store i32 %574, ptr @test_count, align 4, !tbaa !5
  %575 = call i32 @s2n_connection_free(ptr noundef nonnull %129) #11
  %576 = icmp eq i32 %575, -1
  br i1 %576, label %577, label %599

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

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

587:                                              ; preds = %583, %577
  br label %588

588:                                              ; preds = %583, %587
  %.str.25.sink338 = phi ptr [ @.str.25, %587 ], [ @.str.22, %583 ]
  store i32 %578, ptr %411, align 4, !tbaa !5
  %589 = load ptr, ptr @stderr, align 8, !tbaa !9
  %590 = load i32, ptr @test_count, align 4, !tbaa !5
  %591 = load i32, ptr %357, align 4, !tbaa !5
  %592 = call ptr @s2n_strerror(i32 noundef %591, ptr noundef nonnull @.str.24) #11
  %593 = load i32, ptr %357, align 4, !tbaa !5
  %594 = call ptr @s2n_strerror_debug(i32 noundef %593, ptr noundef nonnull @.str.24) #11
  %595 = load i32, ptr %411, align 4, !tbaa !5
  %596 = call ptr @strerror(i32 noundef %595) #11
  %597 = load i32, ptr %411, align 4, !tbaa !5
  %598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %589, ptr noundef nonnull %.str.25.sink338, i32 noundef %590, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.21, i32 noundef 97, ptr noundef %592, ptr noundef %594, ptr noundef %596, i32 noundef %597) #13
  call void @exit(i32 noundef 1) #14
  unreachable

599:                                              ; preds = %572
  %600 = call i32 @s2n_stuffer_free(ptr noundef nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #11
  %601 = call ptr @s2n_connection_new(i32 noundef 1) #11
  %602 = load i32, ptr @test_count, align 4, !tbaa !5
  %603 = add nsw i32 %602, 1
  store i32 %603, ptr @test_count, align 4, !tbaa !5
  %604 = icmp eq ptr %601, null
  br i1 %604, label %605, label %627

605:                                              ; preds = %599
  %606 = load i32, ptr %411, align 4, !tbaa !5
  %607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %608 = call i32 @s2n_print_stacktrace(ptr noundef %607) #11
  %609 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %610 = trunc nuw i8 %609 to i1
  br i1 %610, label %611, label %615

611:                                              ; preds = %605
  %612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %613 = call i32 @fileno(ptr noundef %612) #11
  %614 = call i32 @isatty(i32 noundef %613) #11
  %.not123 = icmp eq i32 %614, 0
  br i1 %.not123, label %615, label %616

615:                                              ; preds = %611, %605
  br label %616

616:                                              ; preds = %611, %615
  %.str.25.sink347 = phi ptr [ @.str.25, %615 ], [ @.str.22, %611 ]
  store i32 %606, ptr %411, align 4, !tbaa !5
  %617 = load ptr, ptr @stderr, align 8, !tbaa !9
  %618 = load i32, ptr @test_count, align 4, !tbaa !5
  %619 = load i32, ptr %357, align 4, !tbaa !5
  %620 = call ptr @s2n_strerror(i32 noundef %619, ptr noundef nonnull @.str.24) #11
  %621 = load i32, ptr %357, align 4, !tbaa !5
  %622 = call ptr @s2n_strerror_debug(i32 noundef %621, ptr noundef nonnull @.str.24) #11
  %623 = load i32, ptr %411, align 4, !tbaa !5
  %624 = call ptr @strerror(i32 noundef %623) #11
  %625 = load i32, ptr %411, align 4, !tbaa !5
  %626 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %617, ptr noundef nonnull %.str.25.sink347, i32 noundef %618, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.21, i32 noundef 106, ptr noundef %620, ptr noundef %622, ptr noundef %624, i32 noundef %625) #13
  call void @exit(i32 noundef 1) #14
  unreachable

627:                                              ; preds = %599
  %628 = add nsw i32 %602, 2
  store i32 %628, ptr @test_count, align 4, !tbaa !5
  %629 = call i32 @s2n_connection_set_blinding(ptr noundef nonnull %601, i32 noundef 1) #11
  %630 = icmp eq i32 %629, -1
  br i1 %630, label %631, label %653

631:                                              ; preds = %627
  %632 = load i32, ptr %411, align 4, !tbaa !5
  %633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %634 = call i32 @s2n_print_stacktrace(ptr noundef %633) #11
  %635 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %636 = trunc nuw i8 %635 to i1
  br i1 %636, label %637, label %641

637:                                              ; preds = %631
  %638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %639 = call i32 @fileno(ptr noundef %638) #11
  %640 = call i32 @isatty(i32 noundef %639) #11
  %.not122 = icmp eq i32 %640, 0
  br i1 %.not122, label %641, label %642

641:                                              ; preds = %637, %631
  br label %642

642:                                              ; preds = %637, %641
  %.str.25.sink356 = phi ptr [ @.str.25, %641 ], [ @.str.22, %637 ]
  store i32 %632, ptr %411, align 4, !tbaa !5
  %643 = load ptr, ptr @stderr, align 8, !tbaa !9
  %644 = load i32, ptr @test_count, align 4, !tbaa !5
  %645 = load i32, ptr %357, align 4, !tbaa !5
  %646 = call ptr @s2n_strerror(i32 noundef %645, ptr noundef nonnull @.str.24) #11
  %647 = load i32, ptr %357, align 4, !tbaa !5
  %648 = call ptr @s2n_strerror_debug(i32 noundef %647, ptr noundef nonnull @.str.24) #11
  %649 = load i32, ptr %411, align 4, !tbaa !5
  %650 = call ptr @strerror(i32 noundef %649) #11
  %651 = load i32, ptr %411, align 4, !tbaa !5
  %652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %643, ptr noundef nonnull %.str.25.sink356, i32 noundef %644, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.21, i32 noundef 107, ptr noundef %646, ptr noundef %648, ptr noundef %650, i32 noundef %651) #13
  call void @exit(i32 noundef 1) #14
  unreachable

653:                                              ; preds = %627
  %654 = getelementptr inbounds i8, ptr %601, i64 232
  %655 = load ptr, ptr %654, align 8, !tbaa !22
  store ptr @s2n_tls13_aes_256_gcm_sha384, ptr %655, align 8, !tbaa !48
  %656 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_tls13_aes_256_gcm_sha384, i64 48), align 8, !tbaa !15
  %657 = load ptr, ptr %656, align 8, !tbaa !17
  %658 = getelementptr inbounds i8, ptr %657, i64 64
  %659 = load ptr, ptr %658, align 8, !tbaa !53
  %660 = getelementptr inbounds i8, ptr %655, i64 16
  %661 = call i32 %659(ptr noundef nonnull %660) #11
  %662 = call zeroext i1 @s2n_result_is_ok(i32 %661)
  br i1 %662, label %663, label %.thread

663:                                              ; preds = %653
  %664 = load ptr, ptr %654, align 8, !tbaa !22
  %665 = load ptr, ptr %664, align 8, !tbaa !48
  %666 = getelementptr inbounds i8, ptr %665, i64 48
  %667 = load ptr, ptr %666, align 8, !tbaa !15
  %668 = load ptr, ptr %667, align 8, !tbaa !17
  %669 = getelementptr inbounds i8, ptr %668, i64 72
  %670 = load ptr, ptr %669, align 8, !tbaa !54
  %671 = getelementptr inbounds i8, ptr %664, i64 16
  %672 = call i32 %670(ptr noundef nonnull %671, ptr noundef nonnull %5) #11
  %673 = call zeroext i1 @s2n_result_is_ok(i32 %672)
  br i1 %673, label %674, label %.thread

674:                                              ; preds = %663
  %675 = load ptr, ptr %654, align 8, !tbaa !22
  %676 = getelementptr inbounds i8, ptr %601, i64 640
  store ptr %675, ptr %676, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %7, i8 0, i64 40, i1 false)
  %677 = load i32, ptr @test_count, align 4, !tbaa !5
  %678 = add nsw i32 %677, 1
  store i32 %678, ptr @test_count, align 4, !tbaa !5
  %679 = call i32 @s2n_stuffer_growable_alloc(ptr noundef nonnull %7, i32 noundef 8092) #11
  %680 = icmp eq i32 %679, -1
  br i1 %680, label %681, label %703

681:                                              ; preds = %674
  %682 = load i32, ptr %411, align 4, !tbaa !5
  %683 = load ptr, ptr @stderr, align 8, !tbaa !9
  %684 = call i32 @s2n_print_stacktrace(ptr noundef %683) #11
  %685 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %686 = trunc nuw i8 %685 to i1
  br i1 %686, label %687, label %691

687:                                              ; preds = %681
  %688 = load ptr, ptr @stderr, align 8, !tbaa !9
  %689 = call i32 @fileno(ptr noundef %688) #11
  %690 = call i32 @isatty(i32 noundef %689) #11
  %.not121 = icmp eq i32 %690, 0
  br i1 %.not121, label %691, label %692

691:                                              ; preds = %687, %681
  br label %692

692:                                              ; preds = %687, %691
  %.str.25.sink365 = phi ptr [ @.str.25, %691 ], [ @.str.22, %687 ]
  store i32 %682, ptr %411, align 4, !tbaa !5
  %693 = load ptr, ptr @stderr, align 8, !tbaa !9
  %694 = load i32, ptr @test_count, align 4, !tbaa !5
  %695 = load i32, ptr %357, align 4, !tbaa !5
  %696 = call ptr @s2n_strerror(i32 noundef %695, ptr noundef nonnull @.str.24) #11
  %697 = load i32, ptr %357, align 4, !tbaa !5
  %698 = call ptr @s2n_strerror_debug(i32 noundef %697, ptr noundef nonnull @.str.24) #11
  %699 = load i32, ptr %411, align 4, !tbaa !5
  %700 = call ptr @strerror(i32 noundef %699) #11
  %701 = load i32, ptr %411, align 4, !tbaa !5
  %702 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %693, ptr noundef nonnull %.str.25.sink365, i32 noundef %694, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.21, i32 noundef 115, ptr noundef %696, ptr noundef %698, ptr noundef %700, i32 noundef %701) #13
  call void @exit(i32 noundef 1) #14
  unreachable

703:                                              ; preds = %674
  %704 = load i32, ptr @test_count, align 4, !tbaa !5
  %705 = add nsw i32 %704, 1
  store i32 %705, ptr @test_count, align 4, !tbaa !5
  %706 = call i32 @s2n_connection_set_io_stuffers(ptr noundef nonnull %7, ptr noundef nonnull %7, ptr noundef nonnull %601) #11
  %707 = icmp eq i32 %706, -1
  br i1 %707, label %708, label %730

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

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

718:                                              ; preds = %714, %708
  br label %719

719:                                              ; preds = %714, %718
  %.str.25.sink374 = phi ptr [ @.str.25, %718 ], [ @.str.22, %714 ]
  store i32 %709, ptr %411, align 4, !tbaa !5
  %720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %721 = load i32, ptr @test_count, align 4, !tbaa !5
  %722 = load i32, ptr %357, align 4, !tbaa !5
  %723 = call ptr @s2n_strerror(i32 noundef %722, ptr noundef nonnull @.str.24) #11
  %724 = load i32, ptr %357, align 4, !tbaa !5
  %725 = call ptr @s2n_strerror_debug(i32 noundef %724, ptr noundef nonnull @.str.24) #11
  %726 = load i32, ptr %411, align 4, !tbaa !5
  %727 = call ptr @strerror(i32 noundef %726) #11
  %728 = load i32, ptr %411, align 4, !tbaa !5
  %729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %720, ptr noundef nonnull %.str.25.sink374, i32 noundef %721, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.21, i32 noundef 116, ptr noundef %723, ptr noundef %725, ptr noundef %727, i32 noundef %728) #13
  call void @exit(i32 noundef 1) #14
  unreachable

730:                                              ; preds = %703
  %731 = load i32, ptr @test_count, align 4, !tbaa !5
  %732 = add nsw i32 %731, 1
  store i32 %732, ptr @test_count, align 4, !tbaa !5
  %733 = call i32 @s2n_stuffer_write_bytes(ptr noundef nonnull %7, ptr noundef nonnull %3, i32 noundef 21) #11
  %734 = icmp eq i32 %733, -1
  br i1 %734, label %735, label %757

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

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

745:                                              ; preds = %741, %735
  br label %746

746:                                              ; preds = %741, %745
  %.str.25.sink383 = phi ptr [ @.str.25, %745 ], [ @.str.22, %741 ]
  store i32 %736, ptr %411, align 4, !tbaa !5
  %747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %748 = load i32, ptr @test_count, align 4, !tbaa !5
  %749 = load i32, ptr %357, align 4, !tbaa !5
  %750 = call ptr @s2n_strerror(i32 noundef %749, ptr noundef nonnull @.str.24) #11
  %751 = load i32, ptr %357, align 4, !tbaa !5
  %752 = call ptr @s2n_strerror_debug(i32 noundef %751, ptr noundef nonnull @.str.24) #11
  %753 = load i32, ptr %411, align 4, !tbaa !5
  %754 = call ptr @strerror(i32 noundef %753) #11
  %755 = load i32, ptr %411, align 4, !tbaa !5
  %756 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %747, ptr noundef nonnull %.str.25.sink383, i32 noundef %748, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.21, i32 noundef 118, ptr noundef %750, ptr noundef %752, ptr noundef %754, i32 noundef %755) #13
  call void @exit(i32 noundef 1) #14
  unreachable

757:                                              ; preds = %730
  %758 = getelementptr inbounds i8, ptr %601, i64 4088
  store i32 4, ptr %758, align 8, !tbaa !56
  %759 = load i32, ptr @test_count, align 4, !tbaa !5
  %760 = add nsw i32 %759, 1
  store i32 %760, ptr @test_count, align 4, !tbaa !5
  %761 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %601)
  %762 = icmp eq i32 %761, -1
  br i1 %762, label %785, label %763

763:                                              ; preds = %757
  %764 = load i32, ptr %411, 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 = %763
  %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
  %.not110 = icmp eq i32 %772, 0
  br i1 %.not110, label %773, label %774

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

774:                                              ; preds = %769, %773
  %.str.25.sink392 = phi ptr [ @.str.25, %773 ], [ @.str.22, %769 ]
  store i32 %764, ptr %411, align 4, !tbaa !5
  %775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %776 = load i32, ptr @test_count, align 4, !tbaa !5
  %777 = load i32, ptr %357, align 4, !tbaa !5
  %778 = call ptr @s2n_strerror(i32 noundef %777, ptr noundef nonnull @.str.24) #11
  %779 = load i32, ptr %357, align 4, !tbaa !5
  %780 = call ptr @s2n_strerror_debug(i32 noundef %779, ptr noundef nonnull @.str.24) #11
  %781 = load i32, ptr %411, align 4, !tbaa !5
  %782 = call ptr @strerror(i32 noundef %781) #11
  %783 = load i32, ptr %411, align 4, !tbaa !5
  %784 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %775, ptr noundef nonnull %.str.25.sink392, i32 noundef %776, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.21, i32 noundef 121, ptr noundef %778, ptr noundef %780, ptr noundef %782, i32 noundef %783) #13
  call void @exit(i32 noundef 1) #14
  unreachable

785:                                              ; preds = %757
  %786 = load i32, ptr @test_count, align 4, !tbaa !5
  %787 = add nsw i32 %786, 1
  store i32 %787, ptr @test_count, align 4, !tbaa !5
  %788 = load i32, ptr %357, align 4, !tbaa !5
  %789 = icmp eq i32 %788, 335544321
  br i1 %789, label %812, label %790

790:                                              ; preds = %785
  %791 = load i32, ptr %411, align 4, !tbaa !5
  %792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %793 = call i32 @s2n_print_stacktrace(ptr noundef %792) #11
  %794 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %795 = trunc nuw i8 %794 to i1
  br i1 %795, label %796, label %800

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

800:                                              ; preds = %796, %790
  br label %801

801:                                              ; preds = %796, %800
  %.str.25.sink401 = phi ptr [ @.str.25, %800 ], [ @.str.22, %796 ]
  store i32 %791, ptr %411, align 4, !tbaa !5
  %802 = load ptr, ptr @stderr, align 8, !tbaa !9
  %803 = load i32, ptr @test_count, align 4, !tbaa !5
  %804 = load i32, ptr %357, align 4, !tbaa !5
  %805 = call ptr @s2n_strerror(i32 noundef %804, ptr noundef nonnull @.str.24) #11
  %806 = load i32, ptr %357, align 4, !tbaa !5
  %807 = call ptr @s2n_strerror_debug(i32 noundef %806, ptr noundef nonnull @.str.24) #11
  %808 = load i32, ptr %411, align 4, !tbaa !5
  %809 = call ptr @strerror(i32 noundef %808) #11
  %810 = load i32, ptr %411, align 4, !tbaa !5
  %811 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %802, ptr noundef nonnull %.str.25.sink401, i32 noundef %803, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.21, i32 noundef 121, ptr noundef %805, ptr noundef %807, ptr noundef %809, i32 noundef %810) #13
  call void @exit(i32 noundef 1) #14
  unreachable

812:                                              ; preds = %785
  %813 = add nsw i32 %786, 2
  store i32 %813, ptr @test_count, align 4, !tbaa !5
  %814 = call ptr @s2n_strerror_debug(i32 noundef 335544321, ptr noundef nonnull @.str.24) #11
  %815 = icmp eq ptr %814, null
  br i1 %815, label %816, label %838

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

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

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

827:                                              ; preds = %822, %826
  %.str.25.sink410 = phi ptr [ @.str.25, %826 ], [ @.str.22, %822 ]
  store i32 %817, ptr %411, align 4, !tbaa !5
  %828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %829 = load i32, ptr @test_count, align 4, !tbaa !5
  %830 = load i32, ptr %357, align 4, !tbaa !5
  %831 = call ptr @s2n_strerror(i32 noundef %830, ptr noundef nonnull @.str.24) #11
  %832 = load i32, ptr %357, align 4, !tbaa !5
  %833 = call ptr @s2n_strerror_debug(i32 noundef %832, ptr noundef nonnull @.str.24) #11
  %834 = load i32, ptr %411, align 4, !tbaa !5
  %835 = call ptr @strerror(i32 noundef %834) #11
  %836 = load i32, ptr %411, align 4, !tbaa !5
  %837 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %828, ptr noundef nonnull %.str.25.sink410, i32 noundef %829, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.21, i32 noundef 121, ptr noundef %831, ptr noundef %833, ptr noundef %835, i32 noundef %836) #13
  call void @exit(i32 noundef 1) #14
  unreachable

838:                                              ; preds = %812
  store i32 0, ptr %357, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %411, align 4, !tbaa !5
  %839 = load i32, ptr @test_count, align 4, !tbaa !5
  %840 = add nsw i32 %839, 1
  store i32 %840, ptr @test_count, align 4, !tbaa !5
  %841 = call i32 @s2n_connection_free(ptr noundef nonnull %601) #11
  %842 = icmp eq i32 %841, -1
  br i1 %842, label %843, label %865

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

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

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

854:                                              ; preds = %849, %853
  %.str.25.sink419 = phi ptr [ @.str.25, %853 ], [ @.str.22, %849 ]
  store i32 %844, ptr %411, align 4, !tbaa !5
  %855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %856 = load i32, ptr @test_count, align 4, !tbaa !5
  %857 = load i32, ptr %357, align 4, !tbaa !5
  %858 = call ptr @s2n_strerror(i32 noundef %857, ptr noundef nonnull @.str.24) #11
  %859 = load i32, ptr %357, align 4, !tbaa !5
  %860 = call ptr @s2n_strerror_debug(i32 noundef %859, ptr noundef nonnull @.str.24) #11
  %861 = load i32, ptr %411, align 4, !tbaa !5
  %862 = call ptr @strerror(i32 noundef %861) #11
  %863 = load i32, ptr %411, align 4, !tbaa !5
  %864 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %855, ptr noundef nonnull %.str.25.sink419, i32 noundef %856, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.21, i32 noundef 123, ptr noundef %858, ptr noundef %860, ptr noundef %862, i32 noundef %863) #13
  call void @exit(i32 noundef 1) #14
  unreachable

865:                                              ; preds = %838
  %866 = call i32 @s2n_stuffer_free(ptr noundef nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #11
  %867 = call i32 @s2n_cleanup() #11
  %868 = icmp eq i32 %867, -1
  br i1 %868, label %869, label %891

869:                                              ; preds = %865
  %870 = load i32, ptr %411, align 4, !tbaa !5
  %871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %872 = call i32 @s2n_print_stacktrace(ptr noundef %871) #11
  %873 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %874 = trunc nuw i8 %873 to i1
  br i1 %874, label %875, label %879

875:                                              ; preds = %869
  %876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %877 = call i32 @fileno(ptr noundef %876) #11
  %878 = call i32 @isatty(i32 noundef %877) #11
  %.not116 = icmp eq i32 %878, 0
  br i1 %.not116, label %879, label %880

879:                                              ; preds = %875, %869
  br label %880

880:                                              ; preds = %875, %879
  %.str.25.sink428 = phi ptr [ @.str.25, %879 ], [ @.str.22, %875 ]
  store i32 %870, ptr %411, align 4, !tbaa !5
  %881 = load ptr, ptr @stderr, align 8, !tbaa !9
  %882 = load i32, ptr @test_count, align 4, !tbaa !5
  %883 = load i32, ptr %357, align 4, !tbaa !5
  %884 = call ptr @s2n_strerror(i32 noundef %883, ptr noundef nonnull @.str.24) #11
  %885 = load i32, ptr %357, align 4, !tbaa !5
  %886 = call ptr @s2n_strerror_debug(i32 noundef %885, ptr noundef nonnull @.str.24) #11
  %887 = load i32, ptr %411, align 4, !tbaa !5
  %888 = call ptr @strerror(i32 noundef %887) #11
  %889 = load i32, ptr %411, align 4, !tbaa !5
  %890 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %881, ptr noundef nonnull %.str.25.sink428, i32 noundef %882, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.21, i32 noundef 128, ptr noundef %884, ptr noundef %886, ptr noundef %888, i32 noundef %889) #13
  call void @exit(i32 noundef 1) #14
  unreachable

891:                                              ; preds = %865
  %892 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #11
  %893 = icmp eq i32 %892, -1
  br i1 %893, label %894, label %916

894:                                              ; preds = %891
  %895 = load i32, ptr %411, align 4, !tbaa !5
  %896 = load ptr, ptr @stderr, align 8, !tbaa !9
  %897 = call i32 @s2n_print_stacktrace(ptr noundef %896) #11
  %898 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %899 = trunc nuw i8 %898 to i1
  br i1 %899, label %900, label %904

900:                                              ; preds = %894
  %901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %902 = call i32 @fileno(ptr noundef %901) #11
  %903 = call i32 @isatty(i32 noundef %902) #11
  %.not115 = icmp eq i32 %903, 0
  br i1 %.not115, label %904, label %905

904:                                              ; preds = %900, %894
  br label %905

905:                                              ; preds = %900, %904
  %.str.25.sink437 = phi ptr [ @.str.25, %904 ], [ @.str.22, %900 ]
  store i32 %895, ptr %411, align 4, !tbaa !5
  %906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %907 = load i32, ptr @test_count, align 4, !tbaa !5
  %908 = load i32, ptr %357, align 4, !tbaa !5
  %909 = call ptr @s2n_strerror(i32 noundef %908, ptr noundef nonnull @.str.24) #11
  %910 = load i32, ptr %357, align 4, !tbaa !5
  %911 = call ptr @s2n_strerror_debug(i32 noundef %910, ptr noundef nonnull @.str.24) #11
  %912 = load i32, ptr %411, align 4, !tbaa !5
  %913 = call ptr @strerror(i32 noundef %912) #11
  %914 = load i32, ptr %411, align 4, !tbaa !5
  %915 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %906, ptr noundef nonnull %.str.25.sink437, i32 noundef %907, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.21, i32 noundef 128, ptr noundef %909, ptr noundef %911, ptr noundef %913, i32 noundef %914) #13
  call void @exit(i32 noundef 1) #14
  unreachable

916:                                              ; preds = %891
  %917 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %918 = trunc nuw i8 %917 to i1
  br i1 %918, label %919, label %930

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

923:                                              ; preds = %919
  %924 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not114 = icmp eq i32 %924, 0
  %925 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not114, label %928, label %926

926:                                              ; preds = %923
  %927 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %925, ptr noundef nonnull @.str.47, i32 noundef %924) #11
  br label %.thread

928:                                              ; preds = %923
  %929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %925, ptr noundef nonnull @.str.48) #11
  br label %.thread

930:                                              ; preds = %919, %916
  %931 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not113 = icmp eq i32 %931, 0
  %932 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not113, label %935, label %933

933:                                              ; preds = %930
  %934 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %932, ptr noundef nonnull @.str.49, i32 noundef %931) #11
  br label %.thread

935:                                              ; preds = %930
  %936 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %932, ptr noundef nonnull @.str.50) #11
  br label %.thread

.thread:                                          ; preds = %663, %653, %195, %185, %928, %926, %935, %933
  %.2 = phi i32 [ 0, %933 ], [ 0, %935 ], [ 0, %926 ], [ 0, %928 ], [ -1, %185 ], [ -1, %195 ], [ -1, %653 ], [ -1, %663 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 21, ptr nonnull %3) #11
  ret i32 %.2
}

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

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

declare i32 @s2n_stuffer_free(ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @s2n_stuffer_reread(ptr noundef) local_unnamed_addr #2

declare void @s2n_debug_info_reset() local_unnamed_addr #2

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #8 = { 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 #9 = { 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 #10 = { 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 #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 48}
!16 = !{!"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}
!17 = !{!18, !10, i64 0}
!18 = !{!"s2n_record_algorithm", !10, i64 0, !6, i64 8, !6, i64 12, !19, i64 16}
!19 = !{!"long", !7, i64 0}
!20 = !{!21, !7, i64 48}
!21 = !{!"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}
!22 = !{!23, !10, i64 232}
!23 = !{!"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, !24, i64 160, !19, i64 168, !19, 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, !25, i64 240, !10, i64 632, !10, i64 640, !26, i64 648, !32, i64 1144, !35, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !38, i64 1776, !38, i64 1816, !38, i64 1856, !38, i64 1896, !6, i64 1936, !19, i64 1944, !7, i64 1952, !38, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !39, i64 2004, !39, i64 2008, !40, i64 2016, !37, i64 2208, !6, i64 2212, !37, i64 2216, !19, i64 2224, !7, i64 2232, !19, i64 2240, !19, i64 2248, !19, i64 2256, !39, i64 2264, !39, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !31, i64 2792, !6, i64 2816, !31, i64 2824, !31, i64 2848, !31, i64 2872, !42, i64 2896, !44, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !31, i64 3784, !6, i64 3808, !46, i64 3816, !7, i64 3848, !38, i64 3992, !31, i64 4032, !31, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !37, i64 4084, !37, i64 4086, !6, i64 4088, !6, i64 4092, !31, i64 4096, !6, i64 4120, !47, i64 4128, !39, i64 4176, !7, i64 4180, !7, i64 4181}
!24 = !{!"s2n_timer", !19, i64 0}
!25 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!26 = !{!"s2n_kex_parameters", !27, i64 0, !28, i64 8, !7, i64 24, !28, i64 56, !29, i64 72, !29, i64 184, !7, i64 296, !30, i64 360, !31, i64 448, !31, i64 472}
!27 = !{!"s2n_dh_params", !10, i64 0}
!28 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!29 = !{!"s2n_kem_group_params", !10, i64 0, !30, i64 8, !28, i64 96}
!30 = !{!"s2n_kem_params", !10, i64 0, !31, i64 8, !31, i64 32, !31, i64 56, !12, i64 80}
!31 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!32 = !{!"s2n_handshake_parameters", !33, i64 0, !33, i64 48, !31, i64 96, !6, i64 120, !34, 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}
!33 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!34 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!35 = !{!"s2n_psk_parameters", !6, i64 0, !36, i64 8, !37, i64 40, !37, i64 42, !10, i64 48, !6, i64 56}
!36 = !{!"s2n_array", !31, i64 0, !6, i64 24, !6, i64 28}
!37 = !{!"short", !7, i64 0}
!38 = !{!"s2n_stuffer", !31, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!39 = !{!"", !6, i64 0}
!40 = !{!"s2n_handshake", !38, 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, !41, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!41 = !{!"s2n_offered_early_data", !10, i64 0}
!42 = !{!"s2n_client_hello", !31, i64 0, !43, i64 24, !31, i64 728, !31, i64 752, !31, 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}
!43 = !{!"", !7, i64 0, !31, i64 672, !37, i64 696}
!44 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !37, i64 18, !10, i64 24, !6, i64 32, !10, i64 40, !45, i64 48, !12, i64 52}
!45 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!46 = !{!"s2n_ticket_fields", !31, i64 0, !6, i64 24}
!47 = !{!"s2n_post_handshake", !38, i64 0, !7, i64 40}
!48 = !{!49, !10, i64 0}
!49 = !{!"s2n_crypto_parameters", !10, i64 0, !50, i64 8, !50, i64 16, !51, i64 24, !51, i64 456, !7, i64 888, !7, i64 904, !7, i64 920, !7, i64 928}
!50 = !{!"s2n_session_key", !10, i64 0}
!51 = !{!"s2n_hmac_state", !6, i64 0, !37, i64 4, !6, i64 8, !37, i64 12, !7, i64 14, !52, i64 16, !52, i64 72, !52, i64 128, !52, i64 184, !7, i64 240, !7, i64 368}
!52 = !{!"s2n_hash_state", !10, i64 0, !6, i64 8, !7, i64 12, !19, i64 16, !7, i64 24}
!53 = !{!21, !10, i64 64}
!54 = !{!21, !10, i64 72}
!55 = !{!23, !10, i64 632}
!56 = !{!23, !6, i64 4088}
!57 = !{!23, !10, i64 640}


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