; LLVM IR from aws/s2n-tls :: tests/unit (s2n_self_talk_nonblocking_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_blob = type { ptr, i32, i32, i8 }
%struct.s2n_result = type { i32 }
%struct.s2n_test_io_pair = type { i32, i32 }
%struct.iovec = type { ptr, i64 }
%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_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 [9 x i8], align 1
@test_count = external dso_local global i32, align 4
@stderr = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [89 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [29 x i8], align 1

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

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #2

declare i32 @sleep(i32 noundef) #3

declare ptr @s2n_connection_new(i32 noundef) #3

declare ptr @s2n_config_new() #3

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @test_send(i32 noundef %0, i32 noundef %1, i32 noundef %2) #0 {
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca [12000 x i8], align 16
  %12 = alloca [12000 x i8], align 16
  %13 = alloca [12000 x i8], align 16
  %14 = alloca i32, align 4
  %15 = alloca %struct.s2n_blob, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca %struct.s2n_result, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %struct.s2n_blob, align 8
  %24 = alloca %struct.s2n_result, align 4
  %25 = alloca i32, align 4
  %26 = alloca %struct.s2n_test_io_pair, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %struct.s2n_result, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %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
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca %struct.s2n_result, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca %struct.s2n_result, align 4
  %71 = alloca %struct.s2n_result, align 4
  %72 = alloca %struct.s2n_result, align 4
  store i32 %0, ptr %5, align 4, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #10
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  store i32 0, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12000, ptr %11) #10
  call void @llvm.lifetime.start.p0(i64 12000, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 12000, ptr %13) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  store i32 0, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #10
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  store i32 8192, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  store i32 7, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  store ptr null, ptr %18, align 8, !tbaa !9
  %73 = load i32, ptr %6, align 4, !tbaa !5
  %74 = icmp ne i32 %73, 0
  br i1 %74, label %202, label %75

75:                                               ; preds = %3
  store i32 10000000, ptr %14, align 4, !tbaa !5
  br label %76

76:                                               ; preds = %75
  %77 = load i32, ptr @test_count, align 4, !tbaa !5
  %78 = add nsw i32 %77, 1
  store i32 %78, ptr @test_count, align 4, !tbaa !5
  %79 = load i32, ptr %14, align 4, !tbaa !5
  %80 = call i32 @s2n_alloc(ptr noundef %15, i32 noundef %79)
  %81 = icmp eq i32 %80, -1
  br i1 %81, label %82, label %135

82:                                               ; preds = %76
  br label %83

83:                                               ; preds = %82
  br label %84

84:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %85 = call ptr @__errno_location() #11
  %86 = load i32, ptr %85, align 4, !tbaa !5
  store i32 %86, ptr %19, align 4, !tbaa !5
  %87 = load ptr, ptr @stderr, align 8, !tbaa !9
  %88 = call i32 @s2n_print_stacktrace(ptr noundef %87)
  %89 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %90 = trunc i8 %89 to i1
  br i1 %90, label %91, label %113

91:                                               ; preds = %84
  %92 = load ptr, ptr @stderr, align 8, !tbaa !9
  %93 = call i32 @fileno(ptr noundef %92) #10
  %94 = call i32 @isatty(i32 noundef %93) #10
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %96, label %113

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

113:                                              ; preds = %91, %84
  %114 = load i32, ptr %19, align 4, !tbaa !5
  %115 = call ptr @__errno_location() #11
  store i32 %114, ptr %115, align 4, !tbaa !5
  %116 = load ptr, ptr @stderr, align 8, !tbaa !9
  %117 = load i32, ptr @test_count, align 4, !tbaa !5
  %118 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %119 = load i32, ptr %118, align 4, !tbaa !5
  %120 = call ptr @s2n_strerror(i32 noundef %119, ptr noundef @.str.4)
  %121 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %123 = call ptr @s2n_strerror_debug(i32 noundef %122, ptr noundef @.str.4)
  %124 = call ptr @__errno_location() #11
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %126 = call ptr @strerror(i32 noundef %125) #10
  %127 = call ptr @__errno_location() #11
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %116, ptr noundef @.str.5, i32 noundef %117, ptr noundef @.str.2, ptr noundef @.str.3, i32 noundef 224, ptr noundef %120, ptr noundef %123, ptr noundef %126, i32 noundef %128) #10
  br label %130

130:                                              ; preds = %113, %96
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %131

131:                                              ; preds = %130
  br label %132

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

133:                                              ; No predecessors!
  br label %134

134:                                              ; preds = %133
  br label %135

135:                                              ; preds = %134, %76
  br label %136

136:                                              ; preds = %135
  br label %137

137:                                              ; preds = %136
  br label %138

138:                                              ; preds = %137
  %139 = load i32, ptr @test_count, align 4, !tbaa !5
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr @test_count, align 4, !tbaa !5
  %141 = call i32 @s2n_get_public_random_data(ptr noundef %15)
  %142 = getelementptr inbounds %struct.s2n_result, ptr %20, i32 0, i32 0
  store i32 %141, ptr %142, align 4
  %143 = getelementptr inbounds %struct.s2n_result, ptr %20, i32 0, i32 0
  %144 = load i32, ptr %143, align 4
  %145 = call zeroext i1 @s2n_result_is_ok(i32 %144)
  br i1 %145, label %199, label %146

146:                                              ; preds = %138
  br label %147

147:                                              ; preds = %146
  br label %148

148:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  %149 = call ptr @__errno_location() #11
  %150 = load i32, ptr %149, align 4, !tbaa !5
  store i32 %150, ptr %21, align 4, !tbaa !5
  %151 = load ptr, ptr @stderr, align 8, !tbaa !9
  %152 = call i32 @s2n_print_stacktrace(ptr noundef %151)
  %153 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %154 = trunc i8 %153 to i1
  br i1 %154, label %155, label %177

155:                                              ; preds = %148
  %156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %157 = call i32 @fileno(ptr noundef %156) #10
  %158 = call i32 @isatty(i32 noundef %157) #10
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %160, label %177

160:                                              ; preds = %155
  %161 = load i32, ptr %21, align 4, !tbaa !5
  %162 = call ptr @__errno_location() #11
  store i32 %161, ptr %162, align 4, !tbaa !5
  %163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %164 = load i32, ptr @test_count, align 4, !tbaa !5
  %165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = call ptr @s2n_strerror(i32 noundef %166, ptr noundef @.str.4)
  %168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = call ptr @s2n_strerror_debug(i32 noundef %169, ptr noundef @.str.4)
  %171 = call ptr @__errno_location() #11
  %172 = load i32, ptr %171, align 4, !tbaa !5
  %173 = call ptr @strerror(i32 noundef %172) #10
  %174 = call ptr @__errno_location() #11
  %175 = load i32, ptr %174, align 4, !tbaa !5
  %176 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %163, ptr noundef @.str.1, i32 noundef %164, ptr noundef @.str.6, ptr noundef @.str.3, i32 noundef 225, ptr noundef %167, ptr noundef %170, ptr noundef %173, i32 noundef %175) #10
  br label %194

177:                                              ; preds = %155, %148
  %178 = load i32, ptr %21, align 4, !tbaa !5
  %179 = call ptr @__errno_location() #11
  store i32 %178, ptr %179, align 4, !tbaa !5
  %180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %181 = load i32, ptr @test_count, align 4, !tbaa !5
  %182 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %183 = load i32, ptr %182, align 4, !tbaa !5
  %184 = call ptr @s2n_strerror(i32 noundef %183, ptr noundef @.str.4)
  %185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %186 = load i32, ptr %185, align 4, !tbaa !5
  %187 = call ptr @s2n_strerror_debug(i32 noundef %186, ptr noundef @.str.4)
  %188 = call ptr @__errno_location() #11
  %189 = load i32, ptr %188, align 4, !tbaa !5
  %190 = call ptr @strerror(i32 noundef %189) #10
  %191 = call ptr @__errno_location() #11
  %192 = load i32, ptr %191, align 4, !tbaa !5
  %193 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %180, ptr noundef @.str.5, i32 noundef %181, ptr noundef @.str.6, ptr noundef @.str.3, i32 noundef 225, ptr noundef %184, ptr noundef %187, ptr noundef %190, i32 noundef %192) #10
  br label %194

194:                                              ; preds = %177, %160
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %195

195:                                              ; preds = %194
  br label %196

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

197:                                              ; No predecessors!
  br label %198

198:                                              ; preds = %197
  br label %199

199:                                              ; preds = %198, %138
  br label %200

200:                                              ; preds = %199
  br label %201

201:                                              ; preds = %200
  br label %303

202:                                              ; preds = %3
  %203 = load i32, ptr %17, align 4, !tbaa !5
  %204 = sext i32 %203 to i64
  %205 = mul i64 16, %204
  %206 = call noalias ptr @malloc(i64 noundef %205) #13
  store ptr %206, ptr %18, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %207

207:                                              ; preds = %297, %202
  %208 = load i32, ptr %22, align 4, !tbaa !5
  %209 = load i32, ptr %17, align 4, !tbaa !5
  %210 = icmp slt i32 %208, %209
  br i1 %210, label %212, label %211

211:                                              ; preds = %207
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %302

212:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #10
  call void @llvm.memset.p0.i64(ptr align 8 %23, i8 0, i64 24, i1 false)
  %213 = load i32, ptr %16, align 4, !tbaa !5
  %214 = sext i32 %213 to i64
  %215 = call noalias ptr @malloc(i64 noundef %214) #13
  %216 = getelementptr inbounds %struct.s2n_blob, ptr %23, i32 0, i32 0
  store ptr %215, ptr %216, align 8, !tbaa !15
  %217 = load ptr, ptr %18, align 8, !tbaa !9
  %218 = load i32, ptr %22, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds %struct.iovec, ptr %217, i64 %219
  %221 = getelementptr inbounds %struct.iovec, ptr %220, i32 0, i32 0
  store ptr %215, ptr %221, align 8, !tbaa !17
  %222 = load i32, ptr %16, align 4, !tbaa !5
  %223 = getelementptr inbounds %struct.s2n_blob, ptr %23, i32 0, i32 1
  store i32 %222, ptr %223, align 8, !tbaa !20
  %224 = zext i32 %222 to i64
  %225 = load ptr, ptr %18, align 8, !tbaa !9
  %226 = load i32, ptr %22, align 4, !tbaa !5
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds %struct.iovec, ptr %225, i64 %227
  %229 = getelementptr inbounds %struct.iovec, ptr %228, i32 0, i32 1
  store i64 %224, ptr %229, align 8, !tbaa !21
  br label %230

230:                                              ; preds = %212
  %231 = load i32, ptr @test_count, align 4, !tbaa !5
  %232 = add nsw i32 %231, 1
  store i32 %232, ptr @test_count, align 4, !tbaa !5
  %233 = call i32 @s2n_get_public_random_data(ptr noundef %15)
  %234 = getelementptr inbounds %struct.s2n_result, ptr %24, i32 0, i32 0
  store i32 %233, ptr %234, align 4
  %235 = getelementptr inbounds %struct.s2n_result, ptr %24, i32 0, i32 0
  %236 = load i32, ptr %235, align 4
  %237 = call zeroext i1 @s2n_result_is_ok(i32 %236)
  br i1 %237, label %291, label %238

238:                                              ; preds = %230
  br label %239

239:                                              ; preds = %238
  br label %240

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

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

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

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

286:                                              ; preds = %269, %252
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %287

287:                                              ; preds = %286
  br label %288

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

289:                                              ; No predecessors!
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290, %230
  br label %292

292:                                              ; preds = %291
  br label %293

293:                                              ; preds = %292
  %294 = load i32, ptr %16, align 4, !tbaa !5
  %295 = load i32, ptr %14, align 4, !tbaa !5
  %296 = add i32 %295, %294
  store i32 %296, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #10
  br label %297

297:                                              ; preds = %293
  %298 = load i32, ptr %22, align 4, !tbaa !5
  %299 = add nsw i32 %298, 1
  store i32 %299, ptr %22, align 4, !tbaa !5
  %300 = load i32, ptr %16, align 4, !tbaa !5
  %301 = mul nsw i32 %300, 2
  store i32 %301, ptr %16, align 4, !tbaa !5
  br label %207, !llvm.loop !22

302:                                              ; preds = %211
  br label %303

303:                                              ; preds = %302, %201
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  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_init(ptr noundef %26)
  %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 %27) #10
  %312 = call ptr @__errno_location() #11
  %313 = load i32, ptr %312, align 4, !tbaa !5
  store i32 %313, ptr %27, 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) #10
  %321 = call i32 @isatty(i32 noundef %320) #10
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %340

323:                                              ; preds = %318
  %324 = load i32, ptr %27, align 4, !tbaa !5
  %325 = call ptr @__errno_location() #11
  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.4)
  %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.4)
  %334 = call ptr @__errno_location() #11
  %335 = load i32, ptr %334, align 4, !tbaa !5
  %336 = call ptr @strerror(i32 noundef %335) #10
  %337 = call ptr @__errno_location() #11
  %338 = load i32, ptr %337, align 4, !tbaa !5
  %339 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %326, ptr noundef @.str.1, i32 noundef %327, ptr noundef @.str.7, ptr noundef @.str.3, i32 noundef 240, ptr noundef %330, ptr noundef %333, ptr noundef %336, i32 noundef %338) #10
  br label %357

340:                                              ; preds = %318, %311
  %341 = load i32, ptr %27, align 4, !tbaa !5
  %342 = call ptr @__errno_location() #11
  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.4)
  %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.4)
  %351 = call ptr @__errno_location() #11
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = call ptr @strerror(i32 noundef %352) #10
  %354 = call ptr @__errno_location() #11
  %355 = load i32, ptr %354, align 4, !tbaa !5
  %356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %343, ptr noundef @.str.5, i32 noundef %344, ptr noundef @.str.7, ptr noundef @.str.3, i32 noundef 240, ptr noundef %347, ptr noundef %350, ptr noundef %353, i32 noundef %355) #10
  br label %357

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

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  call void @exit(i32 noundef 1) #12
  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
  %365 = call i32 @fork() #10
  store i32 %365, ptr %10, align 4, !tbaa !5
  %366 = load i32, ptr %10, align 4, !tbaa !5
  %367 = icmp eq i32 %366, 0
  br i1 %367, label %368, label %570

368:                                              ; preds = %364
  br label %369

369:                                              ; preds = %368
  %370 = load i32, ptr @test_count, align 4, !tbaa !5
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr @test_count, align 4, !tbaa !5
  %372 = call i32 @s2n_io_pair_close_one_end(ptr noundef %26, i32 noundef 0)
  %373 = icmp eq i32 %372, -1
  br i1 %373, label %374, label %427

374:                                              ; preds = %369
  br label %375

375:                                              ; preds = %374
  br label %376

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

383:                                              ; preds = %376
  %384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %385 = call i32 @fileno(ptr noundef %384) #10
  %386 = call i32 @isatty(i32 noundef %385) #10
  %387 = icmp ne i32 %386, 0
  br i1 %387, label %388, label %405

388:                                              ; preds = %383
  %389 = load i32, ptr %28, align 4, !tbaa !5
  %390 = call ptr @__errno_location() #11
  store i32 %389, ptr %390, align 4, !tbaa !5
  %391 = load ptr, ptr @stderr, align 8, !tbaa !9
  %392 = load i32, ptr @test_count, align 4, !tbaa !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(i32 noundef %394, ptr noundef @.str.4)
  %396 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %397 = load i32, ptr %396, align 4, !tbaa !5
  %398 = call ptr @s2n_strerror_debug(i32 noundef %397, ptr noundef @.str.4)
  %399 = call ptr @__errno_location() #11
  %400 = load i32, ptr %399, align 4, !tbaa !5
  %401 = call ptr @strerror(i32 noundef %400) #10
  %402 = call ptr @__errno_location() #11
  %403 = load i32, ptr %402, align 4, !tbaa !5
  %404 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %391, ptr noundef @.str.1, i32 noundef %392, ptr noundef @.str.8, ptr noundef @.str.3, i32 noundef 246, ptr noundef %395, ptr noundef %398, ptr noundef %401, i32 noundef %403) #10
  br label %422

405:                                              ; preds = %383, %376
  %406 = load i32, ptr %28, align 4, !tbaa !5
  %407 = call ptr @__errno_location() #11
  store i32 %406, ptr %407, align 4, !tbaa !5
  %408 = load ptr, ptr @stderr, align 8, !tbaa !9
  %409 = load i32, ptr @test_count, align 4, !tbaa !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(i32 noundef %411, ptr noundef @.str.4)
  %413 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %414 = load i32, ptr %413, align 4, !tbaa !5
  %415 = call ptr @s2n_strerror_debug(i32 noundef %414, ptr noundef @.str.4)
  %416 = call ptr @__errno_location() #11
  %417 = load i32, ptr %416, align 4, !tbaa !5
  %418 = call ptr @strerror(i32 noundef %417) #10
  %419 = call ptr @__errno_location() #11
  %420 = load i32, ptr %419, align 4, !tbaa !5
  %421 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %408, ptr noundef @.str.5, i32 noundef %409, ptr noundef @.str.8, ptr noundef @.str.3, i32 noundef 246, ptr noundef %412, ptr noundef %415, ptr noundef %418, i32 noundef %420) #10
  br label %422

422:                                              ; preds = %405, %388
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %423

423:                                              ; preds = %422
  br label %424

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

425:                                              ; No predecessors!
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426, %369
  br label %428

428:                                              ; preds = %427
  br label %429

429:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  %430 = load i32, ptr %6, align 4, !tbaa !5
  %431 = icmp ne i32 %430, 0
  br i1 %431, label %437, label %432

432:                                              ; preds = %429
  %433 = getelementptr inbounds %struct.s2n_blob, ptr %15, i32 0, i32 0
  %434 = load ptr, ptr %433, align 8, !tbaa !15
  %435 = load i32, ptr %14, align 4, !tbaa !5
  %436 = call i32 @mock_client(ptr noundef %26, ptr noundef %434, i32 noundef %435)
  br label %441

437:                                              ; preds = %429
  %438 = load ptr, ptr %18, align 8, !tbaa !9
  %439 = load i32, ptr %17, align 4, !tbaa !5
  %440 = call i32 @mock_client_iov(ptr noundef %26, ptr noundef %438, i32 noundef %439)
  br label %441

441:                                              ; preds = %437, %432
  %442 = phi i32 [ %436, %432 ], [ %440, %437 ]
  store i32 %442, ptr %29, align 4, !tbaa !5
  br label %443

443:                                              ; preds = %441
  %444 = load i32, ptr @test_count, align 4, !tbaa !5
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr @test_count, align 4, !tbaa !5
  %446 = call i32 @s2n_io_pair_close_one_end(ptr noundef %26, i32 noundef 1)
  %447 = icmp eq i32 %446, -1
  br i1 %447, label %448, label %501

448:                                              ; preds = %443
  br label %449

449:                                              ; preds = %448
  br label %450

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

457:                                              ; preds = %450
  %458 = load ptr, ptr @stderr, align 8, !tbaa !9
  %459 = call i32 @fileno(ptr noundef %458) #10
  %460 = call i32 @isatty(i32 noundef %459) #10
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %479

462:                                              ; preds = %457
  %463 = load i32, ptr %30, align 4, !tbaa !5
  %464 = call ptr @__errno_location() #11
  store i32 %463, ptr %464, 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 @.str.4)
  %470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %471 = load i32, ptr %470, align 4, !tbaa !5
  %472 = call ptr @s2n_strerror_debug(i32 noundef %471, ptr noundef @.str.4)
  %473 = call ptr @__errno_location() #11
  %474 = load i32, ptr %473, align 4, !tbaa !5
  %475 = call ptr @strerror(i32 noundef %474) #10
  %476 = call ptr @__errno_location() #11
  %477 = load i32, ptr %476, align 4, !tbaa !5
  %478 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %465, ptr noundef @.str.1, i32 noundef %466, ptr noundef @.str.9, ptr noundef @.str.3, i32 noundef 251, ptr noundef %469, ptr noundef %472, ptr noundef %475, i32 noundef %477) #10
  br label %496

479:                                              ; preds = %457, %450
  %480 = load i32, ptr %30, align 4, !tbaa !5
  %481 = call ptr @__errno_location() #11
  store i32 %480, ptr %481, align 4, !tbaa !5
  %482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %483 = load i32, ptr @test_count, align 4, !tbaa !5
  %484 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %485 = load i32, ptr %484, align 4, !tbaa !5
  %486 = call ptr @s2n_strerror(i32 noundef %485, ptr noundef @.str.4)
  %487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %488 = load i32, ptr %487, align 4, !tbaa !5
  %489 = call ptr @s2n_strerror_debug(i32 noundef %488, ptr noundef @.str.4)
  %490 = call ptr @__errno_location() #11
  %491 = load i32, ptr %490, align 4, !tbaa !5
  %492 = call ptr @strerror(i32 noundef %491) #10
  %493 = call ptr @__errno_location() #11
  %494 = load i32, ptr %493, align 4, !tbaa !5
  %495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %482, ptr noundef @.str.5, i32 noundef %483, ptr noundef @.str.9, ptr noundef @.str.3, i32 noundef 251, ptr noundef %486, ptr noundef %489, ptr noundef %492, i32 noundef %494) #10
  br label %496

496:                                              ; preds = %479, %462
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %497

497:                                              ; preds = %496
  br label %498

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

499:                                              ; No predecessors!
  br label %500

500:                                              ; preds = %499
  br label %501

501:                                              ; preds = %500, %443
  br label %502

502:                                              ; preds = %501
  br label %503

503:                                              ; preds = %502
  br label %504

504:                                              ; preds = %503
  %505 = load i32, ptr @test_count, align 4, !tbaa !5
  %506 = add nsw i32 %505, 1
  store i32 %506, ptr @test_count, align 4, !tbaa !5
  %507 = load i32, ptr %17, align 4, !tbaa !5
  %508 = call i32 @cleanup_io_data(ptr noundef %18, i32 noundef %507, ptr noundef %15)
  %509 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  store i32 %508, ptr %509, align 4
  %510 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  %511 = load i32, ptr %510, align 4
  %512 = call zeroext i1 @s2n_result_is_ok(i32 %511)
  br i1 %512, label %566, label %513

513:                                              ; preds = %504
  br label %514

514:                                              ; preds = %513
  br label %515

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

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

527:                                              ; preds = %522
  %528 = load i32, ptr %32, align 4, !tbaa !5
  %529 = call ptr @__errno_location() #11
  store i32 %528, ptr %529, align 4, !tbaa !5
  %530 = load ptr, ptr @stderr, align 8, !tbaa !9
  %531 = load i32, ptr @test_count, align 4, !tbaa !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(i32 noundef %533, ptr noundef @.str.4)
  %535 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = call ptr @s2n_strerror_debug(i32 noundef %536, ptr noundef @.str.4)
  %538 = call ptr @__errno_location() #11
  %539 = load i32, ptr %538, align 4, !tbaa !5
  %540 = call ptr @strerror(i32 noundef %539) #10
  %541 = call ptr @__errno_location() #11
  %542 = load i32, ptr %541, align 4, !tbaa !5
  %543 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %530, ptr noundef @.str.1, i32 noundef %531, ptr noundef @.str.10, ptr noundef @.str.3, i32 noundef 252, ptr noundef %534, ptr noundef %537, ptr noundef %540, i32 noundef %542) #10
  br label %561

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

561:                                              ; preds = %544, %527
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %562

562:                                              ; preds = %561
  br label %563

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

564:                                              ; No predecessors!
  br label %565

565:                                              ; preds = %564
  br label %566

566:                                              ; preds = %565, %504
  br label %567

567:                                              ; preds = %566
  br label %568

568:                                              ; preds = %567
  %569 = load i32, ptr %29, align 4, !tbaa !5
  call void @exit(i32 noundef %569) #12
  unreachable

570:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %571 = call ptr @s2n_config_new()
  store ptr %571, ptr %33, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %572 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %572, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %573 = call ptr @s2n_cert_chain_and_key_new()
  store ptr %573, ptr %35, align 8, !tbaa !9
  br label %574

574:                                              ; preds = %570
  %575 = load i32, ptr @test_count, align 4, !tbaa !5
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr @test_count, align 4, !tbaa !5
  %577 = getelementptr inbounds [12000 x i8], ptr %11, i64 0, i64 0
  %578 = call i32 @s2n_read_test_pem(ptr noundef @.str.11, ptr noundef %577, i64 noundef 12000)
  %579 = icmp eq i32 %578, -1
  br i1 %579, label %580, label %633

580:                                              ; preds = %574
  br label %581

581:                                              ; preds = %580
  br label %582

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

589:                                              ; preds = %582
  %590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %591 = call i32 @fileno(ptr noundef %590) #10
  %592 = call i32 @isatty(i32 noundef %591) #10
  %593 = icmp ne i32 %592, 0
  br i1 %593, label %594, label %611

594:                                              ; preds = %589
  %595 = load i32, ptr %36, align 4, !tbaa !5
  %596 = call ptr @__errno_location() #11
  store i32 %595, ptr %596, align 4, !tbaa !5
  %597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %598 = load i32, ptr @test_count, align 4, !tbaa !5
  %599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %600 = load i32, ptr %599, align 4, !tbaa !5
  %601 = call ptr @s2n_strerror(i32 noundef %600, ptr noundef @.str.4)
  %602 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %603 = load i32, ptr %602, align 4, !tbaa !5
  %604 = call ptr @s2n_strerror_debug(i32 noundef %603, ptr noundef @.str.4)
  %605 = call ptr @__errno_location() #11
  %606 = load i32, ptr %605, align 4, !tbaa !5
  %607 = call ptr @strerror(i32 noundef %606) #10
  %608 = call ptr @__errno_location() #11
  %609 = load i32, ptr %608, align 4, !tbaa !5
  %610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %597, ptr noundef @.str.1, i32 noundef %598, ptr noundef @.str.12, ptr noundef @.str.3, i32 noundef 260, ptr noundef %601, ptr noundef %604, ptr noundef %607, i32 noundef %609) #10
  br label %628

611:                                              ; preds = %589, %582
  %612 = load i32, ptr %36, align 4, !tbaa !5
  %613 = call ptr @__errno_location() #11
  store i32 %612, ptr %613, align 4, !tbaa !5
  %614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %615 = load i32, ptr @test_count, align 4, !tbaa !5
  %616 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %617 = load i32, ptr %616, align 4, !tbaa !5
  %618 = call ptr @s2n_strerror(i32 noundef %617, ptr noundef @.str.4)
  %619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %620 = load i32, ptr %619, align 4, !tbaa !5
  %621 = call ptr @s2n_strerror_debug(i32 noundef %620, ptr noundef @.str.4)
  %622 = call ptr @__errno_location() #11
  %623 = load i32, ptr %622, align 4, !tbaa !5
  %624 = call ptr @strerror(i32 noundef %623) #10
  %625 = call ptr @__errno_location() #11
  %626 = load i32, ptr %625, align 4, !tbaa !5
  %627 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %614, ptr noundef @.str.5, i32 noundef %615, ptr noundef @.str.12, ptr noundef @.str.3, i32 noundef 260, ptr noundef %618, ptr noundef %621, ptr noundef %624, i32 noundef %626) #10
  br label %628

628:                                              ; preds = %611, %594
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %629

629:                                              ; preds = %628
  br label %630

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

631:                                              ; No predecessors!
  br label %632

632:                                              ; preds = %631
  br label %633

633:                                              ; preds = %632, %574
  br label %634

634:                                              ; preds = %633
  br label %635

635:                                              ; preds = %634
  br label %636

636:                                              ; preds = %635
  %637 = load i32, ptr @test_count, align 4, !tbaa !5
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr @test_count, align 4, !tbaa !5
  %639 = getelementptr inbounds [12000 x i8], ptr %12, i64 0, i64 0
  %640 = call i32 @s2n_read_test_pem(ptr noundef @.str.13, ptr noundef %639, i64 noundef 12000)
  %641 = icmp eq i32 %640, -1
  br i1 %641, label %642, label %695

642:                                              ; preds = %636
  br label %643

643:                                              ; preds = %642
  br label %644

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

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

656:                                              ; preds = %651
  %657 = load i32, ptr %37, align 4, !tbaa !5
  %658 = call ptr @__errno_location() #11
  store i32 %657, ptr %658, align 4, !tbaa !5
  %659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %660 = load i32, ptr @test_count, align 4, !tbaa !5
  %661 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %662 = load i32, ptr %661, align 4, !tbaa !5
  %663 = call ptr @s2n_strerror(i32 noundef %662, ptr noundef @.str.4)
  %664 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %665 = load i32, ptr %664, align 4, !tbaa !5
  %666 = call ptr @s2n_strerror_debug(i32 noundef %665, ptr noundef @.str.4)
  %667 = call ptr @__errno_location() #11
  %668 = load i32, ptr %667, align 4, !tbaa !5
  %669 = call ptr @strerror(i32 noundef %668) #10
  %670 = call ptr @__errno_location() #11
  %671 = load i32, ptr %670, align 4, !tbaa !5
  %672 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %659, ptr noundef @.str.1, i32 noundef %660, ptr noundef @.str.14, ptr noundef @.str.3, i32 noundef 261, ptr noundef %663, ptr noundef %666, ptr noundef %669, i32 noundef %671) #10
  br label %690

673:                                              ; preds = %651, %644
  %674 = load i32, ptr %37, align 4, !tbaa !5
  %675 = call ptr @__errno_location() #11
  store i32 %674, ptr %675, align 4, !tbaa !5
  %676 = load ptr, ptr @stderr, align 8, !tbaa !9
  %677 = load i32, ptr @test_count, align 4, !tbaa !5
  %678 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %679 = load i32, ptr %678, align 4, !tbaa !5
  %680 = call ptr @s2n_strerror(i32 noundef %679, ptr noundef @.str.4)
  %681 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %682 = load i32, ptr %681, align 4, !tbaa !5
  %683 = call ptr @s2n_strerror_debug(i32 noundef %682, ptr noundef @.str.4)
  %684 = call ptr @__errno_location() #11
  %685 = load i32, ptr %684, align 4, !tbaa !5
  %686 = call ptr @strerror(i32 noundef %685) #10
  %687 = call ptr @__errno_location() #11
  %688 = load i32, ptr %687, align 4, !tbaa !5
  %689 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %676, ptr noundef @.str.5, i32 noundef %677, ptr noundef @.str.14, ptr noundef @.str.3, i32 noundef 261, ptr noundef %680, ptr noundef %683, ptr noundef %686, i32 noundef %688) #10
  br label %690

690:                                              ; preds = %673, %656
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %691

691:                                              ; preds = %690
  br label %692

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

693:                                              ; No predecessors!
  br label %694

694:                                              ; preds = %693
  br label %695

695:                                              ; preds = %694, %636
  br label %696

696:                                              ; preds = %695
  br label %697

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697
  %699 = load i32, ptr @test_count, align 4, !tbaa !5
  %700 = add nsw i32 %699, 1
  store i32 %700, ptr @test_count, align 4, !tbaa !5
  %701 = load ptr, ptr %35, align 8, !tbaa !9
  %702 = getelementptr inbounds [12000 x i8], ptr %11, i64 0, i64 0
  %703 = getelementptr inbounds [12000 x i8], ptr %12, i64 0, i64 0
  %704 = call i32 @s2n_cert_chain_and_key_load_pem(ptr noundef %701, ptr noundef %702, ptr noundef %703)
  %705 = icmp eq i32 %704, -1
  br i1 %705, label %706, label %759

706:                                              ; preds = %698
  br label %707

707:                                              ; preds = %706
  br label %708

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

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

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

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

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

755:                                              ; preds = %754
  br label %756

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

757:                                              ; No predecessors!
  br label %758

758:                                              ; preds = %757
  br label %759

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

760:                                              ; preds = %759
  br label %761

761:                                              ; preds = %760
  br label %762

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

769:                                              ; preds = %762
  br label %770

770:                                              ; preds = %769
  br label %771

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

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

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

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

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

818:                                              ; preds = %817
  br label %819

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

820:                                              ; No predecessors!
  br label %821

821:                                              ; preds = %820
  br label %822

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

823:                                              ; preds = %822
  br label %824

824:                                              ; preds = %823
  br label %825

825:                                              ; preds = %824
  %826 = load i32, ptr @test_count, align 4, !tbaa !5
  %827 = add nsw i32 %826, 1
  store i32 %827, ptr @test_count, align 4, !tbaa !5
  %828 = getelementptr inbounds [12000 x i8], ptr %13, i64 0, i64 0
  %829 = call i32 @s2n_read_test_pem(ptr noundef @.str.17, ptr noundef %828, i64 noundef 12000)
  %830 = icmp eq i32 %829, -1
  br i1 %830, label %831, label %884

831:                                              ; preds = %825
  br label %832

832:                                              ; preds = %831
  br label %833

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

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

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

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

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

880:                                              ; preds = %879
  br label %881

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

882:                                              ; No predecessors!
  br label %883

883:                                              ; preds = %882
  br label %884

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

885:                                              ; preds = %884
  br label %886

886:                                              ; preds = %885
  br label %887

887:                                              ; preds = %886
  %888 = load i32, ptr @test_count, align 4, !tbaa !5
  %889 = add nsw i32 %888, 1
  store i32 %889, ptr @test_count, align 4, !tbaa !5
  %890 = load ptr, ptr %33, align 8, !tbaa !9
  %891 = getelementptr inbounds [12000 x i8], ptr %13, i64 0, i64 0
  %892 = call i32 @s2n_config_add_dhparams(ptr noundef %890, ptr noundef %891)
  %893 = icmp eq i32 %892, -1
  br i1 %893, label %894, label %947

894:                                              ; preds = %887
  br label %895

895:                                              ; preds = %894
  br label %896

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

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

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

925:                                              ; preds = %903, %896
  %926 = load i32, ptr %41, align 4, !tbaa !5
  %927 = call ptr @__errno_location() #11
  store i32 %926, ptr %927, align 4, !tbaa !5
  %928 = load ptr, ptr @stderr, align 8, !tbaa !9
  %929 = load i32, ptr @test_count, align 4, !tbaa !5
  %930 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %931 = load i32, ptr %930, align 4, !tbaa !5
  %932 = call ptr @s2n_strerror(i32 noundef %931, ptr noundef @.str.4)
  %933 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %934 = load i32, ptr %933, align 4, !tbaa !5
  %935 = call ptr @s2n_strerror_debug(i32 noundef %934, ptr noundef @.str.4)
  %936 = call ptr @__errno_location() #11
  %937 = load i32, ptr %936, align 4, !tbaa !5
  %938 = call ptr @strerror(i32 noundef %937) #10
  %939 = call ptr @__errno_location() #11
  %940 = load i32, ptr %939, align 4, !tbaa !5
  %941 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %928, ptr noundef @.str.5, i32 noundef %929, ptr noundef @.str.19, ptr noundef @.str.3, i32 noundef 266, ptr noundef %932, ptr noundef %935, ptr noundef %938, i32 noundef %940) #10
  br label %942

942:                                              ; preds = %925, %908
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %943

943:                                              ; preds = %942
  br label %944

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

945:                                              ; No predecessors!
  br label %946

946:                                              ; preds = %945
  br label %947

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

948:                                              ; preds = %947
  br label %949

949:                                              ; preds = %948
  %950 = load i32, ptr %5, align 4, !tbaa !5
  %951 = icmp ne i32 %950, 0
  br i1 %951, label %952, label %961

952:                                              ; preds = %949
  br label %953

953:                                              ; preds = %952
  %954 = load ptr, ptr %33, align 8, !tbaa !9
  %955 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %954, ptr noundef @.str)
  %956 = icmp sgt i32 %955, -1
  br i1 %956, label %958, label %957

957:                                              ; preds = %953
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %42, align 4
  br label %2344

958:                                              ; preds = %953
  br label %959

959:                                              ; preds = %958
  br label %960

960:                                              ; preds = %959
  br label %970

961:                                              ; preds = %949
  br label %962

962:                                              ; preds = %961
  %963 = load ptr, ptr %33, align 8, !tbaa !9
  %964 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %963, ptr noundef @.str.20)
  %965 = icmp sgt i32 %964, -1
  br i1 %965, label %967, label %966

966:                                              ; preds = %962
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %42, align 4
  br label %2344

967:                                              ; preds = %962
  br label %968

968:                                              ; preds = %967
  br label %969

969:                                              ; preds = %968
  br label %970

970:                                              ; preds = %969, %960
  br label %971

971:                                              ; preds = %970
  %972 = load i32, ptr @test_count, align 4, !tbaa !5
  %973 = add nsw i32 %972, 1
  store i32 %973, ptr @test_count, align 4, !tbaa !5
  %974 = call i32 @s2n_io_pair_close_one_end(ptr noundef %26, i32 noundef 1)
  %975 = icmp eq i32 %974, -1
  br i1 %975, label %976, label %1029

976:                                              ; preds = %971
  br label %977

977:                                              ; preds = %976
  br label %978

978:                                              ; preds = %977
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %979 = call ptr @__errno_location() #11
  %980 = load i32, ptr %979, align 4, !tbaa !5
  store i32 %980, ptr %43, align 4, !tbaa !5
  %981 = load ptr, ptr @stderr, align 8, !tbaa !9
  %982 = call i32 @s2n_print_stacktrace(ptr noundef %981)
  %983 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %984 = trunc i8 %983 to i1
  br i1 %984, label %985, label %1007

985:                                              ; preds = %978
  %986 = load ptr, ptr @stderr, align 8, !tbaa !9
  %987 = call i32 @fileno(ptr noundef %986) #10
  %988 = call i32 @isatty(i32 noundef %987) #10
  %989 = icmp ne i32 %988, 0
  br i1 %989, label %990, label %1007

990:                                              ; preds = %985
  %991 = load i32, ptr %43, align 4, !tbaa !5
  %992 = call ptr @__errno_location() #11
  store i32 %991, ptr %992, align 4, !tbaa !5
  %993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %994 = load i32, ptr @test_count, align 4, !tbaa !5
  %995 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %996 = load i32, ptr %995, align 4, !tbaa !5
  %997 = call ptr @s2n_strerror(i32 noundef %996, ptr noundef @.str.4)
  %998 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %999 = load i32, ptr %998, align 4, !tbaa !5
  %1000 = call ptr @s2n_strerror_debug(i32 noundef %999, ptr noundef @.str.4)
  %1001 = call ptr @__errno_location() #11
  %1002 = load i32, ptr %1001, align 4, !tbaa !5
  %1003 = call ptr @strerror(i32 noundef %1002) #10
  %1004 = call ptr @__errno_location() #11
  %1005 = load i32, ptr %1004, align 4, !tbaa !5
  %1006 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %993, ptr noundef @.str.1, i32 noundef %994, ptr noundef @.str.9, ptr noundef @.str.3, i32 noundef 275, ptr noundef %997, ptr noundef %1000, ptr noundef %1003, i32 noundef %1005) #10
  br label %1024

1007:                                             ; preds = %985, %978
  %1008 = load i32, ptr %43, align 4, !tbaa !5
  %1009 = call ptr @__errno_location() #11
  store i32 %1008, ptr %1009, align 4, !tbaa !5
  %1010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1011 = load i32, ptr @test_count, align 4, !tbaa !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(i32 noundef %1013, ptr noundef @.str.4)
  %1015 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1016 = load i32, ptr %1015, align 4, !tbaa !5
  %1017 = call ptr @s2n_strerror_debug(i32 noundef %1016, ptr noundef @.str.4)
  %1018 = call ptr @__errno_location() #11
  %1019 = load i32, ptr %1018, align 4, !tbaa !5
  %1020 = call ptr @strerror(i32 noundef %1019) #10
  %1021 = call ptr @__errno_location() #11
  %1022 = load i32, ptr %1021, align 4, !tbaa !5
  %1023 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1010, ptr noundef @.str.5, i32 noundef %1011, ptr noundef @.str.9, ptr noundef @.str.3, i32 noundef 275, ptr noundef %1014, ptr noundef %1017, ptr noundef %1020, i32 noundef %1022) #10
  br label %1024

1024:                                             ; preds = %1007, %990
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %1025

1025:                                             ; preds = %1024
  br label %1026

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

1027:                                             ; No predecessors!
  br label %1028

1028:                                             ; preds = %1027
  br label %1029

1029:                                             ; preds = %1028, %971
  br label %1030

1030:                                             ; preds = %1029
  br label %1031

1031:                                             ; preds = %1030
  br label %1032

1032:                                             ; preds = %1031
  %1033 = load i32, ptr @test_count, align 4, !tbaa !5
  %1034 = add nsw i32 %1033, 1
  store i32 %1034, ptr @test_count, align 4, !tbaa !5
  %1035 = load ptr, ptr %34, align 8, !tbaa !9
  %1036 = load ptr, ptr %33, align 8, !tbaa !9
  %1037 = call i32 @s2n_connection_set_config(ptr noundef %1035, ptr noundef %1036)
  %1038 = icmp eq i32 %1037, -1
  br i1 %1038, label %1039, label %1092

1039:                                             ; preds = %1032
  br label %1040

1040:                                             ; preds = %1039
  br label %1041

1041:                                             ; preds = %1040
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  %1042 = call ptr @__errno_location() #11
  %1043 = load i32, ptr %1042, align 4, !tbaa !5
  store i32 %1043, ptr %44, align 4, !tbaa !5
  %1044 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1045 = call i32 @s2n_print_stacktrace(ptr noundef %1044)
  %1046 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1047 = trunc i8 %1046 to i1
  br i1 %1047, label %1048, label %1070

1048:                                             ; preds = %1041
  %1049 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1050 = call i32 @fileno(ptr noundef %1049) #10
  %1051 = call i32 @isatty(i32 noundef %1050) #10
  %1052 = icmp ne i32 %1051, 0
  br i1 %1052, label %1053, label %1070

1053:                                             ; preds = %1048
  %1054 = load i32, ptr %44, align 4, !tbaa !5
  %1055 = call ptr @__errno_location() #11
  store i32 %1054, ptr %1055, align 4, !tbaa !5
  %1056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1057 = load i32, ptr @test_count, align 4, !tbaa !5
  %1058 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1059 = load i32, ptr %1058, align 4, !tbaa !5
  %1060 = call ptr @s2n_strerror(i32 noundef %1059, ptr noundef @.str.4)
  %1061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1062 = load i32, ptr %1061, align 4, !tbaa !5
  %1063 = call ptr @s2n_strerror_debug(i32 noundef %1062, ptr noundef @.str.4)
  %1064 = call ptr @__errno_location() #11
  %1065 = load i32, ptr %1064, align 4, !tbaa !5
  %1066 = call ptr @strerror(i32 noundef %1065) #10
  %1067 = call ptr @__errno_location() #11
  %1068 = load i32, ptr %1067, align 4, !tbaa !5
  %1069 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1056, ptr noundef @.str.1, i32 noundef %1057, ptr noundef @.str.21, ptr noundef @.str.3, i32 noundef 277, ptr noundef %1060, ptr noundef %1063, ptr noundef %1066, i32 noundef %1068) #10
  br label %1087

1070:                                             ; preds = %1048, %1041
  %1071 = load i32, ptr %44, align 4, !tbaa !5
  %1072 = call ptr @__errno_location() #11
  store i32 %1071, ptr %1072, align 4, !tbaa !5
  %1073 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1074 = load i32, ptr @test_count, align 4, !tbaa !5
  %1075 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1076 = load i32, ptr %1075, align 4, !tbaa !5
  %1077 = call ptr @s2n_strerror(i32 noundef %1076, ptr noundef @.str.4)
  %1078 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1079 = load i32, ptr %1078, align 4, !tbaa !5
  %1080 = call ptr @s2n_strerror_debug(i32 noundef %1079, ptr noundef @.str.4)
  %1081 = call ptr @__errno_location() #11
  %1082 = load i32, ptr %1081, align 4, !tbaa !5
  %1083 = call ptr @strerror(i32 noundef %1082) #10
  %1084 = call ptr @__errno_location() #11
  %1085 = load i32, ptr %1084, align 4, !tbaa !5
  %1086 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1073, ptr noundef @.str.5, i32 noundef %1074, ptr noundef @.str.21, ptr noundef @.str.3, i32 noundef 277, ptr noundef %1077, ptr noundef %1080, ptr noundef %1083, i32 noundef %1085) #10
  br label %1087

1087:                                             ; preds = %1070, %1053
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %1088

1088:                                             ; preds = %1087
  br label %1089

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

1090:                                             ; No predecessors!
  br label %1091

1091:                                             ; preds = %1090
  br label %1092

1092:                                             ; preds = %1091, %1032
  br label %1093

1093:                                             ; preds = %1092
  br label %1094

1094:                                             ; preds = %1093
  %1095 = load i32, ptr %7, align 4, !tbaa !5
  %1096 = icmp ne i32 %1095, 0
  br i1 %1096, label %1097, label %1160

1097:                                             ; preds = %1094
  br label %1098

1098:                                             ; preds = %1097
  %1099 = load i32, ptr @test_count, align 4, !tbaa !5
  %1100 = add nsw i32 %1099, 1
  store i32 %1100, ptr @test_count, align 4, !tbaa !5
  %1101 = load ptr, ptr %34, align 8, !tbaa !9
  %1102 = call i32 @s2n_connection_prefer_throughput(ptr noundef %1101)
  %1103 = icmp eq i32 %1102, -1
  br i1 %1103, label %1104, label %1157

1104:                                             ; preds = %1098
  br label %1105

1105:                                             ; preds = %1104
  br label %1106

1106:                                             ; preds = %1105
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  %1107 = call ptr @__errno_location() #11
  %1108 = load i32, ptr %1107, align 4, !tbaa !5
  store i32 %1108, ptr %45, align 4, !tbaa !5
  %1109 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1110 = call i32 @s2n_print_stacktrace(ptr noundef %1109)
  %1111 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1112 = trunc i8 %1111 to i1
  br i1 %1112, label %1113, label %1135

1113:                                             ; preds = %1106
  %1114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1115 = call i32 @fileno(ptr noundef %1114) #10
  %1116 = call i32 @isatty(i32 noundef %1115) #10
  %1117 = icmp ne i32 %1116, 0
  br i1 %1117, label %1118, label %1135

1118:                                             ; preds = %1113
  %1119 = load i32, ptr %45, align 4, !tbaa !5
  %1120 = call ptr @__errno_location() #11
  store i32 %1119, ptr %1120, align 4, !tbaa !5
  %1121 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1122 = load i32, ptr @test_count, align 4, !tbaa !5
  %1123 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1124 = load i32, ptr %1123, align 4, !tbaa !5
  %1125 = call ptr @s2n_strerror(i32 noundef %1124, ptr noundef @.str.4)
  %1126 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1127 = load i32, ptr %1126, align 4, !tbaa !5
  %1128 = call ptr @s2n_strerror_debug(i32 noundef %1127, ptr noundef @.str.4)
  %1129 = call ptr @__errno_location() #11
  %1130 = load i32, ptr %1129, align 4, !tbaa !5
  %1131 = call ptr @strerror(i32 noundef %1130) #10
  %1132 = call ptr @__errno_location() #11
  %1133 = load i32, ptr %1132, align 4, !tbaa !5
  %1134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1121, ptr noundef @.str.1, i32 noundef %1122, ptr noundef @.str.22, ptr noundef @.str.3, i32 noundef 280, ptr noundef %1125, ptr noundef %1128, ptr noundef %1131, i32 noundef %1133) #10
  br label %1152

1135:                                             ; preds = %1113, %1106
  %1136 = load i32, ptr %45, align 4, !tbaa !5
  %1137 = call ptr @__errno_location() #11
  store i32 %1136, ptr %1137, align 4, !tbaa !5
  %1138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1139 = load i32, ptr @test_count, align 4, !tbaa !5
  %1140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1141 = load i32, ptr %1140, align 4, !tbaa !5
  %1142 = call ptr @s2n_strerror(i32 noundef %1141, ptr noundef @.str.4)
  %1143 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1144 = load i32, ptr %1143, align 4, !tbaa !5
  %1145 = call ptr @s2n_strerror_debug(i32 noundef %1144, ptr noundef @.str.4)
  %1146 = call ptr @__errno_location() #11
  %1147 = load i32, ptr %1146, align 4, !tbaa !5
  %1148 = call ptr @strerror(i32 noundef %1147) #10
  %1149 = call ptr @__errno_location() #11
  %1150 = load i32, ptr %1149, align 4, !tbaa !5
  %1151 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1138, ptr noundef @.str.5, i32 noundef %1139, ptr noundef @.str.22, ptr noundef @.str.3, i32 noundef 280, ptr noundef %1142, ptr noundef %1145, ptr noundef %1148, i32 noundef %1150) #10
  br label %1152

1152:                                             ; preds = %1135, %1118
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %1153

1153:                                             ; preds = %1152
  br label %1154

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

1155:                                             ; No predecessors!
  br label %1156

1156:                                             ; preds = %1155
  br label %1157

1157:                                             ; preds = %1156, %1098
  br label %1158

1158:                                             ; preds = %1157
  br label %1159

1159:                                             ; preds = %1158
  br label %1223

1160:                                             ; preds = %1094
  br label %1161

1161:                                             ; preds = %1160
  %1162 = load i32, ptr @test_count, align 4, !tbaa !5
  %1163 = add nsw i32 %1162, 1
  store i32 %1163, ptr @test_count, align 4, !tbaa !5
  %1164 = load ptr, ptr %34, align 8, !tbaa !9
  %1165 = call i32 @s2n_connection_prefer_low_latency(ptr noundef %1164)
  %1166 = icmp eq i32 %1165, -1
  br i1 %1166, label %1167, label %1220

1167:                                             ; preds = %1161
  br label %1168

1168:                                             ; preds = %1167
  br label %1169

1169:                                             ; preds = %1168
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %1170 = call ptr @__errno_location() #11
  %1171 = load i32, ptr %1170, align 4, !tbaa !5
  store i32 %1171, ptr %46, align 4, !tbaa !5
  %1172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1173 = call i32 @s2n_print_stacktrace(ptr noundef %1172)
  %1174 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1175 = trunc i8 %1174 to i1
  br i1 %1175, label %1176, label %1198

1176:                                             ; preds = %1169
  %1177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1178 = call i32 @fileno(ptr noundef %1177) #10
  %1179 = call i32 @isatty(i32 noundef %1178) #10
  %1180 = icmp ne i32 %1179, 0
  br i1 %1180, label %1181, label %1198

1181:                                             ; preds = %1176
  %1182 = load i32, ptr %46, align 4, !tbaa !5
  %1183 = call ptr @__errno_location() #11
  store i32 %1182, ptr %1183, align 4, !tbaa !5
  %1184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1185 = load i32, ptr @test_count, align 4, !tbaa !5
  %1186 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1187 = load i32, ptr %1186, align 4, !tbaa !5
  %1188 = call ptr @s2n_strerror(i32 noundef %1187, ptr noundef @.str.4)
  %1189 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1190 = load i32, ptr %1189, align 4, !tbaa !5
  %1191 = call ptr @s2n_strerror_debug(i32 noundef %1190, ptr noundef @.str.4)
  %1192 = call ptr @__errno_location() #11
  %1193 = load i32, ptr %1192, align 4, !tbaa !5
  %1194 = call ptr @strerror(i32 noundef %1193) #10
  %1195 = call ptr @__errno_location() #11
  %1196 = load i32, ptr %1195, align 4, !tbaa !5
  %1197 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1184, ptr noundef @.str.1, i32 noundef %1185, ptr noundef @.str.23, ptr noundef @.str.3, i32 noundef 282, ptr noundef %1188, ptr noundef %1191, ptr noundef %1194, i32 noundef %1196) #10
  br label %1215

1198:                                             ; preds = %1176, %1169
  %1199 = load i32, ptr %46, align 4, !tbaa !5
  %1200 = call ptr @__errno_location() #11
  store i32 %1199, ptr %1200, align 4, !tbaa !5
  %1201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1202 = load i32, ptr @test_count, align 4, !tbaa !5
  %1203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1204 = load i32, ptr %1203, align 4, !tbaa !5
  %1205 = call ptr @s2n_strerror(i32 noundef %1204, ptr noundef @.str.4)
  %1206 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1207 = load i32, ptr %1206, align 4, !tbaa !5
  %1208 = call ptr @s2n_strerror_debug(i32 noundef %1207, ptr noundef @.str.4)
  %1209 = call ptr @__errno_location() #11
  %1210 = load i32, ptr %1209, align 4, !tbaa !5
  %1211 = call ptr @strerror(i32 noundef %1210) #10
  %1212 = call ptr @__errno_location() #11
  %1213 = load i32, ptr %1212, align 4, !tbaa !5
  %1214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1201, ptr noundef @.str.5, i32 noundef %1202, ptr noundef @.str.23, ptr noundef @.str.3, i32 noundef 282, ptr noundef %1205, ptr noundef %1208, ptr noundef %1211, i32 noundef %1213) #10
  br label %1215

1215:                                             ; preds = %1198, %1181
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %1216

1216:                                             ; preds = %1215
  br label %1217

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

1218:                                             ; No predecessors!
  br label %1219

1219:                                             ; preds = %1218
  br label %1220

1220:                                             ; preds = %1219, %1161
  br label %1221

1221:                                             ; preds = %1220
  br label %1222

1222:                                             ; preds = %1221
  br label %1223

1223:                                             ; preds = %1222, %1159
  br label %1224

1224:                                             ; preds = %1223
  %1225 = load i32, ptr @test_count, align 4, !tbaa !5
  %1226 = add nsw i32 %1225, 1
  store i32 %1226, ptr @test_count, align 4, !tbaa !5
  %1227 = load ptr, ptr %34, align 8, !tbaa !9
  %1228 = call i32 @s2n_connection_set_io_pair(ptr noundef %1227, ptr noundef %26)
  %1229 = icmp eq i32 %1228, -1
  br i1 %1229, label %1230, label %1283

1230:                                             ; preds = %1224
  br label %1231

1231:                                             ; preds = %1230
  br label %1232

1232:                                             ; preds = %1231
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  %1233 = call ptr @__errno_location() #11
  %1234 = load i32, ptr %1233, align 4, !tbaa !5
  store i32 %1234, ptr %47, align 4, !tbaa !5
  %1235 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1236 = call i32 @s2n_print_stacktrace(ptr noundef %1235)
  %1237 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1238 = trunc i8 %1237 to i1
  br i1 %1238, label %1239, label %1261

1239:                                             ; preds = %1232
  %1240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1241 = call i32 @fileno(ptr noundef %1240) #10
  %1242 = call i32 @isatty(i32 noundef %1241) #10
  %1243 = icmp ne i32 %1242, 0
  br i1 %1243, label %1244, label %1261

1244:                                             ; preds = %1239
  %1245 = load i32, ptr %47, align 4, !tbaa !5
  %1246 = call ptr @__errno_location() #11
  store i32 %1245, ptr %1246, align 4, !tbaa !5
  %1247 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1248 = load i32, ptr @test_count, align 4, !tbaa !5
  %1249 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1250 = load i32, ptr %1249, align 4, !tbaa !5
  %1251 = call ptr @s2n_strerror(i32 noundef %1250, ptr noundef @.str.4)
  %1252 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1253 = load i32, ptr %1252, align 4, !tbaa !5
  %1254 = call ptr @s2n_strerror_debug(i32 noundef %1253, ptr noundef @.str.4)
  %1255 = call ptr @__errno_location() #11
  %1256 = load i32, ptr %1255, align 4, !tbaa !5
  %1257 = call ptr @strerror(i32 noundef %1256) #10
  %1258 = call ptr @__errno_location() #11
  %1259 = load i32, ptr %1258, align 4, !tbaa !5
  %1260 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1247, ptr noundef @.str.1, i32 noundef %1248, ptr noundef @.str.24, ptr noundef @.str.3, i32 noundef 286, ptr noundef %1251, ptr noundef %1254, ptr noundef %1257, i32 noundef %1259) #10
  br label %1278

1261:                                             ; preds = %1239, %1232
  %1262 = load i32, ptr %47, align 4, !tbaa !5
  %1263 = call ptr @__errno_location() #11
  store i32 %1262, ptr %1263, align 4, !tbaa !5
  %1264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1265 = load i32, ptr @test_count, align 4, !tbaa !5
  %1266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1267 = load i32, ptr %1266, align 4, !tbaa !5
  %1268 = call ptr @s2n_strerror(i32 noundef %1267, ptr noundef @.str.4)
  %1269 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1270 = load i32, ptr %1269, align 4, !tbaa !5
  %1271 = call ptr @s2n_strerror_debug(i32 noundef %1270, ptr noundef @.str.4)
  %1272 = call ptr @__errno_location() #11
  %1273 = load i32, ptr %1272, align 4, !tbaa !5
  %1274 = call ptr @strerror(i32 noundef %1273) #10
  %1275 = call ptr @__errno_location() #11
  %1276 = load i32, ptr %1275, align 4, !tbaa !5
  %1277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1264, ptr noundef @.str.5, i32 noundef %1265, ptr noundef @.str.24, ptr noundef @.str.3, i32 noundef 286, ptr noundef %1268, ptr noundef %1271, ptr noundef %1274, i32 noundef %1276) #10
  br label %1278

1278:                                             ; preds = %1261, %1244
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %1279

1279:                                             ; preds = %1278
  br label %1280

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

1281:                                             ; No predecessors!
  br label %1282

1282:                                             ; preds = %1281
  br label %1283

1283:                                             ; preds = %1282, %1224
  br label %1284

1284:                                             ; preds = %1283
  br label %1285

1285:                                             ; preds = %1284
  br label %1286

1286:                                             ; preds = %1285
  %1287 = load i32, ptr @test_count, align 4, !tbaa !5
  %1288 = add nsw i32 %1287, 1
  store i32 %1288, ptr @test_count, align 4, !tbaa !5
  %1289 = load ptr, ptr %34, align 8, !tbaa !9
  %1290 = call i32 @s2n_connection_use_corked_io(ptr noundef %1289)
  %1291 = icmp eq i32 %1290, -1
  br i1 %1291, label %1292, label %1345

1292:                                             ; preds = %1286
  br label %1293

1293:                                             ; preds = %1292
  br label %1294

1294:                                             ; preds = %1293
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %1295 = call ptr @__errno_location() #11
  %1296 = load i32, ptr %1295, align 4, !tbaa !5
  store i32 %1296, ptr %48, align 4, !tbaa !5
  %1297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1298 = call i32 @s2n_print_stacktrace(ptr noundef %1297)
  %1299 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1300 = trunc i8 %1299 to i1
  br i1 %1300, label %1301, label %1323

1301:                                             ; preds = %1294
  %1302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1303 = call i32 @fileno(ptr noundef %1302) #10
  %1304 = call i32 @isatty(i32 noundef %1303) #10
  %1305 = icmp ne i32 %1304, 0
  br i1 %1305, label %1306, label %1323

1306:                                             ; preds = %1301
  %1307 = load i32, ptr %48, align 4, !tbaa !5
  %1308 = call ptr @__errno_location() #11
  store i32 %1307, ptr %1308, align 4, !tbaa !5
  %1309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1310 = load i32, ptr @test_count, align 4, !tbaa !5
  %1311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1312 = load i32, ptr %1311, align 4, !tbaa !5
  %1313 = call ptr @s2n_strerror(i32 noundef %1312, ptr noundef @.str.4)
  %1314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1315 = load i32, ptr %1314, align 4, !tbaa !5
  %1316 = call ptr @s2n_strerror_debug(i32 noundef %1315, ptr noundef @.str.4)
  %1317 = call ptr @__errno_location() #11
  %1318 = load i32, ptr %1317, align 4, !tbaa !5
  %1319 = call ptr @strerror(i32 noundef %1318) #10
  %1320 = call ptr @__errno_location() #11
  %1321 = load i32, ptr %1320, align 4, !tbaa !5
  %1322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1309, ptr noundef @.str.1, i32 noundef %1310, ptr noundef @.str.25, ptr noundef @.str.3, i32 noundef 288, ptr noundef %1313, ptr noundef %1316, ptr noundef %1319, i32 noundef %1321) #10
  br label %1340

1323:                                             ; preds = %1301, %1294
  %1324 = load i32, ptr %48, align 4, !tbaa !5
  %1325 = call ptr @__errno_location() #11
  store i32 %1324, ptr %1325, align 4, !tbaa !5
  %1326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1327 = load i32, ptr @test_count, align 4, !tbaa !5
  %1328 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1329 = load i32, ptr %1328, align 4, !tbaa !5
  %1330 = call ptr @s2n_strerror(i32 noundef %1329, ptr noundef @.str.4)
  %1331 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1332 = load i32, ptr %1331, align 4, !tbaa !5
  %1333 = call ptr @s2n_strerror_debug(i32 noundef %1332, ptr noundef @.str.4)
  %1334 = call ptr @__errno_location() #11
  %1335 = load i32, ptr %1334, align 4, !tbaa !5
  %1336 = call ptr @strerror(i32 noundef %1335) #10
  %1337 = call ptr @__errno_location() #11
  %1338 = load i32, ptr %1337, align 4, !tbaa !5
  %1339 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1326, ptr noundef @.str.5, i32 noundef %1327, ptr noundef @.str.25, ptr noundef @.str.3, i32 noundef 288, ptr noundef %1330, ptr noundef %1333, ptr noundef %1336, i32 noundef %1338) #10
  br label %1340

1340:                                             ; preds = %1323, %1306
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %1341

1341:                                             ; preds = %1340
  br label %1342

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

1343:                                             ; No predecessors!
  br label %1344

1344:                                             ; preds = %1343
  br label %1345

1345:                                             ; preds = %1344, %1286
  br label %1346

1346:                                             ; preds = %1345
  br label %1347

1347:                                             ; preds = %1346
  br label %1348

1348:                                             ; preds = %1347
  %1349 = load i32, ptr @test_count, align 4, !tbaa !5
  %1350 = add nsw i32 %1349, 1
  store i32 %1350, ptr @test_count, align 4, !tbaa !5
  %1351 = load ptr, ptr %34, align 8, !tbaa !9
  %1352 = call i32 @s2n_negotiate(ptr noundef %1351, ptr noundef %8)
  %1353 = icmp eq i32 %1352, -1
  br i1 %1353, label %1354, label %1407

1354:                                             ; preds = %1348
  br label %1355

1355:                                             ; preds = %1354
  br label %1356

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

1363:                                             ; preds = %1356
  %1364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1365 = call i32 @fileno(ptr noundef %1364) #10
  %1366 = call i32 @isatty(i32 noundef %1365) #10
  %1367 = icmp ne i32 %1366, 0
  br i1 %1367, label %1368, label %1385

1368:                                             ; preds = %1363
  %1369 = load i32, ptr %49, align 4, !tbaa !5
  %1370 = call ptr @__errno_location() #11
  store i32 %1369, ptr %1370, align 4, !tbaa !5
  %1371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1372 = load i32, ptr @test_count, align 4, !tbaa !5
  %1373 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1374 = load i32, ptr %1373, align 4, !tbaa !5
  %1375 = call ptr @s2n_strerror(i32 noundef %1374, ptr noundef @.str.4)
  %1376 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1377 = load i32, ptr %1376, align 4, !tbaa !5
  %1378 = call ptr @s2n_strerror_debug(i32 noundef %1377, ptr noundef @.str.4)
  %1379 = call ptr @__errno_location() #11
  %1380 = load i32, ptr %1379, align 4, !tbaa !5
  %1381 = call ptr @strerror(i32 noundef %1380) #10
  %1382 = call ptr @__errno_location() #11
  %1383 = load i32, ptr %1382, align 4, !tbaa !5
  %1384 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1371, ptr noundef @.str.1, i32 noundef %1372, ptr noundef @.str.26, ptr noundef @.str.3, i32 noundef 291, ptr noundef %1375, ptr noundef %1378, ptr noundef %1381, i32 noundef %1383) #10
  br label %1402

1385:                                             ; preds = %1363, %1356
  %1386 = load i32, ptr %49, align 4, !tbaa !5
  %1387 = call ptr @__errno_location() #11
  store i32 %1386, ptr %1387, align 4, !tbaa !5
  %1388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1389 = load i32, ptr @test_count, align 4, !tbaa !5
  %1390 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1391 = load i32, ptr %1390, align 4, !tbaa !5
  %1392 = call ptr @s2n_strerror(i32 noundef %1391, ptr noundef @.str.4)
  %1393 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1394 = load i32, ptr %1393, align 4, !tbaa !5
  %1395 = call ptr @s2n_strerror_debug(i32 noundef %1394, ptr noundef @.str.4)
  %1396 = call ptr @__errno_location() #11
  %1397 = load i32, ptr %1396, align 4, !tbaa !5
  %1398 = call ptr @strerror(i32 noundef %1397) #10
  %1399 = call ptr @__errno_location() #11
  %1400 = load i32, ptr %1399, align 4, !tbaa !5
  %1401 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1388, ptr noundef @.str.5, i32 noundef %1389, ptr noundef @.str.26, ptr noundef @.str.3, i32 noundef 291, ptr noundef %1392, ptr noundef %1395, ptr noundef %1398, i32 noundef %1400) #10
  br label %1402

1402:                                             ; preds = %1385, %1368
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

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

1405:                                             ; No predecessors!
  br label %1406

1406:                                             ; preds = %1405
  br label %1407

1407:                                             ; preds = %1406, %1348
  br label %1408

1408:                                             ; preds = %1407
  br label %1409

1409:                                             ; preds = %1408
  %1410 = load i32, ptr %5, align 4, !tbaa !5
  %1411 = icmp ne i32 %1410, 0
  br i1 %1411, label %1412, label %1478

1412:                                             ; preds = %1409
  br label %1413

1413:                                             ; preds = %1412
  %1414 = load i32, ptr @test_count, align 4, !tbaa !5
  %1415 = add nsw i32 %1414, 1
  store i32 %1415, ptr @test_count, align 4, !tbaa !5
  %1416 = load ptr, ptr %34, align 8, !tbaa !9
  %1417 = getelementptr inbounds %struct.s2n_connection, ptr %1416, i32 0, i32 23
  %1418 = load i8, ptr %1417, align 4, !tbaa !24
  %1419 = zext i8 %1418 to i32
  %1420 = call i32 (...) @s2n_get_highest_fully_supported_tls_version()
  %1421 = icmp eq i32 %1419, %1420
  br i1 %1421, label %1475, label %1422

1422:                                             ; preds = %1413
  br label %1423

1423:                                             ; preds = %1422
  br label %1424

1424:                                             ; preds = %1423
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  %1425 = call ptr @__errno_location() #11
  %1426 = load i32, ptr %1425, align 4, !tbaa !5
  store i32 %1426, ptr %50, align 4, !tbaa !5
  %1427 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1428 = call i32 @s2n_print_stacktrace(ptr noundef %1427)
  %1429 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1430 = trunc i8 %1429 to i1
  br i1 %1430, label %1431, label %1453

1431:                                             ; preds = %1424
  %1432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1433 = call i32 @fileno(ptr noundef %1432) #10
  %1434 = call i32 @isatty(i32 noundef %1433) #10
  %1435 = icmp ne i32 %1434, 0
  br i1 %1435, label %1436, label %1453

1436:                                             ; preds = %1431
  %1437 = load i32, ptr %50, align 4, !tbaa !5
  %1438 = call ptr @__errno_location() #11
  store i32 %1437, ptr %1438, align 4, !tbaa !5
  %1439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1440 = load i32, ptr @test_count, align 4, !tbaa !5
  %1441 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1442 = load i32, ptr %1441, align 4, !tbaa !5
  %1443 = call ptr @s2n_strerror(i32 noundef %1442, ptr noundef @.str.4)
  %1444 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1445 = load i32, ptr %1444, align 4, !tbaa !5
  %1446 = call ptr @s2n_strerror_debug(i32 noundef %1445, ptr noundef @.str.4)
  %1447 = call ptr @__errno_location() #11
  %1448 = load i32, ptr %1447, align 4, !tbaa !5
  %1449 = call ptr @strerror(i32 noundef %1448) #10
  %1450 = call ptr @__errno_location() #11
  %1451 = load i32, ptr %1450, align 4, !tbaa !5
  %1452 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1439, ptr noundef @.str.1, i32 noundef %1440, ptr noundef @.str.27, ptr noundef @.str.3, i32 noundef 295, ptr noundef %1443, ptr noundef %1446, ptr noundef %1449, i32 noundef %1451) #10
  br label %1470

1453:                                             ; preds = %1431, %1424
  %1454 = load i32, ptr %50, align 4, !tbaa !5
  %1455 = call ptr @__errno_location() #11
  store i32 %1454, ptr %1455, align 4, !tbaa !5
  %1456 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1457 = load i32, ptr @test_count, align 4, !tbaa !5
  %1458 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1459 = load i32, ptr %1458, align 4, !tbaa !5
  %1460 = call ptr @s2n_strerror(i32 noundef %1459, ptr noundef @.str.4)
  %1461 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1462 = load i32, ptr %1461, align 4, !tbaa !5
  %1463 = call ptr @s2n_strerror_debug(i32 noundef %1462, ptr noundef @.str.4)
  %1464 = call ptr @__errno_location() #11
  %1465 = load i32, ptr %1464, align 4, !tbaa !5
  %1466 = call ptr @strerror(i32 noundef %1465) #10
  %1467 = call ptr @__errno_location() #11
  %1468 = load i32, ptr %1467, align 4, !tbaa !5
  %1469 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1456, ptr noundef @.str.5, i32 noundef %1457, ptr noundef @.str.27, ptr noundef @.str.3, i32 noundef 295, ptr noundef %1460, ptr noundef %1463, ptr noundef %1466, i32 noundef %1468) #10
  br label %1470

1470:                                             ; preds = %1453, %1436
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %1471

1471:                                             ; preds = %1470
  br label %1472

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

1473:                                             ; No predecessors!
  br label %1474

1474:                                             ; preds = %1473
  br label %1475

1475:                                             ; preds = %1474, %1413
  br label %1476

1476:                                             ; preds = %1475
  br label %1477

1477:                                             ; preds = %1476
  br label %1543

1478:                                             ; preds = %1409
  br label %1479

1479:                                             ; preds = %1478
  %1480 = load i32, ptr @test_count, align 4, !tbaa !5
  %1481 = add nsw i32 %1480, 1
  store i32 %1481, ptr @test_count, align 4, !tbaa !5
  %1482 = load ptr, ptr %34, align 8, !tbaa !9
  %1483 = getelementptr inbounds %struct.s2n_connection, ptr %1482, i32 0, i32 23
  %1484 = load i8, ptr %1483, align 4, !tbaa !24
  %1485 = zext i8 %1484 to i32
  %1486 = icmp eq i32 %1485, 33
  br i1 %1486, label %1540, label %1487

1487:                                             ; preds = %1479
  br label %1488

1488:                                             ; preds = %1487
  br label %1489

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

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

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

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

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

1536:                                             ; preds = %1535
  br label %1537

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

1538:                                             ; No predecessors!
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

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

1541:                                             ; preds = %1540
  br label %1542

1542:                                             ; preds = %1541
  br label %1543

1543:                                             ; preds = %1542, %1477
  %1544 = getelementptr inbounds %struct.s2n_test_io_pair, ptr %26, i32 0, i32 1
  %1545 = load i32, ptr %1544, align 4, !tbaa !49
  %1546 = call i32 @s2n_fd_set_non_blocking(i32 noundef %1545)
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %1547 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %1547, ptr %52, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %1548 = getelementptr inbounds %struct.s2n_blob, ptr %15, i32 0, i32 0
  %1549 = load ptr, ptr %1548, align 8, !tbaa !15
  store ptr %1549, ptr %53, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #10
  store i32 0, ptr %54, align 4, !tbaa !5
  br label %1550

1550:                                             ; preds = %1673, %1671, %1543
  %1551 = load i32, ptr %52, align 4, !tbaa !5
  %1552 = icmp ne i32 %1551, 0
  br i1 %1552, label %1553, label %1674

1553:                                             ; preds = %1550
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  %1554 = load i32, ptr %6, align 4, !tbaa !5
  %1555 = icmp ne i32 %1554, 0
  br i1 %1555, label %1562, label %1556

1556:                                             ; preds = %1553
  %1557 = load ptr, ptr %34, align 8, !tbaa !9
  %1558 = load ptr, ptr %53, align 8, !tbaa !9
  %1559 = load i32, ptr %52, align 4, !tbaa !5
  %1560 = zext i32 %1559 to i64
  %1561 = call i64 @s2n_send(ptr noundef %1557, ptr noundef %1558, i64 noundef %1560, ptr noundef %8)
  br label %1570

1562:                                             ; preds = %1553
  %1563 = load ptr, ptr %34, align 8, !tbaa !9
  %1564 = load ptr, ptr %18, align 8, !tbaa !9
  %1565 = load i32, ptr %17, align 4, !tbaa !5
  %1566 = sext i32 %1565 to i64
  %1567 = load i32, ptr %54, align 4, !tbaa !5
  %1568 = zext i32 %1567 to i64
  %1569 = call i64 @s2n_sendv_with_offset(ptr noundef %1563, ptr noundef %1564, i64 noundef %1566, i64 noundef %1568, ptr noundef %8)
  br label %1570

1570:                                             ; preds = %1562, %1556
  %1571 = phi i64 [ %1561, %1556 ], [ %1569, %1562 ]
  %1572 = trunc i64 %1571 to i32
  store i32 %1572, ptr %55, align 4, !tbaa !5
  %1573 = load i32, ptr %55, align 4, !tbaa !5
  %1574 = icmp slt i32 %1573, 0
  br i1 %1574, label %1575, label %1587

1575:                                             ; preds = %1570
  %1576 = load i32, ptr %14, align 4, !tbaa !5
  %1577 = load i32, ptr %52, align 4, !tbaa !5
  %1578 = sub i32 %1576, %1577
  %1579 = uitofp i32 %1578 to double
  %1580 = load i32, ptr %14, align 4, !tbaa !5
  %1581 = uitofp i32 %1580 to double
  %1582 = fmul double %1581, 1.000000e+00
  %1583 = fdiv double %1579, %1582
  %1584 = fmul double %1583, 1.000000e+02
  %1585 = fcmp ogt double %1584, 5.000000e+00
  br i1 %1585, label %1587, label %1586

1586:                                             ; preds = %1575
  store i32 141, ptr %42, align 4
  br label %1671, !llvm.loop !51

1587:                                             ; preds = %1575, %1570
  %1588 = load i32, ptr %55, align 4, !tbaa !5
  %1589 = icmp slt i32 %1588, 0
  br i1 %1589, label %1590, label %1594

1590:                                             ; preds = %1587
  %1591 = load i32, ptr %8, align 4, !tbaa !5
  %1592 = icmp eq i32 %1591, 2
  br i1 %1592, label %1593, label %1594

1593:                                             ; preds = %1590
  store i32 142, ptr %42, align 4
  br label %1671

1594:                                             ; preds = %1590, %1587
  br label %1595

1595:                                             ; preds = %1594
  %1596 = load i32, ptr @test_count, align 4, !tbaa !5
  %1597 = add nsw i32 %1596, 1
  store i32 %1597, ptr @test_count, align 4, !tbaa !5
  %1598 = load i32, ptr %55, align 4, !tbaa !5
  %1599 = icmp sgt i32 %1598, 0
  br i1 %1599, label %1653, label %1600

1600:                                             ; preds = %1595
  br label %1601

1601:                                             ; preds = %1600
  br label %1602

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

1609:                                             ; preds = %1602
  %1610 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1611 = call i32 @fileno(ptr noundef %1610) #10
  %1612 = call i32 @isatty(i32 noundef %1611) #10
  %1613 = icmp ne i32 %1612, 0
  br i1 %1613, label %1614, label %1631

1614:                                             ; preds = %1609
  %1615 = load i32, ptr %56, align 4, !tbaa !5
  %1616 = call ptr @__errno_location() #11
  store i32 %1615, ptr %1616, align 4, !tbaa !5
  %1617 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1618 = load i32, ptr @test_count, align 4, !tbaa !5
  %1619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1620 = load i32, ptr %1619, align 4, !tbaa !5
  %1621 = call ptr @s2n_strerror(i32 noundef %1620, ptr noundef @.str.4)
  %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_debug(i32 noundef %1623, ptr noundef @.str.4)
  %1625 = call ptr @__errno_location() #11
  %1626 = load i32, ptr %1625, align 4, !tbaa !5
  %1627 = call ptr @strerror(i32 noundef %1626) #10
  %1628 = call ptr @__errno_location() #11
  %1629 = load i32, ptr %1628, align 4, !tbaa !5
  %1630 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1617, ptr noundef @.str.1, i32 noundef %1618, ptr noundef @.str.29, ptr noundef @.str.3, i32 noundef 325, ptr noundef %1621, ptr noundef %1624, ptr noundef %1627, i32 noundef %1629) #10
  br label %1648

1631:                                             ; preds = %1609, %1602
  %1632 = load i32, ptr %56, align 4, !tbaa !5
  %1633 = call ptr @__errno_location() #11
  store i32 %1632, ptr %1633, align 4, !tbaa !5
  %1634 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1635 = load i32, ptr @test_count, align 4, !tbaa !5
  %1636 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1637 = load i32, ptr %1636, align 4, !tbaa !5
  %1638 = call ptr @s2n_strerror(i32 noundef %1637, ptr noundef @.str.4)
  %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_debug(i32 noundef %1640, ptr noundef @.str.4)
  %1642 = call ptr @__errno_location() #11
  %1643 = load i32, ptr %1642, align 4, !tbaa !5
  %1644 = call ptr @strerror(i32 noundef %1643) #10
  %1645 = call ptr @__errno_location() #11
  %1646 = load i32, ptr %1645, align 4, !tbaa !5
  %1647 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1634, ptr noundef @.str.5, i32 noundef %1635, ptr noundef @.str.29, ptr noundef @.str.3, i32 noundef 325, ptr noundef %1638, ptr noundef %1641, ptr noundef %1644, i32 noundef %1646) #10
  br label %1648

1648:                                             ; preds = %1631, %1614
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %1649

1649:                                             ; preds = %1648
  br label %1650

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

1651:                                             ; No predecessors!
  br label %1652

1652:                                             ; preds = %1651
  br label %1653

1653:                                             ; preds = %1652, %1595
  br label %1654

1654:                                             ; preds = %1653
  br label %1655

1655:                                             ; preds = %1654
  %1656 = load i32, ptr %55, align 4, !tbaa !5
  %1657 = load i32, ptr %52, align 4, !tbaa !5
  %1658 = sub i32 %1657, %1656
  store i32 %1658, ptr %52, align 4, !tbaa !5
  %1659 = load i32, ptr %6, align 4, !tbaa !5
  %1660 = icmp ne i32 %1659, 0
  br i1 %1660, label %1666, label %1661

1661:                                             ; preds = %1655
  %1662 = load i32, ptr %55, align 4, !tbaa !5
  %1663 = load ptr, ptr %53, align 8, !tbaa !9
  %1664 = sext i32 %1662 to i64
  %1665 = getelementptr inbounds i8, ptr %1663, i64 %1664
  store ptr %1665, ptr %53, align 8, !tbaa !9
  br label %1670

1666:                                             ; preds = %1655
  %1667 = load i32, ptr %55, align 4, !tbaa !5
  %1668 = load i32, ptr %54, align 4, !tbaa !5
  %1669 = add i32 %1668, %1667
  store i32 %1669, ptr %54, align 4, !tbaa !5
  br label %1670

1670:                                             ; preds = %1666, %1661
  store i32 0, ptr %42, align 4
  br label %1671

1671:                                             ; preds = %1670, %1593, %1586
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  %1672 = load i32, ptr %42, align 4
  switch i32 %1672, label %2352 [
    i32 0, label %1673
    i32 141, label %1550
    i32 142, label %1674
  ]

1673:                                             ; preds = %1671
  br label %1550, !llvm.loop !51

1674:                                             ; preds = %1671, %1550
  br label %1675

1675:                                             ; preds = %1674
  %1676 = load i32, ptr @test_count, align 4, !tbaa !5
  %1677 = add nsw i32 %1676, 1
  store i32 %1677, ptr @test_count, align 4, !tbaa !5
  %1678 = load i32, ptr %52, align 4, !tbaa !5
  %1679 = load i32, ptr %14, align 4, !tbaa !5
  %1680 = icmp ult i32 %1678, %1679
  br i1 %1680, label %1734, label %1681

1681:                                             ; preds = %1675
  br label %1682

1682:                                             ; preds = %1681
  br label %1683

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

1690:                                             ; preds = %1683
  %1691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1692 = call i32 @fileno(ptr noundef %1691) #10
  %1693 = call i32 @isatty(i32 noundef %1692) #10
  %1694 = icmp ne i32 %1693, 0
  br i1 %1694, label %1695, label %1712

1695:                                             ; preds = %1690
  %1696 = load i32, ptr %57, align 4, !tbaa !5
  %1697 = call ptr @__errno_location() #11
  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.4)
  %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.4)
  %1706 = call ptr @__errno_location() #11
  %1707 = load i32, ptr %1706, align 4, !tbaa !5
  %1708 = call ptr @strerror(i32 noundef %1707) #10
  %1709 = call ptr @__errno_location() #11
  %1710 = load i32, ptr %1709, align 4, !tbaa !5
  %1711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1698, ptr noundef @.str.1, i32 noundef %1699, ptr noundef @.str.30, ptr noundef @.str.3, i32 noundef 335, ptr noundef %1702, ptr noundef %1705, ptr noundef %1708, i32 noundef %1710) #10
  br label %1729

1712:                                             ; preds = %1690, %1683
  %1713 = load i32, ptr %57, align 4, !tbaa !5
  %1714 = call ptr @__errno_location() #11
  store i32 %1713, ptr %1714, align 4, !tbaa !5
  %1715 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1716 = load i32, ptr @test_count, align 4, !tbaa !5
  %1717 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1718 = load i32, ptr %1717, align 4, !tbaa !5
  %1719 = call ptr @s2n_strerror(i32 noundef %1718, ptr noundef @.str.4)
  %1720 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1721 = load i32, ptr %1720, align 4, !tbaa !5
  %1722 = call ptr @s2n_strerror_debug(i32 noundef %1721, ptr noundef @.str.4)
  %1723 = call ptr @__errno_location() #11
  %1724 = load i32, ptr %1723, align 4, !tbaa !5
  %1725 = call ptr @strerror(i32 noundef %1724) #10
  %1726 = call ptr @__errno_location() #11
  %1727 = load i32, ptr %1726, align 4, !tbaa !5
  %1728 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1715, ptr noundef @.str.5, i32 noundef %1716, ptr noundef @.str.30, ptr noundef @.str.3, i32 noundef 335, ptr noundef %1719, ptr noundef %1722, ptr noundef %1725, i32 noundef %1727) #10
  br label %1729

1729:                                             ; preds = %1712, %1695
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %1730

1730:                                             ; preds = %1729
  br label %1731

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

1732:                                             ; No predecessors!
  br label %1733

1733:                                             ; preds = %1732
  br label %1734

1734:                                             ; preds = %1733, %1675
  br label %1735

1735:                                             ; preds = %1734
  br label %1736

1736:                                             ; preds = %1735
  br label %1737

1737:                                             ; preds = %1736
  %1738 = load i32, ptr @test_count, align 4, !tbaa !5
  %1739 = add nsw i32 %1738, 1
  store i32 %1739, ptr @test_count, align 4, !tbaa !5
  %1740 = load i32, ptr %52, align 4, !tbaa !5
  %1741 = icmp ugt i32 %1740, 0
  br i1 %1741, label %1795, label %1742

1742:                                             ; preds = %1737
  br label %1743

1743:                                             ; preds = %1742
  br label %1744

1744:                                             ; preds = %1743
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  %1745 = call ptr @__errno_location() #11
  %1746 = load i32, ptr %1745, align 4, !tbaa !5
  store i32 %1746, ptr %58, align 4, !tbaa !5
  %1747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1748 = call i32 @s2n_print_stacktrace(ptr noundef %1747)
  %1749 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1750 = trunc i8 %1749 to i1
  br i1 %1750, label %1751, label %1773

1751:                                             ; preds = %1744
  %1752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1753 = call i32 @fileno(ptr noundef %1752) #10
  %1754 = call i32 @isatty(i32 noundef %1753) #10
  %1755 = icmp ne i32 %1754, 0
  br i1 %1755, label %1756, label %1773

1756:                                             ; preds = %1751
  %1757 = load i32, ptr %58, align 4, !tbaa !5
  %1758 = call ptr @__errno_location() #11
  store i32 %1757, ptr %1758, align 4, !tbaa !5
  %1759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1760 = load i32, ptr @test_count, align 4, !tbaa !5
  %1761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1762 = load i32, ptr %1761, align 4, !tbaa !5
  %1763 = call ptr @s2n_strerror(i32 noundef %1762, ptr noundef @.str.4)
  %1764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1765 = load i32, ptr %1764, align 4, !tbaa !5
  %1766 = call ptr @s2n_strerror_debug(i32 noundef %1765, ptr noundef @.str.4)
  %1767 = call ptr @__errno_location() #11
  %1768 = load i32, ptr %1767, align 4, !tbaa !5
  %1769 = call ptr @strerror(i32 noundef %1768) #10
  %1770 = call ptr @__errno_location() #11
  %1771 = load i32, ptr %1770, align 4, !tbaa !5
  %1772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1759, ptr noundef @.str.1, i32 noundef %1760, ptr noundef @.str.31, ptr noundef @.str.3, i32 noundef 336, ptr noundef %1763, ptr noundef %1766, ptr noundef %1769, i32 noundef %1771) #10
  br label %1790

1773:                                             ; preds = %1751, %1744
  %1774 = load i32, ptr %58, align 4, !tbaa !5
  %1775 = call ptr @__errno_location() #11
  store i32 %1774, ptr %1775, align 4, !tbaa !5
  %1776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1777 = load i32, ptr @test_count, align 4, !tbaa !5
  %1778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1779 = load i32, ptr %1778, align 4, !tbaa !5
  %1780 = call ptr @s2n_strerror(i32 noundef %1779, ptr noundef @.str.4)
  %1781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1782 = load i32, ptr %1781, align 4, !tbaa !5
  %1783 = call ptr @s2n_strerror_debug(i32 noundef %1782, ptr noundef @.str.4)
  %1784 = call ptr @__errno_location() #11
  %1785 = load i32, ptr %1784, align 4, !tbaa !5
  %1786 = call ptr @strerror(i32 noundef %1785) #10
  %1787 = call ptr @__errno_location() #11
  %1788 = load i32, ptr %1787, align 4, !tbaa !5
  %1789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1776, ptr noundef @.str.5, i32 noundef %1777, ptr noundef @.str.31, ptr noundef @.str.3, i32 noundef 336, ptr noundef %1780, ptr noundef %1783, ptr noundef %1786, i32 noundef %1788) #10
  br label %1790

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

1791:                                             ; preds = %1790
  br label %1792

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

1793:                                             ; No predecessors!
  br label %1794

1794:                                             ; preds = %1793
  br label %1795

1795:                                             ; preds = %1794, %1737
  br label %1796

1796:                                             ; preds = %1795
  br label %1797

1797:                                             ; preds = %1796
  %1798 = call i32 @sleep(i32 noundef 1)
  br label %1799

1799:                                             ; preds = %1797
  %1800 = load i32, ptr @test_count, align 4, !tbaa !5
  %1801 = add nsw i32 %1800, 1
  store i32 %1801, ptr @test_count, align 4, !tbaa !5
  %1802 = load i32, ptr %10, align 4, !tbaa !5
  %1803 = call i32 @kill(i32 noundef %1802, i32 noundef 18) #10
  %1804 = icmp eq i32 %1803, -1
  br i1 %1804, label %1805, label %1858

1805:                                             ; preds = %1799
  br label %1806

1806:                                             ; preds = %1805
  br label %1807

1807:                                             ; preds = %1806
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  %1808 = call ptr @__errno_location() #11
  %1809 = load i32, ptr %1808, align 4, !tbaa !5
  store i32 %1809, ptr %59, align 4, !tbaa !5
  %1810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1811 = call i32 @s2n_print_stacktrace(ptr noundef %1810)
  %1812 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1813 = trunc i8 %1812 to i1
  br i1 %1813, label %1814, label %1836

1814:                                             ; preds = %1807
  %1815 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1816 = call i32 @fileno(ptr noundef %1815) #10
  %1817 = call i32 @isatty(i32 noundef %1816) #10
  %1818 = icmp ne i32 %1817, 0
  br i1 %1818, label %1819, label %1836

1819:                                             ; preds = %1814
  %1820 = load i32, ptr %59, align 4, !tbaa !5
  %1821 = call ptr @__errno_location() #11
  store i32 %1820, ptr %1821, align 4, !tbaa !5
  %1822 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1823 = load i32, ptr @test_count, align 4, !tbaa !5
  %1824 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1825 = load i32, ptr %1824, align 4, !tbaa !5
  %1826 = call ptr @s2n_strerror(i32 noundef %1825, ptr noundef @.str.4)
  %1827 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1828 = load i32, ptr %1827, align 4, !tbaa !5
  %1829 = call ptr @s2n_strerror_debug(i32 noundef %1828, ptr noundef @.str.4)
  %1830 = call ptr @__errno_location() #11
  %1831 = load i32, ptr %1830, align 4, !tbaa !5
  %1832 = call ptr @strerror(i32 noundef %1831) #10
  %1833 = call ptr @__errno_location() #11
  %1834 = load i32, ptr %1833, align 4, !tbaa !5
  %1835 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1822, ptr noundef @.str.1, i32 noundef %1823, ptr noundef @.str.32, ptr noundef @.str.3, i32 noundef 341, ptr noundef %1826, ptr noundef %1829, ptr noundef %1832, i32 noundef %1834) #10
  br label %1853

1836:                                             ; preds = %1814, %1807
  %1837 = load i32, ptr %59, align 4, !tbaa !5
  %1838 = call ptr @__errno_location() #11
  store i32 %1837, ptr %1838, align 4, !tbaa !5
  %1839 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1840 = load i32, ptr @test_count, align 4, !tbaa !5
  %1841 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1842 = load i32, ptr %1841, align 4, !tbaa !5
  %1843 = call ptr @s2n_strerror(i32 noundef %1842, ptr noundef @.str.4)
  %1844 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1845 = load i32, ptr %1844, align 4, !tbaa !5
  %1846 = call ptr @s2n_strerror_debug(i32 noundef %1845, ptr noundef @.str.4)
  %1847 = call ptr @__errno_location() #11
  %1848 = load i32, ptr %1847, align 4, !tbaa !5
  %1849 = call ptr @strerror(i32 noundef %1848) #10
  %1850 = call ptr @__errno_location() #11
  %1851 = load i32, ptr %1850, align 4, !tbaa !5
  %1852 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1839, ptr noundef @.str.5, i32 noundef %1840, ptr noundef @.str.32, ptr noundef @.str.3, i32 noundef 341, ptr noundef %1843, ptr noundef %1846, ptr noundef %1849, i32 noundef %1851) #10
  br label %1853

1853:                                             ; preds = %1836, %1819
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %1854

1854:                                             ; preds = %1853
  br label %1855

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

1856:                                             ; No predecessors!
  br label %1857

1857:                                             ; preds = %1856
  br label %1858

1858:                                             ; preds = %1857, %1799
  br label %1859

1859:                                             ; preds = %1858
  br label %1860

1860:                                             ; preds = %1859
  %1861 = getelementptr inbounds %struct.s2n_test_io_pair, ptr %26, i32 0, i32 1
  %1862 = load i32, ptr %1861, align 4, !tbaa !49
  %1863 = call i32 @s2n_fd_set_blocking(i32 noundef %1862)
  br label %1864

1864:                                             ; preds = %1962, %1860
  %1865 = load i32, ptr %52, align 4, !tbaa !5
  %1866 = icmp ne i32 %1865, 0
  br i1 %1866, label %1867, label %1963

1867:                                             ; preds = %1864
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #10
  %1868 = load i32, ptr %6, align 4, !tbaa !5
  %1869 = icmp ne i32 %1868, 0
  br i1 %1869, label %1876, label %1870

1870:                                             ; preds = %1867
  %1871 = load ptr, ptr %34, align 8, !tbaa !9
  %1872 = load ptr, ptr %53, align 8, !tbaa !9
  %1873 = load i32, ptr %52, align 4, !tbaa !5
  %1874 = zext i32 %1873 to i64
  %1875 = call i64 @s2n_send(ptr noundef %1871, ptr noundef %1872, i64 noundef %1874, ptr noundef %8)
  br label %1884

1876:                                             ; preds = %1867
  %1877 = load ptr, ptr %34, align 8, !tbaa !9
  %1878 = load ptr, ptr %18, align 8, !tbaa !9
  %1879 = load i32, ptr %17, align 4, !tbaa !5
  %1880 = sext i32 %1879 to i64
  %1881 = load i32, ptr %54, align 4, !tbaa !5
  %1882 = zext i32 %1881 to i64
  %1883 = call i64 @s2n_sendv_with_offset(ptr noundef %1877, ptr noundef %1878, i64 noundef %1880, i64 noundef %1882, ptr noundef %8)
  br label %1884

1884:                                             ; preds = %1876, %1870
  %1885 = phi i64 [ %1875, %1870 ], [ %1883, %1876 ]
  %1886 = trunc i64 %1885 to i32
  store i32 %1886, ptr %60, align 4, !tbaa !5
  br label %1887

1887:                                             ; preds = %1884
  %1888 = load i32, ptr @test_count, align 4, !tbaa !5
  %1889 = add nsw i32 %1888, 1
  store i32 %1889, ptr @test_count, align 4, !tbaa !5
  %1890 = load i32, ptr %60, align 4, !tbaa !5
  %1891 = icmp sgt i32 %1890, 0
  br i1 %1891, label %1945, label %1892

1892:                                             ; preds = %1887
  br label %1893

1893:                                             ; preds = %1892
  br label %1894

1894:                                             ; preds = %1893
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  %1895 = call ptr @__errno_location() #11
  %1896 = load i32, ptr %1895, align 4, !tbaa !5
  store i32 %1896, ptr %61, align 4, !tbaa !5
  %1897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1898 = call i32 @s2n_print_stacktrace(ptr noundef %1897)
  %1899 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1900 = trunc i8 %1899 to i1
  br i1 %1900, label %1901, label %1923

1901:                                             ; preds = %1894
  %1902 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1903 = call i32 @fileno(ptr noundef %1902) #10
  %1904 = call i32 @isatty(i32 noundef %1903) #10
  %1905 = icmp ne i32 %1904, 0
  br i1 %1905, label %1906, label %1923

1906:                                             ; preds = %1901
  %1907 = load i32, ptr %61, align 4, !tbaa !5
  %1908 = call ptr @__errno_location() #11
  store i32 %1907, ptr %1908, align 4, !tbaa !5
  %1909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1910 = load i32, ptr @test_count, align 4, !tbaa !5
  %1911 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1912 = load i32, ptr %1911, align 4, !tbaa !5
  %1913 = call ptr @s2n_strerror(i32 noundef %1912, ptr noundef @.str.4)
  %1914 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1915 = load i32, ptr %1914, align 4, !tbaa !5
  %1916 = call ptr @s2n_strerror_debug(i32 noundef %1915, ptr noundef @.str.4)
  %1917 = call ptr @__errno_location() #11
  %1918 = load i32, ptr %1917, align 4, !tbaa !5
  %1919 = call ptr @strerror(i32 noundef %1918) #10
  %1920 = call ptr @__errno_location() #11
  %1921 = load i32, ptr %1920, align 4, !tbaa !5
  %1922 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1909, ptr noundef @.str.1, i32 noundef %1910, ptr noundef @.str.29, ptr noundef @.str.3, i32 noundef 350, ptr noundef %1913, ptr noundef %1916, ptr noundef %1919, i32 noundef %1921) #10
  br label %1940

1923:                                             ; preds = %1901, %1894
  %1924 = load i32, ptr %61, align 4, !tbaa !5
  %1925 = call ptr @__errno_location() #11
  store i32 %1924, ptr %1925, align 4, !tbaa !5
  %1926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1927 = load i32, ptr @test_count, align 4, !tbaa !5
  %1928 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1929 = load i32, ptr %1928, align 4, !tbaa !5
  %1930 = call ptr @s2n_strerror(i32 noundef %1929, ptr noundef @.str.4)
  %1931 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1932 = load i32, ptr %1931, align 4, !tbaa !5
  %1933 = call ptr @s2n_strerror_debug(i32 noundef %1932, ptr noundef @.str.4)
  %1934 = call ptr @__errno_location() #11
  %1935 = load i32, ptr %1934, align 4, !tbaa !5
  %1936 = call ptr @strerror(i32 noundef %1935) #10
  %1937 = call ptr @__errno_location() #11
  %1938 = load i32, ptr %1937, align 4, !tbaa !5
  %1939 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1926, ptr noundef @.str.5, i32 noundef %1927, ptr noundef @.str.29, ptr noundef @.str.3, i32 noundef 350, ptr noundef %1930, ptr noundef %1933, ptr noundef %1936, i32 noundef %1938) #10
  br label %1940

1940:                                             ; preds = %1923, %1906
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %1941

1941:                                             ; preds = %1940
  br label %1942

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

1943:                                             ; No predecessors!
  br label %1944

1944:                                             ; preds = %1943
  br label %1945

1945:                                             ; preds = %1944, %1887
  br label %1946

1946:                                             ; preds = %1945
  br label %1947

1947:                                             ; preds = %1946
  %1948 = load i32, ptr %60, align 4, !tbaa !5
  %1949 = load i32, ptr %52, align 4, !tbaa !5
  %1950 = sub i32 %1949, %1948
  store i32 %1950, ptr %52, align 4, !tbaa !5
  %1951 = load i32, ptr %6, align 4, !tbaa !5
  %1952 = icmp ne i32 %1951, 0
  br i1 %1952, label %1958, label %1953

1953:                                             ; preds = %1947
  %1954 = load i32, ptr %60, align 4, !tbaa !5
  %1955 = load ptr, ptr %53, align 8, !tbaa !9
  %1956 = sext i32 %1954 to i64
  %1957 = getelementptr inbounds i8, ptr %1955, i64 %1956
  store ptr %1957, ptr %53, align 8, !tbaa !9
  br label %1962

1958:                                             ; preds = %1947
  %1959 = load i32, ptr %60, align 4, !tbaa !5
  %1960 = load i32, ptr %54, align 4, !tbaa !5
  %1961 = add i32 %1960, %1959
  store i32 %1961, ptr %54, align 4, !tbaa !5
  br label %1962

1962:                                             ; preds = %1958, %1953
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %1864, !llvm.loop !52

1963:                                             ; preds = %1864
  %1964 = load i32, ptr %6, align 4, !tbaa !5
  %1965 = icmp ne i32 %1964, 0
  br i1 %1965, label %1966, label %2032

1966:                                             ; preds = %1963
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  %1967 = load ptr, ptr %34, align 8, !tbaa !9
  %1968 = load ptr, ptr %18, align 8, !tbaa !9
  %1969 = call i64 @s2n_sendv(ptr noundef %1967, ptr noundef %1968, i64 noundef 1, ptr noundef %8)
  %1970 = trunc i64 %1969 to i32
  store i32 %1970, ptr %62, align 4, !tbaa !5
  br label %1971

1971:                                             ; preds = %1966
  %1972 = load i32, ptr @test_count, align 4, !tbaa !5
  %1973 = add nsw i32 %1972, 1
  store i32 %1973, ptr @test_count, align 4, !tbaa !5
  %1974 = load i32, ptr %62, align 4, !tbaa !5
  %1975 = icmp sgt i32 %1974, 0
  br i1 %1975, label %2029, label %1976

1976:                                             ; preds = %1971
  br label %1977

1977:                                             ; preds = %1976
  br label %1978

1978:                                             ; preds = %1977
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  %1979 = call ptr @__errno_location() #11
  %1980 = load i32, ptr %1979, align 4, !tbaa !5
  store i32 %1980, ptr %63, align 4, !tbaa !5
  %1981 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1982 = call i32 @s2n_print_stacktrace(ptr noundef %1981)
  %1983 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1985, label %2007

1985:                                             ; preds = %1978
  %1986 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1987 = call i32 @fileno(ptr noundef %1986) #10
  %1988 = call i32 @isatty(i32 noundef %1987) #10
  %1989 = icmp ne i32 %1988, 0
  br i1 %1989, label %1990, label %2007

1990:                                             ; preds = %1985
  %1991 = load i32, ptr %63, align 4, !tbaa !5
  %1992 = call ptr @__errno_location() #11
  store i32 %1991, ptr %1992, align 4, !tbaa !5
  %1993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1994 = load i32, ptr @test_count, align 4, !tbaa !5
  %1995 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1996 = load i32, ptr %1995, align 4, !tbaa !5
  %1997 = call ptr @s2n_strerror(i32 noundef %1996, ptr noundef @.str.4)
  %1998 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1999 = load i32, ptr %1998, align 4, !tbaa !5
  %2000 = call ptr @s2n_strerror_debug(i32 noundef %1999, ptr noundef @.str.4)
  %2001 = call ptr @__errno_location() #11
  %2002 = load i32, ptr %2001, align 4, !tbaa !5
  %2003 = call ptr @strerror(i32 noundef %2002) #10
  %2004 = call ptr @__errno_location() #11
  %2005 = load i32, ptr %2004, align 4, !tbaa !5
  %2006 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1993, ptr noundef @.str.1, i32 noundef %1994, ptr noundef @.str.29, ptr noundef @.str.3, i32 noundef 361, ptr noundef %1997, ptr noundef %2000, ptr noundef %2003, i32 noundef %2005) #10
  br label %2024

2007:                                             ; preds = %1985, %1978
  %2008 = load i32, ptr %63, align 4, !tbaa !5
  %2009 = call ptr @__errno_location() #11
  store i32 %2008, ptr %2009, align 4, !tbaa !5
  %2010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2011 = load i32, ptr @test_count, align 4, !tbaa !5
  %2012 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2013 = load i32, ptr %2012, align 4, !tbaa !5
  %2014 = call ptr @s2n_strerror(i32 noundef %2013, ptr noundef @.str.4)
  %2015 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2016 = load i32, ptr %2015, align 4, !tbaa !5
  %2017 = call ptr @s2n_strerror_debug(i32 noundef %2016, ptr noundef @.str.4)
  %2018 = call ptr @__errno_location() #11
  %2019 = load i32, ptr %2018, align 4, !tbaa !5
  %2020 = call ptr @strerror(i32 noundef %2019) #10
  %2021 = call ptr @__errno_location() #11
  %2022 = load i32, ptr %2021, align 4, !tbaa !5
  %2023 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2010, ptr noundef @.str.5, i32 noundef %2011, ptr noundef @.str.29, ptr noundef @.str.3, i32 noundef 361, ptr noundef %2014, ptr noundef %2017, ptr noundef %2020, i32 noundef %2022) #10
  br label %2024

2024:                                             ; preds = %2007, %1990
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  br label %2025

2025:                                             ; preds = %2024
  br label %2026

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

2027:                                             ; No predecessors!
  br label %2028

2028:                                             ; preds = %2027
  br label %2029

2029:                                             ; preds = %2028, %1971
  br label %2030

2030:                                             ; preds = %2029
  br label %2031

2031:                                             ; preds = %2030
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  br label %2032

2032:                                             ; preds = %2031, %1963
  br label %2033

2033:                                             ; preds = %2032
  %2034 = load i32, ptr @test_count, align 4, !tbaa !5
  %2035 = add nsw i32 %2034, 1
  store i32 %2035, ptr @test_count, align 4, !tbaa !5
  %2036 = load ptr, ptr %34, align 8, !tbaa !9
  %2037 = call i32 @s2n_shutdown(ptr noundef %2036, ptr noundef %8)
  %2038 = icmp eq i32 %2037, -1
  br i1 %2038, label %2039, label %2092

2039:                                             ; preds = %2033
  br label %2040

2040:                                             ; preds = %2039
  br label %2041

2041:                                             ; preds = %2040
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #10
  %2042 = call ptr @__errno_location() #11
  %2043 = load i32, ptr %2042, align 4, !tbaa !5
  store i32 %2043, ptr %64, align 4, !tbaa !5
  %2044 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2045 = call i32 @s2n_print_stacktrace(ptr noundef %2044)
  %2046 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2047 = trunc i8 %2046 to i1
  br i1 %2047, label %2048, label %2070

2048:                                             ; preds = %2041
  %2049 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2050 = call i32 @fileno(ptr noundef %2049) #10
  %2051 = call i32 @isatty(i32 noundef %2050) #10
  %2052 = icmp ne i32 %2051, 0
  br i1 %2052, label %2053, label %2070

2053:                                             ; preds = %2048
  %2054 = load i32, ptr %64, align 4, !tbaa !5
  %2055 = call ptr @__errno_location() #11
  store i32 %2054, ptr %2055, align 4, !tbaa !5
  %2056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2057 = load i32, ptr @test_count, align 4, !tbaa !5
  %2058 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2059 = load i32, ptr %2058, align 4, !tbaa !5
  %2060 = call ptr @s2n_strerror(i32 noundef %2059, ptr noundef @.str.4)
  %2061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2062 = load i32, ptr %2061, align 4, !tbaa !5
  %2063 = call ptr @s2n_strerror_debug(i32 noundef %2062, ptr noundef @.str.4)
  %2064 = call ptr @__errno_location() #11
  %2065 = load i32, ptr %2064, align 4, !tbaa !5
  %2066 = call ptr @strerror(i32 noundef %2065) #10
  %2067 = call ptr @__errno_location() #11
  %2068 = load i32, ptr %2067, align 4, !tbaa !5
  %2069 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2056, ptr noundef @.str.1, i32 noundef %2057, ptr noundef @.str.33, ptr noundef @.str.3, i32 noundef 364, ptr noundef %2060, ptr noundef %2063, ptr noundef %2066, i32 noundef %2068) #10
  br label %2087

2070:                                             ; preds = %2048, %2041
  %2071 = load i32, ptr %64, align 4, !tbaa !5
  %2072 = call ptr @__errno_location() #11
  store i32 %2071, ptr %2072, align 4, !tbaa !5
  %2073 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2074 = load i32, ptr @test_count, align 4, !tbaa !5
  %2075 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2076 = load i32, ptr %2075, align 4, !tbaa !5
  %2077 = call ptr @s2n_strerror(i32 noundef %2076, ptr noundef @.str.4)
  %2078 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2079 = load i32, ptr %2078, align 4, !tbaa !5
  %2080 = call ptr @s2n_strerror_debug(i32 noundef %2079, ptr noundef @.str.4)
  %2081 = call ptr @__errno_location() #11
  %2082 = load i32, ptr %2081, align 4, !tbaa !5
  %2083 = call ptr @strerror(i32 noundef %2082) #10
  %2084 = call ptr @__errno_location() #11
  %2085 = load i32, ptr %2084, align 4, !tbaa !5
  %2086 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2073, ptr noundef @.str.5, i32 noundef %2074, ptr noundef @.str.33, ptr noundef @.str.3, i32 noundef 364, ptr noundef %2077, ptr noundef %2080, ptr noundef %2083, i32 noundef %2085) #10
  br label %2087

2087:                                             ; preds = %2070, %2053
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #10
  br label %2088

2088:                                             ; preds = %2087
  br label %2089

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

2090:                                             ; No predecessors!
  br label %2091

2091:                                             ; preds = %2090
  br label %2092

2092:                                             ; preds = %2091, %2033
  br label %2093

2093:                                             ; preds = %2092
  br label %2094

2094:                                             ; preds = %2093
  br label %2095

2095:                                             ; preds = %2094
  %2096 = load i32, ptr @test_count, align 4, !tbaa !5
  %2097 = add nsw i32 %2096, 1
  store i32 %2097, ptr @test_count, align 4, !tbaa !5
  %2098 = call i32 @waitpid(i32 noundef -1, ptr noundef %9, i32 noundef 0)
  %2099 = load i32, ptr %10, align 4, !tbaa !5
  %2100 = icmp eq i32 %2098, %2099
  br i1 %2100, label %2154, label %2101

2101:                                             ; preds = %2095
  br label %2102

2102:                                             ; preds = %2101
  br label %2103

2103:                                             ; preds = %2102
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #10
  %2104 = call ptr @__errno_location() #11
  %2105 = load i32, ptr %2104, align 4, !tbaa !5
  store i32 %2105, ptr %65, align 4, !tbaa !5
  %2106 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2107 = call i32 @s2n_print_stacktrace(ptr noundef %2106)
  %2108 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2109 = trunc i8 %2108 to i1
  br i1 %2109, label %2110, label %2132

2110:                                             ; preds = %2103
  %2111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2112 = call i32 @fileno(ptr noundef %2111) #10
  %2113 = call i32 @isatty(i32 noundef %2112) #10
  %2114 = icmp ne i32 %2113, 0
  br i1 %2114, label %2115, label %2132

2115:                                             ; preds = %2110
  %2116 = load i32, ptr %65, align 4, !tbaa !5
  %2117 = call ptr @__errno_location() #11
  store i32 %2116, ptr %2117, align 4, !tbaa !5
  %2118 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2119 = load i32, ptr @test_count, align 4, !tbaa !5
  %2120 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2121 = load i32, ptr %2120, align 4, !tbaa !5
  %2122 = call ptr @s2n_strerror(i32 noundef %2121, ptr noundef @.str.4)
  %2123 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2124 = load i32, ptr %2123, align 4, !tbaa !5
  %2125 = call ptr @s2n_strerror_debug(i32 noundef %2124, ptr noundef @.str.4)
  %2126 = call ptr @__errno_location() #11
  %2127 = load i32, ptr %2126, align 4, !tbaa !5
  %2128 = call ptr @strerror(i32 noundef %2127) #10
  %2129 = call ptr @__errno_location() #11
  %2130 = load i32, ptr %2129, align 4, !tbaa !5
  %2131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2118, ptr noundef @.str.1, i32 noundef %2119, ptr noundef @.str.34, ptr noundef @.str.3, i32 noundef 366, ptr noundef %2122, ptr noundef %2125, ptr noundef %2128, i32 noundef %2130) #10
  br label %2149

2132:                                             ; preds = %2110, %2103
  %2133 = load i32, ptr %65, align 4, !tbaa !5
  %2134 = call ptr @__errno_location() #11
  store i32 %2133, ptr %2134, align 4, !tbaa !5
  %2135 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2136 = load i32, ptr @test_count, align 4, !tbaa !5
  %2137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2138 = load i32, ptr %2137, align 4, !tbaa !5
  %2139 = call ptr @s2n_strerror(i32 noundef %2138, ptr noundef @.str.4)
  %2140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2141 = load i32, ptr %2140, align 4, !tbaa !5
  %2142 = call ptr @s2n_strerror_debug(i32 noundef %2141, ptr noundef @.str.4)
  %2143 = call ptr @__errno_location() #11
  %2144 = load i32, ptr %2143, align 4, !tbaa !5
  %2145 = call ptr @strerror(i32 noundef %2144) #10
  %2146 = call ptr @__errno_location() #11
  %2147 = load i32, ptr %2146, align 4, !tbaa !5
  %2148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2135, ptr noundef @.str.5, i32 noundef %2136, ptr noundef @.str.34, ptr noundef @.str.3, i32 noundef 366, ptr noundef %2139, ptr noundef %2142, ptr noundef %2145, i32 noundef %2147) #10
  br label %2149

2149:                                             ; preds = %2132, %2115
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #10
  br label %2150

2150:                                             ; preds = %2149
  br label %2151

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

2152:                                             ; No predecessors!
  br label %2153

2153:                                             ; preds = %2152
  br label %2154

2154:                                             ; preds = %2153, %2095
  br label %2155

2155:                                             ; preds = %2154
  br label %2156

2156:                                             ; preds = %2155
  br label %2157

2157:                                             ; preds = %2156
  %2158 = load i32, ptr @test_count, align 4, !tbaa !5
  %2159 = add nsw i32 %2158, 1
  store i32 %2159, ptr @test_count, align 4, !tbaa !5
  %2160 = load i32, ptr %9, align 4, !tbaa !5
  %2161 = icmp eq i32 %2160, 0
  br i1 %2161, label %2215, label %2162

2162:                                             ; preds = %2157
  br label %2163

2163:                                             ; preds = %2162
  br label %2164

2164:                                             ; preds = %2163
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #10
  %2165 = call ptr @__errno_location() #11
  %2166 = load i32, ptr %2165, align 4, !tbaa !5
  store i32 %2166, ptr %66, align 4, !tbaa !5
  %2167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2168 = call i32 @s2n_print_stacktrace(ptr noundef %2167)
  %2169 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2170 = trunc i8 %2169 to i1
  br i1 %2170, label %2171, label %2193

2171:                                             ; preds = %2164
  %2172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2173 = call i32 @fileno(ptr noundef %2172) #10
  %2174 = call i32 @isatty(i32 noundef %2173) #10
  %2175 = icmp ne i32 %2174, 0
  br i1 %2175, label %2176, label %2193

2176:                                             ; preds = %2171
  %2177 = load i32, ptr %66, align 4, !tbaa !5
  %2178 = call ptr @__errno_location() #11
  store i32 %2177, ptr %2178, align 4, !tbaa !5
  %2179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2180 = load i32, ptr @test_count, align 4, !tbaa !5
  %2181 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2182 = load i32, ptr %2181, align 4, !tbaa !5
  %2183 = call ptr @s2n_strerror(i32 noundef %2182, ptr noundef @.str.4)
  %2184 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2185 = load i32, ptr %2184, align 4, !tbaa !5
  %2186 = call ptr @s2n_strerror_debug(i32 noundef %2185, ptr noundef @.str.4)
  %2187 = call ptr @__errno_location() #11
  %2188 = load i32, ptr %2187, align 4, !tbaa !5
  %2189 = call ptr @strerror(i32 noundef %2188) #10
  %2190 = call ptr @__errno_location() #11
  %2191 = load i32, ptr %2190, align 4, !tbaa !5
  %2192 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2179, ptr noundef @.str.1, i32 noundef %2180, ptr noundef @.str.35, ptr noundef @.str.3, i32 noundef 367, ptr noundef %2183, ptr noundef %2186, ptr noundef %2189, i32 noundef %2191) #10
  br label %2210

2193:                                             ; preds = %2171, %2164
  %2194 = load i32, ptr %66, align 4, !tbaa !5
  %2195 = call ptr @__errno_location() #11
  store i32 %2194, ptr %2195, align 4, !tbaa !5
  %2196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2197 = load i32, ptr @test_count, align 4, !tbaa !5
  %2198 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2199 = load i32, ptr %2198, align 4, !tbaa !5
  %2200 = call ptr @s2n_strerror(i32 noundef %2199, ptr noundef @.str.4)
  %2201 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2202 = load i32, ptr %2201, align 4, !tbaa !5
  %2203 = call ptr @s2n_strerror_debug(i32 noundef %2202, ptr noundef @.str.4)
  %2204 = call ptr @__errno_location() #11
  %2205 = load i32, ptr %2204, align 4, !tbaa !5
  %2206 = call ptr @strerror(i32 noundef %2205) #10
  %2207 = call ptr @__errno_location() #11
  %2208 = load i32, ptr %2207, align 4, !tbaa !5
  %2209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2196, ptr noundef @.str.5, i32 noundef %2197, ptr noundef @.str.35, ptr noundef @.str.3, i32 noundef 367, ptr noundef %2200, ptr noundef %2203, ptr noundef %2206, i32 noundef %2208) #10
  br label %2210

2210:                                             ; preds = %2193, %2176
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #10
  br label %2211

2211:                                             ; preds = %2210
  br label %2212

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

2213:                                             ; No predecessors!
  br label %2214

2214:                                             ; preds = %2213
  br label %2215

2215:                                             ; preds = %2214, %2157
  br label %2216

2216:                                             ; preds = %2215
  br label %2217

2217:                                             ; preds = %2216
  br label %2218

2218:                                             ; preds = %2217
  %2219 = load i32, ptr @test_count, align 4, !tbaa !5
  %2220 = add nsw i32 %2219, 1
  store i32 %2220, ptr @test_count, align 4, !tbaa !5
  %2221 = load i32, ptr %17, align 4, !tbaa !5
  %2222 = call i32 @cleanup_io_data(ptr noundef %18, i32 noundef %2221, ptr noundef %15)
  %2223 = getelementptr inbounds %struct.s2n_result, ptr %67, i32 0, i32 0
  store i32 %2222, ptr %2223, align 4
  %2224 = getelementptr inbounds %struct.s2n_result, ptr %67, i32 0, i32 0
  %2225 = load i32, ptr %2224, align 4
  %2226 = call zeroext i1 @s2n_result_is_ok(i32 %2225)
  br i1 %2226, label %2280, label %2227

2227:                                             ; preds = %2218
  br label %2228

2228:                                             ; preds = %2227
  br label %2229

2229:                                             ; preds = %2228
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #10
  %2230 = call ptr @__errno_location() #11
  %2231 = load i32, ptr %2230, align 4, !tbaa !5
  store i32 %2231, ptr %68, align 4, !tbaa !5
  %2232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2233 = call i32 @s2n_print_stacktrace(ptr noundef %2232)
  %2234 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2235 = trunc i8 %2234 to i1
  br i1 %2235, label %2236, label %2258

2236:                                             ; preds = %2229
  %2237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2238 = call i32 @fileno(ptr noundef %2237) #10
  %2239 = call i32 @isatty(i32 noundef %2238) #10
  %2240 = icmp ne i32 %2239, 0
  br i1 %2240, label %2241, label %2258

2241:                                             ; preds = %2236
  %2242 = load i32, ptr %68, align 4, !tbaa !5
  %2243 = call ptr @__errno_location() #11
  store i32 %2242, ptr %2243, align 4, !tbaa !5
  %2244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2245 = load i32, ptr @test_count, align 4, !tbaa !5
  %2246 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2247 = load i32, ptr %2246, align 4, !tbaa !5
  %2248 = call ptr @s2n_strerror(i32 noundef %2247, ptr noundef @.str.4)
  %2249 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2250 = load i32, ptr %2249, align 4, !tbaa !5
  %2251 = call ptr @s2n_strerror_debug(i32 noundef %2250, ptr noundef @.str.4)
  %2252 = call ptr @__errno_location() #11
  %2253 = load i32, ptr %2252, align 4, !tbaa !5
  %2254 = call ptr @strerror(i32 noundef %2253) #10
  %2255 = call ptr @__errno_location() #11
  %2256 = load i32, ptr %2255, align 4, !tbaa !5
  %2257 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2244, ptr noundef @.str.1, i32 noundef %2245, ptr noundef @.str.10, ptr noundef @.str.3, i32 noundef 370, ptr noundef %2248, ptr noundef %2251, ptr noundef %2254, i32 noundef %2256) #10
  br label %2275

2258:                                             ; preds = %2236, %2229
  %2259 = load i32, ptr %68, align 4, !tbaa !5
  %2260 = call ptr @__errno_location() #11
  store i32 %2259, ptr %2260, align 4, !tbaa !5
  %2261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2262 = load i32, ptr @test_count, align 4, !tbaa !5
  %2263 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2264 = load i32, ptr %2263, align 4, !tbaa !5
  %2265 = call ptr @s2n_strerror(i32 noundef %2264, ptr noundef @.str.4)
  %2266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2267 = load i32, ptr %2266, align 4, !tbaa !5
  %2268 = call ptr @s2n_strerror_debug(i32 noundef %2267, ptr noundef @.str.4)
  %2269 = call ptr @__errno_location() #11
  %2270 = load i32, ptr %2269, align 4, !tbaa !5
  %2271 = call ptr @strerror(i32 noundef %2270) #10
  %2272 = call ptr @__errno_location() #11
  %2273 = load i32, ptr %2272, align 4, !tbaa !5
  %2274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2261, ptr noundef @.str.5, i32 noundef %2262, ptr noundef @.str.10, ptr noundef @.str.3, i32 noundef 370, ptr noundef %2265, ptr noundef %2268, ptr noundef %2271, i32 noundef %2273) #10
  br label %2275

2275:                                             ; preds = %2258, %2241
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  br label %2276

2276:                                             ; preds = %2275
  br label %2277

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

2278:                                             ; No predecessors!
  br label %2279

2279:                                             ; preds = %2278
  br label %2280

2280:                                             ; preds = %2279, %2218
  br label %2281

2281:                                             ; preds = %2280
  br label %2282

2282:                                             ; preds = %2281
  br label %2283

2283:                                             ; preds = %2282
  %2284 = load i32, ptr @test_count, align 4, !tbaa !5
  %2285 = add nsw i32 %2284, 1
  store i32 %2285, ptr @test_count, align 4, !tbaa !5
  %2286 = call i32 @s2n_io_pair_close_one_end(ptr noundef %26, i32 noundef 0)
  %2287 = icmp eq i32 %2286, -1
  br i1 %2287, label %2288, label %2341

2288:                                             ; preds = %2283
  br label %2289

2289:                                             ; preds = %2288
  br label %2290

2290:                                             ; preds = %2289
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #10
  %2291 = call ptr @__errno_location() #11
  %2292 = load i32, ptr %2291, align 4, !tbaa !5
  store i32 %2292, ptr %69, align 4, !tbaa !5
  %2293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2294 = call i32 @s2n_print_stacktrace(ptr noundef %2293)
  %2295 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2296 = trunc i8 %2295 to i1
  br i1 %2296, label %2297, label %2319

2297:                                             ; preds = %2290
  %2298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2299 = call i32 @fileno(ptr noundef %2298) #10
  %2300 = call i32 @isatty(i32 noundef %2299) #10
  %2301 = icmp ne i32 %2300, 0
  br i1 %2301, label %2302, label %2319

2302:                                             ; preds = %2297
  %2303 = load i32, ptr %69, align 4, !tbaa !5
  %2304 = call ptr @__errno_location() #11
  store i32 %2303, ptr %2304, align 4, !tbaa !5
  %2305 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2306 = load i32, ptr @test_count, align 4, !tbaa !5
  %2307 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2308 = load i32, ptr %2307, align 4, !tbaa !5
  %2309 = call ptr @s2n_strerror(i32 noundef %2308, ptr noundef @.str.4)
  %2310 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2311 = load i32, ptr %2310, align 4, !tbaa !5
  %2312 = call ptr @s2n_strerror_debug(i32 noundef %2311, ptr noundef @.str.4)
  %2313 = call ptr @__errno_location() #11
  %2314 = load i32, ptr %2313, align 4, !tbaa !5
  %2315 = call ptr @strerror(i32 noundef %2314) #10
  %2316 = call ptr @__errno_location() #11
  %2317 = load i32, ptr %2316, align 4, !tbaa !5
  %2318 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2305, ptr noundef @.str.1, i32 noundef %2306, ptr noundef @.str.8, ptr noundef @.str.3, i32 noundef 371, ptr noundef %2309, ptr noundef %2312, ptr noundef %2315, i32 noundef %2317) #10
  br label %2336

2319:                                             ; preds = %2297, %2290
  %2320 = load i32, ptr %69, align 4, !tbaa !5
  %2321 = call ptr @__errno_location() #11
  store i32 %2320, ptr %2321, align 4, !tbaa !5
  %2322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2323 = load i32, ptr @test_count, align 4, !tbaa !5
  %2324 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2325 = load i32, ptr %2324, align 4, !tbaa !5
  %2326 = call ptr @s2n_strerror(i32 noundef %2325, ptr noundef @.str.4)
  %2327 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2328 = load i32, ptr %2327, align 4, !tbaa !5
  %2329 = call ptr @s2n_strerror_debug(i32 noundef %2328, ptr noundef @.str.4)
  %2330 = call ptr @__errno_location() #11
  %2331 = load i32, ptr %2330, align 4, !tbaa !5
  %2332 = call ptr @strerror(i32 noundef %2331) #10
  %2333 = call ptr @__errno_location() #11
  %2334 = load i32, ptr %2333, align 4, !tbaa !5
  %2335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2322, ptr noundef @.str.5, i32 noundef %2323, ptr noundef @.str.8, ptr noundef @.str.3, i32 noundef 371, ptr noundef %2326, ptr noundef %2329, ptr noundef %2332, i32 noundef %2334) #10
  br label %2336

2336:                                             ; preds = %2319, %2302
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #10
  br label %2337

2337:                                             ; preds = %2336
  br label %2338

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

2339:                                             ; No predecessors!
  br label %2340

2340:                                             ; preds = %2339
  br label %2341

2341:                                             ; preds = %2340, %2283
  br label %2342

2342:                                             ; preds = %2341
  br label %2343

2343:                                             ; preds = %2342
  store i32 0, ptr %4, align 4
  store i32 1, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %2344

2344:                                             ; preds = %2343, %966, %957
  %2345 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %35)
  %2346 = getelementptr inbounds %struct.s2n_result, ptr %70, i32 0, i32 0
  store i32 %2345, ptr %2346, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  %2347 = call i32 @s2n_connection_ptr_free(ptr noundef %34)
  %2348 = getelementptr inbounds %struct.s2n_result, ptr %71, i32 0, i32 0
  store i32 %2347, ptr %2348, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  %2349 = call i32 @s2n_config_ptr_free(ptr noundef %33)
  %2350 = getelementptr inbounds %struct.s2n_result, ptr %72, i32 0, i32 0
  store i32 %2349, ptr %2350, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 12000, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 12000, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 12000, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  %2351 = load i32, ptr %4, align 4
  ret i32 %2351

2352:                                             ; preds = %1671
  unreachable
}

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #3

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

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

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

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

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

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

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

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

declare i32 @s2n_get_public_random_data(ptr noundef) #3

declare i32 @s2n_io_pair_init(ptr noundef) #3

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

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

declare i32 @s2n_config_ptr_free(ptr noundef) #3

declare i32 @s2n_connection_ptr_free(ptr noundef) #3

declare ptr @s2n_cert_chain_and_key_new() #3

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) #3

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

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

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

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

declare i32 @s2n_connection_prefer_throughput(ptr noundef) #3

declare i32 @s2n_connection_prefer_low_latency(ptr noundef) #3

declare i32 @s2n_connection_use_corked_io(ptr noundef) #3

declare i32 @s2n_get_highest_fully_supported_tls_version(...) #3

declare i32 @s2n_fd_set_non_blocking(i32 noundef) #3

declare i64 @s2n_send(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #3

declare i64 @s2n_sendv_with_offset(ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) #3

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

declare i32 @s2n_fd_set_blocking(i32 noundef) #3

declare i64 @s2n_sendv(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #3

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

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

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

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


; 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_blob = type { ptr, i32, i32, i8 }
%struct.s2n_test_io_pair = type { i32, i32 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@.str = external hidden unnamed_addr constant [9 x i8], align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [89 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [29 x i8], align 1

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

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #2

declare i32 @sleep(i32 noundef) local_unnamed_addr #3

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #3

declare ptr @s2n_config_new() local_unnamed_addr #3

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @test_send(i32 noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #0 {
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca [12000 x i8], align 16
  %7 = alloca [12000 x i8], align 16
  %8 = alloca [12000 x i8], align 16
  %9 = alloca %struct.s2n_blob, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.s2n_test_io_pair, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #11
  store i32 0, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12000, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 12000, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 12000, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  store ptr null, ptr %10, align 8, !tbaa !9
  %.not = icmp eq i32 %1, 0
  br i1 %.not, label %15, label %73

15:                                               ; preds = %3
  %16 = load i32, ptr @test_count, align 4, !tbaa !5
  %17 = add nsw i32 %16, 1
  store i32 %17, ptr @test_count, align 4, !tbaa !5
  %18 = call i32 @s2n_alloc(ptr noundef nonnull %9, i32 noundef 10000000) #11
  %19 = icmp eq i32 %18, -1
  br i1 %19, label %20, label %44

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

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

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

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

44:                                               ; preds = %15
  %45 = load i32, ptr @test_count, align 4, !tbaa !5
  %46 = add nsw i32 %45, 1
  store i32 %46, ptr @test_count, align 4, !tbaa !5
  %47 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %9) #11
  %48 = call zeroext i1 @s2n_result_is_ok(i32 %47)
  br i1 %48, label %.loopexit206, label %49

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

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

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

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

73:                                               ; preds = %3
  %74 = tail call noalias dereferenceable_or_null(112) ptr @malloc(i64 noundef 112) #15
  store ptr %74, ptr %10, align 8, !tbaa !9
  %75 = tail call noalias dereferenceable_or_null(8192) ptr @malloc(i64 noundef 8192) #15
  store ptr %75, ptr %74, align 8, !tbaa !15
  %76 = getelementptr inbounds i8, ptr %74, i64 8
  store i64 8192, ptr %76, align 8, !tbaa !18
  %77 = load i32, ptr @test_count, align 4, !tbaa !5
  %78 = add nsw i32 %77, 1
  store i32 %78, ptr @test_count, align 4, !tbaa !5
  %79 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %9) #11
  %80 = call zeroext i1 @s2n_result_is_ok(i32 %79)
  br i1 %80, label %105, label %81

81:                                               ; preds = %150, %141, %132, %123, %114, %105, %73
  %82 = tail call ptr @__errno_location() #12
  %83 = load i32, ptr %82, align 4, !tbaa !5
  %84 = load ptr, ptr @stderr, align 8, !tbaa !9
  %85 = call i32 @s2n_print_stacktrace(ptr noundef %84) #11
  %86 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %87 = trunc nuw i8 %86 to i1
  br i1 %87, label %88, label %92

88:                                               ; preds = %81
  %89 = load ptr, ptr @stderr, align 8, !tbaa !9
  %90 = call i32 @fileno(ptr noundef %89) #11
  %91 = call i32 @isatty(i32 noundef %90) #11
  %.not195 = icmp eq i32 %91, 0
  br i1 %.not195, label %92, label %93

92:                                               ; preds = %88, %81
  br label %93

93:                                               ; preds = %88, %92
  %.str.5.sink302 = phi ptr [ @.str.5, %92 ], [ @.str.1, %88 ]
  store i32 %83, ptr %82, align 4, !tbaa !5
  %94 = load ptr, ptr @stderr, align 8, !tbaa !9
  %95 = load i32, ptr @test_count, align 4, !tbaa !5
  %96 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = call ptr @s2n_strerror(i32 noundef %97, ptr noundef nonnull @.str.4) #11
  %99 = load i32, ptr %96, align 4, !tbaa !5
  %100 = call ptr @s2n_strerror_debug(i32 noundef %99, ptr noundef nonnull @.str.4) #11
  %101 = load i32, ptr %82, align 4, !tbaa !5
  %102 = call ptr @strerror(i32 noundef %101) #11
  %103 = load i32, ptr %82, align 4, !tbaa !5
  %104 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %94, ptr noundef nonnull %.str.5.sink302, i32 noundef %95, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, i32 noundef 233, ptr noundef %98, ptr noundef %100, ptr noundef %102, i32 noundef %103) #13
  call void @exit(i32 noundef 1) #14
  unreachable

105:                                              ; preds = %73
  %106 = call noalias dereferenceable_or_null(16384) ptr @malloc(i64 noundef 16384) #15
  %107 = load ptr, ptr %10, align 8, !tbaa !9
  %108 = getelementptr inbounds i8, ptr %107, i64 16
  store ptr %106, ptr %108, align 8, !tbaa !15
  %109 = getelementptr inbounds i8, ptr %107, i64 24
  store i64 16384, ptr %109, align 8, !tbaa !18
  %110 = load i32, ptr @test_count, align 4, !tbaa !5
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr @test_count, align 4, !tbaa !5
  %112 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %9) #11
  %113 = call zeroext i1 @s2n_result_is_ok(i32 %112)
  br i1 %113, label %114, label %81

114:                                              ; preds = %105
  %115 = call noalias dereferenceable_or_null(32768) ptr @malloc(i64 noundef 32768) #15
  %116 = load ptr, ptr %10, align 8, !tbaa !9
  %117 = getelementptr inbounds i8, ptr %116, i64 32
  store ptr %115, ptr %117, align 8, !tbaa !15
  %118 = getelementptr inbounds i8, ptr %116, i64 40
  store i64 32768, ptr %118, align 8, !tbaa !18
  %119 = load i32, ptr @test_count, align 4, !tbaa !5
  %120 = add nsw i32 %119, 1
  store i32 %120, ptr @test_count, align 4, !tbaa !5
  %121 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %9) #11
  %122 = call zeroext i1 @s2n_result_is_ok(i32 %121)
  br i1 %122, label %123, label %81

123:                                              ; preds = %114
  %124 = call noalias dereferenceable_or_null(65536) ptr @malloc(i64 noundef 65536) #15
  %125 = load ptr, ptr %10, align 8, !tbaa !9
  %126 = getelementptr inbounds i8, ptr %125, i64 48
  store ptr %124, ptr %126, align 8, !tbaa !15
  %127 = getelementptr inbounds i8, ptr %125, i64 56
  store i64 65536, ptr %127, align 8, !tbaa !18
  %128 = load i32, ptr @test_count, align 4, !tbaa !5
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr @test_count, align 4, !tbaa !5
  %130 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %9) #11
  %131 = call zeroext i1 @s2n_result_is_ok(i32 %130)
  br i1 %131, label %132, label %81

132:                                              ; preds = %123
  %133 = call noalias dereferenceable_or_null(131072) ptr @malloc(i64 noundef 131072) #15
  %134 = load ptr, ptr %10, align 8, !tbaa !9
  %135 = getelementptr inbounds i8, ptr %134, i64 64
  store ptr %133, ptr %135, align 8, !tbaa !15
  %136 = getelementptr inbounds i8, ptr %134, i64 72
  store i64 131072, ptr %136, align 8, !tbaa !18
  %137 = load i32, ptr @test_count, align 4, !tbaa !5
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr @test_count, align 4, !tbaa !5
  %139 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %9) #11
  %140 = call zeroext i1 @s2n_result_is_ok(i32 %139)
  br i1 %140, label %141, label %81

141:                                              ; preds = %132
  %142 = call noalias dereferenceable_or_null(262144) ptr @malloc(i64 noundef 262144) #15
  %143 = load ptr, ptr %10, align 8, !tbaa !9
  %144 = getelementptr inbounds i8, ptr %143, i64 80
  store ptr %142, ptr %144, align 8, !tbaa !15
  %145 = getelementptr inbounds i8, ptr %143, i64 88
  store i64 262144, ptr %145, align 8, !tbaa !18
  %146 = load i32, ptr @test_count, align 4, !tbaa !5
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr @test_count, align 4, !tbaa !5
  %148 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %9) #11
  %149 = call zeroext i1 @s2n_result_is_ok(i32 %148)
  br i1 %149, label %150, label %81

150:                                              ; preds = %141
  %151 = call noalias dereferenceable_or_null(524288) ptr @malloc(i64 noundef 524288) #15
  %152 = load ptr, ptr %10, align 8, !tbaa !9
  %153 = getelementptr inbounds i8, ptr %152, i64 96
  store ptr %151, ptr %153, align 8, !tbaa !15
  %154 = getelementptr inbounds i8, ptr %152, i64 104
  store i64 524288, ptr %154, align 8, !tbaa !18
  %155 = load i32, ptr @test_count, align 4, !tbaa !5
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr @test_count, align 4, !tbaa !5
  %157 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %9) #11
  %158 = call zeroext i1 @s2n_result_is_ok(i32 %157)
  br i1 %158, label %.loopexit206, label %81

.loopexit206:                                     ; preds = %150, %44
  %.1 = phi i32 [ 10000000, %44 ], [ 1040384, %150 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #11
  %159 = load i32, ptr @test_count, align 4, !tbaa !5
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr @test_count, align 4, !tbaa !5
  %161 = call i32 @s2n_io_pair_init(ptr noundef nonnull %11) #11
  %162 = icmp eq i32 %161, -1
  br i1 %162, label %163, label %187

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

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

174:                                              ; preds = %170, %163
  br label %175

175:                                              ; preds = %170, %174
  %.str.5.sink313 = phi ptr [ @.str.5, %174 ], [ @.str.1, %170 ]
  store i32 %165, ptr %164, align 4, !tbaa !5
  %176 = load ptr, ptr @stderr, align 8, !tbaa !9
  %177 = load i32, ptr @test_count, align 4, !tbaa !5
  %178 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %179 = load i32, ptr %178, align 4, !tbaa !5
  %180 = call ptr @s2n_strerror(i32 noundef %179, ptr noundef nonnull @.str.4) #11
  %181 = load i32, ptr %178, align 4, !tbaa !5
  %182 = call ptr @s2n_strerror_debug(i32 noundef %181, ptr noundef nonnull @.str.4) #11
  %183 = load i32, ptr %164, align 4, !tbaa !5
  %184 = call ptr @strerror(i32 noundef %183) #11
  %185 = load i32, ptr %164, align 4, !tbaa !5
  %186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %176, ptr noundef nonnull %.str.5.sink313, i32 noundef %177, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, i32 noundef 240, ptr noundef %180, ptr noundef %182, ptr noundef %184, i32 noundef %185) #13
  call void @exit(i32 noundef 1) #14
  unreachable

187:                                              ; preds = %.loopexit206
  %188 = call i32 @fork() #11
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %190, label %286

190:                                              ; preds = %187
  %191 = load i32, ptr @test_count, align 4, !tbaa !5
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr @test_count, align 4, !tbaa !5
  %193 = call i32 @s2n_io_pair_close_one_end(ptr noundef nonnull %11, i32 noundef 0) #11
  %194 = icmp eq i32 %193, -1
  br i1 %194, label %195, label %219

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

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

206:                                              ; preds = %202, %195
  br label %207

207:                                              ; preds = %202, %206
  %.str.5.sink324 = phi ptr [ @.str.5, %206 ], [ @.str.1, %202 ]
  store i32 %197, ptr %196, align 4, !tbaa !5
  %208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %209 = load i32, ptr @test_count, align 4, !tbaa !5
  %210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %211 = load i32, ptr %210, align 4, !tbaa !5
  %212 = call ptr @s2n_strerror(i32 noundef %211, ptr noundef nonnull @.str.4) #11
  %213 = load i32, ptr %210, align 4, !tbaa !5
  %214 = call ptr @s2n_strerror_debug(i32 noundef %213, ptr noundef nonnull @.str.4) #11
  %215 = load i32, ptr %196, align 4, !tbaa !5
  %216 = call ptr @strerror(i32 noundef %215) #11
  %217 = load i32, ptr %196, align 4, !tbaa !5
  %218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %208, ptr noundef nonnull %.str.5.sink324, i32 noundef %209, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.3, i32 noundef 246, ptr noundef %212, ptr noundef %214, ptr noundef %216, i32 noundef %217) #13
  call void @exit(i32 noundef 1) #14
  unreachable

219:                                              ; preds = %190
  br i1 %.not, label %220, label %223

220:                                              ; preds = %219
  %221 = load ptr, ptr %9, align 8, !tbaa !19
  %222 = call i32 @mock_client(ptr noundef nonnull %11, ptr noundef %221, i32 noundef %.1)
  br label %226

223:                                              ; preds = %219
  %224 = load ptr, ptr %10, align 8, !tbaa !9
  %225 = call i32 @mock_client_iov(ptr noundef nonnull %11, ptr noundef %224, i32 noundef 7)
  br label %226

226:                                              ; preds = %223, %220
  %227 = phi i32 [ %222, %220 ], [ %225, %223 ]
  %228 = load i32, ptr @test_count, align 4, !tbaa !5
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr @test_count, align 4, !tbaa !5
  %230 = call i32 @s2n_io_pair_close_one_end(ptr noundef nonnull %11, i32 noundef 1) #11
  %231 = icmp eq i32 %230, -1
  br i1 %231, label %232, label %256

232:                                              ; preds = %226
  %233 = tail call ptr @__errno_location() #12
  %234 = load i32, ptr %233, align 4, !tbaa !5
  %235 = load ptr, ptr @stderr, align 8, !tbaa !9
  %236 = call i32 @s2n_print_stacktrace(ptr noundef %235) #11
  %237 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %238 = trunc nuw i8 %237 to i1
  br i1 %238, label %239, label %243

239:                                              ; preds = %232
  %240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %241 = call i32 @fileno(ptr noundef %240) #11
  %242 = call i32 @isatty(i32 noundef %241) #11
  %.not192 = icmp eq i32 %242, 0
  br i1 %.not192, label %243, label %244

243:                                              ; preds = %239, %232
  br label %244

244:                                              ; preds = %239, %243
  %.str.5.sink335 = phi ptr [ @.str.5, %243 ], [ @.str.1, %239 ]
  store i32 %234, ptr %233, align 4, !tbaa !5
  %245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %246 = load i32, ptr @test_count, align 4, !tbaa !5
  %247 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %248 = load i32, ptr %247, align 4, !tbaa !5
  %249 = call ptr @s2n_strerror(i32 noundef %248, ptr noundef nonnull @.str.4) #11
  %250 = load i32, ptr %247, align 4, !tbaa !5
  %251 = call ptr @s2n_strerror_debug(i32 noundef %250, ptr noundef nonnull @.str.4) #11
  %252 = load i32, ptr %233, align 4, !tbaa !5
  %253 = call ptr @strerror(i32 noundef %252) #11
  %254 = load i32, ptr %233, align 4, !tbaa !5
  %255 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %245, ptr noundef nonnull %.str.5.sink335, i32 noundef %246, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.3, i32 noundef 251, ptr noundef %249, ptr noundef %251, ptr noundef %253, i32 noundef %254) #13
  call void @exit(i32 noundef 1) #14
  unreachable

256:                                              ; preds = %226
  %257 = load i32, ptr @test_count, align 4, !tbaa !5
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr @test_count, align 4, !tbaa !5
  %259 = call i32 @cleanup_io_data(ptr noundef nonnull %10, i32 noundef 7, ptr noundef nonnull %9)
  %260 = call zeroext i1 @s2n_result_is_ok(i32 %259)
  br i1 %260, label %285, label %261

261:                                              ; preds = %256
  %262 = tail call ptr @__errno_location() #12
  %263 = load i32, ptr %262, align 4, !tbaa !5
  %264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %265 = call i32 @s2n_print_stacktrace(ptr noundef %264) #11
  %266 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %267 = trunc nuw i8 %266 to i1
  br i1 %267, label %268, label %272

268:                                              ; preds = %261
  %269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %270 = call i32 @fileno(ptr noundef %269) #11
  %271 = call i32 @isatty(i32 noundef %270) #11
  %.not191 = icmp eq i32 %271, 0
  br i1 %.not191, label %272, label %273

272:                                              ; preds = %268, %261
  br label %273

273:                                              ; preds = %268, %272
  %.str.5.sink346 = phi ptr [ @.str.5, %272 ], [ @.str.1, %268 ]
  store i32 %263, ptr %262, align 4, !tbaa !5
  %274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %275 = load i32, ptr @test_count, align 4, !tbaa !5
  %276 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %277 = load i32, ptr %276, align 4, !tbaa !5
  %278 = call ptr @s2n_strerror(i32 noundef %277, ptr noundef nonnull @.str.4) #11
  %279 = load i32, ptr %276, align 4, !tbaa !5
  %280 = call ptr @s2n_strerror_debug(i32 noundef %279, ptr noundef nonnull @.str.4) #11
  %281 = load i32, ptr %262, align 4, !tbaa !5
  %282 = call ptr @strerror(i32 noundef %281) #11
  %283 = load i32, ptr %262, align 4, !tbaa !5
  %284 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %274, ptr noundef nonnull %.str.5.sink346, i32 noundef %275, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.3, i32 noundef 252, ptr noundef %278, ptr noundef %280, ptr noundef %282, i32 noundef %283) #13
  call void @exit(i32 noundef 1) #14
  unreachable

285:                                              ; preds = %256
  call void @exit(i32 noundef %227) #14
  unreachable

286:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  %287 = call ptr @s2n_config_new() #11
  store ptr %287, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  %288 = call ptr @s2n_connection_new(i32 noundef 0) #11
  store ptr %288, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #11
  %289 = call ptr @s2n_cert_chain_and_key_new() #11
  store ptr %289, ptr %14, align 8, !tbaa !9
  %290 = load i32, ptr @test_count, align 4, !tbaa !5
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr @test_count, align 4, !tbaa !5
  %292 = call i32 @s2n_read_test_pem(ptr noundef nonnull @.str.11, ptr noundef nonnull %6, i64 noundef 12000) #11
  %293 = icmp eq i32 %292, -1
  br i1 %293, label %294, label %318

294:                                              ; preds = %286
  %295 = tail call ptr @__errno_location() #12
  %296 = load i32, ptr %295, align 4, !tbaa !5
  %297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %298 = call i32 @s2n_print_stacktrace(ptr noundef %297) #11
  %299 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %300 = trunc nuw i8 %299 to i1
  br i1 %300, label %301, label %305

301:                                              ; preds = %294
  %302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %303 = call i32 @fileno(ptr noundef %302) #11
  %304 = call i32 @isatty(i32 noundef %303) #11
  %.not190 = icmp eq i32 %304, 0
  br i1 %.not190, label %305, label %306

305:                                              ; preds = %301, %294
  br label %306

306:                                              ; preds = %301, %305
  %.str.5.sink357 = phi ptr [ @.str.5, %305 ], [ @.str.1, %301 ]
  store i32 %296, ptr %295, align 4, !tbaa !5
  %307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %308 = load i32, ptr @test_count, align 4, !tbaa !5
  %309 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %310 = load i32, ptr %309, align 4, !tbaa !5
  %311 = call ptr @s2n_strerror(i32 noundef %310, ptr noundef nonnull @.str.4) #11
  %312 = load i32, ptr %309, align 4, !tbaa !5
  %313 = call ptr @s2n_strerror_debug(i32 noundef %312, ptr noundef nonnull @.str.4) #11
  %314 = load i32, ptr %295, align 4, !tbaa !5
  %315 = call ptr @strerror(i32 noundef %314) #11
  %316 = load i32, ptr %295, align 4, !tbaa !5
  %317 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %307, ptr noundef nonnull %.str.5.sink357, i32 noundef %308, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.3, i32 noundef 260, ptr noundef %311, ptr noundef %313, ptr noundef %315, i32 noundef %316) #13
  call void @exit(i32 noundef 1) #14
  unreachable

318:                                              ; preds = %286
  %319 = load i32, ptr @test_count, align 4, !tbaa !5
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr @test_count, align 4, !tbaa !5
  %321 = call i32 @s2n_read_test_pem(ptr noundef nonnull @.str.13, ptr noundef nonnull %7, i64 noundef 12000) #11
  %322 = icmp eq i32 %321, -1
  br i1 %322, label %323, label %347

323:                                              ; preds = %318
  %324 = tail call ptr @__errno_location() #12
  %325 = load i32, ptr %324, align 4, !tbaa !5
  %326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %327 = call i32 @s2n_print_stacktrace(ptr noundef %326) #11
  %328 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %329 = trunc nuw i8 %328 to i1
  br i1 %329, label %330, label %334

330:                                              ; preds = %323
  %331 = load ptr, ptr @stderr, align 8, !tbaa !9
  %332 = call i32 @fileno(ptr noundef %331) #11
  %333 = call i32 @isatty(i32 noundef %332) #11
  %.not189 = icmp eq i32 %333, 0
  br i1 %.not189, label %334, label %335

334:                                              ; preds = %330, %323
  br label %335

335:                                              ; preds = %330, %334
  %.str.5.sink368 = phi ptr [ @.str.5, %334 ], [ @.str.1, %330 ]
  store i32 %325, ptr %324, align 4, !tbaa !5
  %336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %337 = load i32, ptr @test_count, align 4, !tbaa !5
  %338 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %339 = load i32, ptr %338, align 4, !tbaa !5
  %340 = call ptr @s2n_strerror(i32 noundef %339, ptr noundef nonnull @.str.4) #11
  %341 = load i32, ptr %338, align 4, !tbaa !5
  %342 = call ptr @s2n_strerror_debug(i32 noundef %341, ptr noundef nonnull @.str.4) #11
  %343 = load i32, ptr %324, align 4, !tbaa !5
  %344 = call ptr @strerror(i32 noundef %343) #11
  %345 = load i32, ptr %324, align 4, !tbaa !5
  %346 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %336, ptr noundef nonnull %.str.5.sink368, i32 noundef %337, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.3, i32 noundef 261, ptr noundef %340, ptr noundef %342, ptr noundef %344, i32 noundef %345) #13
  call void @exit(i32 noundef 1) #14
  unreachable

347:                                              ; preds = %318
  %348 = load i32, ptr @test_count, align 4, !tbaa !5
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr @test_count, align 4, !tbaa !5
  %350 = call i32 @s2n_cert_chain_and_key_load_pem(ptr noundef %289, ptr noundef nonnull %6, ptr noundef nonnull %7) #11
  %351 = icmp eq i32 %350, -1
  br i1 %351, label %352, label %376

352:                                              ; preds = %347
  %353 = tail call ptr @__errno_location() #12
  %354 = load i32, ptr %353, align 4, !tbaa !5
  %355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %356 = call i32 @s2n_print_stacktrace(ptr noundef %355) #11
  %357 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %358 = trunc nuw i8 %357 to i1
  br i1 %358, label %359, label %363

359:                                              ; preds = %352
  %360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %361 = call i32 @fileno(ptr noundef %360) #11
  %362 = call i32 @isatty(i32 noundef %361) #11
  %.not188 = icmp eq i32 %362, 0
  br i1 %.not188, label %363, label %364

363:                                              ; preds = %359, %352
  br label %364

364:                                              ; preds = %359, %363
  %.str.5.sink379 = phi ptr [ @.str.5, %363 ], [ @.str.1, %359 ]
  store i32 %354, ptr %353, align 4, !tbaa !5
  %365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %366 = load i32, ptr @test_count, align 4, !tbaa !5
  %367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = call ptr @s2n_strerror(i32 noundef %368, ptr noundef nonnull @.str.4) #11
  %370 = load i32, ptr %367, align 4, !tbaa !5
  %371 = call ptr @s2n_strerror_debug(i32 noundef %370, ptr noundef nonnull @.str.4) #11
  %372 = load i32, ptr %353, align 4, !tbaa !5
  %373 = call ptr @strerror(i32 noundef %372) #11
  %374 = load i32, ptr %353, align 4, !tbaa !5
  %375 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %365, ptr noundef nonnull %.str.5.sink379, i32 noundef %366, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.3, i32 noundef 263, ptr noundef %369, ptr noundef %371, ptr noundef %373, i32 noundef %374) #13
  call void @exit(i32 noundef 1) #14
  unreachable

376:                                              ; preds = %347
  %377 = load i32, ptr @test_count, align 4, !tbaa !5
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr @test_count, align 4, !tbaa !5
  %379 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %287, ptr noundef %289) #11
  %380 = icmp eq i32 %379, -1
  br i1 %380, label %381, label %405

381:                                              ; preds = %376
  %382 = tail call ptr @__errno_location() #12
  %383 = load i32, ptr %382, align 4, !tbaa !5
  %384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %385 = call i32 @s2n_print_stacktrace(ptr noundef %384) #11
  %386 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %387 = trunc nuw i8 %386 to i1
  br i1 %387, label %388, label %392

388:                                              ; preds = %381
  %389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %390 = call i32 @fileno(ptr noundef %389) #11
  %391 = call i32 @isatty(i32 noundef %390) #11
  %.not187 = icmp eq i32 %391, 0
  br i1 %.not187, label %392, label %393

392:                                              ; preds = %388, %381
  br label %393

393:                                              ; preds = %388, %392
  %.str.5.sink390 = phi ptr [ @.str.5, %392 ], [ @.str.1, %388 ]
  store i32 %383, ptr %382, align 4, !tbaa !5
  %394 = load ptr, ptr @stderr, align 8, !tbaa !9
  %395 = load i32, ptr @test_count, align 4, !tbaa !5
  %396 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %397 = load i32, ptr %396, align 4, !tbaa !5
  %398 = call ptr @s2n_strerror(i32 noundef %397, ptr noundef nonnull @.str.4) #11
  %399 = load i32, ptr %396, align 4, !tbaa !5
  %400 = call ptr @s2n_strerror_debug(i32 noundef %399, ptr noundef nonnull @.str.4) #11
  %401 = load i32, ptr %382, align 4, !tbaa !5
  %402 = call ptr @strerror(i32 noundef %401) #11
  %403 = load i32, ptr %382, align 4, !tbaa !5
  %404 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %394, ptr noundef nonnull %.str.5.sink390, i32 noundef %395, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.3, i32 noundef 264, ptr noundef %398, ptr noundef %400, ptr noundef %402, i32 noundef %403) #13
  call void @exit(i32 noundef 1) #14
  unreachable

405:                                              ; preds = %376
  %406 = load i32, ptr @test_count, align 4, !tbaa !5
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr @test_count, align 4, !tbaa !5
  %408 = call i32 @s2n_read_test_pem(ptr noundef nonnull @.str.17, ptr noundef nonnull %8, i64 noundef 12000) #11
  %409 = icmp eq i32 %408, -1
  br i1 %409, label %410, label %434

410:                                              ; preds = %405
  %411 = tail call ptr @__errno_location() #12
  %412 = load i32, ptr %411, align 4, !tbaa !5
  %413 = load ptr, ptr @stderr, align 8, !tbaa !9
  %414 = call i32 @s2n_print_stacktrace(ptr noundef %413) #11
  %415 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %416 = trunc nuw i8 %415 to i1
  br i1 %416, label %417, label %421

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

421:                                              ; preds = %417, %410
  br label %422

422:                                              ; preds = %417, %421
  %.str.5.sink401 = phi ptr [ @.str.5, %421 ], [ @.str.1, %417 ]
  store i32 %412, ptr %411, align 4, !tbaa !5
  %423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %424 = load i32, ptr @test_count, align 4, !tbaa !5
  %425 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %426 = load i32, ptr %425, align 4, !tbaa !5
  %427 = call ptr @s2n_strerror(i32 noundef %426, ptr noundef nonnull @.str.4) #11
  %428 = load i32, ptr %425, align 4, !tbaa !5
  %429 = call ptr @s2n_strerror_debug(i32 noundef %428, ptr noundef nonnull @.str.4) #11
  %430 = load i32, ptr %411, align 4, !tbaa !5
  %431 = call ptr @strerror(i32 noundef %430) #11
  %432 = load i32, ptr %411, align 4, !tbaa !5
  %433 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %423, ptr noundef nonnull %.str.5.sink401, i32 noundef %424, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.3, i32 noundef 265, ptr noundef %427, ptr noundef %429, ptr noundef %431, i32 noundef %432) #13
  call void @exit(i32 noundef 1) #14
  unreachable

434:                                              ; preds = %405
  %435 = load i32, ptr @test_count, align 4, !tbaa !5
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr @test_count, align 4, !tbaa !5
  %437 = call i32 @s2n_config_add_dhparams(ptr noundef %287, ptr noundef nonnull %8) #11
  %438 = icmp eq i32 %437, -1
  br i1 %438, label %439, label %463

439:                                              ; preds = %434
  %440 = tail call ptr @__errno_location() #12
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %443 = call i32 @s2n_print_stacktrace(ptr noundef %442) #11
  %444 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %445 = trunc nuw i8 %444 to i1
  br i1 %445, label %446, label %450

446:                                              ; preds = %439
  %447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %448 = call i32 @fileno(ptr noundef %447) #11
  %449 = call i32 @isatty(i32 noundef %448) #11
  %.not185 = icmp eq i32 %449, 0
  br i1 %.not185, label %450, label %451

450:                                              ; preds = %446, %439
  br label %451

451:                                              ; preds = %446, %450
  %.str.5.sink412 = phi ptr [ @.str.5, %450 ], [ @.str.1, %446 ]
  store i32 %441, ptr %440, align 4, !tbaa !5
  %452 = load ptr, ptr @stderr, align 8, !tbaa !9
  %453 = load i32, ptr @test_count, align 4, !tbaa !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(i32 noundef %455, ptr noundef nonnull @.str.4) #11
  %457 = load i32, ptr %454, align 4, !tbaa !5
  %458 = call ptr @s2n_strerror_debug(i32 noundef %457, ptr noundef nonnull @.str.4) #11
  %459 = load i32, ptr %440, align 4, !tbaa !5
  %460 = call ptr @strerror(i32 noundef %459) #11
  %461 = load i32, ptr %440, align 4, !tbaa !5
  %462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %452, ptr noundef nonnull %.str.5.sink412, i32 noundef %453, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.3, i32 noundef 266, ptr noundef %456, ptr noundef %458, ptr noundef %460, i32 noundef %461) #13
  call void @exit(i32 noundef 1) #14
  unreachable

463:                                              ; preds = %434
  %.not160 = icmp eq i32 %0, 0
  br i1 %.not160, label %467, label %464

464:                                              ; preds = %463
  %465 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %287, ptr noundef nonnull @.str) #11
  %466 = icmp sgt i32 %465, -1
  br i1 %466, label %470, label %1100

467:                                              ; preds = %463
  %468 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %287, ptr noundef nonnull @.str.20) #11
  %469 = icmp sgt i32 %468, -1
  br i1 %469, label %470, label %1100

470:                                              ; preds = %464, %467
  %471 = load i32, ptr @test_count, align 4, !tbaa !5
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr @test_count, align 4, !tbaa !5
  %473 = call i32 @s2n_io_pair_close_one_end(ptr noundef nonnull %11, i32 noundef 1) #11
  %474 = icmp eq i32 %473, -1
  br i1 %474, label %475, label %499

475:                                              ; preds = %470
  %476 = tail call ptr @__errno_location() #12
  %477 = load i32, ptr %476, align 4, !tbaa !5
  %478 = load ptr, ptr @stderr, align 8, !tbaa !9
  %479 = call i32 @s2n_print_stacktrace(ptr noundef %478) #11
  %480 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %481 = trunc nuw i8 %480 to i1
  br i1 %481, label %482, label %486

482:                                              ; preds = %475
  %483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %484 = call i32 @fileno(ptr noundef %483) #11
  %485 = call i32 @isatty(i32 noundef %484) #11
  %.not184 = icmp eq i32 %485, 0
  br i1 %.not184, label %486, label %487

486:                                              ; preds = %482, %475
  br label %487

487:                                              ; preds = %482, %486
  %.str.5.sink423 = phi ptr [ @.str.5, %486 ], [ @.str.1, %482 ]
  store i32 %477, ptr %476, align 4, !tbaa !5
  %488 = load ptr, ptr @stderr, align 8, !tbaa !9
  %489 = load i32, ptr @test_count, align 4, !tbaa !5
  %490 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %491 = load i32, ptr %490, align 4, !tbaa !5
  %492 = call ptr @s2n_strerror(i32 noundef %491, ptr noundef nonnull @.str.4) #11
  %493 = load i32, ptr %490, align 4, !tbaa !5
  %494 = call ptr @s2n_strerror_debug(i32 noundef %493, ptr noundef nonnull @.str.4) #11
  %495 = load i32, ptr %476, align 4, !tbaa !5
  %496 = call ptr @strerror(i32 noundef %495) #11
  %497 = load i32, ptr %476, align 4, !tbaa !5
  %498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %488, ptr noundef nonnull %.str.5.sink423, i32 noundef %489, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.3, i32 noundef 275, ptr noundef %492, ptr noundef %494, ptr noundef %496, i32 noundef %497) #13
  call void @exit(i32 noundef 1) #14
  unreachable

499:                                              ; preds = %470
  %500 = load i32, ptr @test_count, align 4, !tbaa !5
  %501 = add nsw i32 %500, 1
  store i32 %501, ptr @test_count, align 4, !tbaa !5
  %502 = call i32 @s2n_connection_set_config(ptr noundef %288, ptr noundef %287) #11
  %503 = icmp eq i32 %502, -1
  br i1 %503, label %504, label %528

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

511:                                              ; preds = %504
  %512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %513 = call i32 @fileno(ptr noundef %512) #11
  %514 = call i32 @isatty(i32 noundef %513) #11
  %.not183 = icmp eq i32 %514, 0
  br i1 %.not183, label %515, label %516

515:                                              ; preds = %511, %504
  br label %516

516:                                              ; preds = %511, %515
  %.str.5.sink434 = phi ptr [ @.str.5, %515 ], [ @.str.1, %511 ]
  store i32 %506, ptr %505, align 4, !tbaa !5
  %517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %518 = load i32, ptr @test_count, align 4, !tbaa !5
  %519 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %520 = load i32, ptr %519, align 4, !tbaa !5
  %521 = call ptr @s2n_strerror(i32 noundef %520, ptr noundef nonnull @.str.4) #11
  %522 = load i32, ptr %519, align 4, !tbaa !5
  %523 = call ptr @s2n_strerror_debug(i32 noundef %522, ptr noundef nonnull @.str.4) #11
  %524 = load i32, ptr %505, align 4, !tbaa !5
  %525 = call ptr @strerror(i32 noundef %524) #11
  %526 = load i32, ptr %505, align 4, !tbaa !5
  %527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %517, ptr noundef nonnull %.str.5.sink434, i32 noundef %518, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.3, i32 noundef 277, ptr noundef %521, ptr noundef %523, ptr noundef %525, i32 noundef %526) #13
  call void @exit(i32 noundef 1) #14
  unreachable

528:                                              ; preds = %499
  %.not161 = icmp eq i32 %2, 0
  %529 = load i32, ptr @test_count, align 4, !tbaa !5
  %530 = add nsw i32 %529, 1
  store i32 %530, ptr @test_count, align 4, !tbaa !5
  br i1 %.not161, label %558, label %531

531:                                              ; preds = %528
  %532 = call i32 @s2n_connection_prefer_throughput(ptr noundef %288) #11
  %533 = icmp eq i32 %532, -1
  br i1 %533, label %534, label %585

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

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

545:                                              ; preds = %541, %534
  br label %546

546:                                              ; preds = %541, %545
  %.str.5.sink445 = phi ptr [ @.str.5, %545 ], [ @.str.1, %541 ]
  store i32 %536, ptr %535, align 4, !tbaa !5
  %547 = load ptr, ptr @stderr, align 8, !tbaa !9
  %548 = load i32, ptr @test_count, align 4, !tbaa !5
  %549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %550 = load i32, ptr %549, align 4, !tbaa !5
  %551 = call ptr @s2n_strerror(i32 noundef %550, ptr noundef nonnull @.str.4) #11
  %552 = load i32, ptr %549, align 4, !tbaa !5
  %553 = call ptr @s2n_strerror_debug(i32 noundef %552, ptr noundef nonnull @.str.4) #11
  %554 = load i32, ptr %535, align 4, !tbaa !5
  %555 = call ptr @strerror(i32 noundef %554) #11
  %556 = load i32, ptr %535, align 4, !tbaa !5
  %557 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %547, ptr noundef nonnull %.str.5.sink445, i32 noundef %548, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.3, i32 noundef 280, ptr noundef %551, ptr noundef %553, ptr noundef %555, i32 noundef %556) #13
  call void @exit(i32 noundef 1) #14
  unreachable

558:                                              ; preds = %528
  %559 = call i32 @s2n_connection_prefer_low_latency(ptr noundef %288) #11
  %560 = icmp eq i32 %559, -1
  br i1 %560, label %561, label %585

561:                                              ; preds = %558
  %562 = tail call ptr @__errno_location() #12
  %563 = load i32, ptr %562, align 4, !tbaa !5
  %564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %565 = call i32 @s2n_print_stacktrace(ptr noundef %564) #11
  %566 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %567 = trunc nuw i8 %566 to i1
  br i1 %567, label %568, label %572

568:                                              ; preds = %561
  %569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %570 = call i32 @fileno(ptr noundef %569) #11
  %571 = call i32 @isatty(i32 noundef %570) #11
  %.not162 = icmp eq i32 %571, 0
  br i1 %.not162, label %572, label %573

572:                                              ; preds = %568, %561
  br label %573

573:                                              ; preds = %568, %572
  %.str.5.sink456 = phi ptr [ @.str.5, %572 ], [ @.str.1, %568 ]
  store i32 %563, ptr %562, align 4, !tbaa !5
  %574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %575 = load i32, ptr @test_count, align 4, !tbaa !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(i32 noundef %577, ptr noundef nonnull @.str.4) #11
  %579 = load i32, ptr %576, align 4, !tbaa !5
  %580 = call ptr @s2n_strerror_debug(i32 noundef %579, ptr noundef nonnull @.str.4) #11
  %581 = load i32, ptr %562, align 4, !tbaa !5
  %582 = call ptr @strerror(i32 noundef %581) #11
  %583 = load i32, ptr %562, align 4, !tbaa !5
  %584 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %574, ptr noundef nonnull %.str.5.sink456, i32 noundef %575, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.3, i32 noundef 282, ptr noundef %578, ptr noundef %580, ptr noundef %582, i32 noundef %583) #13
  call void @exit(i32 noundef 1) #14
  unreachable

585:                                              ; preds = %531, %558
  %586 = load i32, ptr @test_count, align 4, !tbaa !5
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr @test_count, align 4, !tbaa !5
  %588 = call i32 @s2n_connection_set_io_pair(ptr noundef %288, ptr noundef nonnull %11) #11
  %589 = icmp eq i32 %588, -1
  br i1 %589, label %590, label %614

590:                                              ; preds = %585
  %591 = tail call ptr @__errno_location() #12
  %592 = load i32, ptr %591, align 4, !tbaa !5
  %593 = load ptr, ptr @stderr, align 8, !tbaa !9
  %594 = call i32 @s2n_print_stacktrace(ptr noundef %593) #11
  %595 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %596 = trunc nuw i8 %595 to i1
  br i1 %596, label %597, label %601

597:                                              ; preds = %590
  %598 = load ptr, ptr @stderr, align 8, !tbaa !9
  %599 = call i32 @fileno(ptr noundef %598) #11
  %600 = call i32 @isatty(i32 noundef %599) #11
  %.not181 = icmp eq i32 %600, 0
  br i1 %.not181, label %601, label %602

601:                                              ; preds = %597, %590
  br label %602

602:                                              ; preds = %597, %601
  %.str.5.sink467 = phi ptr [ @.str.5, %601 ], [ @.str.1, %597 ]
  store i32 %592, ptr %591, align 4, !tbaa !5
  %603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %604 = load i32, ptr @test_count, align 4, !tbaa !5
  %605 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %606 = load i32, ptr %605, align 4, !tbaa !5
  %607 = call ptr @s2n_strerror(i32 noundef %606, ptr noundef nonnull @.str.4) #11
  %608 = load i32, ptr %605, align 4, !tbaa !5
  %609 = call ptr @s2n_strerror_debug(i32 noundef %608, ptr noundef nonnull @.str.4) #11
  %610 = load i32, ptr %591, align 4, !tbaa !5
  %611 = call ptr @strerror(i32 noundef %610) #11
  %612 = load i32, ptr %591, align 4, !tbaa !5
  %613 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %603, ptr noundef nonnull %.str.5.sink467, i32 noundef %604, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.3, i32 noundef 286, ptr noundef %607, ptr noundef %609, ptr noundef %611, i32 noundef %612) #13
  call void @exit(i32 noundef 1) #14
  unreachable

614:                                              ; preds = %585
  %615 = load i32, ptr @test_count, align 4, !tbaa !5
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr @test_count, align 4, !tbaa !5
  %617 = call i32 @s2n_connection_use_corked_io(ptr noundef %288) #11
  %618 = icmp eq i32 %617, -1
  br i1 %618, label %619, label %643

619:                                              ; preds = %614
  %620 = tail call ptr @__errno_location() #12
  %621 = load i32, ptr %620, align 4, !tbaa !5
  %622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %623 = call i32 @s2n_print_stacktrace(ptr noundef %622) #11
  %624 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %625 = trunc nuw i8 %624 to i1
  br i1 %625, label %626, label %630

626:                                              ; preds = %619
  %627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %628 = call i32 @fileno(ptr noundef %627) #11
  %629 = call i32 @isatty(i32 noundef %628) #11
  %.not180 = icmp eq i32 %629, 0
  br i1 %.not180, label %630, label %631

630:                                              ; preds = %626, %619
  br label %631

631:                                              ; preds = %626, %630
  %.str.5.sink478 = phi ptr [ @.str.5, %630 ], [ @.str.1, %626 ]
  store i32 %621, ptr %620, align 4, !tbaa !5
  %632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %633 = load i32, ptr @test_count, align 4, !tbaa !5
  %634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %635 = load i32, ptr %634, align 4, !tbaa !5
  %636 = call ptr @s2n_strerror(i32 noundef %635, ptr noundef nonnull @.str.4) #11
  %637 = load i32, ptr %634, align 4, !tbaa !5
  %638 = call ptr @s2n_strerror_debug(i32 noundef %637, ptr noundef nonnull @.str.4) #11
  %639 = load i32, ptr %620, align 4, !tbaa !5
  %640 = call ptr @strerror(i32 noundef %639) #11
  %641 = load i32, ptr %620, align 4, !tbaa !5
  %642 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %632, ptr noundef nonnull %.str.5.sink478, i32 noundef %633, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.3, i32 noundef 288, ptr noundef %636, ptr noundef %638, ptr noundef %640, i32 noundef %641) #13
  call void @exit(i32 noundef 1) #14
  unreachable

643:                                              ; preds = %614
  %644 = load i32, ptr @test_count, align 4, !tbaa !5
  %645 = add nsw i32 %644, 1
  store i32 %645, ptr @test_count, align 4, !tbaa !5
  %646 = call i32 @s2n_negotiate(ptr noundef %288, ptr noundef nonnull %4) #11
  %647 = icmp eq i32 %646, -1
  br i1 %647, label %648, label %672

648:                                              ; preds = %643
  %649 = tail call ptr @__errno_location() #12
  %650 = load i32, ptr %649, align 4, !tbaa !5
  %651 = load ptr, ptr @stderr, align 8, !tbaa !9
  %652 = call i32 @s2n_print_stacktrace(ptr noundef %651) #11
  %653 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %654 = trunc nuw i8 %653 to i1
  br i1 %654, label %655, label %659

655:                                              ; preds = %648
  %656 = load ptr, ptr @stderr, align 8, !tbaa !9
  %657 = call i32 @fileno(ptr noundef %656) #11
  %658 = call i32 @isatty(i32 noundef %657) #11
  %.not179 = icmp eq i32 %658, 0
  br i1 %.not179, label %659, label %660

659:                                              ; preds = %655, %648
  br label %660

660:                                              ; preds = %655, %659
  %.str.5.sink489 = phi ptr [ @.str.5, %659 ], [ @.str.1, %655 ]
  store i32 %650, ptr %649, align 4, !tbaa !5
  %661 = load ptr, ptr @stderr, align 8, !tbaa !9
  %662 = load i32, ptr @test_count, align 4, !tbaa !5
  %663 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %664 = load i32, ptr %663, align 4, !tbaa !5
  %665 = call ptr @s2n_strerror(i32 noundef %664, ptr noundef nonnull @.str.4) #11
  %666 = load i32, ptr %663, align 4, !tbaa !5
  %667 = call ptr @s2n_strerror_debug(i32 noundef %666, ptr noundef nonnull @.str.4) #11
  %668 = load i32, ptr %649, align 4, !tbaa !5
  %669 = call ptr @strerror(i32 noundef %668) #11
  %670 = load i32, ptr %649, align 4, !tbaa !5
  %671 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %661, ptr noundef nonnull %.str.5.sink489, i32 noundef %662, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.3, i32 noundef 291, ptr noundef %665, ptr noundef %667, ptr noundef %669, i32 noundef %670) #13
  call void @exit(i32 noundef 1) #14
  unreachable

672:                                              ; preds = %643
  %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 = getelementptr inbounds i8, ptr %288, i64 220
  %676 = load i8, ptr %675, align 4, !tbaa !21
  br i1 %.not160, label %705, label %677

677:                                              ; preds = %672
  %678 = zext i8 %676 to i32
  %679 = call i32 (...) @s2n_get_highest_fully_supported_tls_version() #11
  %680 = icmp eq i32 %679, %678
  br i1 %680, label %.lr.ph, label %681

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

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

692:                                              ; preds = %688, %681
  br label %693

693:                                              ; preds = %688, %692
  %.str.5.sink500 = phi ptr [ @.str.5, %692 ], [ @.str.1, %688 ]
  store i32 %683, ptr %682, align 4, !tbaa !5
  %694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %695 = load i32, ptr @test_count, align 4, !tbaa !5
  %696 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %697 = load i32, ptr %696, align 4, !tbaa !5
  %698 = call ptr @s2n_strerror(i32 noundef %697, ptr noundef nonnull @.str.4) #11
  %699 = load i32, ptr %696, align 4, !tbaa !5
  %700 = call ptr @s2n_strerror_debug(i32 noundef %699, ptr noundef nonnull @.str.4) #11
  %701 = load i32, ptr %682, align 4, !tbaa !5
  %702 = call ptr @strerror(i32 noundef %701) #11
  %703 = load i32, ptr %682, align 4, !tbaa !5
  %704 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %694, ptr noundef nonnull %.str.5.sink500, i32 noundef %695, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.3, i32 noundef 295, ptr noundef %698, ptr noundef %700, ptr noundef %702, i32 noundef %703) #13
  call void @exit(i32 noundef 1) #14
  unreachable

705:                                              ; preds = %672
  %706 = icmp eq i8 %676, 33
  br i1 %706, label %.lr.ph, label %707

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

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

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

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

.lr.ph:                                           ; preds = %677, %705
  %731 = getelementptr inbounds i8, ptr %11, i64 4
  %732 = load i32, ptr %731, align 4, !tbaa !46
  %733 = call i32 @s2n_fd_set_non_blocking(i32 noundef %732) #11
  %734 = load ptr, ptr %9, align 8, !tbaa !19
  %735 = uitofp nneg i32 %.1 to double
  br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %753
  %.0143223.us = phi i32 [ %.1144.us, %753 ], [ %.1, %.lr.ph ]
  %.0145222.us = phi ptr [ %.2147.us, %753 ], [ %734, %.lr.ph ]
  %736 = load ptr, ptr %13, align 8, !tbaa !9
  %737 = zext i32 %.0143223.us to i64
  %738 = call i64 @s2n_send(ptr noundef %736, ptr noundef %.0145222.us, i64 noundef %737, ptr noundef nonnull %4) #11
  %739 = trunc i64 %738 to i32
  %740 = icmp slt i32 %739, 0
  br i1 %740, label %747, label %741

741:                                              ; preds = %.lr.ph.split.us
  %742 = load i32, ptr @test_count, align 4, !tbaa !5
  %743 = add nsw i32 %742, 1
  store i32 %743, ptr @test_count, align 4, !tbaa !5
  %.not205.us = icmp eq i32 %739, 0
  br i1 %.not205.us, label %.loopexit, label %744

744:                                              ; preds = %741
  %745 = sub i32 %.0143223.us, %739
  %746 = and i64 %738, 2147483647
  %.1146.us = getelementptr inbounds i8, ptr %.0145222.us, i64 %746
  br label %753

747:                                              ; preds = %.lr.ph.split.us
  %748 = sub i32 %.1, %.0143223.us
  %749 = uitofp i32 %748 to double
  %750 = fdiv double %749, %735
  %751 = fmul double %750, 1.000000e+02
  %752 = fcmp ogt double %751, 5.000000e+00
  br i1 %752, label %.split.us, label %753, !llvm.loop !48

753:                                              ; preds = %747, %744
  %.2147.us = phi ptr [ %.1146.us, %744 ], [ %.0145222.us, %747 ]
  %.1144.us = phi i32 [ %745, %744 ], [ %.0143223.us, %747 ]
  %.not165.us = icmp eq i32 %.1144.us, 0
  br i1 %.not165.us, label %.loopexit267, label %.lr.ph.split.us

.lr.ph.split:                                     ; preds = %.lr.ph, %797
  %.0143223 = phi i32 [ %.1144, %797 ], [ %.1, %.lr.ph ]
  %.0149221 = phi i32 [ %.2151, %797 ], [ 0, %.lr.ph ]
  %754 = load ptr, ptr %10, align 8, !tbaa !9
  %755 = zext i32 %.0149221 to i64
  %756 = call i64 @s2n_sendv_with_offset(ptr noundef %288, ptr noundef %754, i64 noundef 7, i64 noundef %755, ptr noundef nonnull %4) #11
  %757 = trunc i64 %756 to i32
  %758 = icmp slt i32 %757, 0
  br i1 %758, label %759, label %769

759:                                              ; preds = %.lr.ph.split
  %760 = sub i32 %.1, %.0143223
  %761 = uitofp i32 %760 to double
  %762 = fdiv double %761, %735
  %763 = fmul double %762, 1.000000e+02
  %764 = fcmp ogt double %763, 5.000000e+00
  br i1 %764, label %.split.us, label %797, !llvm.loop !48

.split.us:                                        ; preds = %759, %747
  %.us-phi = phi i32 [ 0, %747 ], [ %.0149221, %759 ]
  %.us-phi226 = phi ptr [ %.0145222.us, %747 ], [ %734, %759 ]
  %.us-phi227 = phi i32 [ %.0143223.us, %747 ], [ %.0143223, %759 ]
  %765 = load i32, ptr %4, align 4
  %766 = icmp eq i32 %765, 2
  %767 = load i32, ptr @test_count, align 4, !tbaa !5
  %768 = add nsw i32 %767, 1
  store i32 %768, ptr @test_count, align 4, !tbaa !5
  br i1 %766, label %.thread198, label %.loopexit

769:                                              ; preds = %.lr.ph.split
  %770 = load i32, ptr @test_count, align 4, !tbaa !5
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr @test_count, align 4, !tbaa !5
  %.not205 = icmp eq i32 %757, 0
  br i1 %.not205, label %.loopexit, label %795

.loopexit:                                        ; preds = %769, %741, %.split.us
  %772 = tail call ptr @__errno_location() #12
  %773 = load i32, ptr %772, align 4, !tbaa !5
  %774 = load ptr, ptr @stderr, align 8, !tbaa !9
  %775 = call i32 @s2n_print_stacktrace(ptr noundef %774) #11
  %776 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %777 = trunc nuw i8 %776 to i1
  br i1 %777, label %778, label %782

778:                                              ; preds = %.loopexit
  %779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %780 = call i32 @fileno(ptr noundef %779) #11
  %781 = call i32 @isatty(i32 noundef %780) #11
  %.not166 = icmp eq i32 %781, 0
  br i1 %.not166, label %782, label %783

782:                                              ; preds = %778, %.loopexit
  br label %783

783:                                              ; preds = %778, %782
  %.str.5.sink522 = phi ptr [ @.str.5, %782 ], [ @.str.1, %778 ]
  store i32 %773, ptr %772, align 4, !tbaa !5
  %784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %785 = load i32, ptr @test_count, align 4, !tbaa !5
  %786 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %787 = load i32, ptr %786, align 4, !tbaa !5
  %788 = call ptr @s2n_strerror(i32 noundef %787, ptr noundef nonnull @.str.4) #11
  %789 = load i32, ptr %786, align 4, !tbaa !5
  %790 = call ptr @s2n_strerror_debug(i32 noundef %789, ptr noundef nonnull @.str.4) #11
  %791 = load i32, ptr %772, align 4, !tbaa !5
  %792 = call ptr @strerror(i32 noundef %791) #11
  %793 = load i32, ptr %772, align 4, !tbaa !5
  %794 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %784, ptr noundef nonnull %.str.5.sink522, i32 noundef %785, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.3, i32 noundef 325, ptr noundef %788, ptr noundef %790, ptr noundef %792, i32 noundef %793) #13
  call void @exit(i32 noundef 1) #14
  unreachable

795:                                              ; preds = %769
  %796 = sub i32 %.0143223, %757
  %.1150 = add i32 %.0149221, %757
  br label %797

797:                                              ; preds = %759, %795
  %.2151 = phi i32 [ %.1150, %795 ], [ %.0149221, %759 ]
  %.1144 = phi i32 [ %796, %795 ], [ %.0143223, %759 ]
  %.not165 = icmp eq i32 %.1144, 0
  br i1 %.not165, label %.loopexit267, label %.lr.ph.split

.thread198:                                       ; preds = %.split.us
  %798 = icmp ult i32 %.us-phi227, %.1
  br i1 %798, label %848, label %799

799:                                              ; preds = %.thread198
  %800 = tail call ptr @__errno_location() #12
  %801 = load i32, ptr %800, align 4, !tbaa !5
  %802 = load ptr, ptr @stderr, align 8, !tbaa !9
  %803 = call i32 @s2n_print_stacktrace(ptr noundef %802) #11
  %804 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %805 = trunc nuw i8 %804 to i1
  br i1 %805, label %806, label %810

806:                                              ; preds = %799
  %807 = load ptr, ptr @stderr, align 8, !tbaa !9
  %808 = call i32 @fileno(ptr noundef %807) #11
  %809 = call i32 @isatty(i32 noundef %808) #11
  %.not167 = icmp eq i32 %809, 0
  br i1 %.not167, label %810, label %811

810:                                              ; preds = %806, %799
  br label %811

811:                                              ; preds = %806, %810
  %.str.5.sink533 = phi ptr [ @.str.5, %810 ], [ @.str.1, %806 ]
  store i32 %801, ptr %800, align 4, !tbaa !5
  %812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %813 = load i32, ptr @test_count, align 4, !tbaa !5
  %814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %815 = load i32, ptr %814, align 4, !tbaa !5
  %816 = call ptr @s2n_strerror(i32 noundef %815, ptr noundef nonnull @.str.4) #11
  %817 = load i32, ptr %814, align 4, !tbaa !5
  %818 = call ptr @s2n_strerror_debug(i32 noundef %817, ptr noundef nonnull @.str.4) #11
  %819 = load i32, ptr %800, align 4, !tbaa !5
  %820 = call ptr @strerror(i32 noundef %819) #11
  %821 = load i32, ptr %800, align 4, !tbaa !5
  %822 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %812, ptr noundef nonnull %.str.5.sink533, i32 noundef %813, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.3, i32 noundef 335, ptr noundef %816, ptr noundef %818, ptr noundef %820, i32 noundef %821) #13
  call void @exit(i32 noundef 1) #14
  unreachable

.loopexit267:                                     ; preds = %797, %753
  %823 = load i32, ptr @test_count, align 4, !tbaa !5
  %824 = add nsw i32 %823, 2
  store i32 %824, ptr @test_count, align 4, !tbaa !5
  %825 = tail call ptr @__errno_location() #12
  %826 = load i32, ptr %825, align 4, !tbaa !5
  %827 = load ptr, ptr @stderr, align 8, !tbaa !9
  %828 = call i32 @s2n_print_stacktrace(ptr noundef %827) #11
  %829 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %830 = trunc nuw i8 %829 to i1
  br i1 %830, label %831, label %835

831:                                              ; preds = %.loopexit267
  %832 = load ptr, ptr @stderr, align 8, !tbaa !9
  %833 = call i32 @fileno(ptr noundef %832) #11
  %834 = call i32 @isatty(i32 noundef %833) #11
  %.not169 = icmp eq i32 %834, 0
  br i1 %.not169, label %835, label %836

835:                                              ; preds = %831, %.loopexit267
  br label %836

836:                                              ; preds = %831, %835
  %.str.5.sink544 = phi ptr [ @.str.5, %835 ], [ @.str.1, %831 ]
  store i32 %826, ptr %825, align 4, !tbaa !5
  %837 = load ptr, ptr @stderr, align 8, !tbaa !9
  %838 = load i32, ptr @test_count, align 4, !tbaa !5
  %839 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %840 = load i32, ptr %839, align 4, !tbaa !5
  %841 = call ptr @s2n_strerror(i32 noundef %840, ptr noundef nonnull @.str.4) #11
  %842 = load i32, ptr %839, align 4, !tbaa !5
  %843 = call ptr @s2n_strerror_debug(i32 noundef %842, ptr noundef nonnull @.str.4) #11
  %844 = load i32, ptr %825, align 4, !tbaa !5
  %845 = call ptr @strerror(i32 noundef %844) #11
  %846 = load i32, ptr %825, align 4, !tbaa !5
  %847 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %837, ptr noundef nonnull %.str.5.sink544, i32 noundef %838, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.3, i32 noundef 336, ptr noundef %841, ptr noundef %843, ptr noundef %845, i32 noundef %846) #13
  call void @exit(i32 noundef 1) #14
  unreachable

848:                                              ; preds = %.thread198
  %849 = add nsw i32 %767, 2
  store i32 %849, ptr @test_count, align 4, !tbaa !5
  %850 = call i32 @sleep(i32 noundef 1) #11
  %851 = load i32, ptr @test_count, align 4, !tbaa !5
  %852 = add nsw i32 %851, 1
  store i32 %852, ptr @test_count, align 4, !tbaa !5
  %853 = call i32 @kill(i32 noundef %188, i32 noundef 18) #11
  %854 = icmp eq i32 %853, -1
  br i1 %854, label %855, label %879

855:                                              ; preds = %848
  %856 = tail call ptr @__errno_location() #12
  %857 = load i32, ptr %856, align 4, !tbaa !5
  %858 = load ptr, ptr @stderr, align 8, !tbaa !9
  %859 = call i32 @s2n_print_stacktrace(ptr noundef %858) #11
  %860 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %861 = trunc nuw i8 %860 to i1
  br i1 %861, label %862, label %866

862:                                              ; preds = %855
  %863 = load ptr, ptr @stderr, align 8, !tbaa !9
  %864 = call i32 @fileno(ptr noundef %863) #11
  %865 = call i32 @isatty(i32 noundef %864) #11
  %.not178 = icmp eq i32 %865, 0
  br i1 %.not178, label %866, label %867

866:                                              ; preds = %862, %855
  br label %867

867:                                              ; preds = %862, %866
  %.str.5.sink555 = phi ptr [ @.str.5, %866 ], [ @.str.1, %862 ]
  store i32 %857, ptr %856, align 4, !tbaa !5
  %868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %869 = load i32, ptr @test_count, align 4, !tbaa !5
  %870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %871 = load i32, ptr %870, align 4, !tbaa !5
  %872 = call ptr @s2n_strerror(i32 noundef %871, ptr noundef nonnull @.str.4) #11
  %873 = load i32, ptr %870, align 4, !tbaa !5
  %874 = call ptr @s2n_strerror_debug(i32 noundef %873, ptr noundef nonnull @.str.4) #11
  %875 = load i32, ptr %856, align 4, !tbaa !5
  %876 = call ptr @strerror(i32 noundef %875) #11
  %877 = load i32, ptr %856, align 4, !tbaa !5
  %878 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %868, ptr noundef nonnull %.str.5.sink555, i32 noundef %869, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.3, i32 noundef 341, ptr noundef %872, ptr noundef %874, ptr noundef %876, i32 noundef %877) #13
  call void @exit(i32 noundef 1) #14
  unreachable

879:                                              ; preds = %848
  %880 = load i32, ptr %731, align 4, !tbaa !46
  %881 = call i32 @s2n_fd_set_blocking(i32 noundef %880) #11
  br i1 %.not, label %.split234.us, label %.split234.preheader

.split234.preheader:                              ; preds = %879
  %.pre = load ptr, ptr %13, align 8, !tbaa !9
  br label %.split234

.split234.us:                                     ; preds = %879, %889
  %.3233.us = phi i32 [ %890, %889 ], [ %.us-phi227, %879 ]
  %.4232.us = phi ptr [ %.5.us, %889 ], [ %.us-phi226, %879 ]
  %882 = load ptr, ptr %13, align 8, !tbaa !9
  %883 = zext i32 %.3233.us to i64
  %884 = call i64 @s2n_send(ptr noundef %882, ptr noundef %.4232.us, i64 noundef %883, ptr noundef nonnull %4) #11
  %885 = trunc i64 %884 to i32
  %886 = load i32, ptr @test_count, align 4, !tbaa !5
  %887 = add nsw i32 %886, 1
  store i32 %887, ptr @test_count, align 4, !tbaa !5
  %888 = icmp sgt i32 %885, 0
  br i1 %888, label %889, label %.split236.us

889:                                              ; preds = %.split234.us
  %890 = sub i32 %.3233.us, %885
  %891 = and i64 %884, 2147483647
  %.5.us = getelementptr inbounds i8, ptr %.4232.us, i64 %891
  %.not170.us = icmp eq i32 %890, 0
  br i1 %.not170.us, label %.split238.us.loopexit, label %.split234.us, !llvm.loop !50

.split234:                                        ; preds = %.split234.preheader, %922
  %.3233 = phi i32 [ %923, %922 ], [ %.us-phi227, %.split234.preheader ]
  %.4153231 = phi i32 [ %.5154, %922 ], [ %.us-phi, %.split234.preheader ]
  %892 = load ptr, ptr %10, align 8, !tbaa !9
  %893 = zext i32 %.4153231 to i64
  %894 = call i64 @s2n_sendv_with_offset(ptr noundef %.pre, ptr noundef %892, i64 noundef 7, i64 noundef %893, ptr noundef nonnull %4) #11
  %895 = trunc i64 %894 to i32
  %896 = load i32, ptr @test_count, align 4, !tbaa !5
  %897 = add nsw i32 %896, 1
  store i32 %897, ptr @test_count, align 4, !tbaa !5
  %898 = icmp sgt i32 %895, 0
  br i1 %898, label %922, label %.split236.us

.split236.us:                                     ; preds = %.split234, %.split234.us
  %899 = tail call ptr @__errno_location() #12
  %900 = load i32, ptr %899, align 4, !tbaa !5
  %901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %902 = call i32 @s2n_print_stacktrace(ptr noundef %901) #11
  %903 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %904 = trunc nuw i8 %903 to i1
  br i1 %904, label %905, label %909

905:                                              ; preds = %.split236.us
  %906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %907 = call i32 @fileno(ptr noundef %906) #11
  %908 = call i32 @isatty(i32 noundef %907) #11
  %.not177 = icmp eq i32 %908, 0
  br i1 %.not177, label %909, label %910

909:                                              ; preds = %905, %.split236.us
  br label %910

910:                                              ; preds = %905, %909
  %.str.5.sink566 = phi ptr [ @.str.5, %909 ], [ @.str.1, %905 ]
  store i32 %900, ptr %899, align 4, !tbaa !5
  %911 = load ptr, ptr @stderr, align 8, !tbaa !9
  %912 = load i32, ptr @test_count, align 4, !tbaa !5
  %913 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %914 = load i32, ptr %913, align 4, !tbaa !5
  %915 = call ptr @s2n_strerror(i32 noundef %914, ptr noundef nonnull @.str.4) #11
  %916 = load i32, ptr %913, align 4, !tbaa !5
  %917 = call ptr @s2n_strerror_debug(i32 noundef %916, ptr noundef nonnull @.str.4) #11
  %918 = load i32, ptr %899, align 4, !tbaa !5
  %919 = call ptr @strerror(i32 noundef %918) #11
  %920 = load i32, ptr %899, align 4, !tbaa !5
  %921 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %911, ptr noundef nonnull %.str.5.sink566, i32 noundef %912, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.3, i32 noundef 350, ptr noundef %915, ptr noundef %917, ptr noundef %919, i32 noundef %920) #13
  call void @exit(i32 noundef 1) #14
  unreachable

922:                                              ; preds = %.split234
  %923 = sub i32 %.3233, %895
  %.5154 = add i32 %.4153231, %895
  %.not170 = icmp eq i32 %923, 0
  br i1 %.not170, label %.split238.us, label %.split234, !llvm.loop !50

.split238.us.loopexit:                            ; preds = %889
  %.pre253.pre = load ptr, ptr %13, align 8, !tbaa !9
  br label %.split238.us

.split238.us:                                     ; preds = %922, %.split238.us.loopexit
  %.pre253 = phi ptr [ %.pre253.pre, %.split238.us.loopexit ], [ %.pre, %922 ]
  %924 = phi i32 [ %887, %.split238.us.loopexit ], [ %897, %922 ]
  br i1 %.not, label %956, label %925

925:                                              ; preds = %.split238.us
  %926 = load ptr, ptr %10, align 8, !tbaa !9
  %927 = call i64 @s2n_sendv(ptr noundef %.pre253, ptr noundef %926, i64 noundef 1, ptr noundef nonnull %4) #11
  %928 = trunc i64 %927 to i32
  %929 = load i32, ptr @test_count, align 4, !tbaa !5
  %930 = add nsw i32 %929, 1
  store i32 %930, ptr @test_count, align 4, !tbaa !5
  %931 = icmp sgt i32 %928, 0
  br i1 %931, label %956, label %932

932:                                              ; preds = %925
  %933 = tail call ptr @__errno_location() #12
  %934 = load i32, ptr %933, align 4, !tbaa !5
  %935 = load ptr, ptr @stderr, align 8, !tbaa !9
  %936 = call i32 @s2n_print_stacktrace(ptr noundef %935) #11
  %937 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %938 = trunc nuw i8 %937 to i1
  br i1 %938, label %939, label %943

939:                                              ; preds = %932
  %940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %941 = call i32 @fileno(ptr noundef %940) #11
  %942 = call i32 @isatty(i32 noundef %941) #11
  %.not171 = icmp eq i32 %942, 0
  br i1 %.not171, label %943, label %944

943:                                              ; preds = %939, %932
  br label %944

944:                                              ; preds = %939, %943
  %.str.5.sink577 = phi ptr [ @.str.5, %943 ], [ @.str.1, %939 ]
  store i32 %934, ptr %933, 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 nonnull @.str.4) #11
  %950 = load i32, ptr %947, align 4, !tbaa !5
  %951 = call ptr @s2n_strerror_debug(i32 noundef %950, ptr noundef nonnull @.str.4) #11
  %952 = load i32, ptr %933, align 4, !tbaa !5
  %953 = call ptr @strerror(i32 noundef %952) #11
  %954 = load i32, ptr %933, align 4, !tbaa !5
  %955 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %945, ptr noundef nonnull %.str.5.sink577, i32 noundef %946, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.3, i32 noundef 361, ptr noundef %949, ptr noundef %951, ptr noundef %953, i32 noundef %954) #13
  call void @exit(i32 noundef 1) #14
  unreachable

956:                                              ; preds = %925, %.split238.us
  %957 = phi i32 [ %930, %925 ], [ %924, %.split238.us ]
  %958 = add nsw i32 %957, 1
  store i32 %958, ptr @test_count, align 4, !tbaa !5
  %959 = call i32 @s2n_shutdown(ptr noundef %.pre253, ptr noundef nonnull %4) #11
  %960 = icmp eq i32 %959, -1
  br i1 %960, label %961, label %985

961:                                              ; preds = %956
  %962 = tail call ptr @__errno_location() #12
  %963 = load i32, ptr %962, align 4, !tbaa !5
  %964 = load ptr, ptr @stderr, align 8, !tbaa !9
  %965 = call i32 @s2n_print_stacktrace(ptr noundef %964) #11
  %966 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %967 = trunc nuw i8 %966 to i1
  br i1 %967, label %968, label %972

968:                                              ; preds = %961
  %969 = load ptr, ptr @stderr, align 8, !tbaa !9
  %970 = call i32 @fileno(ptr noundef %969) #11
  %971 = call i32 @isatty(i32 noundef %970) #11
  %.not176 = icmp eq i32 %971, 0
  br i1 %.not176, label %972, label %973

972:                                              ; preds = %968, %961
  br label %973

973:                                              ; preds = %968, %972
  %.str.5.sink588 = phi ptr [ @.str.5, %972 ], [ @.str.1, %968 ]
  store i32 %963, ptr %962, align 4, !tbaa !5
  %974 = load ptr, ptr @stderr, align 8, !tbaa !9
  %975 = load i32, ptr @test_count, align 4, !tbaa !5
  %976 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %977 = load i32, ptr %976, align 4, !tbaa !5
  %978 = call ptr @s2n_strerror(i32 noundef %977, ptr noundef nonnull @.str.4) #11
  %979 = load i32, ptr %976, align 4, !tbaa !5
  %980 = call ptr @s2n_strerror_debug(i32 noundef %979, ptr noundef nonnull @.str.4) #11
  %981 = load i32, ptr %962, align 4, !tbaa !5
  %982 = call ptr @strerror(i32 noundef %981) #11
  %983 = load i32, ptr %962, align 4, !tbaa !5
  %984 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %974, ptr noundef nonnull %.str.5.sink588, i32 noundef %975, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.3, i32 noundef 364, ptr noundef %978, ptr noundef %980, ptr noundef %982, i32 noundef %983) #13
  call void @exit(i32 noundef 1) #14
  unreachable

985:                                              ; preds = %956
  %986 = load i32, ptr @test_count, align 4, !tbaa !5
  %987 = add nsw i32 %986, 1
  store i32 %987, ptr @test_count, align 4, !tbaa !5
  %988 = call i32 @waitpid(i32 noundef -1, ptr noundef nonnull %5, i32 noundef 0) #11
  %989 = icmp eq i32 %988, %188
  br i1 %989, label %1014, label %990

990:                                              ; preds = %985
  %991 = tail call ptr @__errno_location() #12
  %992 = load i32, ptr %991, align 4, !tbaa !5
  %993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %994 = call i32 @s2n_print_stacktrace(ptr noundef %993) #11
  %995 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %996 = trunc nuw i8 %995 to i1
  br i1 %996, label %997, label %1001

997:                                              ; preds = %990
  %998 = load ptr, ptr @stderr, align 8, !tbaa !9
  %999 = call i32 @fileno(ptr noundef %998) #11
  %1000 = call i32 @isatty(i32 noundef %999) #11
  %.not172 = icmp eq i32 %1000, 0
  br i1 %.not172, label %1001, label %1002

1001:                                             ; preds = %997, %990
  br label %1002

1002:                                             ; preds = %997, %1001
  %.str.5.sink599 = phi ptr [ @.str.5, %1001 ], [ @.str.1, %997 ]
  store i32 %992, ptr %991, align 4, !tbaa !5
  %1003 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1004 = load i32, ptr @test_count, align 4, !tbaa !5
  %1005 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1006 = load i32, ptr %1005, align 4, !tbaa !5
  %1007 = call ptr @s2n_strerror(i32 noundef %1006, ptr noundef nonnull @.str.4) #11
  %1008 = load i32, ptr %1005, align 4, !tbaa !5
  %1009 = call ptr @s2n_strerror_debug(i32 noundef %1008, ptr noundef nonnull @.str.4) #11
  %1010 = load i32, ptr %991, align 4, !tbaa !5
  %1011 = call ptr @strerror(i32 noundef %1010) #11
  %1012 = load i32, ptr %991, align 4, !tbaa !5
  %1013 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1003, ptr noundef nonnull %.str.5.sink599, i32 noundef %1004, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.3, i32 noundef 366, ptr noundef %1007, ptr noundef %1009, ptr noundef %1011, i32 noundef %1012) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1014:                                             ; preds = %985
  %1015 = load i32, ptr @test_count, align 4, !tbaa !5
  %1016 = add nsw i32 %1015, 1
  store i32 %1016, ptr @test_count, align 4, !tbaa !5
  %1017 = load i32, ptr %5, align 4, !tbaa !5
  %1018 = icmp eq i32 %1017, 0
  br i1 %1018, label %1043, label %1019

1019:                                             ; preds = %1014
  %1020 = tail call ptr @__errno_location() #12
  %1021 = load i32, ptr %1020, align 4, !tbaa !5
  %1022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1023 = call i32 @s2n_print_stacktrace(ptr noundef %1022) #11
  %1024 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1025 = trunc nuw i8 %1024 to i1
  br i1 %1025, label %1026, label %1030

1026:                                             ; preds = %1019
  %1027 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1028 = call i32 @fileno(ptr noundef %1027) #11
  %1029 = call i32 @isatty(i32 noundef %1028) #11
  %.not173 = icmp eq i32 %1029, 0
  br i1 %.not173, label %1030, label %1031

1030:                                             ; preds = %1026, %1019
  br label %1031

1031:                                             ; preds = %1026, %1030
  %.str.5.sink610 = phi ptr [ @.str.5, %1030 ], [ @.str.1, %1026 ]
  store i32 %1021, ptr %1020, align 4, !tbaa !5
  %1032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1033 = load i32, ptr @test_count, align 4, !tbaa !5
  %1034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1035 = load i32, ptr %1034, align 4, !tbaa !5
  %1036 = call ptr @s2n_strerror(i32 noundef %1035, ptr noundef nonnull @.str.4) #11
  %1037 = load i32, ptr %1034, align 4, !tbaa !5
  %1038 = call ptr @s2n_strerror_debug(i32 noundef %1037, ptr noundef nonnull @.str.4) #11
  %1039 = load i32, ptr %1020, align 4, !tbaa !5
  %1040 = call ptr @strerror(i32 noundef %1039) #11
  %1041 = load i32, ptr %1020, align 4, !tbaa !5
  %1042 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1032, ptr noundef nonnull %.str.5.sink610, i32 noundef %1033, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.3, i32 noundef 367, ptr noundef %1036, ptr noundef %1038, ptr noundef %1040, i32 noundef %1041) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1043:                                             ; preds = %1014
  %1044 = add nsw i32 %1015, 2
  store i32 %1044, ptr @test_count, align 4, !tbaa !5
  %1045 = call i32 @cleanup_io_data(ptr noundef nonnull %10, i32 noundef 7, ptr noundef nonnull %9)
  %1046 = call zeroext i1 @s2n_result_is_ok(i32 %1045)
  br i1 %1046, label %1071, label %1047

1047:                                             ; preds = %1043
  %1048 = tail call ptr @__errno_location() #12
  %1049 = load i32, ptr %1048, align 4, !tbaa !5
  %1050 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1051 = call i32 @s2n_print_stacktrace(ptr noundef %1050) #11
  %1052 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1053 = trunc nuw i8 %1052 to i1
  br i1 %1053, label %1054, label %1058

1054:                                             ; preds = %1047
  %1055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1056 = call i32 @fileno(ptr noundef %1055) #11
  %1057 = call i32 @isatty(i32 noundef %1056) #11
  %.not174 = icmp eq i32 %1057, 0
  br i1 %.not174, label %1058, label %1059

1058:                                             ; preds = %1054, %1047
  br label %1059

1059:                                             ; preds = %1054, %1058
  %.str.5.sink621 = phi ptr [ @.str.5, %1058 ], [ @.str.1, %1054 ]
  store i32 %1049, ptr %1048, align 4, !tbaa !5
  %1060 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1061 = load i32, ptr @test_count, align 4, !tbaa !5
  %1062 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1063 = load i32, ptr %1062, align 4, !tbaa !5
  %1064 = call ptr @s2n_strerror(i32 noundef %1063, ptr noundef nonnull @.str.4) #11
  %1065 = load i32, ptr %1062, align 4, !tbaa !5
  %1066 = call ptr @s2n_strerror_debug(i32 noundef %1065, ptr noundef nonnull @.str.4) #11
  %1067 = load i32, ptr %1048, align 4, !tbaa !5
  %1068 = call ptr @strerror(i32 noundef %1067) #11
  %1069 = load i32, ptr %1048, align 4, !tbaa !5
  %1070 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1060, ptr noundef nonnull %.str.5.sink621, i32 noundef %1061, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.3, i32 noundef 370, ptr noundef %1064, ptr noundef %1066, ptr noundef %1068, i32 noundef %1069) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1071:                                             ; preds = %1043
  %1072 = load i32, ptr @test_count, align 4, !tbaa !5
  %1073 = add nsw i32 %1072, 1
  store i32 %1073, ptr @test_count, align 4, !tbaa !5
  %1074 = call i32 @s2n_io_pair_close_one_end(ptr noundef nonnull %11, i32 noundef 0) #11
  %1075 = icmp eq i32 %1074, -1
  br i1 %1075, label %1076, label %1100

1076:                                             ; preds = %1071
  %1077 = tail call ptr @__errno_location() #12
  %1078 = load i32, ptr %1077, align 4, !tbaa !5
  %1079 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1080 = call i32 @s2n_print_stacktrace(ptr noundef %1079) #11
  %1081 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1082 = trunc nuw i8 %1081 to i1
  br i1 %1082, label %1083, label %1087

1083:                                             ; preds = %1076
  %1084 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1085 = call i32 @fileno(ptr noundef %1084) #11
  %1086 = call i32 @isatty(i32 noundef %1085) #11
  %.not175 = icmp eq i32 %1086, 0
  br i1 %.not175, label %1087, label %1088

1087:                                             ; preds = %1083, %1076
  br label %1088

1088:                                             ; preds = %1083, %1087
  %.str.5.sink632 = phi ptr [ @.str.5, %1087 ], [ @.str.1, %1083 ]
  store i32 %1078, ptr %1077, 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 nonnull @.str.4) #11
  %1094 = load i32, ptr %1091, align 4, !tbaa !5
  %1095 = call ptr @s2n_strerror_debug(i32 noundef %1094, ptr noundef nonnull @.str.4) #11
  %1096 = load i32, ptr %1077, align 4, !tbaa !5
  %1097 = call ptr @strerror(i32 noundef %1096) #11
  %1098 = load i32, ptr %1077, align 4, !tbaa !5
  %1099 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1089, ptr noundef nonnull %.str.5.sink632, i32 noundef %1090, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.3, i32 noundef 371, ptr noundef %1093, ptr noundef %1095, ptr noundef %1097, i32 noundef %1098) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1100:                                             ; preds = %1071, %467, %464
  %.0 = phi i32 [ -1, %464 ], [ -1, %467 ], [ 0, %1071 ]
  %1101 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  %1102 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  %1103 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 12000, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 12000, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 12000, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #11
  ret i32 %.0
}

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

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

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

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

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

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

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

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

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

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

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

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

declare i32 @s2n_get_public_random_data(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_io_pair_init(ptr noundef) local_unnamed_addr #3

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

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

declare i32 @s2n_config_ptr_free(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #3

declare ptr @s2n_cert_chain_and_key_new() local_unnamed_addr #3

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) local_unnamed_addr #3

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

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

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

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

declare i32 @s2n_connection_prefer_throughput(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_connection_prefer_low_latency(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_connection_use_corked_io(ptr noundef) local_unnamed_addr #3

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

declare i32 @s2n_fd_set_non_blocking(i32 noundef) local_unnamed_addr #3

declare i64 @s2n_send(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare i64 @s2n_sendv_with_offset(ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

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

declare i32 @s2n_fd_set_blocking(i32 noundef) local_unnamed_addr #3

declare i64 @s2n_sendv(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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


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