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

@s2n_use_color_in_output = external dso_local global i8, align 1
@.str = external hidden unnamed_addr constant [14 x i8], align 1
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [83 x i8], align 1
@stderr = external global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [149 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @mock_client(ptr noundef) #0

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

declare ptr @s2n_connection_new(i32 noundef) #2

declare ptr @s2n_config_new() #2

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

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

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

declare i32 @s2n_connection_prefer_throughput(ptr noundef) #2

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

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

declare i32 @s2n_connection_release_buffers(ptr noundef) #2

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

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

declare i32 @s2n_connection_free(ptr noundef) #2

declare i32 @s2n_config_free(ptr noundef) #2

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

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %struct.s2n_test_io_pair, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca [65535 x i8], align 16
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %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
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  store ptr null, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  store ptr null, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 0, ptr %10, align 4, !tbaa !5
  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.1, ptr noundef @.str.2) #7
  %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 %112

59:                                               ; preds = %56
  br label %60

60:                                               ; preds = %59
  br label %61

61:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  %62 = call ptr @__errno_location() #8
  %63 = load i32, ptr %62, align 4, !tbaa !5
  store i32 %63, ptr %11, 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) #7
  %71 = call i32 @isatty(i32 noundef %70) #7
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %73, label %90

73:                                               ; preds = %68
  %74 = load i32, ptr %11, align 4, !tbaa !5
  %75 = call ptr @__errno_location() #8
  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.5)
  %81 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %83 = call ptr @s2n_strerror_debug(i32 noundef %82, ptr noundef @.str.5)
  %84 = call ptr @__errno_location() #8
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %86 = call ptr @strerror(i32 noundef %85) #7
  %87 = call ptr @__errno_location() #8
  %88 = load i32, ptr %87, align 4, !tbaa !5
  %89 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %76, ptr noundef @.str.3, i32 noundef %77, ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 105, ptr noundef %80, ptr noundef %83, ptr noundef %86, i32 noundef %88) #7
  br label %107

90:                                               ; preds = %68, %61
  %91 = load i32, ptr %11, align 4, !tbaa !5
  %92 = call ptr @__errno_location() #8
  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.5)
  %98 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = call ptr @s2n_strerror_debug(i32 noundef %99, ptr noundef @.str.5)
  %101 = call ptr @__errno_location() #8
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %103 = call ptr @strerror(i32 noundef %102) #7
  %104 = call ptr @__errno_location() #8
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %93, ptr noundef @.str.6, i32 noundef %94, ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 105, ptr noundef %97, ptr noundef %100, ptr noundef %103, i32 noundef %105) #7
  br label %107

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

108:                                              ; preds = %107
  br label %109

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

110:                                              ; No predecessors!
  br label %111

111:                                              ; preds = %110
  br label %112

112:                                              ; preds = %111, %56
  br label %113

113:                                              ; preds = %112
  br label %114

114:                                              ; preds = %113
  br label %115

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

120:                                              ; preds = %115
  br label %121

121:                                              ; preds = %120
  br label %122

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

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

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

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

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

169:                                              ; preds = %168
  br label %170

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

171:                                              ; No predecessors!
  br label %172

172:                                              ; preds = %171
  br label %173

173:                                              ; preds = %172, %115
  br label %174

174:                                              ; preds = %173
  br label %175

175:                                              ; preds = %174
  br label %176

176:                                              ; preds = %175
  br label %177

177:                                              ; preds = %176
  br label %178

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

181:                                              ; preds = %178
  br label %182

182:                                              ; preds = %181
  br label %183

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

190:                                              ; preds = %183
  %191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %192 = call i32 @fileno(ptr noundef %191) #7
  %193 = call i32 @isatty(i32 noundef %192) #7
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %195, label %212

195:                                              ; preds = %190
  %196 = load i32, ptr %13, align 4, !tbaa !5
  %197 = call ptr @__errno_location() #8
  store i32 %196, ptr %197, align 4, !tbaa !5
  %198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %199 = load i32, ptr @test_count, align 4, !tbaa !5
  %200 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %201 = load i32, ptr %200, align 4, !tbaa !5
  %202 = call ptr @s2n_strerror(i32 noundef %201, ptr noundef @.str.5)
  %203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %204 = load i32, ptr %203, align 4, !tbaa !5
  %205 = call ptr @s2n_strerror_debug(i32 noundef %204, ptr noundef @.str.5)
  %206 = call ptr @__errno_location() #8
  %207 = load i32, ptr %206, align 4, !tbaa !5
  %208 = call ptr @strerror(i32 noundef %207) #7
  %209 = call ptr @__errno_location() #8
  %210 = load i32, ptr %209, align 4, !tbaa !5
  %211 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %198, ptr noundef @.str.3, i32 noundef %199, ptr noundef @.str.8, ptr noundef @.str.2, i32 noundef 105, ptr noundef %202, ptr noundef %205, ptr noundef %208, i32 noundef %210) #7
  br label %229

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

229:                                              ; preds = %212, %195
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %230

230:                                              ; preds = %229
  br label %231

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

232:                                              ; No predecessors!
  br label %233

233:                                              ; preds = %232
  br label %234

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

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %235
  br label %237

237:                                              ; preds = %236
  br label %238

238:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  br label %239

239:                                              ; preds = %238
  %240 = load i32, ptr @test_count, align 4, !tbaa !5
  %241 = add nsw i32 %240, 1
  store i32 %241, ptr @test_count, align 4, !tbaa !5
  %242 = call i32 @s2n_io_pair_init(ptr noundef %14)
  %243 = icmp eq i32 %242, -1
  br i1 %243, label %244, label %297

244:                                              ; preds = %239
  br label %245

245:                                              ; preds = %244
  br label %246

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

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

258:                                              ; preds = %253
  %259 = load i32, ptr %15, align 4, !tbaa !5
  %260 = call ptr @__errno_location() #8
  store i32 %259, ptr %260, align 4, !tbaa !5
  %261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %262 = load i32, ptr @test_count, align 4, !tbaa !5
  %263 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %264 = load i32, ptr %263, align 4, !tbaa !5
  %265 = call ptr @s2n_strerror(i32 noundef %264, ptr noundef @.str.5)
  %266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %267 = load i32, ptr %266, align 4, !tbaa !5
  %268 = call ptr @s2n_strerror_debug(i32 noundef %267, ptr noundef @.str.5)
  %269 = call ptr @__errno_location() #8
  %270 = load i32, ptr %269, align 4, !tbaa !5
  %271 = call ptr @strerror(i32 noundef %270) #7
  %272 = call ptr @__errno_location() #8
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %261, ptr noundef @.str.3, i32 noundef %262, ptr noundef @.str.9, ptr noundef @.str.2, i32 noundef 109, ptr noundef %265, ptr noundef %268, ptr noundef %271, i32 noundef %273) #7
  br label %292

275:                                              ; preds = %253, %246
  %276 = load i32, ptr %15, align 4, !tbaa !5
  %277 = call ptr @__errno_location() #8
  store i32 %276, ptr %277, align 4, !tbaa !5
  %278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %279 = load i32, ptr @test_count, align 4, !tbaa !5
  %280 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %281 = load i32, ptr %280, align 4, !tbaa !5
  %282 = call ptr @s2n_strerror(i32 noundef %281, ptr noundef @.str.5)
  %283 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %284 = load i32, ptr %283, align 4, !tbaa !5
  %285 = call ptr @s2n_strerror_debug(i32 noundef %284, ptr noundef @.str.5)
  %286 = call ptr @__errno_location() #8
  %287 = load i32, ptr %286, align 4, !tbaa !5
  %288 = call ptr @strerror(i32 noundef %287) #7
  %289 = call ptr @__errno_location() #8
  %290 = load i32, ptr %289, align 4, !tbaa !5
  %291 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %278, ptr noundef @.str.6, i32 noundef %279, ptr noundef @.str.9, ptr noundef @.str.2, i32 noundef 109, ptr noundef %282, ptr noundef %285, ptr noundef %288, i32 noundef %290) #7
  br label %292

292:                                              ; preds = %275, %258
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %293

293:                                              ; preds = %292
  br label %294

294:                                              ; preds = %293
  call void @exit(i32 noundef 1) #9
  unreachable

295:                                              ; No predecessors!
  br label %296

296:                                              ; preds = %295
  br label %297

297:                                              ; preds = %296, %239
  br label %298

298:                                              ; preds = %297
  br label %299

299:                                              ; preds = %298
  %300 = call i32 @fork() #7
  store i32 %300, ptr %10, align 4, !tbaa !5
  %301 = load i32, ptr %10, align 4, !tbaa !5
  %302 = icmp eq i32 %301, 0
  br i1 %302, label %303, label %365

303:                                              ; preds = %299
  br label %304

304:                                              ; preds = %303
  %305 = load i32, ptr @test_count, align 4, !tbaa !5
  %306 = add nsw i32 %305, 1
  store i32 %306, ptr @test_count, align 4, !tbaa !5
  %307 = call i32 @s2n_io_pair_close_one_end(ptr noundef %14, i32 noundef 0)
  %308 = icmp eq i32 %307, -1
  br i1 %308, label %309, label %362

309:                                              ; preds = %304
  br label %310

310:                                              ; preds = %309
  br label %311

311:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %312 = call ptr @__errno_location() #8
  %313 = load i32, ptr %312, align 4, !tbaa !5
  store i32 %313, ptr %16, align 4, !tbaa !5
  %314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %315 = call i32 @s2n_print_stacktrace(ptr noundef %314)
  %316 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %317 = trunc i8 %316 to i1
  br i1 %317, label %318, label %340

318:                                              ; preds = %311
  %319 = load ptr, ptr @stderr, align 8, !tbaa !9
  %320 = call i32 @fileno(ptr noundef %319) #7
  %321 = call i32 @isatty(i32 noundef %320) #7
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %340

323:                                              ; preds = %318
  %324 = load i32, ptr %16, align 4, !tbaa !5
  %325 = call ptr @__errno_location() #8
  store i32 %324, ptr %325, align 4, !tbaa !5
  %326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %327 = load i32, ptr @test_count, align 4, !tbaa !5
  %328 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %329 = load i32, ptr %328, align 4, !tbaa !5
  %330 = call ptr @s2n_strerror(i32 noundef %329, ptr noundef @.str.5)
  %331 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %332 = load i32, ptr %331, align 4, !tbaa !5
  %333 = call ptr @s2n_strerror_debug(i32 noundef %332, ptr noundef @.str.5)
  %334 = call ptr @__errno_location() #8
  %335 = load i32, ptr %334, align 4, !tbaa !5
  %336 = call ptr @strerror(i32 noundef %335) #7
  %337 = call ptr @__errno_location() #8
  %338 = load i32, ptr %337, align 4, !tbaa !5
  %339 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %326, ptr noundef @.str.3, i32 noundef %327, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 115, ptr noundef %330, ptr noundef %333, ptr noundef %336, i32 noundef %338) #7
  br label %357

340:                                              ; preds = %318, %311
  %341 = load i32, ptr %16, align 4, !tbaa !5
  %342 = call ptr @__errno_location() #8
  store i32 %341, ptr %342, 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 @.str.5)
  %348 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %349 = load i32, ptr %348, align 4, !tbaa !5
  %350 = call ptr @s2n_strerror_debug(i32 noundef %349, ptr noundef @.str.5)
  %351 = call ptr @__errno_location() #8
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = call ptr @strerror(i32 noundef %352) #7
  %354 = call ptr @__errno_location() #8
  %355 = load i32, ptr %354, align 4, !tbaa !5
  %356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %343, ptr noundef @.str.6, i32 noundef %344, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 115, ptr noundef %347, ptr noundef %350, ptr noundef %353, i32 noundef %355) #7
  br label %357

357:                                              ; preds = %340, %323
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %358

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  call void @exit(i32 noundef 1) #9
  unreachable

360:                                              ; No predecessors!
  br label %361

361:                                              ; preds = %360
  br label %362

362:                                              ; preds = %361, %304
  br label %363

363:                                              ; preds = %362
  br label %364

364:                                              ; preds = %363
  call void @mock_client(ptr noundef %14)
  br label %365

365:                                              ; preds = %364, %299
  br label %366

366:                                              ; preds = %365
  %367 = load i32, ptr @test_count, align 4, !tbaa !5
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr @test_count, align 4, !tbaa !5
  %369 = call i32 @s2n_io_pair_close_one_end(ptr noundef %14, i32 noundef 1)
  %370 = icmp eq i32 %369, -1
  br i1 %370, label %371, label %424

371:                                              ; preds = %366
  br label %372

372:                                              ; preds = %371
  br label %373

373:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %374 = call ptr @__errno_location() #8
  %375 = load i32, ptr %374, align 4, !tbaa !5
  store i32 %375, ptr %17, align 4, !tbaa !5
  %376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %377 = call i32 @s2n_print_stacktrace(ptr noundef %376)
  %378 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %379 = trunc i8 %378 to i1
  br i1 %379, label %380, label %402

380:                                              ; preds = %373
  %381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %382 = call i32 @fileno(ptr noundef %381) #7
  %383 = call i32 @isatty(i32 noundef %382) #7
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %385, label %402

385:                                              ; preds = %380
  %386 = load i32, ptr %17, align 4, !tbaa !5
  %387 = call ptr @__errno_location() #8
  store i32 %386, ptr %387, align 4, !tbaa !5
  %388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %389 = load i32, ptr @test_count, align 4, !tbaa !5
  %390 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = call ptr @s2n_strerror(i32 noundef %391, ptr noundef @.str.5)
  %393 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %394 = load i32, ptr %393, align 4, !tbaa !5
  %395 = call ptr @s2n_strerror_debug(i32 noundef %394, ptr noundef @.str.5)
  %396 = call ptr @__errno_location() #8
  %397 = load i32, ptr %396, align 4, !tbaa !5
  %398 = call ptr @strerror(i32 noundef %397) #7
  %399 = call ptr @__errno_location() #8
  %400 = load i32, ptr %399, align 4, !tbaa !5
  %401 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %388, ptr noundef @.str.3, i32 noundef %389, ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 122, ptr noundef %392, ptr noundef %395, ptr noundef %398, i32 noundef %400) #7
  br label %419

402:                                              ; preds = %380, %373
  %403 = load i32, ptr %17, align 4, !tbaa !5
  %404 = call ptr @__errno_location() #8
  store i32 %403, ptr %404, align 4, !tbaa !5
  %405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %406 = load i32, ptr @test_count, align 4, !tbaa !5
  %407 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %408 = load i32, ptr %407, align 4, !tbaa !5
  %409 = call ptr @s2n_strerror(i32 noundef %408, ptr noundef @.str.5)
  %410 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %411 = load i32, ptr %410, align 4, !tbaa !5
  %412 = call ptr @s2n_strerror_debug(i32 noundef %411, ptr noundef @.str.5)
  %413 = call ptr @__errno_location() #8
  %414 = load i32, ptr %413, align 4, !tbaa !5
  %415 = call ptr @strerror(i32 noundef %414) #7
  %416 = call ptr @__errno_location() #8
  %417 = load i32, ptr %416, align 4, !tbaa !5
  %418 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %405, ptr noundef @.str.6, i32 noundef %406, ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 122, ptr noundef %409, ptr noundef %412, ptr noundef %415, i32 noundef %417) #7
  br label %419

419:                                              ; preds = %402, %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %420

420:                                              ; preds = %419
  br label %421

421:                                              ; preds = %420
  call void @exit(i32 noundef 1) #9
  unreachable

422:                                              ; No predecessors!
  br label %423

423:                                              ; preds = %422
  br label %424

424:                                              ; preds = %423, %366
  br label %425

425:                                              ; preds = %424
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  %428 = load i32, ptr @test_count, align 4, !tbaa !5
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr @test_count, align 4, !tbaa !5
  %430 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %430, ptr %6, align 8, !tbaa !9
  %431 = icmp eq ptr %430, null
  br i1 %431, label %432, label %485

432:                                              ; preds = %427
  br label %433

433:                                              ; preds = %432
  br label %434

434:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %435 = call ptr @__errno_location() #8
  %436 = load i32, ptr %435, align 4, !tbaa !5
  store i32 %436, ptr %18, align 4, !tbaa !5
  %437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %438 = call i32 @s2n_print_stacktrace(ptr noundef %437)
  %439 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %440 = trunc i8 %439 to i1
  br i1 %440, label %441, label %463

441:                                              ; preds = %434
  %442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %443 = call i32 @fileno(ptr noundef %442) #7
  %444 = call i32 @isatty(i32 noundef %443) #7
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %446, label %463

446:                                              ; preds = %441
  %447 = load i32, ptr %18, align 4, !tbaa !5
  %448 = call ptr @__errno_location() #8
  store i32 %447, ptr %448, align 4, !tbaa !5
  %449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %450 = load i32, ptr @test_count, align 4, !tbaa !5
  %451 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %452 = load i32, ptr %451, align 4, !tbaa !5
  %453 = call ptr @s2n_strerror(i32 noundef %452, ptr noundef @.str.5)
  %454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %455 = load i32, ptr %454, align 4, !tbaa !5
  %456 = call ptr @s2n_strerror_debug(i32 noundef %455, ptr noundef @.str.5)
  %457 = call ptr @__errno_location() #8
  %458 = load i32, ptr %457, align 4, !tbaa !5
  %459 = call ptr @strerror(i32 noundef %458) #7
  %460 = call ptr @__errno_location() #8
  %461 = load i32, ptr %460, align 4, !tbaa !5
  %462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %449, ptr noundef @.str.3, i32 noundef %450, ptr noundef @.str.12, ptr noundef @.str.2, i32 noundef 124, ptr noundef %453, ptr noundef %456, ptr noundef %459, i32 noundef %461) #7
  br label %480

463:                                              ; preds = %441, %434
  %464 = load i32, ptr %18, align 4, !tbaa !5
  %465 = call ptr @__errno_location() #8
  store i32 %464, ptr %465, align 4, !tbaa !5
  %466 = load ptr, ptr @stderr, align 8, !tbaa !9
  %467 = load i32, ptr @test_count, align 4, !tbaa !5
  %468 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %469 = load i32, ptr %468, align 4, !tbaa !5
  %470 = call ptr @s2n_strerror(i32 noundef %469, ptr noundef @.str.5)
  %471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %472 = load i32, ptr %471, align 4, !tbaa !5
  %473 = call ptr @s2n_strerror_debug(i32 noundef %472, ptr noundef @.str.5)
  %474 = call ptr @__errno_location() #8
  %475 = load i32, ptr %474, align 4, !tbaa !5
  %476 = call ptr @strerror(i32 noundef %475) #7
  %477 = call ptr @__errno_location() #8
  %478 = load i32, ptr %477, align 4, !tbaa !5
  %479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %466, ptr noundef @.str.6, i32 noundef %467, ptr noundef @.str.12, ptr noundef @.str.2, i32 noundef 124, ptr noundef %470, ptr noundef %473, ptr noundef %476, i32 noundef %478) #7
  br label %480

480:                                              ; preds = %463, %446
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %481

481:                                              ; preds = %480
  br label %482

482:                                              ; preds = %481
  call void @exit(i32 noundef 1) #9
  unreachable

483:                                              ; No predecessors!
  br label %484

484:                                              ; preds = %483
  br label %485

485:                                              ; preds = %484, %427
  br label %486

486:                                              ; preds = %485
  br label %487

487:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  store ptr null, ptr %19, align 8, !tbaa !9
  br label %488

488:                                              ; preds = %487
  %489 = load i32, ptr @test_count, align 4, !tbaa !5
  %490 = add nsw i32 %489, 1
  store i32 %490, ptr @test_count, align 4, !tbaa !5
  %491 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %19, ptr noundef @.str.13, ptr noundef @.str.14)
  %492 = icmp eq i32 %491, -1
  br i1 %492, label %493, label %546

493:                                              ; preds = %488
  br label %494

494:                                              ; preds = %493
  br label %495

495:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %496 = call ptr @__errno_location() #8
  %497 = load i32, ptr %496, align 4, !tbaa !5
  store i32 %497, ptr %20, align 4, !tbaa !5
  %498 = load ptr, ptr @stderr, align 8, !tbaa !9
  %499 = call i32 @s2n_print_stacktrace(ptr noundef %498)
  %500 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %501 = trunc i8 %500 to i1
  br i1 %501, label %502, label %524

502:                                              ; preds = %495
  %503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %504 = call i32 @fileno(ptr noundef %503) #7
  %505 = call i32 @isatty(i32 noundef %504) #7
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %507, label %524

507:                                              ; preds = %502
  %508 = load i32, ptr %20, align 4, !tbaa !5
  %509 = call ptr @__errno_location() #8
  store i32 %508, ptr %509, align 4, !tbaa !5
  %510 = load ptr, ptr @stderr, align 8, !tbaa !9
  %511 = load i32, ptr @test_count, align 4, !tbaa !5
  %512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %513 = load i32, ptr %512, align 4, !tbaa !5
  %514 = call ptr @s2n_strerror(i32 noundef %513, ptr noundef @.str.5)
  %515 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %516 = load i32, ptr %515, align 4, !tbaa !5
  %517 = call ptr @s2n_strerror_debug(i32 noundef %516, ptr noundef @.str.5)
  %518 = call ptr @__errno_location() #8
  %519 = load i32, ptr %518, align 4, !tbaa !5
  %520 = call ptr @strerror(i32 noundef %519) #7
  %521 = call ptr @__errno_location() #8
  %522 = load i32, ptr %521, align 4, !tbaa !5
  %523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %510, ptr noundef @.str.3, i32 noundef %511, ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 128, ptr noundef %514, ptr noundef %517, ptr noundef %520, i32 noundef %522) #7
  br label %541

524:                                              ; preds = %502, %495
  %525 = load i32, ptr %20, align 4, !tbaa !5
  %526 = call ptr @__errno_location() #8
  store i32 %525, ptr %526, align 4, !tbaa !5
  %527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %528 = load i32, ptr @test_count, align 4, !tbaa !5
  %529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %530 = load i32, ptr %529, align 4, !tbaa !5
  %531 = call ptr @s2n_strerror(i32 noundef %530, ptr noundef @.str.5)
  %532 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %533 = load i32, ptr %532, align 4, !tbaa !5
  %534 = call ptr @s2n_strerror_debug(i32 noundef %533, ptr noundef @.str.5)
  %535 = call ptr @__errno_location() #8
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = call ptr @strerror(i32 noundef %536) #7
  %538 = call ptr @__errno_location() #8
  %539 = load i32, ptr %538, align 4, !tbaa !5
  %540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %527, ptr noundef @.str.6, i32 noundef %528, ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 128, ptr noundef %531, ptr noundef %534, ptr noundef %537, i32 noundef %539) #7
  br label %541

541:                                              ; preds = %524, %507
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %542

542:                                              ; preds = %541
  br label %543

543:                                              ; preds = %542
  call void @exit(i32 noundef 1) #9
  unreachable

544:                                              ; No predecessors!
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545, %488
  br label %547

547:                                              ; preds = %546
  br label %548

548:                                              ; preds = %547
  br label %549

549:                                              ; preds = %548
  %550 = load i32, ptr @test_count, align 4, !tbaa !5
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr @test_count, align 4, !tbaa !5
  %552 = call ptr @s2n_config_new()
  store ptr %552, ptr %7, align 8, !tbaa !9
  %553 = icmp eq ptr %552, null
  br i1 %553, label %554, label %607

554:                                              ; preds = %549
  br label %555

555:                                              ; preds = %554
  br label %556

556:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %557 = call ptr @__errno_location() #8
  %558 = load i32, ptr %557, align 4, !tbaa !5
  store i32 %558, ptr %21, align 4, !tbaa !5
  %559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %560 = call i32 @s2n_print_stacktrace(ptr noundef %559)
  %561 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %562 = trunc i8 %561 to i1
  br i1 %562, label %563, label %585

563:                                              ; preds = %556
  %564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %565 = call i32 @fileno(ptr noundef %564) #7
  %566 = call i32 @isatty(i32 noundef %565) #7
  %567 = icmp ne i32 %566, 0
  br i1 %567, label %568, label %585

568:                                              ; preds = %563
  %569 = load i32, ptr %21, align 4, !tbaa !5
  %570 = call ptr @__errno_location() #8
  store i32 %569, ptr %570, align 4, !tbaa !5
  %571 = load ptr, ptr @stderr, align 8, !tbaa !9
  %572 = load i32, ptr @test_count, align 4, !tbaa !5
  %573 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %574 = load i32, ptr %573, align 4, !tbaa !5
  %575 = call ptr @s2n_strerror(i32 noundef %574, ptr noundef @.str.5)
  %576 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %577 = load i32, ptr %576, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror_debug(i32 noundef %577, ptr noundef @.str.5)
  %579 = call ptr @__errno_location() #8
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = call ptr @strerror(i32 noundef %580) #7
  %582 = call ptr @__errno_location() #8
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %571, ptr noundef @.str.3, i32 noundef %572, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 130, ptr noundef %575, ptr noundef %578, ptr noundef %581, i32 noundef %583) #7
  br label %602

585:                                              ; preds = %563, %556
  %586 = load i32, ptr %21, align 4, !tbaa !5
  %587 = call ptr @__errno_location() #8
  store i32 %586, ptr %587, align 4, !tbaa !5
  %588 = load ptr, ptr @stderr, align 8, !tbaa !9
  %589 = load i32, ptr @test_count, align 4, !tbaa !5
  %590 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %591 = load i32, ptr %590, align 4, !tbaa !5
  %592 = call ptr @s2n_strerror(i32 noundef %591, ptr noundef @.str.5)
  %593 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %594 = load i32, ptr %593, align 4, !tbaa !5
  %595 = call ptr @s2n_strerror_debug(i32 noundef %594, ptr noundef @.str.5)
  %596 = call ptr @__errno_location() #8
  %597 = load i32, ptr %596, align 4, !tbaa !5
  %598 = call ptr @strerror(i32 noundef %597) #7
  %599 = call ptr @__errno_location() #8
  %600 = load i32, ptr %599, align 4, !tbaa !5
  %601 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %588, ptr noundef @.str.6, i32 noundef %589, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 130, ptr noundef %592, ptr noundef %595, ptr noundef %598, i32 noundef %600) #7
  br label %602

602:                                              ; preds = %585, %568
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %603

603:                                              ; preds = %602
  br label %604

604:                                              ; preds = %603
  call void @exit(i32 noundef 1) #9
  unreachable

605:                                              ; No predecessors!
  br label %606

606:                                              ; preds = %605
  br label %607

607:                                              ; preds = %606, %549
  br label %608

608:                                              ; preds = %607
  br label %609

609:                                              ; preds = %608
  br label %610

610:                                              ; preds = %609
  %611 = load i32, ptr @test_count, align 4, !tbaa !5
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr @test_count, align 4, !tbaa !5
  %613 = load ptr, ptr %7, align 8, !tbaa !9
  %614 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %613, ptr noundef @.str)
  %615 = icmp eq i32 %614, -1
  br i1 %615, label %616, label %669

616:                                              ; preds = %610
  br label %617

617:                                              ; preds = %616
  br label %618

618:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %619 = call ptr @__errno_location() #8
  %620 = load i32, ptr %619, align 4, !tbaa !5
  store i32 %620, ptr %22, align 4, !tbaa !5
  %621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %622 = call i32 @s2n_print_stacktrace(ptr noundef %621)
  %623 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %624 = trunc i8 %623 to i1
  br i1 %624, label %625, label %647

625:                                              ; preds = %618
  %626 = load ptr, ptr @stderr, align 8, !tbaa !9
  %627 = call i32 @fileno(ptr noundef %626) #7
  %628 = call i32 @isatty(i32 noundef %627) #7
  %629 = icmp ne i32 %628, 0
  br i1 %629, label %630, label %647

630:                                              ; preds = %625
  %631 = load i32, ptr %22, align 4, !tbaa !5
  %632 = call ptr @__errno_location() #8
  store i32 %631, ptr %632, align 4, !tbaa !5
  %633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %634 = load i32, ptr @test_count, align 4, !tbaa !5
  %635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call ptr @s2n_strerror(i32 noundef %636, ptr noundef @.str.5)
  %638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %639 = load i32, ptr %638, align 4, !tbaa !5
  %640 = call ptr @s2n_strerror_debug(i32 noundef %639, ptr noundef @.str.5)
  %641 = call ptr @__errno_location() #8
  %642 = load i32, ptr %641, align 4, !tbaa !5
  %643 = call ptr @strerror(i32 noundef %642) #7
  %644 = call ptr @__errno_location() #8
  %645 = load i32, ptr %644, align 4, !tbaa !5
  %646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %633, ptr noundef @.str.3, i32 noundef %634, ptr noundef @.str.17, ptr noundef @.str.2, i32 noundef 131, ptr noundef %637, ptr noundef %640, ptr noundef %643, i32 noundef %645) #7
  br label %664

647:                                              ; preds = %625, %618
  %648 = load i32, ptr %22, align 4, !tbaa !5
  %649 = call ptr @__errno_location() #8
  store i32 %648, ptr %649, align 4, !tbaa !5
  %650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %651 = load i32, ptr @test_count, align 4, !tbaa !5
  %652 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %653 = load i32, ptr %652, align 4, !tbaa !5
  %654 = call ptr @s2n_strerror(i32 noundef %653, ptr noundef @.str.5)
  %655 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %656 = load i32, ptr %655, align 4, !tbaa !5
  %657 = call ptr @s2n_strerror_debug(i32 noundef %656, ptr noundef @.str.5)
  %658 = call ptr @__errno_location() #8
  %659 = load i32, ptr %658, align 4, !tbaa !5
  %660 = call ptr @strerror(i32 noundef %659) #7
  %661 = call ptr @__errno_location() #8
  %662 = load i32, ptr %661, align 4, !tbaa !5
  %663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %650, ptr noundef @.str.6, i32 noundef %651, ptr noundef @.str.17, ptr noundef @.str.2, i32 noundef 131, ptr noundef %654, ptr noundef %657, ptr noundef %660, i32 noundef %662) #7
  br label %664

664:                                              ; preds = %647, %630
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %665

665:                                              ; preds = %664
  br label %666

666:                                              ; preds = %665
  call void @exit(i32 noundef 1) #9
  unreachable

667:                                              ; No predecessors!
  br label %668

668:                                              ; preds = %667
  br label %669

669:                                              ; preds = %668, %610
  br label %670

670:                                              ; preds = %669
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  %673 = load i32, ptr @test_count, align 4, !tbaa !5
  %674 = add nsw i32 %673, 1
  store i32 %674, ptr @test_count, align 4, !tbaa !5
  %675 = load ptr, ptr %7, align 8, !tbaa !9
  %676 = load ptr, ptr %19, align 8, !tbaa !9
  %677 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %675, ptr noundef %676)
  %678 = icmp eq i32 %677, -1
  br i1 %678, label %679, label %732

679:                                              ; preds = %672
  br label %680

680:                                              ; preds = %679
  br label %681

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

688:                                              ; preds = %681
  %689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %690 = call i32 @fileno(ptr noundef %689) #7
  %691 = call i32 @isatty(i32 noundef %690) #7
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %693, label %710

693:                                              ; preds = %688
  %694 = load i32, ptr %23, align 4, !tbaa !5
  %695 = call ptr @__errno_location() #8
  store i32 %694, ptr %695, align 4, !tbaa !5
  %696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %697 = load i32, ptr @test_count, align 4, !tbaa !5
  %698 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %699 = load i32, ptr %698, align 4, !tbaa !5
  %700 = call ptr @s2n_strerror(i32 noundef %699, ptr noundef @.str.5)
  %701 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %702 = load i32, ptr %701, align 4, !tbaa !5
  %703 = call ptr @s2n_strerror_debug(i32 noundef %702, ptr noundef @.str.5)
  %704 = call ptr @__errno_location() #8
  %705 = load i32, ptr %704, align 4, !tbaa !5
  %706 = call ptr @strerror(i32 noundef %705) #7
  %707 = call ptr @__errno_location() #8
  %708 = load i32, ptr %707, align 4, !tbaa !5
  %709 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %696, ptr noundef @.str.3, i32 noundef %697, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 132, ptr noundef %700, ptr noundef %703, ptr noundef %706, i32 noundef %708) #7
  br label %727

710:                                              ; preds = %688, %681
  %711 = load i32, ptr %23, align 4, !tbaa !5
  %712 = call ptr @__errno_location() #8
  store i32 %711, ptr %712, align 4, !tbaa !5
  %713 = load ptr, ptr @stderr, align 8, !tbaa !9
  %714 = load i32, ptr @test_count, align 4, !tbaa !5
  %715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %716 = load i32, ptr %715, align 4, !tbaa !5
  %717 = call ptr @s2n_strerror(i32 noundef %716, ptr noundef @.str.5)
  %718 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %719 = load i32, ptr %718, align 4, !tbaa !5
  %720 = call ptr @s2n_strerror_debug(i32 noundef %719, ptr noundef @.str.5)
  %721 = call ptr @__errno_location() #8
  %722 = load i32, ptr %721, align 4, !tbaa !5
  %723 = call ptr @strerror(i32 noundef %722) #7
  %724 = call ptr @__errno_location() #8
  %725 = load i32, ptr %724, align 4, !tbaa !5
  %726 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %713, ptr noundef @.str.6, i32 noundef %714, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 132, ptr noundef %717, ptr noundef %720, ptr noundef %723, i32 noundef %725) #7
  br label %727

727:                                              ; preds = %710, %693
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %728

728:                                              ; preds = %727
  br label %729

729:                                              ; preds = %728
  call void @exit(i32 noundef 1) #9
  unreachable

730:                                              ; No predecessors!
  br label %731

731:                                              ; preds = %730
  br label %732

732:                                              ; preds = %731, %672
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734
  %736 = load i32, ptr @test_count, align 4, !tbaa !5
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr @test_count, align 4, !tbaa !5
  %738 = load ptr, ptr %6, align 8, !tbaa !9
  %739 = load ptr, ptr %7, align 8, !tbaa !9
  %740 = call i32 @s2n_connection_set_config(ptr noundef %738, ptr noundef %739)
  %741 = icmp eq i32 %740, -1
  br i1 %741, label %742, label %795

742:                                              ; preds = %735
  br label %743

743:                                              ; preds = %742
  br label %744

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

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

756:                                              ; preds = %751
  %757 = load i32, ptr %24, align 4, !tbaa !5
  %758 = call ptr @__errno_location() #8
  store i32 %757, ptr %758, align 4, !tbaa !5
  %759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %760 = load i32, ptr @test_count, align 4, !tbaa !5
  %761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %762 = load i32, ptr %761, align 4, !tbaa !5
  %763 = call ptr @s2n_strerror(i32 noundef %762, ptr noundef @.str.5)
  %764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %765 = load i32, ptr %764, align 4, !tbaa !5
  %766 = call ptr @s2n_strerror_debug(i32 noundef %765, ptr noundef @.str.5)
  %767 = call ptr @__errno_location() #8
  %768 = load i32, ptr %767, align 4, !tbaa !5
  %769 = call ptr @strerror(i32 noundef %768) #7
  %770 = call ptr @__errno_location() #8
  %771 = load i32, ptr %770, align 4, !tbaa !5
  %772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %759, ptr noundef @.str.3, i32 noundef %760, ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 133, ptr noundef %763, ptr noundef %766, ptr noundef %769, i32 noundef %771) #7
  br label %790

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

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

791:                                              ; preds = %790
  br label %792

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

793:                                              ; No predecessors!
  br label %794

794:                                              ; preds = %793
  br label %795

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

796:                                              ; preds = %795
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797
  %799 = load i32, ptr @test_count, align 4, !tbaa !5
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr @test_count, align 4, !tbaa !5
  %801 = load ptr, ptr %6, align 8, !tbaa !9
  %802 = call i32 @s2n_connection_prefer_throughput(ptr noundef %801)
  %803 = icmp eq i32 %802, -1
  br i1 %803, label %804, label %857

804:                                              ; preds = %798
  br label %805

805:                                              ; preds = %804
  br label %806

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

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

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

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

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

853:                                              ; preds = %852
  br label %854

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

855:                                              ; No predecessors!
  br label %856

856:                                              ; preds = %855
  br label %857

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

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858
  br label %860

860:                                              ; preds = %859
  %861 = load i32, ptr @test_count, align 4, !tbaa !5
  %862 = add nsw i32 %861, 1
  store i32 %862, ptr @test_count, align 4, !tbaa !5
  %863 = load ptr, ptr %6, align 8, !tbaa !9
  %864 = call i32 @s2n_connection_set_io_pair(ptr noundef %863, ptr noundef %14)
  %865 = icmp eq i32 %864, -1
  br i1 %865, label %866, label %919

866:                                              ; preds = %860
  br label %867

867:                                              ; preds = %866
  br label %868

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

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

880:                                              ; preds = %875
  %881 = load i32, ptr %26, align 4, !tbaa !5
  %882 = call ptr @__errno_location() #8
  store i32 %881, ptr %882, align 4, !tbaa !5
  %883 = load ptr, ptr @stderr, align 8, !tbaa !9
  %884 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %886, ptr noundef @.str.5)
  %888 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %889 = load i32, ptr %888, align 4, !tbaa !5
  %890 = call ptr @s2n_strerror_debug(i32 noundef %889, ptr noundef @.str.5)
  %891 = call ptr @__errno_location() #8
  %892 = load i32, ptr %891, align 4, !tbaa !5
  %893 = call ptr @strerror(i32 noundef %892) #7
  %894 = call ptr @__errno_location() #8
  %895 = load i32, ptr %894, align 4, !tbaa !5
  %896 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %883, ptr noundef @.str.3, i32 noundef %884, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 137, ptr noundef %887, ptr noundef %890, ptr noundef %893, i32 noundef %895) #7
  br label %914

897:                                              ; preds = %875, %868
  %898 = load i32, ptr %26, align 4, !tbaa !5
  %899 = call ptr @__errno_location() #8
  store i32 %898, ptr %899, align 4, !tbaa !5
  %900 = load ptr, ptr @stderr, align 8, !tbaa !9
  %901 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %903, ptr noundef @.str.5)
  %905 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %906 = load i32, ptr %905, align 4, !tbaa !5
  %907 = call ptr @s2n_strerror_debug(i32 noundef %906, ptr noundef @.str.5)
  %908 = call ptr @__errno_location() #8
  %909 = load i32, ptr %908, align 4, !tbaa !5
  %910 = call ptr @strerror(i32 noundef %909) #7
  %911 = call ptr @__errno_location() #8
  %912 = load i32, ptr %911, align 4, !tbaa !5
  %913 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %900, ptr noundef @.str.6, i32 noundef %901, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 137, ptr noundef %904, ptr noundef %907, ptr noundef %910, i32 noundef %912) #7
  br label %914

914:                                              ; preds = %897, %880
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %915

915:                                              ; preds = %914
  br label %916

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

917:                                              ; No predecessors!
  br label %918

918:                                              ; preds = %917
  br label %919

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

920:                                              ; preds = %919
  br label %921

921:                                              ; preds = %920
  br label %922

922:                                              ; preds = %921
  %923 = load i32, ptr @test_count, align 4, !tbaa !5
  %924 = add nsw i32 %923, 1
  store i32 %924, ptr @test_count, align 4, !tbaa !5
  %925 = load ptr, ptr %6, align 8, !tbaa !9
  %926 = call i32 @s2n_negotiate(ptr noundef %925, ptr noundef %8)
  %927 = icmp eq i32 %926, -1
  br i1 %927, label %928, label %981

928:                                              ; preds = %922
  br label %929

929:                                              ; preds = %928
  br label %930

930:                                              ; preds = %929
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %931 = call ptr @__errno_location() #8
  %932 = load i32, ptr %931, align 4, !tbaa !5
  store i32 %932, ptr %27, align 4, !tbaa !5
  %933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %934 = call i32 @s2n_print_stacktrace(ptr noundef %933)
  %935 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %936 = trunc i8 %935 to i1
  br i1 %936, label %937, label %959

937:                                              ; preds = %930
  %938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %939 = call i32 @fileno(ptr noundef %938) #7
  %940 = call i32 @isatty(i32 noundef %939) #7
  %941 = icmp ne i32 %940, 0
  br i1 %941, label %942, label %959

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

959:                                              ; preds = %937, %930
  %960 = load i32, ptr %27, align 4, !tbaa !5
  %961 = call ptr @__errno_location() #8
  store i32 %960, ptr %961, align 4, !tbaa !5
  %962 = load ptr, ptr @stderr, align 8, !tbaa !9
  %963 = load i32, ptr @test_count, align 4, !tbaa !5
  %964 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %965 = load i32, ptr %964, align 4, !tbaa !5
  %966 = call ptr @s2n_strerror(i32 noundef %965, ptr noundef @.str.5)
  %967 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %968 = load i32, ptr %967, align 4, !tbaa !5
  %969 = call ptr @s2n_strerror_debug(i32 noundef %968, ptr noundef @.str.5)
  %970 = call ptr @__errno_location() #8
  %971 = load i32, ptr %970, align 4, !tbaa !5
  %972 = call ptr @strerror(i32 noundef %971) #7
  %973 = call ptr @__errno_location() #8
  %974 = load i32, ptr %973, align 4, !tbaa !5
  %975 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %962, ptr noundef @.str.6, i32 noundef %963, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 140, ptr noundef %966, ptr noundef %969, ptr noundef %972, i32 noundef %974) #7
  br label %976

976:                                              ; preds = %959, %942
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %977

977:                                              ; preds = %976
  br label %978

978:                                              ; preds = %977
  call void @exit(i32 noundef 1) #9
  unreachable

979:                                              ; No predecessors!
  br label %980

980:                                              ; preds = %979
  br label %981

981:                                              ; preds = %980, %922
  br label %982

982:                                              ; preds = %981
  br label %983

983:                                              ; preds = %982
  br label %984

984:                                              ; preds = %983
  %985 = load i32, ptr @test_count, align 4, !tbaa !5
  %986 = add nsw i32 %985, 1
  store i32 %986, ptr @test_count, align 4, !tbaa !5
  %987 = load ptr, ptr %6, align 8, !tbaa !9
  %988 = call ptr @s2n_connection_get_client_hello(ptr noundef %987)
  %989 = icmp eq ptr %988, null
  br i1 %989, label %990, label %1043

990:                                              ; preds = %984
  br label %991

991:                                              ; preds = %990
  br label %992

992:                                              ; preds = %991
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %993 = call ptr @__errno_location() #8
  %994 = load i32, ptr %993, align 4, !tbaa !5
  store i32 %994, ptr %28, align 4, !tbaa !5
  %995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %996 = call i32 @s2n_print_stacktrace(ptr noundef %995)
  %997 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %998 = trunc i8 %997 to i1
  br i1 %998, label %999, label %1021

999:                                              ; preds = %992
  %1000 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1001 = call i32 @fileno(ptr noundef %1000) #7
  %1002 = call i32 @isatty(i32 noundef %1001) #7
  %1003 = icmp ne i32 %1002, 0
  br i1 %1003, label %1004, label %1021

1004:                                             ; preds = %999
  %1005 = load i32, ptr %28, align 4, !tbaa !5
  %1006 = call ptr @__errno_location() #8
  store i32 %1005, ptr %1006, align 4, !tbaa !5
  %1007 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1008 = load i32, ptr @test_count, align 4, !tbaa !5
  %1009 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1010 = load i32, ptr %1009, align 4, !tbaa !5
  %1011 = call ptr @s2n_strerror(i32 noundef %1010, ptr noundef @.str.5)
  %1012 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1013 = load i32, ptr %1012, align 4, !tbaa !5
  %1014 = call ptr @s2n_strerror_debug(i32 noundef %1013, ptr noundef @.str.5)
  %1015 = call ptr @__errno_location() #8
  %1016 = load i32, ptr %1015, align 4, !tbaa !5
  %1017 = call ptr @strerror(i32 noundef %1016) #7
  %1018 = call ptr @__errno_location() #8
  %1019 = load i32, ptr %1018, align 4, !tbaa !5
  %1020 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1007, ptr noundef @.str.3, i32 noundef %1008, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 141, ptr noundef %1011, ptr noundef %1014, ptr noundef %1017, i32 noundef %1019) #7
  br label %1038

1021:                                             ; preds = %999, %992
  %1022 = load i32, ptr %28, align 4, !tbaa !5
  %1023 = call ptr @__errno_location() #8
  store i32 %1022, ptr %1023, align 4, !tbaa !5
  %1024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1025 = load i32, ptr @test_count, align 4, !tbaa !5
  %1026 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1027 = load i32, ptr %1026, align 4, !tbaa !5
  %1028 = call ptr @s2n_strerror(i32 noundef %1027, ptr noundef @.str.5)
  %1029 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1030 = load i32, ptr %1029, align 4, !tbaa !5
  %1031 = call ptr @s2n_strerror_debug(i32 noundef %1030, ptr noundef @.str.5)
  %1032 = call ptr @__errno_location() #8
  %1033 = load i32, ptr %1032, align 4, !tbaa !5
  %1034 = call ptr @strerror(i32 noundef %1033) #7
  %1035 = call ptr @__errno_location() #8
  %1036 = load i32, ptr %1035, align 4, !tbaa !5
  %1037 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1024, ptr noundef @.str.6, i32 noundef %1025, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 141, ptr noundef %1028, ptr noundef %1031, ptr noundef %1034, i32 noundef %1036) #7
  br label %1038

1038:                                             ; preds = %1021, %1004
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %1039

1039:                                             ; preds = %1038
  br label %1040

1040:                                             ; preds = %1039
  call void @exit(i32 noundef 1) #9
  unreachable

1041:                                             ; No predecessors!
  br label %1042

1042:                                             ; preds = %1041
  br label %1043

1043:                                             ; preds = %1042, %984
  br label %1044

1044:                                             ; preds = %1043
  br label %1045

1045:                                             ; preds = %1044
  br label %1046

1046:                                             ; preds = %1045
  %1047 = load i32, ptr @test_count, align 4, !tbaa !5
  %1048 = add nsw i32 %1047, 1
  store i32 %1048, ptr @test_count, align 4, !tbaa !5
  %1049 = load ptr, ptr %6, align 8, !tbaa !9
  %1050 = getelementptr inbounds %struct.s2n_connection, ptr %1049, i32 0, i32 23
  %1051 = load i8, ptr %1050, align 4, !tbaa !15
  %1052 = zext i8 %1051 to i32
  %1053 = call i32 (...) @s2n_get_highest_fully_supported_tls_version()
  %1054 = icmp eq i32 %1052, %1053
  br i1 %1054, label %1108, label %1055

1055:                                             ; preds = %1046
  br label %1056

1056:                                             ; preds = %1055
  br label %1057

1057:                                             ; preds = %1056
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %1058 = call ptr @__errno_location() #8
  %1059 = load i32, ptr %1058, align 4, !tbaa !5
  store i32 %1059, ptr %29, align 4, !tbaa !5
  %1060 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1061 = call i32 @s2n_print_stacktrace(ptr noundef %1060)
  %1062 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1063 = trunc i8 %1062 to i1
  br i1 %1063, label %1064, label %1086

1064:                                             ; preds = %1057
  %1065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1066 = call i32 @fileno(ptr noundef %1065) #7
  %1067 = call i32 @isatty(i32 noundef %1066) #7
  %1068 = icmp ne i32 %1067, 0
  br i1 %1068, label %1069, label %1086

1069:                                             ; preds = %1064
  %1070 = load i32, ptr %29, align 4, !tbaa !5
  %1071 = call ptr @__errno_location() #8
  store i32 %1070, ptr %1071, align 4, !tbaa !5
  %1072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1073 = load i32, ptr @test_count, align 4, !tbaa !5
  %1074 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1075 = load i32, ptr %1074, align 4, !tbaa !5
  %1076 = call ptr @s2n_strerror(i32 noundef %1075, ptr noundef @.str.5)
  %1077 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1078 = load i32, ptr %1077, align 4, !tbaa !5
  %1079 = call ptr @s2n_strerror_debug(i32 noundef %1078, ptr noundef @.str.5)
  %1080 = call ptr @__errno_location() #8
  %1081 = load i32, ptr %1080, align 4, !tbaa !5
  %1082 = call ptr @strerror(i32 noundef %1081) #7
  %1083 = call ptr @__errno_location() #8
  %1084 = load i32, ptr %1083, align 4, !tbaa !5
  %1085 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1072, ptr noundef @.str.3, i32 noundef %1073, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 142, ptr noundef %1076, ptr noundef %1079, ptr noundef %1082, i32 noundef %1084) #7
  br label %1103

1086:                                             ; preds = %1064, %1057
  %1087 = load i32, ptr %29, align 4, !tbaa !5
  %1088 = call ptr @__errno_location() #8
  store i32 %1087, ptr %1088, align 4, !tbaa !5
  %1089 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1090 = load i32, ptr @test_count, align 4, !tbaa !5
  %1091 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1092 = load i32, ptr %1091, align 4, !tbaa !5
  %1093 = call ptr @s2n_strerror(i32 noundef %1092, ptr noundef @.str.5)
  %1094 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1095 = load i32, ptr %1094, align 4, !tbaa !5
  %1096 = call ptr @s2n_strerror_debug(i32 noundef %1095, ptr noundef @.str.5)
  %1097 = call ptr @__errno_location() #8
  %1098 = load i32, ptr %1097, align 4, !tbaa !5
  %1099 = call ptr @strerror(i32 noundef %1098) #7
  %1100 = call ptr @__errno_location() #8
  %1101 = load i32, ptr %1100, align 4, !tbaa !5
  %1102 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1089, ptr noundef @.str.6, i32 noundef %1090, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 142, ptr noundef %1093, ptr noundef %1096, ptr noundef %1099, i32 noundef %1101) #7
  br label %1103

1103:                                             ; preds = %1086, %1069
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %1104

1104:                                             ; preds = %1103
  br label %1105

1105:                                             ; preds = %1104
  call void @exit(i32 noundef 1) #9
  unreachable

1106:                                             ; No predecessors!
  br label %1107

1107:                                             ; preds = %1106
  br label %1108

1108:                                             ; preds = %1107, %1046
  br label %1109

1109:                                             ; preds = %1108
  br label %1110

1110:                                             ; preds = %1109
  call void @llvm.lifetime.start.p0(i64 65535, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 1, ptr %31, align 4, !tbaa !5
  br label %1111

1111:                                             ; preds = %1333, %1110
  %1112 = load i32, ptr %31, align 4, !tbaa !5
  %1113 = icmp slt i32 %1112, 65535
  br i1 %1113, label %1115, label %1114

1114:                                             ; preds = %1111
  store i32 108, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %1336

1115:                                             ; preds = %1111
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %1116 = getelementptr inbounds [65535 x i8], ptr %30, i64 0, i64 0
  store ptr %1116, ptr %33, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %1117 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %1117, ptr %34, align 4, !tbaa !5
  br label %1118

1118:                                             ; preds = %1192, %1115
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %1119

1119:                                             ; preds = %1118
  %1120 = load i32, ptr @test_count, align 4, !tbaa !5
  %1121 = add nsw i32 %1120, 1
  store i32 %1121, ptr @test_count, align 4, !tbaa !5
  %1122 = load ptr, ptr %6, align 8, !tbaa !9
  %1123 = load ptr, ptr %33, align 8, !tbaa !9
  %1124 = load i32, ptr %34, align 4, !tbaa !5
  %1125 = sext i32 %1124 to i64
  %1126 = call i64 @s2n_recv(ptr noundef %1122, ptr noundef %1123, i64 noundef %1125, ptr noundef %8)
  %1127 = trunc i64 %1126 to i32
  store i32 %1127, ptr %35, align 4, !tbaa !5
  %1128 = icmp eq i32 %1127, -1
  br i1 %1128, label %1129, label %1182

1129:                                             ; preds = %1119
  br label %1130

1130:                                             ; preds = %1129
  br label %1131

1131:                                             ; preds = %1130
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %1132 = call ptr @__errno_location() #8
  %1133 = load i32, ptr %1132, align 4, !tbaa !5
  store i32 %1133, ptr %36, align 4, !tbaa !5
  %1134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1135 = call i32 @s2n_print_stacktrace(ptr noundef %1134)
  %1136 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1137 = trunc i8 %1136 to i1
  br i1 %1137, label %1138, label %1160

1138:                                             ; preds = %1131
  %1139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1140 = call i32 @fileno(ptr noundef %1139) #7
  %1141 = call i32 @isatty(i32 noundef %1140) #7
  %1142 = icmp ne i32 %1141, 0
  br i1 %1142, label %1143, label %1160

1143:                                             ; preds = %1138
  %1144 = load i32, ptr %36, align 4, !tbaa !5
  %1145 = call ptr @__errno_location() #8
  store i32 %1144, ptr %1145, align 4, !tbaa !5
  %1146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1147 = load i32, ptr @test_count, align 4, !tbaa !5
  %1148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1149 = load i32, ptr %1148, align 4, !tbaa !5
  %1150 = call ptr @s2n_strerror(i32 noundef %1149, ptr noundef @.str.5)
  %1151 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1152 = load i32, ptr %1151, align 4, !tbaa !5
  %1153 = call ptr @s2n_strerror_debug(i32 noundef %1152, ptr noundef @.str.5)
  %1154 = call ptr @__errno_location() #8
  %1155 = load i32, ptr %1154, align 4, !tbaa !5
  %1156 = call ptr @strerror(i32 noundef %1155) #7
  %1157 = call ptr @__errno_location() #8
  %1158 = load i32, ptr %1157, align 4, !tbaa !5
  %1159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1146, ptr noundef @.str.3, i32 noundef %1147, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 151, ptr noundef %1150, ptr noundef %1153, ptr noundef %1156, i32 noundef %1158) #7
  br label %1177

1160:                                             ; preds = %1138, %1131
  %1161 = load i32, ptr %36, align 4, !tbaa !5
  %1162 = call ptr @__errno_location() #8
  store i32 %1161, ptr %1162, align 4, !tbaa !5
  %1163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1164 = load i32, ptr @test_count, align 4, !tbaa !5
  %1165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1166 = load i32, ptr %1165, align 4, !tbaa !5
  %1167 = call ptr @s2n_strerror(i32 noundef %1166, ptr noundef @.str.5)
  %1168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1169 = load i32, ptr %1168, align 4, !tbaa !5
  %1170 = call ptr @s2n_strerror_debug(i32 noundef %1169, ptr noundef @.str.5)
  %1171 = call ptr @__errno_location() #8
  %1172 = load i32, ptr %1171, align 4, !tbaa !5
  %1173 = call ptr @strerror(i32 noundef %1172) #7
  %1174 = call ptr @__errno_location() #8
  %1175 = load i32, ptr %1174, align 4, !tbaa !5
  %1176 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1163, ptr noundef @.str.6, i32 noundef %1164, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 151, ptr noundef %1167, ptr noundef %1170, ptr noundef %1173, i32 noundef %1175) #7
  br label %1177

1177:                                             ; preds = %1160, %1143
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %1178

1178:                                             ; preds = %1177
  br label %1179

1179:                                             ; preds = %1178
  call void @exit(i32 noundef 1) #9
  unreachable

1180:                                             ; No predecessors!
  br label %1181

1181:                                             ; preds = %1180
  br label %1182

1182:                                             ; preds = %1181, %1119
  br label %1183

1183:                                             ; preds = %1182
  br label %1184

1184:                                             ; preds = %1183
  %1185 = load i32, ptr %35, align 4, !tbaa !5
  %1186 = load i32, ptr %34, align 4, !tbaa !5
  %1187 = sub nsw i32 %1186, %1185
  store i32 %1187, ptr %34, align 4, !tbaa !5
  %1188 = load i32, ptr %35, align 4, !tbaa !5
  %1189 = load ptr, ptr %33, align 8, !tbaa !9
  %1190 = sext i32 %1188 to i64
  %1191 = getelementptr inbounds i8, ptr %1189, i64 %1190
  store ptr %1191, ptr %33, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %1192

1192:                                             ; preds = %1184
  %1193 = load i32, ptr %34, align 4, !tbaa !5
  %1194 = icmp ne i32 %1193, 0
  br i1 %1194, label %1118, label %1195, !llvm.loop !42

1195:                                             ; preds = %1192
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  store i32 0, ptr %37, align 4, !tbaa !5
  br label %1196

1196:                                             ; preds = %1267, %1195
  %1197 = load i32, ptr %37, align 4, !tbaa !5
  %1198 = load i32, ptr %31, align 4, !tbaa !5
  %1199 = icmp slt i32 %1197, %1198
  br i1 %1199, label %1201, label %1200

1200:                                             ; preds = %1196
  store i32 119, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %1270

1201:                                             ; preds = %1196
  br label %1202

1202:                                             ; preds = %1201
  %1203 = load i32, ptr @test_count, align 4, !tbaa !5
  %1204 = add nsw i32 %1203, 1
  store i32 %1204, ptr @test_count, align 4, !tbaa !5
  %1205 = load i32, ptr %37, align 4, !tbaa !5
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds [65535 x i8], ptr %30, i64 0, i64 %1206
  %1208 = load i8, ptr %1207, align 1, !tbaa !44
  %1209 = sext i8 %1208 to i32
  %1210 = icmp eq i32 %1209, 33
  br i1 %1210, label %1264, label %1211

1211:                                             ; preds = %1202
  br label %1212

1212:                                             ; preds = %1211
  br label %1213

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

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

1225:                                             ; preds = %1220
  %1226 = load i32, ptr %38, align 4, !tbaa !5
  %1227 = call ptr @__errno_location() #8
  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.5)
  %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.5)
  %1236 = call ptr @__errno_location() #8
  %1237 = load i32, ptr %1236, align 4, !tbaa !5
  %1238 = call ptr @strerror(i32 noundef %1237) #7
  %1239 = call ptr @__errno_location() #8
  %1240 = load i32, ptr %1239, align 4, !tbaa !5
  %1241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1228, ptr noundef @.str.3, i32 noundef %1229, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 158, ptr noundef %1232, ptr noundef %1235, ptr noundef %1238, i32 noundef %1240) #7
  br label %1259

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

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

1260:                                             ; preds = %1259
  br label %1261

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

1262:                                             ; No predecessors!
  br label %1263

1263:                                             ; preds = %1262
  br label %1264

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

1265:                                             ; preds = %1264
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

1267:                                             ; preds = %1266
  %1268 = load i32, ptr %37, align 4, !tbaa !5
  %1269 = add nsw i32 %1268, 1
  store i32 %1269, ptr %37, align 4, !tbaa !5
  br label %1196, !llvm.loop !45

1270:                                             ; preds = %1200
  br label %1271

1271:                                             ; preds = %1270
  %1272 = load i32, ptr @test_count, align 4, !tbaa !5
  %1273 = add nsw i32 %1272, 1
  store i32 %1273, ptr @test_count, align 4, !tbaa !5
  %1274 = load ptr, ptr %6, align 8, !tbaa !9
  %1275 = call i32 @s2n_connection_release_buffers(ptr noundef %1274)
  %1276 = icmp eq i32 %1275, -1
  br i1 %1276, label %1277, label %1330

1277:                                             ; preds = %1271
  br label %1278

1278:                                             ; preds = %1277
  br label %1279

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

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

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

1308:                                             ; preds = %1286, %1279
  %1309 = load i32, ptr %39, align 4, !tbaa !5
  %1310 = call ptr @__errno_location() #8
  store i32 %1309, ptr %1310, align 4, !tbaa !5
  %1311 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1312 = load i32, ptr @test_count, align 4, !tbaa !5
  %1313 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1314 = load i32, ptr %1313, align 4, !tbaa !5
  %1315 = call ptr @s2n_strerror(i32 noundef %1314, ptr noundef @.str.5)
  %1316 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1317 = load i32, ptr %1316, align 4, !tbaa !5
  %1318 = call ptr @s2n_strerror_debug(i32 noundef %1317, ptr noundef @.str.5)
  %1319 = call ptr @__errno_location() #8
  %1320 = load i32, ptr %1319, align 4, !tbaa !5
  %1321 = call ptr @strerror(i32 noundef %1320) #7
  %1322 = call ptr @__errno_location() #8
  %1323 = load i32, ptr %1322, align 4, !tbaa !5
  %1324 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1311, ptr noundef @.str.6, i32 noundef %1312, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 162, ptr noundef %1315, ptr noundef %1318, ptr noundef %1321, i32 noundef %1323) #7
  br label %1325

1325:                                             ; preds = %1308, %1291
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %1326

1326:                                             ; preds = %1325
  br label %1327

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

1328:                                             ; No predecessors!
  br label %1329

1329:                                             ; preds = %1328
  br label %1330

1330:                                             ; preds = %1329, %1271
  br label %1331

1331:                                             ; preds = %1330
  br label %1332

1332:                                             ; preds = %1331
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %1333

1333:                                             ; preds = %1332
  %1334 = load i32, ptr %31, align 4, !tbaa !5
  %1335 = add nsw i32 %1334, 100
  store i32 %1335, ptr %31, align 4, !tbaa !5
  br label %1111, !llvm.loop !46

1336:                                             ; preds = %1114
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  store i32 -1, ptr %40, align 4, !tbaa !5
  br label %1337

1337:                                             ; preds = %1408, %1336
  %1338 = load ptr, ptr %6, align 8, !tbaa !9
  %1339 = call i32 @s2n_shutdown(ptr noundef %1338, ptr noundef %8)
  store i32 %1339, ptr %40, align 4, !tbaa !5
  br label %1340

1340:                                             ; preds = %1337
  %1341 = load i32, ptr @test_count, align 4, !tbaa !5
  %1342 = add nsw i32 %1341, 1
  store i32 %1342, ptr @test_count, align 4, !tbaa !5
  %1343 = load i32, ptr %40, align 4, !tbaa !5
  %1344 = icmp eq i32 %1343, 0
  br i1 %1344, label %1405, label %1345

1345:                                             ; preds = %1340
  %1346 = call ptr @__errno_location() #8
  %1347 = load i32, ptr %1346, align 4, !tbaa !5
  %1348 = icmp eq i32 %1347, 11
  br i1 %1348, label %1349, label %1352

1349:                                             ; preds = %1345
  %1350 = load i32, ptr %8, align 4, !tbaa !5
  %1351 = icmp ne i32 %1350, 0
  br i1 %1351, label %1405, label %1352

1352:                                             ; preds = %1349, %1345
  br label %1353

1353:                                             ; preds = %1352
  br label %1354

1354:                                             ; preds = %1353
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %1355 = call ptr @__errno_location() #8
  %1356 = load i32, ptr %1355, align 4, !tbaa !5
  store i32 %1356, ptr %41, align 4, !tbaa !5
  %1357 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1358 = call i32 @s2n_print_stacktrace(ptr noundef %1357)
  %1359 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1360 = trunc i8 %1359 to i1
  br i1 %1360, label %1361, label %1383

1361:                                             ; preds = %1354
  %1362 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1363 = call i32 @fileno(ptr noundef %1362) #7
  %1364 = call i32 @isatty(i32 noundef %1363) #7
  %1365 = icmp ne i32 %1364, 0
  br i1 %1365, label %1366, label %1383

1366:                                             ; preds = %1361
  %1367 = load i32, ptr %41, align 4, !tbaa !5
  %1368 = call ptr @__errno_location() #8
  store i32 %1367, ptr %1368, align 4, !tbaa !5
  %1369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1370 = load i32, ptr @test_count, align 4, !tbaa !5
  %1371 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1372 = load i32, ptr %1371, align 4, !tbaa !5
  %1373 = call ptr @s2n_strerror(i32 noundef %1372, ptr noundef @.str.5)
  %1374 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1375 = load i32, ptr %1374, align 4, !tbaa !5
  %1376 = call ptr @s2n_strerror_debug(i32 noundef %1375, ptr noundef @.str.5)
  %1377 = call ptr @__errno_location() #8
  %1378 = load i32, ptr %1377, align 4, !tbaa !5
  %1379 = call ptr @strerror(i32 noundef %1378) #7
  %1380 = call ptr @__errno_location() #8
  %1381 = load i32, ptr %1380, align 4, !tbaa !5
  %1382 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1369, ptr noundef @.str.3, i32 noundef %1370, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 168, ptr noundef %1373, ptr noundef %1376, ptr noundef %1379, i32 noundef %1381) #7
  br label %1400

1383:                                             ; preds = %1361, %1354
  %1384 = load i32, ptr %41, align 4, !tbaa !5
  %1385 = call ptr @__errno_location() #8
  store i32 %1384, ptr %1385, align 4, !tbaa !5
  %1386 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1387 = load i32, ptr @test_count, align 4, !tbaa !5
  %1388 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1389 = load i32, ptr %1388, align 4, !tbaa !5
  %1390 = call ptr @s2n_strerror(i32 noundef %1389, ptr noundef @.str.5)
  %1391 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1392 = load i32, ptr %1391, align 4, !tbaa !5
  %1393 = call ptr @s2n_strerror_debug(i32 noundef %1392, ptr noundef @.str.5)
  %1394 = call ptr @__errno_location() #8
  %1395 = load i32, ptr %1394, align 4, !tbaa !5
  %1396 = call ptr @strerror(i32 noundef %1395) #7
  %1397 = call ptr @__errno_location() #8
  %1398 = load i32, ptr %1397, align 4, !tbaa !5
  %1399 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1386, ptr noundef @.str.6, i32 noundef %1387, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 168, ptr noundef %1390, ptr noundef %1393, ptr noundef %1396, i32 noundef %1398) #7
  br label %1400

1400:                                             ; preds = %1383, %1366
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %1401

1401:                                             ; preds = %1400
  br label %1402

1402:                                             ; preds = %1401
  call void @exit(i32 noundef 1) #9
  unreachable

1403:                                             ; No predecessors!
  br label %1404

1404:                                             ; preds = %1403
  br label %1405

1405:                                             ; preds = %1404, %1349, %1340
  br label %1406

1406:                                             ; preds = %1405
  br label %1407

1407:                                             ; preds = %1406
  br label %1408

1408:                                             ; preds = %1407
  %1409 = load i32, ptr %40, align 4, !tbaa !5
  %1410 = icmp ne i32 %1409, 0
  br i1 %1410, label %1337, label %1411, !llvm.loop !47

1411:                                             ; preds = %1408
  br label %1412

1412:                                             ; preds = %1411
  %1413 = load i32, ptr @test_count, align 4, !tbaa !5
  %1414 = add nsw i32 %1413, 1
  store i32 %1414, ptr @test_count, align 4, !tbaa !5
  %1415 = load ptr, ptr %6, align 8, !tbaa !9
  %1416 = call i32 @s2n_connection_free(ptr noundef %1415)
  %1417 = icmp eq i32 %1416, -1
  br i1 %1417, label %1418, label %1471

1418:                                             ; preds = %1412
  br label %1419

1419:                                             ; preds = %1418
  br label %1420

1420:                                             ; preds = %1419
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  %1421 = call ptr @__errno_location() #8
  %1422 = load i32, ptr %1421, align 4, !tbaa !5
  store i32 %1422, ptr %42, align 4, !tbaa !5
  %1423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1424 = call i32 @s2n_print_stacktrace(ptr noundef %1423)
  %1425 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1426 = trunc i8 %1425 to i1
  br i1 %1426, label %1427, label %1449

1427:                                             ; preds = %1420
  %1428 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1429 = call i32 @fileno(ptr noundef %1428) #7
  %1430 = call i32 @isatty(i32 noundef %1429) #7
  %1431 = icmp ne i32 %1430, 0
  br i1 %1431, label %1432, label %1449

1432:                                             ; preds = %1427
  %1433 = load i32, ptr %42, align 4, !tbaa !5
  %1434 = call ptr @__errno_location() #8
  store i32 %1433, ptr %1434, align 4, !tbaa !5
  %1435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1436 = load i32, ptr @test_count, align 4, !tbaa !5
  %1437 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1438 = load i32, ptr %1437, align 4, !tbaa !5
  %1439 = call ptr @s2n_strerror(i32 noundef %1438, ptr noundef @.str.5)
  %1440 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1441 = load i32, ptr %1440, align 4, !tbaa !5
  %1442 = call ptr @s2n_strerror_debug(i32 noundef %1441, ptr noundef @.str.5)
  %1443 = call ptr @__errno_location() #8
  %1444 = load i32, ptr %1443, align 4, !tbaa !5
  %1445 = call ptr @strerror(i32 noundef %1444) #7
  %1446 = call ptr @__errno_location() #8
  %1447 = load i32, ptr %1446, align 4, !tbaa !5
  %1448 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1435, ptr noundef @.str.3, i32 noundef %1436, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 171, ptr noundef %1439, ptr noundef %1442, ptr noundef %1445, i32 noundef %1447) #7
  br label %1466

1449:                                             ; preds = %1427, %1420
  %1450 = load i32, ptr %42, align 4, !tbaa !5
  %1451 = call ptr @__errno_location() #8
  store i32 %1450, ptr %1451, align 4, !tbaa !5
  %1452 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1453 = load i32, ptr @test_count, align 4, !tbaa !5
  %1454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1455 = load i32, ptr %1454, align 4, !tbaa !5
  %1456 = call ptr @s2n_strerror(i32 noundef %1455, ptr noundef @.str.5)
  %1457 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1458 = load i32, ptr %1457, align 4, !tbaa !5
  %1459 = call ptr @s2n_strerror_debug(i32 noundef %1458, ptr noundef @.str.5)
  %1460 = call ptr @__errno_location() #8
  %1461 = load i32, ptr %1460, align 4, !tbaa !5
  %1462 = call ptr @strerror(i32 noundef %1461) #7
  %1463 = call ptr @__errno_location() #8
  %1464 = load i32, ptr %1463, align 4, !tbaa !5
  %1465 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1452, ptr noundef @.str.6, i32 noundef %1453, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 171, ptr noundef %1456, ptr noundef %1459, ptr noundef %1462, i32 noundef %1464) #7
  br label %1466

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

1467:                                             ; preds = %1466
  br label %1468

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

1469:                                             ; No predecessors!
  br label %1470

1470:                                             ; preds = %1469
  br label %1471

1471:                                             ; preds = %1470, %1412
  br label %1472

1472:                                             ; preds = %1471
  br label %1473

1473:                                             ; preds = %1472
  br label %1474

1474:                                             ; preds = %1473
  %1475 = load i32, ptr @test_count, align 4, !tbaa !5
  %1476 = add nsw i32 %1475, 1
  store i32 %1476, ptr @test_count, align 4, !tbaa !5
  %1477 = load ptr, ptr %7, align 8, !tbaa !9
  %1478 = call i32 @s2n_config_free(ptr noundef %1477)
  %1479 = icmp eq i32 %1478, -1
  br i1 %1479, label %1480, label %1533

1480:                                             ; preds = %1474
  br label %1481

1481:                                             ; preds = %1480
  br label %1482

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

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

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

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

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

1529:                                             ; preds = %1528
  br label %1530

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

1531:                                             ; No predecessors!
  br label %1532

1532:                                             ; preds = %1531
  br label %1533

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

1534:                                             ; preds = %1533
  br label %1535

1535:                                             ; preds = %1534
  br label %1536

1536:                                             ; preds = %1535
  %1537 = load i32, ptr @test_count, align 4, !tbaa !5
  %1538 = add nsw i32 %1537, 1
  store i32 %1538, ptr @test_count, align 4, !tbaa !5
  %1539 = call i32 @waitpid(i32 noundef -1, ptr noundef %9, i32 noundef 0)
  %1540 = load i32, ptr %10, align 4, !tbaa !5
  %1541 = icmp eq i32 %1539, %1540
  br i1 %1541, label %1595, label %1542

1542:                                             ; preds = %1536
  br label %1543

1543:                                             ; preds = %1542
  br label %1544

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

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

1556:                                             ; preds = %1551
  %1557 = load i32, ptr %44, align 4, !tbaa !5
  %1558 = call ptr @__errno_location() #8
  store i32 %1557, ptr %1558, align 4, !tbaa !5
  %1559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1560 = load i32, ptr @test_count, align 4, !tbaa !5
  %1561 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1562 = load i32, ptr %1561, align 4, !tbaa !5
  %1563 = call ptr @s2n_strerror(i32 noundef %1562, ptr noundef @.str.5)
  %1564 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1565 = load i32, ptr %1564, align 4, !tbaa !5
  %1566 = call ptr @s2n_strerror_debug(i32 noundef %1565, ptr noundef @.str.5)
  %1567 = call ptr @__errno_location() #8
  %1568 = load i32, ptr %1567, align 4, !tbaa !5
  %1569 = call ptr @strerror(i32 noundef %1568) #7
  %1570 = call ptr @__errno_location() #8
  %1571 = load i32, ptr %1570, align 4, !tbaa !5
  %1572 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1559, ptr noundef @.str.3, i32 noundef %1560, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 175, ptr noundef %1563, ptr noundef %1566, ptr noundef %1569, i32 noundef %1571) #7
  br label %1590

1573:                                             ; preds = %1551, %1544
  %1574 = load i32, ptr %44, align 4, !tbaa !5
  %1575 = call ptr @__errno_location() #8
  store i32 %1574, ptr %1575, align 4, !tbaa !5
  %1576 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1577 = load i32, ptr @test_count, align 4, !tbaa !5
  %1578 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1579 = load i32, ptr %1578, align 4, !tbaa !5
  %1580 = call ptr @s2n_strerror(i32 noundef %1579, ptr noundef @.str.5)
  %1581 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1582 = load i32, ptr %1581, align 4, !tbaa !5
  %1583 = call ptr @s2n_strerror_debug(i32 noundef %1582, ptr noundef @.str.5)
  %1584 = call ptr @__errno_location() #8
  %1585 = load i32, ptr %1584, align 4, !tbaa !5
  %1586 = call ptr @strerror(i32 noundef %1585) #7
  %1587 = call ptr @__errno_location() #8
  %1588 = load i32, ptr %1587, align 4, !tbaa !5
  %1589 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1576, ptr noundef @.str.6, i32 noundef %1577, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 175, ptr noundef %1580, ptr noundef %1583, ptr noundef %1586, i32 noundef %1588) #7
  br label %1590

1590:                                             ; preds = %1573, %1556
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %1591

1591:                                             ; preds = %1590
  br label %1592

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

1593:                                             ; No predecessors!
  br label %1594

1594:                                             ; preds = %1593
  br label %1595

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

1596:                                             ; preds = %1595
  br label %1597

1597:                                             ; preds = %1596
  br label %1598

1598:                                             ; preds = %1597
  %1599 = load i32, ptr @test_count, align 4, !tbaa !5
  %1600 = add nsw i32 %1599, 1
  store i32 %1600, ptr @test_count, align 4, !tbaa !5
  %1601 = load i32, ptr %9, align 4, !tbaa !5
  %1602 = icmp eq i32 %1601, 0
  br i1 %1602, label %1656, label %1603

1603:                                             ; preds = %1598
  br label %1604

1604:                                             ; preds = %1603
  br label %1605

1605:                                             ; preds = %1604
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  %1606 = call ptr @__errno_location() #8
  %1607 = load i32, ptr %1606, align 4, !tbaa !5
  store i32 %1607, ptr %45, align 4, !tbaa !5
  %1608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1609 = call i32 @s2n_print_stacktrace(ptr noundef %1608)
  %1610 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1611 = trunc i8 %1610 to i1
  br i1 %1611, label %1612, label %1634

1612:                                             ; preds = %1605
  %1613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1614 = call i32 @fileno(ptr noundef %1613) #7
  %1615 = call i32 @isatty(i32 noundef %1614) #7
  %1616 = icmp ne i32 %1615, 0
  br i1 %1616, label %1617, label %1634

1617:                                             ; preds = %1612
  %1618 = load i32, ptr %45, align 4, !tbaa !5
  %1619 = call ptr @__errno_location() #8
  store i32 %1618, ptr %1619, align 4, !tbaa !5
  %1620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1621 = load i32, ptr @test_count, align 4, !tbaa !5
  %1622 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1623 = load i32, ptr %1622, align 4, !tbaa !5
  %1624 = call ptr @s2n_strerror(i32 noundef %1623, ptr noundef @.str.5)
  %1625 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1626 = load i32, ptr %1625, align 4, !tbaa !5
  %1627 = call ptr @s2n_strerror_debug(i32 noundef %1626, ptr noundef @.str.5)
  %1628 = call ptr @__errno_location() #8
  %1629 = load i32, ptr %1628, align 4, !tbaa !5
  %1630 = call ptr @strerror(i32 noundef %1629) #7
  %1631 = call ptr @__errno_location() #8
  %1632 = load i32, ptr %1631, align 4, !tbaa !5
  %1633 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1620, ptr noundef @.str.3, i32 noundef %1621, ptr noundef @.str.32, ptr noundef @.str.2, i32 noundef 176, ptr noundef %1624, ptr noundef %1627, ptr noundef %1630, i32 noundef %1632) #7
  br label %1651

1634:                                             ; preds = %1612, %1605
  %1635 = load i32, ptr %45, align 4, !tbaa !5
  %1636 = call ptr @__errno_location() #8
  store i32 %1635, ptr %1636, align 4, !tbaa !5
  %1637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1638 = load i32, ptr @test_count, align 4, !tbaa !5
  %1639 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1640 = load i32, ptr %1639, align 4, !tbaa !5
  %1641 = call ptr @s2n_strerror(i32 noundef %1640, ptr noundef @.str.5)
  %1642 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1643 = load i32, ptr %1642, align 4, !tbaa !5
  %1644 = call ptr @s2n_strerror_debug(i32 noundef %1643, ptr noundef @.str.5)
  %1645 = call ptr @__errno_location() #8
  %1646 = load i32, ptr %1645, align 4, !tbaa !5
  %1647 = call ptr @strerror(i32 noundef %1646) #7
  %1648 = call ptr @__errno_location() #8
  %1649 = load i32, ptr %1648, align 4, !tbaa !5
  %1650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1637, ptr noundef @.str.6, i32 noundef %1638, ptr noundef @.str.32, ptr noundef @.str.2, i32 noundef 176, ptr noundef %1641, ptr noundef %1644, ptr noundef %1647, i32 noundef %1649) #7
  br label %1651

1651:                                             ; preds = %1634, %1617
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  br label %1652

1652:                                             ; preds = %1651
  br label %1653

1653:                                             ; preds = %1652
  call void @exit(i32 noundef 1) #9
  unreachable

1654:                                             ; No predecessors!
  br label %1655

1655:                                             ; preds = %1654
  br label %1656

1656:                                             ; preds = %1655, %1598
  br label %1657

1657:                                             ; preds = %1656
  br label %1658

1658:                                             ; preds = %1657
  br label %1659

1659:                                             ; preds = %1658
  %1660 = load i32, ptr @test_count, align 4, !tbaa !5
  %1661 = add nsw i32 %1660, 1
  store i32 %1661, ptr @test_count, align 4, !tbaa !5
  %1662 = call i32 @s2n_io_pair_close_one_end(ptr noundef %14, i32 noundef 0)
  %1663 = icmp eq i32 %1662, -1
  br i1 %1663, label %1664, label %1717

1664:                                             ; preds = %1659
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

1666:                                             ; preds = %1665
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  %1667 = call ptr @__errno_location() #8
  %1668 = load i32, ptr %1667, align 4, !tbaa !5
  store i32 %1668, ptr %46, align 4, !tbaa !5
  %1669 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1670 = call i32 @s2n_print_stacktrace(ptr noundef %1669)
  %1671 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1672 = trunc i8 %1671 to i1
  br i1 %1672, label %1673, label %1695

1673:                                             ; preds = %1666
  %1674 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1675 = call i32 @fileno(ptr noundef %1674) #7
  %1676 = call i32 @isatty(i32 noundef %1675) #7
  %1677 = icmp ne i32 %1676, 0
  br i1 %1677, label %1678, label %1695

1678:                                             ; preds = %1673
  %1679 = load i32, ptr %46, align 4, !tbaa !5
  %1680 = call ptr @__errno_location() #8
  store i32 %1679, ptr %1680, align 4, !tbaa !5
  %1681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1682 = load i32, ptr @test_count, align 4, !tbaa !5
  %1683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1684 = load i32, ptr %1683, align 4, !tbaa !5
  %1685 = call ptr @s2n_strerror(i32 noundef %1684, ptr noundef @.str.5)
  %1686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1687 = load i32, ptr %1686, align 4, !tbaa !5
  %1688 = call ptr @s2n_strerror_debug(i32 noundef %1687, ptr noundef @.str.5)
  %1689 = call ptr @__errno_location() #8
  %1690 = load i32, ptr %1689, align 4, !tbaa !5
  %1691 = call ptr @strerror(i32 noundef %1690) #7
  %1692 = call ptr @__errno_location() #8
  %1693 = load i32, ptr %1692, align 4, !tbaa !5
  %1694 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1681, ptr noundef @.str.3, i32 noundef %1682, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 177, ptr noundef %1685, ptr noundef %1688, ptr noundef %1691, i32 noundef %1693) #7
  br label %1712

1695:                                             ; preds = %1673, %1666
  %1696 = load i32, ptr %46, align 4, !tbaa !5
  %1697 = call ptr @__errno_location() #8
  store i32 %1696, ptr %1697, align 4, !tbaa !5
  %1698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1699 = load i32, ptr @test_count, align 4, !tbaa !5
  %1700 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1701 = load i32, ptr %1700, align 4, !tbaa !5
  %1702 = call ptr @s2n_strerror(i32 noundef %1701, ptr noundef @.str.5)
  %1703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1704 = load i32, ptr %1703, align 4, !tbaa !5
  %1705 = call ptr @s2n_strerror_debug(i32 noundef %1704, ptr noundef @.str.5)
  %1706 = call ptr @__errno_location() #8
  %1707 = load i32, ptr %1706, align 4, !tbaa !5
  %1708 = call ptr @strerror(i32 noundef %1707) #7
  %1709 = call ptr @__errno_location() #8
  %1710 = load i32, ptr %1709, align 4, !tbaa !5
  %1711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1698, ptr noundef @.str.6, i32 noundef %1699, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 177, ptr noundef %1702, ptr noundef %1705, ptr noundef %1708, i32 noundef %1710) #7
  br label %1712

1712:                                             ; preds = %1695, %1678
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %1713

1713:                                             ; preds = %1712
  br label %1714

1714:                                             ; preds = %1713
  call void @exit(i32 noundef 1) #9
  unreachable

1715:                                             ; No predecessors!
  br label %1716

1716:                                             ; preds = %1715
  br label %1717

1717:                                             ; preds = %1716, %1659
  br label %1718

1718:                                             ; preds = %1717
  br label %1719

1719:                                             ; preds = %1718
  br label %1720

1720:                                             ; preds = %1719
  %1721 = load i32, ptr @test_count, align 4, !tbaa !5
  %1722 = add nsw i32 %1721, 1
  store i32 %1722, ptr @test_count, align 4, !tbaa !5
  %1723 = load ptr, ptr %19, align 8, !tbaa !9
  %1724 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %1723)
  %1725 = icmp eq i32 %1724, -1
  br i1 %1725, label %1726, label %1779

1726:                                             ; preds = %1720
  br label %1727

1727:                                             ; preds = %1726
  br label %1728

1728:                                             ; preds = %1727
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  %1729 = call ptr @__errno_location() #8
  %1730 = load i32, ptr %1729, align 4, !tbaa !5
  store i32 %1730, ptr %47, align 4, !tbaa !5
  %1731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1732 = call i32 @s2n_print_stacktrace(ptr noundef %1731)
  %1733 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1734 = trunc i8 %1733 to i1
  br i1 %1734, label %1735, label %1757

1735:                                             ; preds = %1728
  %1736 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1737 = call i32 @fileno(ptr noundef %1736) #7
  %1738 = call i32 @isatty(i32 noundef %1737) #7
  %1739 = icmp ne i32 %1738, 0
  br i1 %1739, label %1740, label %1757

1740:                                             ; preds = %1735
  %1741 = load i32, ptr %47, align 4, !tbaa !5
  %1742 = call ptr @__errno_location() #8
  store i32 %1741, ptr %1742, align 4, !tbaa !5
  %1743 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1744 = load i32, ptr @test_count, align 4, !tbaa !5
  %1745 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1746 = load i32, ptr %1745, align 4, !tbaa !5
  %1747 = call ptr @s2n_strerror(i32 noundef %1746, ptr noundef @.str.5)
  %1748 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1749 = load i32, ptr %1748, align 4, !tbaa !5
  %1750 = call ptr @s2n_strerror_debug(i32 noundef %1749, ptr noundef @.str.5)
  %1751 = call ptr @__errno_location() #8
  %1752 = load i32, ptr %1751, align 4, !tbaa !5
  %1753 = call ptr @strerror(i32 noundef %1752) #7
  %1754 = call ptr @__errno_location() #8
  %1755 = load i32, ptr %1754, align 4, !tbaa !5
  %1756 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1743, ptr noundef @.str.3, i32 noundef %1744, ptr noundef @.str.33, ptr noundef @.str.2, i32 noundef 179, ptr noundef %1747, ptr noundef %1750, ptr noundef %1753, i32 noundef %1755) #7
  br label %1774

1757:                                             ; preds = %1735, %1728
  %1758 = load i32, ptr %47, align 4, !tbaa !5
  %1759 = call ptr @__errno_location() #8
  store i32 %1758, ptr %1759, align 4, !tbaa !5
  %1760 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1761 = load i32, ptr @test_count, align 4, !tbaa !5
  %1762 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1763 = load i32, ptr %1762, align 4, !tbaa !5
  %1764 = call ptr @s2n_strerror(i32 noundef %1763, ptr noundef @.str.5)
  %1765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1766 = load i32, ptr %1765, align 4, !tbaa !5
  %1767 = call ptr @s2n_strerror_debug(i32 noundef %1766, ptr noundef @.str.5)
  %1768 = call ptr @__errno_location() #8
  %1769 = load i32, ptr %1768, align 4, !tbaa !5
  %1770 = call ptr @strerror(i32 noundef %1769) #7
  %1771 = call ptr @__errno_location() #8
  %1772 = load i32, ptr %1771, align 4, !tbaa !5
  %1773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1760, ptr noundef @.str.6, i32 noundef %1761, ptr noundef @.str.33, ptr noundef @.str.2, i32 noundef 179, ptr noundef %1764, ptr noundef %1767, ptr noundef %1770, i32 noundef %1772) #7
  br label %1774

1774:                                             ; preds = %1757, %1740
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  br label %1775

1775:                                             ; preds = %1774
  br label %1776

1776:                                             ; preds = %1775
  call void @exit(i32 noundef 1) #9
  unreachable

1777:                                             ; No predecessors!
  br label %1778

1778:                                             ; preds = %1777
  br label %1779

1779:                                             ; preds = %1778, %1720
  br label %1780

1780:                                             ; preds = %1779
  br label %1781

1781:                                             ; preds = %1780
  %1782 = call i32 (...) @s2n_disable_tls13_in_test()
  br label %1783

1783:                                             ; preds = %1781
  br label %1784

1784:                                             ; preds = %1783
  %1785 = call i32 @s2n_cleanup()
  %1786 = icmp eq i32 %1785, -1
  br i1 %1786, label %1787, label %1840

1787:                                             ; preds = %1784
  br label %1788

1788:                                             ; preds = %1787
  br label %1789

1789:                                             ; preds = %1788
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  %1790 = call ptr @__errno_location() #8
  %1791 = load i32, ptr %1790, align 4, !tbaa !5
  store i32 %1791, ptr %48, align 4, !tbaa !5
  %1792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1793 = call i32 @s2n_print_stacktrace(ptr noundef %1792)
  %1794 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1795 = trunc i8 %1794 to i1
  br i1 %1795, label %1796, label %1818

1796:                                             ; preds = %1789
  %1797 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1798 = call i32 @fileno(ptr noundef %1797) #7
  %1799 = call i32 @isatty(i32 noundef %1798) #7
  %1800 = icmp ne i32 %1799, 0
  br i1 %1800, label %1801, label %1818

1801:                                             ; preds = %1796
  %1802 = load i32, ptr %48, align 4, !tbaa !5
  %1803 = call ptr @__errno_location() #8
  store i32 %1802, ptr %1803, align 4, !tbaa !5
  %1804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1805 = load i32, ptr @test_count, align 4, !tbaa !5
  %1806 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1807 = load i32, ptr %1806, align 4, !tbaa !5
  %1808 = call ptr @s2n_strerror(i32 noundef %1807, ptr noundef @.str.5)
  %1809 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1810 = load i32, ptr %1809, align 4, !tbaa !5
  %1811 = call ptr @s2n_strerror_debug(i32 noundef %1810, ptr noundef @.str.5)
  %1812 = call ptr @__errno_location() #8
  %1813 = load i32, ptr %1812, align 4, !tbaa !5
  %1814 = call ptr @strerror(i32 noundef %1813) #7
  %1815 = call ptr @__errno_location() #8
  %1816 = load i32, ptr %1815, align 4, !tbaa !5
  %1817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1804, ptr noundef @.str.3, i32 noundef %1805, ptr noundef @.str.34, ptr noundef @.str.2, i32 noundef 183, ptr noundef %1808, ptr noundef %1811, ptr noundef %1814, i32 noundef %1816) #7
  br label %1835

1818:                                             ; preds = %1796, %1789
  %1819 = load i32, ptr %48, align 4, !tbaa !5
  %1820 = call ptr @__errno_location() #8
  store i32 %1819, ptr %1820, align 4, !tbaa !5
  %1821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1822 = load i32, ptr @test_count, align 4, !tbaa !5
  %1823 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1824 = load i32, ptr %1823, align 4, !tbaa !5
  %1825 = call ptr @s2n_strerror(i32 noundef %1824, ptr noundef @.str.5)
  %1826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1827 = load i32, ptr %1826, align 4, !tbaa !5
  %1828 = call ptr @s2n_strerror_debug(i32 noundef %1827, ptr noundef @.str.5)
  %1829 = call ptr @__errno_location() #8
  %1830 = load i32, ptr %1829, align 4, !tbaa !5
  %1831 = call ptr @strerror(i32 noundef %1830) #7
  %1832 = call ptr @__errno_location() #8
  %1833 = load i32, ptr %1832, align 4, !tbaa !5
  %1834 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1821, ptr noundef @.str.6, i32 noundef %1822, ptr noundef @.str.34, ptr noundef @.str.2, i32 noundef 183, ptr noundef %1825, ptr noundef %1828, ptr noundef %1831, i32 noundef %1833) #7
  br label %1835

1835:                                             ; preds = %1818, %1801
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %1836

1836:                                             ; preds = %1835
  br label %1837

1837:                                             ; preds = %1836
  call void @exit(i32 noundef 1) #9
  unreachable

1838:                                             ; No predecessors!
  br label %1839

1839:                                             ; preds = %1838
  br label %1840

1840:                                             ; preds = %1839, %1784
  br label %1841

1841:                                             ; preds = %1840
  br label %1842

1842:                                             ; preds = %1841
  br label %1843

1843:                                             ; preds = %1842
  br label %1844

1844:                                             ; preds = %1843
  %1845 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1846 = icmp eq i32 %1845, -1
  br i1 %1846, label %1847, label %1900

1847:                                             ; preds = %1844
  br label %1848

1848:                                             ; preds = %1847
  br label %1849

1849:                                             ; preds = %1848
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  %1850 = call ptr @__errno_location() #8
  %1851 = load i32, ptr %1850, align 4, !tbaa !5
  store i32 %1851, ptr %49, align 4, !tbaa !5
  %1852 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1853 = call i32 @s2n_print_stacktrace(ptr noundef %1852)
  %1854 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1855 = trunc i8 %1854 to i1
  br i1 %1855, label %1856, label %1878

1856:                                             ; preds = %1849
  %1857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1858 = call i32 @fileno(ptr noundef %1857) #7
  %1859 = call i32 @isatty(i32 noundef %1858) #7
  %1860 = icmp ne i32 %1859, 0
  br i1 %1860, label %1861, label %1878

1861:                                             ; preds = %1856
  %1862 = load i32, ptr %49, align 4, !tbaa !5
  %1863 = call ptr @__errno_location() #8
  store i32 %1862, ptr %1863, align 4, !tbaa !5
  %1864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1865 = load i32, ptr @test_count, align 4, !tbaa !5
  %1866 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1867 = load i32, ptr %1866, align 4, !tbaa !5
  %1868 = call ptr @s2n_strerror(i32 noundef %1867, ptr noundef @.str.5)
  %1869 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1870 = load i32, ptr %1869, align 4, !tbaa !5
  %1871 = call ptr @s2n_strerror_debug(i32 noundef %1870, ptr noundef @.str.5)
  %1872 = call ptr @__errno_location() #8
  %1873 = load i32, ptr %1872, align 4, !tbaa !5
  %1874 = call ptr @strerror(i32 noundef %1873) #7
  %1875 = call ptr @__errno_location() #8
  %1876 = load i32, ptr %1875, align 4, !tbaa !5
  %1877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1864, ptr noundef @.str.3, i32 noundef %1865, ptr noundef @.str.35, ptr noundef @.str.2, i32 noundef 183, ptr noundef %1868, ptr noundef %1871, ptr noundef %1874, i32 noundef %1876) #7
  br label %1895

1878:                                             ; preds = %1856, %1849
  %1879 = load i32, ptr %49, align 4, !tbaa !5
  %1880 = call ptr @__errno_location() #8
  store i32 %1879, ptr %1880, align 4, !tbaa !5
  %1881 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1882 = load i32, ptr @test_count, align 4, !tbaa !5
  %1883 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1884 = load i32, ptr %1883, align 4, !tbaa !5
  %1885 = call ptr @s2n_strerror(i32 noundef %1884, ptr noundef @.str.5)
  %1886 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1887 = load i32, ptr %1886, align 4, !tbaa !5
  %1888 = call ptr @s2n_strerror_debug(i32 noundef %1887, ptr noundef @.str.5)
  %1889 = call ptr @__errno_location() #8
  %1890 = load i32, ptr %1889, align 4, !tbaa !5
  %1891 = call ptr @strerror(i32 noundef %1890) #7
  %1892 = call ptr @__errno_location() #8
  %1893 = load i32, ptr %1892, align 4, !tbaa !5
  %1894 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1881, ptr noundef @.str.6, i32 noundef %1882, ptr noundef @.str.35, ptr noundef @.str.2, i32 noundef 183, ptr noundef %1885, ptr noundef %1888, ptr noundef %1891, i32 noundef %1893) #7
  br label %1895

1895:                                             ; preds = %1878, %1861
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  br label %1896

1896:                                             ; preds = %1895
  br label %1897

1897:                                             ; preds = %1896
  call void @exit(i32 noundef 1) #9
  unreachable

1898:                                             ; No predecessors!
  br label %1899

1899:                                             ; preds = %1898
  br label %1900

1900:                                             ; preds = %1899, %1844
  br label %1901

1901:                                             ; preds = %1900
  br label %1902

1902:                                             ; preds = %1901
  %1903 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1904 = trunc i8 %1903 to i1
  br i1 %1904, label %1905, label %1921

1905:                                             ; preds = %1902
  %1906 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1907 = call i32 @fileno(ptr noundef %1906) #7
  %1908 = call i32 @isatty(i32 noundef %1907) #7
  %1909 = icmp ne i32 %1908, 0
  br i1 %1909, label %1910, label %1921

1910:                                             ; preds = %1905
  %1911 = load i32, ptr @test_count, align 4, !tbaa !5
  %1912 = icmp ne i32 %1911, 0
  br i1 %1912, label %1913, label %1917

1913:                                             ; preds = %1910
  %1914 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1915 = load i32, ptr @test_count, align 4, !tbaa !5
  %1916 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1914, ptr noundef @.str.36, i32 noundef %1915) #7
  br label %1920

1917:                                             ; preds = %1910
  %1918 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1919 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1918, ptr noundef @.str.37) #7
  br label %1920

1920:                                             ; preds = %1917, %1913
  br label %1932

1921:                                             ; preds = %1905, %1902
  %1922 = load i32, ptr @test_count, align 4, !tbaa !5
  %1923 = icmp ne i32 %1922, 0
  br i1 %1923, label %1924, label %1928

1924:                                             ; preds = %1921
  %1925 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1926 = load i32, ptr @test_count, align 4, !tbaa !5
  %1927 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1925, ptr noundef @.str.38, i32 noundef %1926) #7
  br label %1931

1928:                                             ; preds = %1921
  %1929 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1930 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1929, ptr noundef @.str.39) #7
  br label %1931

1931:                                             ; preds = %1928, %1924
  br label %1932

1932:                                             ; preds = %1931, %1920
  store i32 0, ptr %3, align 4
  store i32 1, ptr %32, align 4
  br label %1937

1933:                                             ; No predecessors!
  br label %1934

1934:                                             ; preds = %1933
  br label %1935

1935:                                             ; preds = %1934
  br label %1936

1936:                                             ; preds = %1935
  store i32 0, ptr %32, align 4
  br label %1937

1937:                                             ; preds = %1936, %1932
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 65535, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  %1938 = load i32, ptr %32, align 4
  switch i32 %1938, label %1941 [
    i32 0, label %1939
    i32 1, label %1939
  ]

1939:                                             ; preds = %1937, %1937
  %1940 = load i32, ptr %3, align 4
  ret i32 %1940

1941:                                             ; preds = %1937
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

declare i32 @s2n_io_pair_init(ptr noundef) #2

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

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

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

declare ptr @s2n_connection_get_client_hello(ptr noundef) #2

declare i32 @s2n_get_highest_fully_supported_tls_version(...) #2

declare i64 @s2n_recv(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #2

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

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) #2

declare i32 @s2n_disable_tls13_in_test(...) #2

declare i32 @s2n_cleanup() #2

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

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

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


; 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_test_io_pair = type { i32, i32 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@.str = external hidden unnamed_addr constant [14 x i8], align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [83 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [149 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

declare ptr @s2n_config_new() local_unnamed_addr #2

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

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

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

declare i32 @s2n_connection_prefer_throughput(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s2n_connection_release_buffers(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_config_free(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca %struct.s2n_test_io_pair, align 4
  %6 = alloca ptr, align 8
  %7 = alloca [65535 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #8
  store i32 0, ptr %4, align 4, !tbaa !5
  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.1, ptr noundef nonnull @.str.2) #8
  %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) #8
  %13 = icmp eq i32 %12, -1
  br i1 %13, label %14, label %38

14:                                               ; preds = %2
  %15 = tail call ptr @__errno_location() #9
  %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) #8
  %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) #8
  %24 = tail call i32 @isatty(i32 noundef %23) #8
  %.not132 = icmp eq i32 %24, 0
  br i1 %.not132, label %25, label %26

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

26:                                               ; preds = %21, %25
  %.str.6.sink = phi ptr [ @.str.6, %25 ], [ @.str.3, %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.5) #8
  %32 = load i32, ptr %29, align 4, !tbaa !5
  %33 = tail call ptr @s2n_strerror_debug(i32 noundef %32, ptr noundef nonnull @.str.5) #8
  %34 = load i32, ptr %15, align 4, !tbaa !5
  %35 = tail call ptr @strerror(i32 noundef %34) #8
  %36 = load i32, ptr %15, align 4, !tbaa !5
  %37 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull %.str.6.sink, i32 noundef %28, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, i32 noundef 105, ptr noundef %31, ptr noundef %33, ptr noundef %35, i32 noundef %36) #10
  tail call void @exit(i32 noundef 1) #11
  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() #8
  %42 = icmp eq i32 %41, -1
  br i1 %42, label %43, label %67

43:                                               ; preds = %38
  %44 = tail call ptr @__errno_location() #9
  %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) #8
  %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) #8
  %53 = tail call i32 @isatty(i32 noundef %52) #8
  %.not131 = icmp eq i32 %53, 0
  br i1 %.not131, label %54, label %55

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

55:                                               ; preds = %50, %54
  %.str.6.sink170 = phi ptr [ @.str.6, %54 ], [ @.str.3, %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.5) #8
  %61 = load i32, ptr %58, align 4, !tbaa !5
  %62 = tail call ptr @s2n_strerror_debug(i32 noundef %61, ptr noundef nonnull @.str.5) #8
  %63 = load i32, ptr %44, align 4, !tbaa !5
  %64 = tail call ptr @strerror(i32 noundef %63) #8
  %65 = load i32, ptr %44, align 4, !tbaa !5
  %66 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %56, ptr noundef nonnull %.str.6.sink170, i32 noundef %57, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.2, i32 noundef 105, ptr noundef %60, ptr noundef %62, ptr noundef %64, i32 noundef %65) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

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

70:                                               ; preds = %67
  %71 = tail call ptr @__errno_location() #9
  %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) #8
  %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) #8
  %80 = tail call i32 @isatty(i32 noundef %79) #8
  %.not130 = icmp eq i32 %80, 0
  br i1 %.not130, label %81, label %82

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

82:                                               ; preds = %77, %81
  %.str.6.sink181 = phi ptr [ @.str.6, %81 ], [ @.str.3, %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.5) #8
  %88 = load i32, ptr %85, align 4, !tbaa !5
  %89 = tail call ptr @s2n_strerror_debug(i32 noundef %88, ptr noundef nonnull @.str.5) #8
  %90 = load i32, ptr %71, align 4, !tbaa !5
  %91 = tail call ptr @strerror(i32 noundef %90) #8
  %92 = load i32, ptr %71, align 4, !tbaa !5
  %93 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %83, ptr noundef nonnull %.str.6.sink181, i32 noundef %84, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.2, i32 noundef 105, ptr noundef %87, ptr noundef %89, ptr noundef %91, i32 noundef %92) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

94:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  %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 = call i32 @s2n_io_pair_init(ptr noundef nonnull %5) #8
  %98 = icmp eq i32 %97, -1
  br i1 %98, label %99, label %123

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

106:                                              ; preds = %99
  %107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %108 = call i32 @fileno(ptr noundef %107) #8
  %109 = call i32 @isatty(i32 noundef %108) #8
  %.not129 = icmp eq i32 %109, 0
  br i1 %.not129, label %110, label %111

110:                                              ; preds = %106, %99
  br label %111

111:                                              ; preds = %106, %110
  %.str.6.sink192 = phi ptr [ @.str.6, %110 ], [ @.str.3, %106 ]
  store i32 %101, ptr %100, align 4, !tbaa !5
  %112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %113 = load i32, ptr @test_count, align 4, !tbaa !5
  %114 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %115 = load i32, ptr %114, align 4, !tbaa !5
  %116 = call ptr @s2n_strerror(i32 noundef %115, ptr noundef nonnull @.str.5) #8
  %117 = load i32, ptr %114, align 4, !tbaa !5
  %118 = call ptr @s2n_strerror_debug(i32 noundef %117, ptr noundef nonnull @.str.5) #8
  %119 = load i32, ptr %100, align 4, !tbaa !5
  %120 = call ptr @strerror(i32 noundef %119) #8
  %121 = load i32, ptr %100, align 4, !tbaa !5
  %122 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %112, ptr noundef nonnull %.str.6.sink192, i32 noundef %113, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.2, i32 noundef 109, ptr noundef %116, ptr noundef %118, ptr noundef %120, i32 noundef %121) #10
  call void @exit(i32 noundef 1) #11
  unreachable

123:                                              ; preds = %94
  %124 = call i32 @fork() #8
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %126, label %156

126:                                              ; preds = %123
  %127 = load i32, ptr @test_count, align 4, !tbaa !5
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr @test_count, align 4, !tbaa !5
  %129 = call i32 @s2n_io_pair_close_one_end(ptr noundef nonnull %5, i32 noundef 0) #8
  %130 = icmp eq i32 %129, -1
  br i1 %130, label %131, label %155

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

138:                                              ; preds = %131
  %139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %140 = call i32 @fileno(ptr noundef %139) #8
  %141 = call i32 @isatty(i32 noundef %140) #8
  %.not128 = icmp eq i32 %141, 0
  br i1 %.not128, label %142, label %143

142:                                              ; preds = %138, %131
  br label %143

143:                                              ; preds = %138, %142
  %.str.6.sink203 = phi ptr [ @.str.6, %142 ], [ @.str.3, %138 ]
  store i32 %133, ptr %132, align 4, !tbaa !5
  %144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %145 = load i32, ptr @test_count, align 4, !tbaa !5
  %146 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %147 = load i32, ptr %146, align 4, !tbaa !5
  %148 = call ptr @s2n_strerror(i32 noundef %147, ptr noundef nonnull @.str.5) #8
  %149 = load i32, ptr %146, align 4, !tbaa !5
  %150 = call ptr @s2n_strerror_debug(i32 noundef %149, ptr noundef nonnull @.str.5) #8
  %151 = load i32, ptr %132, align 4, !tbaa !5
  %152 = call ptr @strerror(i32 noundef %151) #8
  %153 = load i32, ptr %132, align 4, !tbaa !5
  %154 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %144, ptr noundef nonnull %.str.6.sink203, i32 noundef %145, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 115, ptr noundef %148, ptr noundef %150, ptr noundef %152, i32 noundef %153) #10
  call void @exit(i32 noundef 1) #11
  unreachable

155:                                              ; preds = %126
  call void @mock_client(ptr noundef nonnull %5)
  br label %156

156:                                              ; preds = %123, %155
  %157 = load i32, ptr @test_count, align 4, !tbaa !5
  %158 = add nsw i32 %157, 1
  store i32 %158, ptr @test_count, align 4, !tbaa !5
  %159 = call i32 @s2n_io_pair_close_one_end(ptr noundef nonnull %5, i32 noundef 1) #8
  %160 = icmp eq i32 %159, -1
  br i1 %160, label %161, label %185

161:                                              ; preds = %156
  %162 = tail call ptr @__errno_location() #9
  %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) #8
  %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) #8
  %171 = call i32 @isatty(i32 noundef %170) #8
  %.not127 = icmp eq i32 %171, 0
  br i1 %.not127, label %172, label %173

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

173:                                              ; preds = %168, %172
  %.str.6.sink214 = phi ptr [ @.str.6, %172 ], [ @.str.3, %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.5) #8
  %179 = load i32, ptr %176, align 4, !tbaa !5
  %180 = call ptr @s2n_strerror_debug(i32 noundef %179, ptr noundef nonnull @.str.5) #8
  %181 = load i32, ptr %162, align 4, !tbaa !5
  %182 = call ptr @strerror(i32 noundef %181) #8
  %183 = load i32, ptr %162, align 4, !tbaa !5
  %184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef nonnull %.str.6.sink214, i32 noundef %175, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.2, i32 noundef 122, ptr noundef %178, ptr noundef %180, ptr noundef %182, i32 noundef %183) #10
  call void @exit(i32 noundef 1) #11
  unreachable

185:                                              ; preds = %156
  %186 = load i32, ptr @test_count, align 4, !tbaa !5
  %187 = add nsw i32 %186, 1
  store i32 %187, ptr @test_count, align 4, !tbaa !5
  %188 = call ptr @s2n_connection_new(i32 noundef 0) #8
  %189 = icmp eq ptr %188, null
  br i1 %189, label %190, label %214

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

197:                                              ; preds = %190
  %198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %199 = call i32 @fileno(ptr noundef %198) #8
  %200 = call i32 @isatty(i32 noundef %199) #8
  %.not126 = icmp eq i32 %200, 0
  br i1 %.not126, label %201, label %202

201:                                              ; preds = %197, %190
  br label %202

202:                                              ; preds = %197, %201
  %.str.6.sink225 = phi ptr [ @.str.6, %201 ], [ @.str.3, %197 ]
  store i32 %192, ptr %191, align 4, !tbaa !5
  %203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %204 = load i32, ptr @test_count, align 4, !tbaa !5
  %205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %206 = load i32, ptr %205, align 4, !tbaa !5
  %207 = call ptr @s2n_strerror(i32 noundef %206, ptr noundef nonnull @.str.5) #8
  %208 = load i32, ptr %205, align 4, !tbaa !5
  %209 = call ptr @s2n_strerror_debug(i32 noundef %208, ptr noundef nonnull @.str.5) #8
  %210 = load i32, ptr %191, align 4, !tbaa !5
  %211 = call ptr @strerror(i32 noundef %210) #8
  %212 = load i32, ptr %191, align 4, !tbaa !5
  %213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %203, ptr noundef nonnull %.str.6.sink225, i32 noundef %204, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 124, ptr noundef %207, ptr noundef %209, ptr noundef %211, i32 noundef %212) #10
  call void @exit(i32 noundef 1) #11
  unreachable

214:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  store ptr null, ptr %6, align 8, !tbaa !9
  %215 = load i32, ptr @test_count, align 4, !tbaa !5
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr @test_count, align 4, !tbaa !5
  %217 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %6, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14) #8
  %218 = icmp eq i32 %217, -1
  br i1 %218, label %219, label %243

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

226:                                              ; preds = %219
  %227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %228 = call i32 @fileno(ptr noundef %227) #8
  %229 = call i32 @isatty(i32 noundef %228) #8
  %.not125 = icmp eq i32 %229, 0
  br i1 %.not125, label %230, label %231

230:                                              ; preds = %226, %219
  br label %231

231:                                              ; preds = %226, %230
  %.str.6.sink236 = phi ptr [ @.str.6, %230 ], [ @.str.3, %226 ]
  store i32 %221, ptr %220, align 4, !tbaa !5
  %232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %233 = load i32, ptr @test_count, align 4, !tbaa !5
  %234 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %236 = call ptr @s2n_strerror(i32 noundef %235, ptr noundef nonnull @.str.5) #8
  %237 = load i32, ptr %234, align 4, !tbaa !5
  %238 = call ptr @s2n_strerror_debug(i32 noundef %237, ptr noundef nonnull @.str.5) #8
  %239 = load i32, ptr %220, align 4, !tbaa !5
  %240 = call ptr @strerror(i32 noundef %239) #8
  %241 = load i32, ptr %220, align 4, !tbaa !5
  %242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %232, ptr noundef nonnull %.str.6.sink236, i32 noundef %233, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.2, i32 noundef 128, ptr noundef %236, ptr noundef %238, ptr noundef %240, i32 noundef %241) #10
  call void @exit(i32 noundef 1) #11
  unreachable

243:                                              ; preds = %214
  %244 = load i32, ptr @test_count, align 4, !tbaa !5
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr @test_count, align 4, !tbaa !5
  %246 = call ptr @s2n_config_new() #8
  %247 = icmp eq ptr %246, null
  br i1 %247, label %248, label %272

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

255:                                              ; preds = %248
  %256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %257 = call i32 @fileno(ptr noundef %256) #8
  %258 = call i32 @isatty(i32 noundef %257) #8
  %.not124 = icmp eq i32 %258, 0
  br i1 %.not124, label %259, label %260

259:                                              ; preds = %255, %248
  br label %260

260:                                              ; preds = %255, %259
  %.str.6.sink247 = phi ptr [ @.str.6, %259 ], [ @.str.3, %255 ]
  store i32 %250, ptr %249, align 4, !tbaa !5
  %261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %262 = load i32, ptr @test_count, align 4, !tbaa !5
  %263 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %264 = load i32, ptr %263, align 4, !tbaa !5
  %265 = call ptr @s2n_strerror(i32 noundef %264, ptr noundef nonnull @.str.5) #8
  %266 = load i32, ptr %263, align 4, !tbaa !5
  %267 = call ptr @s2n_strerror_debug(i32 noundef %266, ptr noundef nonnull @.str.5) #8
  %268 = load i32, ptr %249, align 4, !tbaa !5
  %269 = call ptr @strerror(i32 noundef %268) #8
  %270 = load i32, ptr %249, align 4, !tbaa !5
  %271 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %261, ptr noundef nonnull %.str.6.sink247, i32 noundef %262, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.2, i32 noundef 130, ptr noundef %265, ptr noundef %267, ptr noundef %269, i32 noundef %270) #10
  call void @exit(i32 noundef 1) #11
  unreachable

272:                                              ; preds = %243
  %273 = load i32, ptr @test_count, align 4, !tbaa !5
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr @test_count, align 4, !tbaa !5
  %275 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %246, ptr noundef nonnull @.str) #8
  %276 = icmp eq i32 %275, -1
  br i1 %276, label %277, label %301

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

284:                                              ; preds = %277
  %285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %286 = call i32 @fileno(ptr noundef %285) #8
  %287 = call i32 @isatty(i32 noundef %286) #8
  %.not123 = icmp eq i32 %287, 0
  br i1 %.not123, label %288, label %289

288:                                              ; preds = %284, %277
  br label %289

289:                                              ; preds = %284, %288
  %.str.6.sink258 = phi ptr [ @.str.6, %288 ], [ @.str.3, %284 ]
  store i32 %279, ptr %278, align 4, !tbaa !5
  %290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %291 = load i32, ptr @test_count, align 4, !tbaa !5
  %292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %293 = load i32, ptr %292, align 4, !tbaa !5
  %294 = call ptr @s2n_strerror(i32 noundef %293, ptr noundef nonnull @.str.5) #8
  %295 = load i32, ptr %292, align 4, !tbaa !5
  %296 = call ptr @s2n_strerror_debug(i32 noundef %295, ptr noundef nonnull @.str.5) #8
  %297 = load i32, ptr %278, align 4, !tbaa !5
  %298 = call ptr @strerror(i32 noundef %297) #8
  %299 = load i32, ptr %278, align 4, !tbaa !5
  %300 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %290, ptr noundef nonnull %.str.6.sink258, i32 noundef %291, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.2, i32 noundef 131, ptr noundef %294, ptr noundef %296, ptr noundef %298, i32 noundef %299) #10
  call void @exit(i32 noundef 1) #11
  unreachable

301:                                              ; preds = %272
  %302 = load i32, ptr @test_count, align 4, !tbaa !5
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr @test_count, align 4, !tbaa !5
  %304 = load ptr, ptr %6, align 8, !tbaa !9
  %305 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %246, ptr noundef %304) #8
  %306 = icmp eq i32 %305, -1
  br i1 %306, label %307, label %331

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

314:                                              ; preds = %307
  %315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %316 = call i32 @fileno(ptr noundef %315) #8
  %317 = call i32 @isatty(i32 noundef %316) #8
  %.not122 = icmp eq i32 %317, 0
  br i1 %.not122, label %318, label %319

318:                                              ; preds = %314, %307
  br label %319

319:                                              ; preds = %314, %318
  %.str.6.sink269 = phi ptr [ @.str.6, %318 ], [ @.str.3, %314 ]
  store i32 %309, ptr %308, align 4, !tbaa !5
  %320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %321 = load i32, ptr @test_count, align 4, !tbaa !5
  %322 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %323 = load i32, ptr %322, align 4, !tbaa !5
  %324 = call ptr @s2n_strerror(i32 noundef %323, ptr noundef nonnull @.str.5) #8
  %325 = load i32, ptr %322, align 4, !tbaa !5
  %326 = call ptr @s2n_strerror_debug(i32 noundef %325, ptr noundef nonnull @.str.5) #8
  %327 = load i32, ptr %308, align 4, !tbaa !5
  %328 = call ptr @strerror(i32 noundef %327) #8
  %329 = load i32, ptr %308, align 4, !tbaa !5
  %330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %320, ptr noundef nonnull %.str.6.sink269, i32 noundef %321, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.2, i32 noundef 132, ptr noundef %324, ptr noundef %326, ptr noundef %328, i32 noundef %329) #10
  call void @exit(i32 noundef 1) #11
  unreachable

331:                                              ; preds = %301
  %332 = load i32, ptr @test_count, align 4, !tbaa !5
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr @test_count, align 4, !tbaa !5
  %334 = call i32 @s2n_connection_set_config(ptr noundef nonnull %188, ptr noundef nonnull %246) #8
  %335 = icmp eq i32 %334, -1
  br i1 %335, label %336, label %360

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

343:                                              ; preds = %336
  %344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %345 = call i32 @fileno(ptr noundef %344) #8
  %346 = call i32 @isatty(i32 noundef %345) #8
  %.not121 = icmp eq i32 %346, 0
  br i1 %.not121, label %347, label %348

347:                                              ; preds = %343, %336
  br label %348

348:                                              ; preds = %343, %347
  %.str.6.sink280 = phi ptr [ @.str.6, %347 ], [ @.str.3, %343 ]
  store i32 %338, ptr %337, align 4, !tbaa !5
  %349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %350 = load i32, ptr @test_count, align 4, !tbaa !5
  %351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = call ptr @s2n_strerror(i32 noundef %352, ptr noundef nonnull @.str.5) #8
  %354 = load i32, ptr %351, align 4, !tbaa !5
  %355 = call ptr @s2n_strerror_debug(i32 noundef %354, ptr noundef nonnull @.str.5) #8
  %356 = load i32, ptr %337, align 4, !tbaa !5
  %357 = call ptr @strerror(i32 noundef %356) #8
  %358 = load i32, ptr %337, align 4, !tbaa !5
  %359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %349, ptr noundef nonnull %.str.6.sink280, i32 noundef %350, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.2, i32 noundef 133, ptr noundef %353, ptr noundef %355, ptr noundef %357, i32 noundef %358) #10
  call void @exit(i32 noundef 1) #11
  unreachable

360:                                              ; preds = %331
  %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 = call i32 @s2n_connection_prefer_throughput(ptr noundef nonnull %188) #8
  %364 = icmp eq i32 %363, -1
  br i1 %364, label %365, label %389

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

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

376:                                              ; preds = %372, %365
  br label %377

377:                                              ; preds = %372, %376
  %.str.6.sink291 = phi ptr [ @.str.6, %376 ], [ @.str.3, %372 ]
  store i32 %367, ptr %366, align 4, !tbaa !5
  %378 = load ptr, ptr @stderr, align 8, !tbaa !9
  %379 = load i32, ptr @test_count, align 4, !tbaa !5
  %380 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %381 = load i32, ptr %380, align 4, !tbaa !5
  %382 = call ptr @s2n_strerror(i32 noundef %381, ptr noundef nonnull @.str.5) #8
  %383 = load i32, ptr %380, align 4, !tbaa !5
  %384 = call ptr @s2n_strerror_debug(i32 noundef %383, ptr noundef nonnull @.str.5) #8
  %385 = load i32, ptr %366, align 4, !tbaa !5
  %386 = call ptr @strerror(i32 noundef %385) #8
  %387 = load i32, ptr %366, align 4, !tbaa !5
  %388 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %378, ptr noundef nonnull %.str.6.sink291, i32 noundef %379, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 134, ptr noundef %382, ptr noundef %384, ptr noundef %386, i32 noundef %387) #10
  call void @exit(i32 noundef 1) #11
  unreachable

389:                                              ; preds = %360
  %390 = load i32, ptr @test_count, align 4, !tbaa !5
  %391 = add nsw i32 %390, 1
  store i32 %391, ptr @test_count, align 4, !tbaa !5
  %392 = call i32 @s2n_connection_set_io_pair(ptr noundef nonnull %188, ptr noundef nonnull %5) #8
  %393 = icmp eq i32 %392, -1
  br i1 %393, label %394, label %418

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

401:                                              ; preds = %394
  %402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %403 = call i32 @fileno(ptr noundef %402) #8
  %404 = call i32 @isatty(i32 noundef %403) #8
  %.not119 = icmp eq i32 %404, 0
  br i1 %.not119, label %405, label %406

405:                                              ; preds = %401, %394
  br label %406

406:                                              ; preds = %401, %405
  %.str.6.sink302 = phi ptr [ @.str.6, %405 ], [ @.str.3, %401 ]
  store i32 %396, ptr %395, align 4, !tbaa !5
  %407 = load ptr, ptr @stderr, align 8, !tbaa !9
  %408 = load i32, ptr @test_count, align 4, !tbaa !5
  %409 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %410 = load i32, ptr %409, align 4, !tbaa !5
  %411 = call ptr @s2n_strerror(i32 noundef %410, ptr noundef nonnull @.str.5) #8
  %412 = load i32, ptr %409, align 4, !tbaa !5
  %413 = call ptr @s2n_strerror_debug(i32 noundef %412, ptr noundef nonnull @.str.5) #8
  %414 = load i32, ptr %395, align 4, !tbaa !5
  %415 = call ptr @strerror(i32 noundef %414) #8
  %416 = load i32, ptr %395, align 4, !tbaa !5
  %417 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %407, ptr noundef nonnull %.str.6.sink302, i32 noundef %408, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 137, ptr noundef %411, ptr noundef %413, ptr noundef %415, i32 noundef %416) #10
  call void @exit(i32 noundef 1) #11
  unreachable

418:                                              ; preds = %389
  %419 = load i32, ptr @test_count, align 4, !tbaa !5
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr @test_count, align 4, !tbaa !5
  %421 = call i32 @s2n_negotiate(ptr noundef nonnull %188, ptr noundef nonnull %3) #8
  %422 = icmp eq i32 %421, -1
  br i1 %422, label %423, label %447

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

430:                                              ; preds = %423
  %431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %432 = call i32 @fileno(ptr noundef %431) #8
  %433 = call i32 @isatty(i32 noundef %432) #8
  %.not118 = icmp eq i32 %433, 0
  br i1 %.not118, label %434, label %435

434:                                              ; preds = %430, %423
  br label %435

435:                                              ; preds = %430, %434
  %.str.6.sink313 = phi ptr [ @.str.6, %434 ], [ @.str.3, %430 ]
  store i32 %425, ptr %424, align 4, !tbaa !5
  %436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %437 = load i32, ptr @test_count, align 4, !tbaa !5
  %438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %439 = load i32, ptr %438, align 4, !tbaa !5
  %440 = call ptr @s2n_strerror(i32 noundef %439, ptr noundef nonnull @.str.5) #8
  %441 = load i32, ptr %438, align 4, !tbaa !5
  %442 = call ptr @s2n_strerror_debug(i32 noundef %441, ptr noundef nonnull @.str.5) #8
  %443 = load i32, ptr %424, align 4, !tbaa !5
  %444 = call ptr @strerror(i32 noundef %443) #8
  %445 = load i32, ptr %424, align 4, !tbaa !5
  %446 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %436, ptr noundef nonnull %.str.6.sink313, i32 noundef %437, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 140, ptr noundef %440, ptr noundef %442, ptr noundef %444, i32 noundef %445) #10
  call void @exit(i32 noundef 1) #11
  unreachable

447:                                              ; preds = %418
  %448 = load i32, ptr @test_count, align 4, !tbaa !5
  %449 = add nsw i32 %448, 1
  store i32 %449, ptr @test_count, align 4, !tbaa !5
  %450 = call ptr @s2n_connection_get_client_hello(ptr noundef nonnull %188) #8
  %451 = icmp eq ptr %450, null
  br i1 %451, label %452, label %476

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

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

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

464:                                              ; preds = %459, %463
  %.str.6.sink324 = phi ptr [ @.str.6, %463 ], [ @.str.3, %459 ]
  store i32 %454, ptr %453, align 4, !tbaa !5
  %465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %466 = load i32, ptr @test_count, align 4, !tbaa !5
  %467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %468 = load i32, ptr %467, align 4, !tbaa !5
  %469 = call ptr @s2n_strerror(i32 noundef %468, ptr noundef nonnull @.str.5) #8
  %470 = load i32, ptr %467, align 4, !tbaa !5
  %471 = call ptr @s2n_strerror_debug(i32 noundef %470, ptr noundef nonnull @.str.5) #8
  %472 = load i32, ptr %453, align 4, !tbaa !5
  %473 = call ptr @strerror(i32 noundef %472) #8
  %474 = load i32, ptr %453, align 4, !tbaa !5
  %475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %465, ptr noundef nonnull %.str.6.sink324, i32 noundef %466, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 141, ptr noundef %469, ptr noundef %471, ptr noundef %473, i32 noundef %474) #10
  call void @exit(i32 noundef 1) #11
  unreachable

476:                                              ; preds = %447
  %477 = load i32, ptr @test_count, align 4, !tbaa !5
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr @test_count, align 4, !tbaa !5
  %479 = getelementptr inbounds i8, ptr %188, i64 220
  %480 = load i8, ptr %479, align 4, !tbaa !15
  %481 = zext i8 %480 to i32
  %482 = call i32 (...) @s2n_get_highest_fully_supported_tls_version() #8
  %483 = icmp eq i32 %482, %481
  br i1 %483, label %508, label %484

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

491:                                              ; preds = %484
  %492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %493 = call i32 @fileno(ptr noundef %492) #8
  %494 = call i32 @isatty(i32 noundef %493) #8
  %.not = icmp eq i32 %494, 0
  br i1 %.not, label %495, label %496

495:                                              ; preds = %491, %484
  br label %496

496:                                              ; preds = %491, %495
  %.str.6.sink335 = phi ptr [ @.str.6, %495 ], [ @.str.3, %491 ]
  store i32 %486, ptr %485, align 4, !tbaa !5
  %497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %498 = load i32, ptr @test_count, align 4, !tbaa !5
  %499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %500 = load i32, ptr %499, align 4, !tbaa !5
  %501 = call ptr @s2n_strerror(i32 noundef %500, ptr noundef nonnull @.str.5) #8
  %502 = load i32, ptr %499, align 4, !tbaa !5
  %503 = call ptr @s2n_strerror_debug(i32 noundef %502, ptr noundef nonnull @.str.5) #8
  %504 = load i32, ptr %485, align 4, !tbaa !5
  %505 = call ptr @strerror(i32 noundef %504) #8
  %506 = load i32, ptr %485, align 4, !tbaa !5
  %507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %497, ptr noundef nonnull %.str.6.sink335, i32 noundef %498, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 142, ptr noundef %501, ptr noundef %503, ptr noundef %505, i32 noundef %506) #10
  call void @exit(i32 noundef 1) #11
  unreachable

508:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 65535, ptr nonnull %7) #8
  br label %.preheader134

509:                                              ; preds = %549
  %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 100
  %510 = icmp ult i64 %indvars.iv152, 65435
  %indvars.iv.next150 = add nuw nsw i32 %indvars.iv149, 100
  br i1 %510, label %.preheader134, label %.preheader, !llvm.loop !42

.preheader134:                                    ; preds = %508, %509
  %indvars.iv152 = phi i64 [ 1, %508 ], [ %indvars.iv.next153, %509 ]
  %indvars.iv149 = phi i32 [ 0, %508 ], [ %indvars.iv.next150, %509 ]
  %511 = trunc nuw nsw i64 %indvars.iv152 to i32
  br label %512

512:                                              ; preds = %.preheader134, %543
  %.092 = phi i32 [ %544, %543 ], [ %511, %.preheader134 ]
  %.091 = phi ptr [ %546, %543 ], [ %7, %.preheader134 ]
  %513 = load i32, ptr @test_count, align 4, !tbaa !5
  %514 = add nsw i32 %513, 1
  store i32 %514, ptr @test_count, align 4, !tbaa !5
  %515 = sext i32 %.092 to i64
  %516 = call i64 @s2n_recv(ptr noundef nonnull %188, ptr noundef %.091, i64 noundef %515, ptr noundef nonnull %3) #8
  %517 = trunc i64 %516 to i32
  %518 = icmp eq i32 %517, -1
  br i1 %518, label %519, label %543

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

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

530:                                              ; preds = %526, %519
  br label %531

531:                                              ; preds = %526, %530
  %.str.6.sink346 = phi ptr [ @.str.6, %530 ], [ @.str.3, %526 ]
  store i32 %521, ptr %520, align 4, !tbaa !5
  %532 = load ptr, ptr @stderr, align 8, !tbaa !9
  %533 = load i32, ptr @test_count, align 4, !tbaa !5
  %534 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %535 = load i32, ptr %534, align 4, !tbaa !5
  %536 = call ptr @s2n_strerror(i32 noundef %535, ptr noundef nonnull @.str.5) #8
  %537 = load i32, ptr %534, align 4, !tbaa !5
  %538 = call ptr @s2n_strerror_debug(i32 noundef %537, ptr noundef nonnull @.str.5) #8
  %539 = load i32, ptr %520, align 4, !tbaa !5
  %540 = call ptr @strerror(i32 noundef %539) #8
  %541 = load i32, ptr %520, align 4, !tbaa !5
  %542 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %532, ptr noundef nonnull %.str.6.sink346, i32 noundef %533, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 151, ptr noundef %536, ptr noundef %538, ptr noundef %540, i32 noundef %541) #10
  call void @exit(i32 noundef 1) #11
  unreachable

543:                                              ; preds = %512
  %544 = sub nsw i32 %.092, %517
  %sext = shl i64 %516, 32
  %545 = ashr exact i64 %sext, 32
  %546 = getelementptr inbounds i8, ptr %.091, i64 %545
  %.not113 = icmp eq i32 %544, 0
  br i1 %.not113, label %.preheader133, label %512, !llvm.loop !44

.preheader133:                                    ; preds = %543
  %test_count.promoted = load i32, ptr @test_count, align 4, !tbaa !5
  %547 = add i32 %test_count.promoted, %indvars.iv149
  br label %553

548:                                              ; preds = %553
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv152
  br i1 %exitcond.not, label %549, label %553, !llvm.loop !45

549:                                              ; preds = %548
  %550 = add nsw i32 %547, 2
  store i32 %550, ptr @test_count, align 4, !tbaa !5
  %551 = call i32 @s2n_connection_release_buffers(ptr noundef nonnull %188) #8
  %552 = icmp eq i32 %551, -1
  br i1 %552, label %583, label %509

553:                                              ; preds = %.preheader133, %548
  %indvars.iv = phi i64 [ 0, %.preheader133 ], [ %indvars.iv.next, %548 ]
  %554 = phi i32 [ %test_count.promoted, %.preheader133 ], [ %555, %548 ]
  %555 = add nsw i32 %554, 1
  %556 = getelementptr inbounds [65535 x i8], ptr %7, i64 0, i64 %indvars.iv
  %557 = load i8, ptr %556, align 1, !tbaa !46
  %558 = icmp eq i8 %557, 33
  br i1 %558, label %548, label %559

559:                                              ; preds = %553
  store i32 %555, ptr @test_count, align 4, !tbaa !5
  %560 = tail call ptr @__errno_location() #9
  %561 = load i32, ptr %560, align 4, !tbaa !5
  %562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %563 = call i32 @s2n_print_stacktrace(ptr noundef %562) #8
  %564 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %565 = trunc nuw i8 %564 to i1
  br i1 %565, label %566, label %570

566:                                              ; preds = %559
  %567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %568 = call i32 @fileno(ptr noundef %567) #8
  %569 = call i32 @isatty(i32 noundef %568) #8
  %.not115 = icmp eq i32 %569, 0
  br i1 %.not115, label %570, label %571

570:                                              ; preds = %566, %559
  br label %571

571:                                              ; preds = %566, %570
  %.str.6.sink357 = phi ptr [ @.str.6, %570 ], [ @.str.3, %566 ]
  store i32 %561, ptr %560, align 4, !tbaa !5
  %572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %573 = load i32, ptr @test_count, align 4, !tbaa !5
  %574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %575 = load i32, ptr %574, align 4, !tbaa !5
  %576 = call ptr @s2n_strerror(i32 noundef %575, ptr noundef nonnull @.str.5) #8
  %577 = load i32, ptr %574, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror_debug(i32 noundef %577, ptr noundef nonnull @.str.5) #8
  %579 = load i32, ptr %560, align 4, !tbaa !5
  %580 = call ptr @strerror(i32 noundef %579) #8
  %581 = load i32, ptr %560, align 4, !tbaa !5
  %582 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %572, ptr noundef nonnull %.str.6.sink357, i32 noundef %573, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.2, i32 noundef 158, ptr noundef %576, ptr noundef %578, ptr noundef %580, i32 noundef %581) #10
  call void @exit(i32 noundef 1) #11
  unreachable

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

590:                                              ; preds = %583
  %591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %592 = call i32 @fileno(ptr noundef %591) #8
  %593 = call i32 @isatty(i32 noundef %592) #8
  %.not114 = icmp eq i32 %593, 0
  br i1 %.not114, label %594, label %595

594:                                              ; preds = %590, %583
  br label %595

595:                                              ; preds = %590, %594
  %.str.6.sink368 = phi ptr [ @.str.6, %594 ], [ @.str.3, %590 ]
  store i32 %585, ptr %584, align 4, !tbaa !5
  %596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %597 = load i32, ptr @test_count, align 4, !tbaa !5
  %598 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %599 = load i32, ptr %598, align 4, !tbaa !5
  %600 = call ptr @s2n_strerror(i32 noundef %599, ptr noundef nonnull @.str.5) #8
  %601 = load i32, ptr %598, align 4, !tbaa !5
  %602 = call ptr @s2n_strerror_debug(i32 noundef %601, ptr noundef nonnull @.str.5) #8
  %603 = load i32, ptr %584, align 4, !tbaa !5
  %604 = call ptr @strerror(i32 noundef %603) #8
  %605 = load i32, ptr %584, align 4, !tbaa !5
  %606 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %596, ptr noundef nonnull %.str.6.sink368, i32 noundef %597, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.2, i32 noundef 162, ptr noundef %600, ptr noundef %602, ptr noundef %604, i32 noundef %605) #10
  call void @exit(i32 noundef 1) #11
  unreachable

.preheader:                                       ; preds = %509, %610
  %607 = call i32 @s2n_shutdown(ptr noundef nonnull %188, ptr noundef nonnull %3) #8
  %608 = load i32, ptr @test_count, align 4, !tbaa !5
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr @test_count, align 4, !tbaa !5
  %cond = icmp eq i32 %607, 0
  br i1 %cond, label %638, label %610

610:                                              ; preds = %.preheader
  %611 = tail call ptr @__errno_location() #9
  %612 = load i32, ptr %611, align 4, !tbaa !5
  %613 = icmp eq i32 %612, 11
  %614 = load i32, ptr %3, align 4
  %615 = icmp ne i32 %614, 0
  %or.cond = select i1 %613, i1 %615, i1 false
  br i1 %or.cond, label %.preheader, label %616, !llvm.loop !47

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

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

625:                                              ; preds = %621, %616
  br label %626

626:                                              ; preds = %621, %625
  %.str.6.sink379 = phi ptr [ @.str.6, %625 ], [ @.str.3, %621 ]
  store i32 %612, ptr %611, align 4, !tbaa !5
  %627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %628 = load i32, ptr @test_count, align 4, !tbaa !5
  %629 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %630 = load i32, ptr %629, align 4, !tbaa !5
  %631 = call ptr @s2n_strerror(i32 noundef %630, ptr noundef nonnull @.str.5) #8
  %632 = load i32, ptr %629, align 4, !tbaa !5
  %633 = call ptr @s2n_strerror_debug(i32 noundef %632, ptr noundef nonnull @.str.5) #8
  %634 = load i32, ptr %611, align 4, !tbaa !5
  %635 = call ptr @strerror(i32 noundef %634) #8
  %636 = load i32, ptr %611, align 4, !tbaa !5
  %637 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %627, ptr noundef nonnull %.str.6.sink379, i32 noundef %628, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.2, i32 noundef 168, ptr noundef %631, ptr noundef %633, ptr noundef %635, i32 noundef %636) #10
  call void @exit(i32 noundef 1) #11
  unreachable

638:                                              ; preds = %.preheader
  %639 = add nsw i32 %608, 2
  store i32 %639, ptr @test_count, align 4, !tbaa !5
  %640 = call i32 @s2n_connection_free(ptr noundef nonnull %188) #8
  %641 = icmp eq i32 %640, -1
  br i1 %641, label %642, label %666

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

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

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

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

666:                                              ; preds = %638
  %667 = load i32, ptr @test_count, align 4, !tbaa !5
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr @test_count, align 4, !tbaa !5
  %669 = call i32 @s2n_config_free(ptr noundef nonnull %246) #8
  %670 = icmp eq i32 %669, -1
  br i1 %670, label %671, label %695

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

678:                                              ; preds = %671
  %679 = load ptr, ptr @stderr, align 8, !tbaa !9
  %680 = call i32 @fileno(ptr noundef %679) #8
  %681 = call i32 @isatty(i32 noundef %680) #8
  %.not111 = icmp eq i32 %681, 0
  br i1 %.not111, label %682, label %683

682:                                              ; preds = %678, %671
  br label %683

683:                                              ; preds = %678, %682
  %.str.6.sink401 = phi ptr [ @.str.6, %682 ], [ @.str.3, %678 ]
  store i32 %673, ptr %672, align 4, !tbaa !5
  %684 = load ptr, ptr @stderr, align 8, !tbaa !9
  %685 = load i32, ptr @test_count, align 4, !tbaa !5
  %686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %687 = load i32, ptr %686, align 4, !tbaa !5
  %688 = call ptr @s2n_strerror(i32 noundef %687, ptr noundef nonnull @.str.5) #8
  %689 = load i32, ptr %686, align 4, !tbaa !5
  %690 = call ptr @s2n_strerror_debug(i32 noundef %689, ptr noundef nonnull @.str.5) #8
  %691 = load i32, ptr %672, align 4, !tbaa !5
  %692 = call ptr @strerror(i32 noundef %691) #8
  %693 = load i32, ptr %672, align 4, !tbaa !5
  %694 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %684, ptr noundef nonnull %.str.6.sink401, i32 noundef %685, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.2, i32 noundef 172, ptr noundef %688, ptr noundef %690, ptr noundef %692, i32 noundef %693) #10
  call void @exit(i32 noundef 1) #11
  unreachable

695:                                              ; preds = %666
  %696 = load i32, ptr @test_count, align 4, !tbaa !5
  %697 = add nsw i32 %696, 1
  store i32 %697, ptr @test_count, align 4, !tbaa !5
  %698 = call i32 @waitpid(i32 noundef -1, ptr noundef nonnull %4, i32 noundef 0) #8
  %699 = icmp eq i32 %698, %124
  br i1 %699, label %724, label %700

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

707:                                              ; preds = %700
  %708 = load ptr, ptr @stderr, align 8, !tbaa !9
  %709 = call i32 @fileno(ptr noundef %708) #8
  %710 = call i32 @isatty(i32 noundef %709) #8
  %.not102 = icmp eq i32 %710, 0
  br i1 %.not102, label %711, label %712

711:                                              ; preds = %707, %700
  br label %712

712:                                              ; preds = %707, %711
  %.str.6.sink412 = phi ptr [ @.str.6, %711 ], [ @.str.3, %707 ]
  store i32 %702, ptr %701, align 4, !tbaa !5
  %713 = load ptr, ptr @stderr, align 8, !tbaa !9
  %714 = load i32, ptr @test_count, align 4, !tbaa !5
  %715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %716 = load i32, ptr %715, align 4, !tbaa !5
  %717 = call ptr @s2n_strerror(i32 noundef %716, ptr noundef nonnull @.str.5) #8
  %718 = load i32, ptr %715, align 4, !tbaa !5
  %719 = call ptr @s2n_strerror_debug(i32 noundef %718, ptr noundef nonnull @.str.5) #8
  %720 = load i32, ptr %701, align 4, !tbaa !5
  %721 = call ptr @strerror(i32 noundef %720) #8
  %722 = load i32, ptr %701, align 4, !tbaa !5
  %723 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %713, ptr noundef nonnull %.str.6.sink412, i32 noundef %714, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.2, i32 noundef 175, ptr noundef %717, ptr noundef %719, ptr noundef %721, i32 noundef %722) #10
  call void @exit(i32 noundef 1) #11
  unreachable

724:                                              ; preds = %695
  %725 = load i32, ptr @test_count, align 4, !tbaa !5
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr @test_count, align 4, !tbaa !5
  %727 = load i32, ptr %4, align 4, !tbaa !5
  %728 = icmp eq i32 %727, 0
  br i1 %728, label %753, label %729

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

736:                                              ; preds = %729
  %737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %738 = call i32 @fileno(ptr noundef %737) #8
  %739 = call i32 @isatty(i32 noundef %738) #8
  %.not103 = icmp eq i32 %739, 0
  br i1 %.not103, label %740, label %741

740:                                              ; preds = %736, %729
  br label %741

741:                                              ; preds = %736, %740
  %.str.6.sink423 = phi ptr [ @.str.6, %740 ], [ @.str.3, %736 ]
  store i32 %731, ptr %730, align 4, !tbaa !5
  %742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %743 = load i32, ptr @test_count, align 4, !tbaa !5
  %744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %745 = load i32, ptr %744, align 4, !tbaa !5
  %746 = call ptr @s2n_strerror(i32 noundef %745, ptr noundef nonnull @.str.5) #8
  %747 = load i32, ptr %744, align 4, !tbaa !5
  %748 = call ptr @s2n_strerror_debug(i32 noundef %747, ptr noundef nonnull @.str.5) #8
  %749 = load i32, ptr %730, align 4, !tbaa !5
  %750 = call ptr @strerror(i32 noundef %749) #8
  %751 = load i32, ptr %730, align 4, !tbaa !5
  %752 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %742, ptr noundef nonnull %.str.6.sink423, i32 noundef %743, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.2, i32 noundef 176, ptr noundef %746, ptr noundef %748, ptr noundef %750, i32 noundef %751) #10
  call void @exit(i32 noundef 1) #11
  unreachable

753:                                              ; preds = %724
  %754 = add nsw i32 %725, 2
  store i32 %754, ptr @test_count, align 4, !tbaa !5
  %755 = call i32 @s2n_io_pair_close_one_end(ptr noundef nonnull %5, i32 noundef 0) #8
  %756 = icmp eq i32 %755, -1
  br i1 %756, label %757, label %781

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

764:                                              ; preds = %757
  %765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %766 = call i32 @fileno(ptr noundef %765) #8
  %767 = call i32 @isatty(i32 noundef %766) #8
  %.not110 = icmp eq i32 %767, 0
  br i1 %.not110, label %768, label %769

768:                                              ; preds = %764, %757
  br label %769

769:                                              ; preds = %764, %768
  %.str.6.sink434 = phi ptr [ @.str.6, %768 ], [ @.str.3, %764 ]
  store i32 %759, ptr %758, align 4, !tbaa !5
  %770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %771 = load i32, ptr @test_count, align 4, !tbaa !5
  %772 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %773 = load i32, ptr %772, align 4, !tbaa !5
  %774 = call ptr @s2n_strerror(i32 noundef %773, ptr noundef nonnull @.str.5) #8
  %775 = load i32, ptr %772, align 4, !tbaa !5
  %776 = call ptr @s2n_strerror_debug(i32 noundef %775, ptr noundef nonnull @.str.5) #8
  %777 = load i32, ptr %758, align 4, !tbaa !5
  %778 = call ptr @strerror(i32 noundef %777) #8
  %779 = load i32, ptr %758, align 4, !tbaa !5
  %780 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %770, ptr noundef nonnull %.str.6.sink434, i32 noundef %771, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 177, ptr noundef %774, ptr noundef %776, ptr noundef %778, i32 noundef %779) #10
  call void @exit(i32 noundef 1) #11
  unreachable

781:                                              ; preds = %753
  %782 = load i32, ptr @test_count, align 4, !tbaa !5
  %783 = add nsw i32 %782, 1
  store i32 %783, ptr @test_count, align 4, !tbaa !5
  %784 = load ptr, ptr %6, align 8, !tbaa !9
  %785 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %784) #8
  %786 = icmp eq i32 %785, -1
  br i1 %786, label %787, label %811

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

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

798:                                              ; preds = %794, %787
  br label %799

799:                                              ; preds = %794, %798
  %.str.6.sink445 = phi ptr [ @.str.6, %798 ], [ @.str.3, %794 ]
  store i32 %789, ptr %788, align 4, !tbaa !5
  %800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %801 = load i32, ptr @test_count, align 4, !tbaa !5
  %802 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %803 = load i32, ptr %802, align 4, !tbaa !5
  %804 = call ptr @s2n_strerror(i32 noundef %803, ptr noundef nonnull @.str.5) #8
  %805 = load i32, ptr %802, align 4, !tbaa !5
  %806 = call ptr @s2n_strerror_debug(i32 noundef %805, ptr noundef nonnull @.str.5) #8
  %807 = load i32, ptr %788, align 4, !tbaa !5
  %808 = call ptr @strerror(i32 noundef %807) #8
  %809 = load i32, ptr %788, align 4, !tbaa !5
  %810 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %800, ptr noundef nonnull %.str.6.sink445, i32 noundef %801, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.2, i32 noundef 179, ptr noundef %804, ptr noundef %806, ptr noundef %808, i32 noundef %809) #10
  call void @exit(i32 noundef 1) #11
  unreachable

811:                                              ; preds = %781
  %812 = call i32 (...) @s2n_disable_tls13_in_test() #8
  %813 = call i32 @s2n_cleanup() #8
  %814 = icmp eq i32 %813, -1
  br i1 %814, label %815, label %839

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

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

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

827:                                              ; preds = %822, %826
  %.str.6.sink456 = phi ptr [ @.str.6, %826 ], [ @.str.3, %822 ]
  store i32 %817, ptr %816, align 4, !tbaa !5
  %828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %829 = load i32, ptr @test_count, align 4, !tbaa !5
  %830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %831 = load i32, ptr %830, align 4, !tbaa !5
  %832 = call ptr @s2n_strerror(i32 noundef %831, ptr noundef nonnull @.str.5) #8
  %833 = load i32, ptr %830, align 4, !tbaa !5
  %834 = call ptr @s2n_strerror_debug(i32 noundef %833, ptr noundef nonnull @.str.5) #8
  %835 = load i32, ptr %816, align 4, !tbaa !5
  %836 = call ptr @strerror(i32 noundef %835) #8
  %837 = load i32, ptr %816, align 4, !tbaa !5
  %838 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %828, ptr noundef nonnull %.str.6.sink456, i32 noundef %829, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.2, i32 noundef 183, ptr noundef %832, ptr noundef %834, ptr noundef %836, i32 noundef %837) #10
  call void @exit(i32 noundef 1) #11
  unreachable

839:                                              ; preds = %811
  %840 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #8
  %841 = icmp eq i32 %840, -1
  br i1 %841, label %842, label %866

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

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

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

854:                                              ; preds = %849, %853
  %.str.6.sink467 = phi ptr [ @.str.6, %853 ], [ @.str.3, %849 ]
  store i32 %844, ptr %843, align 4, !tbaa !5
  %855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %856 = load i32, ptr @test_count, align 4, !tbaa !5
  %857 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %858 = load i32, ptr %857, align 4, !tbaa !5
  %859 = call ptr @s2n_strerror(i32 noundef %858, ptr noundef nonnull @.str.5) #8
  %860 = load i32, ptr %857, align 4, !tbaa !5
  %861 = call ptr @s2n_strerror_debug(i32 noundef %860, ptr noundef nonnull @.str.5) #8
  %862 = load i32, ptr %843, align 4, !tbaa !5
  %863 = call ptr @strerror(i32 noundef %862) #8
  %864 = load i32, ptr %843, align 4, !tbaa !5
  %865 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %855, ptr noundef nonnull %.str.6.sink467, i32 noundef %856, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.2, i32 noundef 183, ptr noundef %859, ptr noundef %861, ptr noundef %863, i32 noundef %864) #10
  call void @exit(i32 noundef 1) #11
  unreachable

866:                                              ; preds = %839
  %867 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %868 = trunc nuw i8 %867 to i1
  br i1 %868, label %869, label %880

869:                                              ; preds = %866
  %870 = load ptr, ptr @stdout, align 8, !tbaa !9
  %871 = call i32 @fileno(ptr noundef %870) #8
  %872 = call i32 @isatty(i32 noundef %871) #8
  %.not104 = icmp eq i32 %872, 0
  br i1 %.not104, label %880, label %873

873:                                              ; preds = %869
  %874 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not106 = icmp eq i32 %874, 0
  %875 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not106, label %878, label %876

876:                                              ; preds = %873
  %877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %875, ptr noundef nonnull @.str.36, i32 noundef %874) #8
  br label %887

878:                                              ; preds = %873
  %879 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %875, ptr noundef nonnull @.str.37) #8
  br label %887

880:                                              ; preds = %869, %866
  %881 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not105 = icmp eq i32 %881, 0
  %882 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not105, label %885, label %883

883:                                              ; preds = %880
  %884 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %882, ptr noundef nonnull @.str.38, i32 noundef %881) #8
  br label %887

885:                                              ; preds = %880
  %886 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %882, ptr noundef nonnull @.str.39) #8
  br label %887

887:                                              ; preds = %883, %885, %876, %878
  call void @llvm.lifetime.end.p0(i64 65535, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #8
  ret i32 0
}

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

declare i32 @s2n_io_pair_init(ptr noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare i32 @fork() local_unnamed_addr #4

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

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

declare ptr @s2n_connection_get_client_hello(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_get_highest_fully_supported_tls_version(...) local_unnamed_addr #2

declare i64 @s2n_recv(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_disable_tls13_in_test(...) local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

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

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

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


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