; LLVM IR from aws/s2n-tls :: tests/unit (s2n_handshake_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_debug_info = type { ptr, ptr }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_test_io_pair = type { i32, i32 }
%struct.s2n_config = type { i32, ptr, ptr, %struct.certs_by_type, %struct.s2n_blob, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, i64, ptr, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, %struct.s2n_x509_trust_store, i16, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, i32, i32, ptr, ptr, i32, %struct.s2n_blob }
%struct.certs_by_type = type { [4 x ptr] }
%struct.s2n_x509_trust_store = type { ptr, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon, 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 }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_signature_scheme = type { i16, ptr, i32, i32, i8, i8, i16, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@async_pkey_op_called = external dso_local global i32, align 4
@async_pkey_op_performed = external dso_local global i32, align 4
@test_count = external dso_local global i32, align 4
@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [101 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [77 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [106 x i8], align 1
@test_type = external dso_local global i32, align 4
@.str.26 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [102 x i8], align 1
@_s2n_debug_info = external thread_local global %struct.s2n_debug_info, align 8
@.str.31 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @test_cipher_preferences(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) #0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca %struct.s2n_security_policy, align 8
  %19 = alloca %struct.s2n_cipher_preferences, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i64, align 8
  %25 = alloca i32, align 4
  %26 = alloca i64, align 8
  %27 = alloca i32, align 4
  %28 = alloca %struct.s2n_test_io_pair, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store i32 %3, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.s2n_config, ptr %55, i32 0, i32 7
  %57 = load ptr, ptr %56, align 8, !tbaa !11
  store ptr %57, ptr %10, align 8, !tbaa !5
  br label %58

58:                                               ; preds = %4
  %59 = load i32, ptr @test_count, align 4, !tbaa !9
  %60 = add nsw i32 %59, 1
  store i32 %60, ptr @test_count, align 4, !tbaa !9
  %61 = load ptr, ptr %10, align 8, !tbaa !5
  %62 = icmp eq ptr %61, null
  br i1 %62, label %63, label %116

63:                                               ; preds = %58
  br label %64

64:                                               ; preds = %63
  br label %65

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

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

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

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

111:                                              ; preds = %94, %77
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %112

112:                                              ; preds = %111
  br label %113

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

114:                                              ; No predecessors!
  br label %115

115:                                              ; preds = %114
  br label %116

116:                                              ; preds = %115, %58
  br label %117

117:                                              ; preds = %116
  br label %118

118:                                              ; preds = %117
  %119 = call zeroext i1 @s2n_is_in_fips_mode()
  br i1 %119, label %120, label %124

120:                                              ; preds = %118
  %121 = load ptr, ptr %10, align 8, !tbaa !5
  %122 = load ptr, ptr %7, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.s2n_config, ptr %122, i32 0, i32 7
  store ptr %121, ptr %123, align 8, !tbaa !11
  br label %124

124:                                              ; preds = %120, %118
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.s2n_security_policy, ptr %125, i32 0, i32 1
  %127 = load ptr, ptr %126, align 8, !tbaa !22
  store ptr %127, ptr %12, align 8, !tbaa !5
  br label %128

128:                                              ; preds = %124
  %129 = load i32, ptr @test_count, align 4, !tbaa !9
  %130 = add nsw i32 %129, 1
  store i32 %130, ptr @test_count, align 4, !tbaa !9
  %131 = load ptr, ptr %12, align 8, !tbaa !5
  %132 = icmp eq ptr %131, null
  br i1 %132, label %133, label %186

133:                                              ; preds = %128
  br label %134

134:                                              ; preds = %133
  br label %135

135:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %136 = call ptr @__errno_location() #10
  %137 = load i32, ptr %136, align 4, !tbaa !9
  store i32 %137, ptr %13, align 4, !tbaa !9
  %138 = load ptr, ptr @stderr, align 8, !tbaa !5
  %139 = call i32 @s2n_print_stacktrace(ptr noundef %138)
  %140 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %141 = trunc i8 %140 to i1
  br i1 %141, label %142, label %164

142:                                              ; preds = %135
  %143 = load ptr, ptr @stderr, align 8, !tbaa !5
  %144 = call i32 @fileno(ptr noundef %143) #9
  %145 = call i32 @isatty(i32 noundef %144) #9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %164

147:                                              ; preds = %142
  %148 = load i32, ptr %13, align 4, !tbaa !9
  %149 = call ptr @__errno_location() #10
  store i32 %148, ptr %149, align 4, !tbaa !9
  %150 = load ptr, ptr @stderr, align 8, !tbaa !5
  %151 = load i32, ptr @test_count, align 4, !tbaa !9
  %152 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = call ptr @s2n_strerror(i32 noundef %153, ptr noundef @.str.3)
  %155 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = call ptr @s2n_strerror_debug(i32 noundef %156, ptr noundef @.str.3)
  %158 = call ptr @__errno_location() #10
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = call ptr @strerror(i32 noundef %159) #9
  %161 = call ptr @__errno_location() #10
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %150, ptr noundef @.str, i32 noundef %151, ptr noundef @.str.5, ptr noundef @.str.2, i32 noundef 139, ptr noundef %154, ptr noundef %157, ptr noundef %160, i32 noundef %162) #9
  br label %181

164:                                              ; preds = %142, %135
  %165 = load i32, ptr %13, align 4, !tbaa !9
  %166 = call ptr @__errno_location() #10
  store i32 %165, ptr %166, align 4, !tbaa !9
  %167 = load ptr, ptr @stderr, align 8, !tbaa !5
  %168 = load i32, ptr @test_count, align 4, !tbaa !9
  %169 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = call ptr @s2n_strerror(i32 noundef %170, ptr noundef @.str.3)
  %172 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = call ptr @s2n_strerror_debug(i32 noundef %173, ptr noundef @.str.3)
  %175 = call ptr @__errno_location() #10
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = call ptr @strerror(i32 noundef %176) #9
  %178 = call ptr @__errno_location() #10
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %167, ptr noundef @.str.4, i32 noundef %168, ptr noundef @.str.5, ptr noundef @.str.2, i32 noundef 139, ptr noundef %171, ptr noundef %174, ptr noundef %177, i32 noundef %179) #9
  br label %181

181:                                              ; preds = %164, %147
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %182

182:                                              ; preds = %181
  br label %183

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

184:                                              ; No predecessors!
  br label %185

185:                                              ; preds = %184
  br label %186

186:                                              ; preds = %185, %128
  br label %187

187:                                              ; preds = %186
  br label %188

188:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %2152, %188
  %190 = load i32, ptr %14, align 4, !tbaa !9
  %191 = load ptr, ptr %12, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %191, i32 0, i32 0
  %193 = load i16, ptr %192, align 8, !tbaa !24
  %194 = zext i16 %193 to i32
  %195 = icmp slt i32 %190, %194
  br i1 %195, label %197, label %196

196:                                              ; preds = %189
  store i32 14, ptr %15, align 4
  br label %2155

197:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %198 = load ptr, ptr %12, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %198, i32 0, i32 1
  %200 = load ptr, ptr %199, align 8, !tbaa !26
  %201 = load i32, ptr %14, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds ptr, ptr %200, i64 %202
  %204 = load ptr, ptr %203, align 8, !tbaa !5
  store ptr %204, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #9
  store i8 0, ptr %17, align 1, !tbaa !27
  %205 = load ptr, ptr %16, align 8, !tbaa !5
  %206 = load i8, ptr %205, align 8
  %207 = and i8 %206, 1
  %208 = zext i8 %207 to i32
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %211, label %210

210:                                              ; preds = %197
  store i8 1, ptr %17, align 1, !tbaa !27
  br label %211

211:                                              ; preds = %210, %197
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %212 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %212, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %213 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %213, ptr %21, align 8, !tbaa !5
  br label %214

214:                                              ; preds = %211
  %215 = load i32, ptr @test_count, align 4, !tbaa !9
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr @test_count, align 4, !tbaa !9
  %217 = load ptr, ptr %20, align 8, !tbaa !5
  %218 = icmp eq ptr %217, null
  br i1 %218, label %219, label %272

219:                                              ; preds = %214
  br label %220

220:                                              ; preds = %219
  br label %221

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

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

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

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

267:                                              ; preds = %250, %233
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %268

268:                                              ; preds = %267
  br label %269

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

270:                                              ; No predecessors!
  br label %271

271:                                              ; preds = %270
  br label %272

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

273:                                              ; preds = %272
  br label %274

274:                                              ; preds = %273
  br label %275

275:                                              ; preds = %274
  %276 = load i32, ptr @test_count, align 4, !tbaa !9
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr @test_count, align 4, !tbaa !9
  %278 = load ptr, ptr %21, align 8, !tbaa !5
  %279 = icmp eq ptr %278, null
  br i1 %279, label %280, label %333

280:                                              ; preds = %275
  br label %281

281:                                              ; preds = %280
  br label %282

282:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %283 = call ptr @__errno_location() #10
  %284 = load i32, ptr %283, align 4, !tbaa !9
  store i32 %284, ptr %23, align 4, !tbaa !9
  %285 = load ptr, ptr @stderr, align 8, !tbaa !5
  %286 = call i32 @s2n_print_stacktrace(ptr noundef %285)
  %287 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %288 = trunc i8 %287 to i1
  br i1 %288, label %289, label %311

289:                                              ; preds = %282
  %290 = load ptr, ptr @stderr, align 8, !tbaa !5
  %291 = call i32 @fileno(ptr noundef %290) #9
  %292 = call i32 @isatty(i32 noundef %291) #9
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %311

294:                                              ; preds = %289
  %295 = load i32, ptr %23, align 4, !tbaa !9
  %296 = call ptr @__errno_location() #10
  store i32 %295, ptr %296, align 4, !tbaa !9
  %297 = load ptr, ptr @stderr, align 8, !tbaa !5
  %298 = load i32, ptr @test_count, align 4, !tbaa !9
  %299 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = call ptr @s2n_strerror(i32 noundef %300, ptr noundef @.str.3)
  %302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = call ptr @s2n_strerror_debug(i32 noundef %303, ptr noundef @.str.3)
  %305 = call ptr @__errno_location() #10
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = call ptr @strerror(i32 noundef %306) #9
  %308 = call ptr @__errno_location() #10
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %297, ptr noundef @.str, i32 noundef %298, ptr noundef @.str.7, ptr noundef @.str.2, i32 noundef 159, ptr noundef %301, ptr noundef %304, ptr noundef %307, i32 noundef %309) #9
  br label %328

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

328:                                              ; preds = %311, %294
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %329

329:                                              ; preds = %328
  br label %330

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

331:                                              ; No predecessors!
  br label %332

332:                                              ; preds = %331
  br label %333

333:                                              ; preds = %332, %275
  br label %334

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  store i64 24, ptr %24, align 8, !tbaa !28
  %337 = load i64, ptr %24, align 8, !tbaa !28
  %338 = icmp ne i64 %337, 0
  br i1 %338, label %339, label %397

339:                                              ; preds = %336
  %340 = load ptr, ptr %12, align 8, !tbaa !5
  %341 = load i64, ptr %24, align 8, !tbaa !28
  call void @llvm.memmove.p0.p0.i64(ptr align 8 %19, ptr align 8 %340, i64 %341, i1 false)
  %342 = icmp eq ptr %19, null
  br i1 %342, label %343, label %396

343:                                              ; preds = %339
  br label %344

344:                                              ; preds = %343
  br label %345

345:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %346 = call ptr @__errno_location() #10
  %347 = load i32, ptr %346, align 4, !tbaa !9
  store i32 %347, ptr %25, align 4, !tbaa !9
  %348 = load ptr, ptr @stderr, align 8, !tbaa !5
  %349 = call i32 @s2n_print_stacktrace(ptr noundef %348)
  %350 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %351 = trunc i8 %350 to i1
  br i1 %351, label %352, label %374

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

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

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

391:                                              ; preds = %374, %357
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %392

392:                                              ; preds = %391
  br label %393

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

394:                                              ; No predecessors!
  br label %395

395:                                              ; preds = %394
  br label %396

396:                                              ; preds = %395, %339
  br label %397

397:                                              ; preds = %396, %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398
  %400 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %19, i32 0, i32 0
  store i16 1, ptr %400, align 8, !tbaa !24
  %401 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %19, i32 0, i32 1
  store ptr %16, ptr %401, align 8, !tbaa !26
  br label %402

402:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  store i64 64, ptr %26, align 8, !tbaa !28
  %403 = load i64, ptr %26, align 8, !tbaa !28
  %404 = icmp ne i64 %403, 0
  br i1 %404, label %405, label %463

405:                                              ; preds = %402
  %406 = load ptr, ptr %10, align 8, !tbaa !5
  %407 = load i64, ptr %26, align 8, !tbaa !28
  call void @llvm.memmove.p0.p0.i64(ptr align 8 %18, ptr align 8 %406, i64 %407, i1 false)
  %408 = icmp eq ptr %18, null
  br i1 %408, label %409, label %462

409:                                              ; preds = %405
  br label %410

410:                                              ; preds = %409
  br label %411

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

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

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

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

457:                                              ; preds = %440, %423
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %458

458:                                              ; preds = %457
  br label %459

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

460:                                              ; No predecessors!
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461, %405
  br label %463

463:                                              ; preds = %462, %402
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %464

464:                                              ; preds = %463
  br label %465

465:                                              ; preds = %464
  %466 = getelementptr inbounds %struct.s2n_security_policy, ptr %18, i32 0, i32 1
  store ptr %19, ptr %466, align 8, !tbaa !22
  %467 = load ptr, ptr %21, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.s2n_connection, ptr %467, i32 0, i32 2
  store ptr %18, ptr %468, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  br label %469

469:                                              ; preds = %465
  %470 = load i32, ptr @test_count, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr @test_count, align 4, !tbaa !9
  %472 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef %28)
  %473 = icmp eq i32 %472, -1
  br i1 %473, label %474, label %527

474:                                              ; preds = %469
  br label %475

475:                                              ; preds = %474
  br label %476

476:                                              ; preds = %475
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %477 = call ptr @__errno_location() #10
  %478 = load i32, ptr %477, align 4, !tbaa !9
  store i32 %478, ptr %29, align 4, !tbaa !9
  %479 = load ptr, ptr @stderr, align 8, !tbaa !5
  %480 = call i32 @s2n_print_stacktrace(ptr noundef %479)
  %481 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %482 = trunc i8 %481 to i1
  br i1 %482, label %483, label %505

483:                                              ; preds = %476
  %484 = load ptr, ptr @stderr, align 8, !tbaa !5
  %485 = call i32 @fileno(ptr noundef %484) #9
  %486 = call i32 @isatty(i32 noundef %485) #9
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %488, label %505

488:                                              ; preds = %483
  %489 = load i32, ptr %29, align 4, !tbaa !9
  %490 = call ptr @__errno_location() #10
  store i32 %489, ptr %490, align 4, !tbaa !9
  %491 = load ptr, ptr @stderr, align 8, !tbaa !5
  %492 = load i32, ptr @test_count, align 4, !tbaa !9
  %493 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = call ptr @s2n_strerror(i32 noundef %494, ptr noundef @.str.3)
  %496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %497 = load i32, ptr %496, align 4, !tbaa !9
  %498 = call ptr @s2n_strerror_debug(i32 noundef %497, ptr noundef @.str.3)
  %499 = call ptr @__errno_location() #10
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = call ptr @strerror(i32 noundef %500) #9
  %502 = call ptr @__errno_location() #10
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %491, ptr noundef @.str, i32 noundef %492, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 173, ptr noundef %495, ptr noundef %498, ptr noundef %501, i32 noundef %503) #9
  br label %522

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

522:                                              ; preds = %505, %488
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  br label %523

523:                                              ; preds = %522
  br label %524

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

525:                                              ; No predecessors!
  br label %526

526:                                              ; preds = %525
  br label %527

527:                                              ; preds = %526, %469
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  br label %530

530:                                              ; preds = %529
  %531 = load i32, ptr @test_count, align 4, !tbaa !9
  %532 = add nsw i32 %531, 1
  store i32 %532, ptr @test_count, align 4, !tbaa !9
  %533 = load ptr, ptr %20, align 8, !tbaa !5
  %534 = call i32 @s2n_connection_set_io_pair(ptr noundef %533, ptr noundef %28)
  %535 = icmp eq i32 %534, -1
  br i1 %535, label %536, label %589

536:                                              ; preds = %530
  br label %537

537:                                              ; preds = %536
  br label %538

538:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  %539 = call ptr @__errno_location() #10
  %540 = load i32, ptr %539, align 4, !tbaa !9
  store i32 %540, ptr %30, align 4, !tbaa !9
  %541 = load ptr, ptr @stderr, align 8, !tbaa !5
  %542 = call i32 @s2n_print_stacktrace(ptr noundef %541)
  %543 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %544 = trunc i8 %543 to i1
  br i1 %544, label %545, label %567

545:                                              ; preds = %538
  %546 = load ptr, ptr @stderr, align 8, !tbaa !5
  %547 = call i32 @fileno(ptr noundef %546) #9
  %548 = call i32 @isatty(i32 noundef %547) #9
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %567

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

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

584:                                              ; preds = %567, %550
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  br label %585

585:                                              ; preds = %584
  br label %586

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

587:                                              ; No predecessors!
  br label %588

588:                                              ; preds = %587
  br label %589

589:                                              ; preds = %588, %530
  br label %590

590:                                              ; preds = %589
  br label %591

591:                                              ; preds = %590
  br label %592

592:                                              ; preds = %591
  %593 = load i32, ptr @test_count, align 4, !tbaa !9
  %594 = add nsw i32 %593, 1
  store i32 %594, ptr @test_count, align 4, !tbaa !9
  %595 = load ptr, ptr %20, align 8, !tbaa !5
  %596 = load ptr, ptr %7, align 8, !tbaa !5
  %597 = call i32 @s2n_connection_set_config(ptr noundef %595, ptr noundef %596)
  %598 = icmp eq i32 %597, -1
  br i1 %598, label %599, label %652

599:                                              ; preds = %592
  br label %600

600:                                              ; preds = %599
  br label %601

601:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %602 = call ptr @__errno_location() #10
  %603 = load i32, ptr %602, align 4, !tbaa !9
  store i32 %603, ptr %31, align 4, !tbaa !9
  %604 = load ptr, ptr @stderr, align 8, !tbaa !5
  %605 = call i32 @s2n_print_stacktrace(ptr noundef %604)
  %606 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %607 = trunc i8 %606 to i1
  br i1 %607, label %608, label %630

608:                                              ; preds = %601
  %609 = load ptr, ptr @stderr, align 8, !tbaa !5
  %610 = call i32 @fileno(ptr noundef %609) #9
  %611 = call i32 @isatty(i32 noundef %610) #9
  %612 = icmp ne i32 %611, 0
  br i1 %612, label %613, label %630

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

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

647:                                              ; preds = %630, %613
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %648

648:                                              ; preds = %647
  br label %649

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

650:                                              ; No predecessors!
  br label %651

651:                                              ; preds = %650
  br label %652

652:                                              ; preds = %651, %592
  br label %653

653:                                              ; preds = %652
  br label %654

654:                                              ; preds = %653
  br label %655

655:                                              ; preds = %654
  %656 = load i32, ptr @test_count, align 4, !tbaa !9
  %657 = add nsw i32 %656, 1
  store i32 %657, ptr @test_count, align 4, !tbaa !9
  %658 = load ptr, ptr %21, align 8, !tbaa !5
  %659 = call i32 @s2n_connection_set_io_pair(ptr noundef %658, ptr noundef %28)
  %660 = icmp eq i32 %659, -1
  br i1 %660, label %661, label %714

661:                                              ; preds = %655
  br label %662

662:                                              ; preds = %661
  br label %663

663:                                              ; preds = %662
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %664 = call ptr @__errno_location() #10
  %665 = load i32, ptr %664, align 4, !tbaa !9
  store i32 %665, ptr %32, align 4, !tbaa !9
  %666 = load ptr, ptr @stderr, align 8, !tbaa !5
  %667 = call i32 @s2n_print_stacktrace(ptr noundef %666)
  %668 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %669 = trunc i8 %668 to i1
  br i1 %669, label %670, label %692

670:                                              ; preds = %663
  %671 = load ptr, ptr @stderr, align 8, !tbaa !5
  %672 = call i32 @fileno(ptr noundef %671) #9
  %673 = call i32 @isatty(i32 noundef %672) #9
  %674 = icmp ne i32 %673, 0
  br i1 %674, label %675, label %692

675:                                              ; preds = %670
  %676 = load i32, ptr %32, align 4, !tbaa !9
  %677 = call ptr @__errno_location() #10
  store i32 %676, ptr %677, align 4, !tbaa !9
  %678 = load ptr, ptr @stderr, align 8, !tbaa !5
  %679 = load i32, ptr @test_count, align 4, !tbaa !9
  %680 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %681 = load i32, ptr %680, align 4, !tbaa !9
  %682 = call ptr @s2n_strerror(i32 noundef %681, ptr noundef @.str.3)
  %683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = call ptr @s2n_strerror_debug(i32 noundef %684, ptr noundef @.str.3)
  %686 = call ptr @__errno_location() #10
  %687 = load i32, ptr %686, align 4, !tbaa !9
  %688 = call ptr @strerror(i32 noundef %687) #9
  %689 = call ptr @__errno_location() #10
  %690 = load i32, ptr %689, align 4, !tbaa !9
  %691 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %678, ptr noundef @.str, i32 noundef %679, ptr noundef @.str.13, ptr noundef @.str.2, i32 noundef 178, ptr noundef %682, ptr noundef %685, ptr noundef %688, i32 noundef %690) #9
  br label %709

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

709:                                              ; preds = %692, %675
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %710

710:                                              ; preds = %709
  br label %711

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

712:                                              ; No predecessors!
  br label %713

713:                                              ; preds = %712
  br label %714

714:                                              ; preds = %713, %655
  br label %715

715:                                              ; preds = %714
  br label %716

716:                                              ; preds = %715
  br label %717

717:                                              ; preds = %716
  %718 = load i32, ptr @test_count, align 4, !tbaa !9
  %719 = add nsw i32 %718, 1
  store i32 %719, ptr @test_count, align 4, !tbaa !9
  %720 = load ptr, ptr %21, align 8, !tbaa !5
  %721 = load ptr, ptr %6, align 8, !tbaa !5
  %722 = call i32 @s2n_connection_set_config(ptr noundef %720, ptr noundef %721)
  %723 = icmp eq i32 %722, -1
  br i1 %723, label %724, label %777

724:                                              ; preds = %717
  br label %725

725:                                              ; preds = %724
  br label %726

726:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  %727 = call ptr @__errno_location() #10
  %728 = load i32, ptr %727, align 4, !tbaa !9
  store i32 %728, ptr %33, align 4, !tbaa !9
  %729 = load ptr, ptr @stderr, align 8, !tbaa !5
  %730 = call i32 @s2n_print_stacktrace(ptr noundef %729)
  %731 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %732 = trunc i8 %731 to i1
  br i1 %732, label %733, label %755

733:                                              ; preds = %726
  %734 = load ptr, ptr @stderr, align 8, !tbaa !5
  %735 = call i32 @fileno(ptr noundef %734) #9
  %736 = call i32 @isatty(i32 noundef %735) #9
  %737 = icmp ne i32 %736, 0
  br i1 %737, label %738, label %755

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

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

772:                                              ; preds = %755, %738
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %773

773:                                              ; preds = %772
  br label %774

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

775:                                              ; No predecessors!
  br label %776

776:                                              ; preds = %775
  br label %777

777:                                              ; preds = %776, %717
  br label %778

778:                                              ; preds = %777
  br label %779

779:                                              ; preds = %778
  store i32 0, ptr @async_pkey_op_called, align 4, !tbaa !9
  store i32 0, ptr @async_pkey_op_performed, align 4, !tbaa !9
  %780 = load i8, ptr %17, align 1, !tbaa !27
  %781 = icmp ne i8 %780, 0
  br i1 %781, label %1673, label %782

782:                                              ; preds = %779
  br label %783

783:                                              ; preds = %782
  %784 = load ptr, ptr %21, align 8, !tbaa !5
  %785 = load ptr, ptr %20, align 8, !tbaa !5
  %786 = call i32 @try_handshake(ptr noundef %784, ptr noundef %785)
  %787 = icmp sgt i32 %786, -1
  br i1 %787, label %789, label %788

788:                                              ; preds = %783
  store i32 -1, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %2149

789:                                              ; preds = %783
  br label %790

790:                                              ; preds = %789
  br label %791

791:                                              ; preds = %790
  br label %792

792:                                              ; preds = %791
  %793 = load i32, ptr @test_count, align 4, !tbaa !9
  %794 = add nsw i32 %793, 1
  store i32 %794, ptr @test_count, align 4, !tbaa !9
  %795 = load ptr, ptr %21, align 8, !tbaa !5
  %796 = call ptr @s2n_connection_get_cipher(ptr noundef %795)
  %797 = load ptr, ptr %16, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %797, i32 0, i32 1
  %799 = load ptr, ptr %798, align 8, !tbaa !53
  %800 = call i32 @strcmp(ptr noundef %796, ptr noundef %799) #12
  %801 = icmp eq i32 %800, 0
  br i1 %801, label %855, label %802

802:                                              ; preds = %792
  br label %803

803:                                              ; preds = %802
  br label %804

804:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  %805 = call ptr @__errno_location() #10
  %806 = load i32, ptr %805, align 4, !tbaa !9
  store i32 %806, ptr %34, align 4, !tbaa !9
  %807 = load ptr, ptr @stderr, align 8, !tbaa !5
  %808 = call i32 @s2n_print_stacktrace(ptr noundef %807)
  %809 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %810 = trunc i8 %809 to i1
  br i1 %810, label %811, label %833

811:                                              ; preds = %804
  %812 = load ptr, ptr @stderr, align 8, !tbaa !5
  %813 = call i32 @fileno(ptr noundef %812) #9
  %814 = call i32 @isatty(i32 noundef %813) #9
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %816, label %833

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

833:                                              ; preds = %811, %804
  %834 = load i32, ptr %34, align 4, !tbaa !9
  %835 = call ptr @__errno_location() #10
  store i32 %834, ptr %835, align 4, !tbaa !9
  %836 = load ptr, ptr @stderr, align 8, !tbaa !5
  %837 = load i32, ptr @test_count, align 4, !tbaa !9
  %838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %839 = load i32, ptr %838, align 4, !tbaa !9
  %840 = call ptr @s2n_strerror(i32 noundef %839, ptr noundef @.str.3)
  %841 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %842 = load i32, ptr %841, align 4, !tbaa !9
  %843 = call ptr @s2n_strerror_debug(i32 noundef %842, ptr noundef @.str.3)
  %844 = call ptr @__errno_location() #10
  %845 = load i32, ptr %844, align 4, !tbaa !9
  %846 = call ptr @strerror(i32 noundef %845) #9
  %847 = call ptr @__errno_location() #10
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %836, ptr noundef @.str.4, i32 noundef %837, ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 188, ptr noundef %840, ptr noundef %843, ptr noundef %846, i32 noundef %848) #9
  br label %850

850:                                              ; preds = %833, %816
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  br label %851

851:                                              ; preds = %850
  br label %852

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

853:                                              ; No predecessors!
  br label %854

854:                                              ; preds = %853
  br label %855

855:                                              ; preds = %854, %792
  br label %856

856:                                              ; preds = %855
  br label %857

857:                                              ; preds = %856
  br label %858

858:                                              ; preds = %857
  %859 = load i32, ptr @test_count, align 4, !tbaa !9
  %860 = add nsw i32 %859, 1
  store i32 %860, ptr @test_count, align 4, !tbaa !9
  %861 = load ptr, ptr %21, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.s2n_connection, ptr %861, i32 0, i32 32
  %863 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %862, i32 0, i32 7
  %864 = load ptr, ptr %863, align 8, !tbaa !55
  %865 = load ptr, ptr %8, align 8, !tbaa !5
  %866 = icmp eq ptr %864, %865
  br i1 %866, label %920, label %867

867:                                              ; preds = %858
  br label %868

868:                                              ; preds = %867
  br label %869

869:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  %870 = call ptr @__errno_location() #10
  %871 = load i32, ptr %870, align 4, !tbaa !9
  store i32 %871, ptr %35, align 4, !tbaa !9
  %872 = load ptr, ptr @stderr, align 8, !tbaa !5
  %873 = call i32 @s2n_print_stacktrace(ptr noundef %872)
  %874 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %875 = trunc i8 %874 to i1
  br i1 %875, label %876, label %898

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

881:                                              ; preds = %876
  %882 = load i32, ptr %35, align 4, !tbaa !9
  %883 = call ptr @__errno_location() #10
  store i32 %882, ptr %883, align 4, !tbaa !9
  %884 = load ptr, ptr @stderr, align 8, !tbaa !5
  %885 = load i32, ptr @test_count, align 4, !tbaa !9
  %886 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %887 = load i32, ptr %886, align 4, !tbaa !9
  %888 = call ptr @s2n_strerror(i32 noundef %887, ptr noundef @.str.3)
  %889 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %890 = load i32, ptr %889, align 4, !tbaa !9
  %891 = call ptr @s2n_strerror_debug(i32 noundef %890, ptr noundef @.str.3)
  %892 = call ptr @__errno_location() #10
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = call ptr @strerror(i32 noundef %893) #9
  %895 = call ptr @__errno_location() #10
  %896 = load i32, ptr %895, align 4, !tbaa !9
  %897 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %884, ptr noundef @.str, i32 noundef %885, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 190, ptr noundef %888, ptr noundef %891, ptr noundef %894, i32 noundef %896) #9
  br label %915

898:                                              ; preds = %876, %869
  %899 = load i32, ptr %35, align 4, !tbaa !9
  %900 = call ptr @__errno_location() #10
  store i32 %899, ptr %900, align 4, !tbaa !9
  %901 = load ptr, ptr @stderr, align 8, !tbaa !5
  %902 = load i32, ptr @test_count, align 4, !tbaa !9
  %903 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %904 = load i32, ptr %903, align 4, !tbaa !9
  %905 = call ptr @s2n_strerror(i32 noundef %904, ptr noundef @.str.3)
  %906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %907 = load i32, ptr %906, align 4, !tbaa !9
  %908 = call ptr @s2n_strerror_debug(i32 noundef %907, ptr noundef @.str.3)
  %909 = call ptr @__errno_location() #10
  %910 = load i32, ptr %909, align 4, !tbaa !9
  %911 = call ptr @strerror(i32 noundef %910) #9
  %912 = call ptr @__errno_location() #10
  %913 = load i32, ptr %912, align 4, !tbaa !9
  %914 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %901, ptr noundef @.str.4, i32 noundef %902, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 190, ptr noundef %905, ptr noundef %908, ptr noundef %911, i32 noundef %913) #9
  br label %915

915:                                              ; preds = %898, %881
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  br label %916

916:                                              ; preds = %915
  br label %917

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

918:                                              ; No predecessors!
  br label %919

919:                                              ; preds = %918
  br label %920

920:                                              ; preds = %919, %858
  br label %921

921:                                              ; preds = %920
  br label %922

922:                                              ; preds = %921
  br label %923

923:                                              ; preds = %922
  %924 = load i32, ptr @test_count, align 4, !tbaa !9
  %925 = add nsw i32 %924, 1
  store i32 %925, ptr @test_count, align 4, !tbaa !9
  %926 = load ptr, ptr %21, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.s2n_connection, ptr %926, i32 0, i32 32
  %928 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %927, i32 0, i32 5
  %929 = load ptr, ptr %928, align 8, !tbaa !56
  %930 = icmp eq ptr %929, null
  br i1 %930, label %931, label %984

931:                                              ; preds = %923
  br label %932

932:                                              ; preds = %931
  br label %933

933:                                              ; preds = %932
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  %934 = call ptr @__errno_location() #10
  %935 = load i32, ptr %934, align 4, !tbaa !9
  store i32 %935, ptr %36, align 4, !tbaa !9
  %936 = load ptr, ptr @stderr, align 8, !tbaa !5
  %937 = call i32 @s2n_print_stacktrace(ptr noundef %936)
  %938 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %939 = trunc i8 %938 to i1
  br i1 %939, label %940, label %962

940:                                              ; preds = %933
  %941 = load ptr, ptr @stderr, align 8, !tbaa !5
  %942 = call i32 @fileno(ptr noundef %941) #9
  %943 = call i32 @isatty(i32 noundef %942) #9
  %944 = icmp ne i32 %943, 0
  br i1 %944, label %945, label %962

945:                                              ; preds = %940
  %946 = load i32, ptr %36, align 4, !tbaa !9
  %947 = call ptr @__errno_location() #10
  store i32 %946, ptr %947, align 4, !tbaa !9
  %948 = load ptr, ptr @stderr, align 8, !tbaa !5
  %949 = load i32, ptr @test_count, align 4, !tbaa !9
  %950 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %951 = load i32, ptr %950, align 4, !tbaa !9
  %952 = call ptr @s2n_strerror(i32 noundef %951, ptr noundef @.str.3)
  %953 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %954 = load i32, ptr %953, align 4, !tbaa !9
  %955 = call ptr @s2n_strerror_debug(i32 noundef %954, ptr noundef @.str.3)
  %956 = call ptr @__errno_location() #10
  %957 = load i32, ptr %956, align 4, !tbaa !9
  %958 = call ptr @strerror(i32 noundef %957) #9
  %959 = call ptr @__errno_location() #10
  %960 = load i32, ptr %959, align 4, !tbaa !9
  %961 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %948, ptr noundef @.str, i32 noundef %949, ptr noundef @.str.17, ptr noundef @.str.2, i32 noundef 191, ptr noundef %952, ptr noundef %955, ptr noundef %958, i32 noundef %960) #9
  br label %979

962:                                              ; preds = %940, %933
  %963 = load i32, ptr %36, align 4, !tbaa !9
  %964 = call ptr @__errno_location() #10
  store i32 %963, ptr %964, align 4, !tbaa !9
  %965 = load ptr, ptr @stderr, align 8, !tbaa !5
  %966 = load i32, ptr @test_count, align 4, !tbaa !9
  %967 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %968 = load i32, ptr %967, align 4, !tbaa !9
  %969 = call ptr @s2n_strerror(i32 noundef %968, ptr noundef @.str.3)
  %970 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %971 = load i32, ptr %970, align 4, !tbaa !9
  %972 = call ptr @s2n_strerror_debug(i32 noundef %971, ptr noundef @.str.3)
  %973 = call ptr @__errno_location() #10
  %974 = load i32, ptr %973, align 4, !tbaa !9
  %975 = call ptr @strerror(i32 noundef %974) #9
  %976 = call ptr @__errno_location() #10
  %977 = load i32, ptr %976, align 4, !tbaa !9
  %978 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %965, ptr noundef @.str.4, i32 noundef %966, ptr noundef @.str.17, ptr noundef @.str.2, i32 noundef 191, ptr noundef %969, ptr noundef %972, ptr noundef %975, i32 noundef %977) #9
  br label %979

979:                                              ; preds = %962, %945
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  br label %980

980:                                              ; preds = %979
  br label %981

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

982:                                              ; No predecessors!
  br label %983

983:                                              ; preds = %982
  br label %984

984:                                              ; preds = %983, %923
  br label %985

985:                                              ; preds = %984
  br label %986

986:                                              ; preds = %985
  br label %987

987:                                              ; preds = %986
  %988 = load i32, ptr @test_count, align 4, !tbaa !9
  %989 = add nsw i32 %988, 1
  store i32 %989, ptr @test_count, align 4, !tbaa !9
  %990 = load ptr, ptr %21, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.s2n_connection, ptr %990, i32 0, i32 32
  %992 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %991, i32 0, i32 5
  %993 = load ptr, ptr %992, align 8, !tbaa !56
  %994 = getelementptr inbounds %struct.s2n_signature_scheme, ptr %993, i32 0, i32 3
  %995 = load i32, ptr %994, align 4, !tbaa !57
  %996 = load i32, ptr %9, align 4, !tbaa !9
  %997 = icmp eq i32 %995, %996
  br i1 %997, label %1051, label %998

998:                                              ; preds = %987
  br label %999

999:                                              ; preds = %998
  br label %1000

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

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

1012:                                             ; preds = %1007
  %1013 = load i32, ptr %37, align 4, !tbaa !9
  %1014 = call ptr @__errno_location() #10
  store i32 %1013, ptr %1014, align 4, !tbaa !9
  %1015 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1016 = load i32, ptr @test_count, align 4, !tbaa !9
  %1017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1018 = load i32, ptr %1017, align 4, !tbaa !9
  %1019 = call ptr @s2n_strerror(i32 noundef %1018, ptr noundef @.str.3)
  %1020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  %1022 = call ptr @s2n_strerror_debug(i32 noundef %1021, ptr noundef @.str.3)
  %1023 = call ptr @__errno_location() #10
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  %1025 = call ptr @strerror(i32 noundef %1024) #9
  %1026 = call ptr @__errno_location() #10
  %1027 = load i32, ptr %1026, align 4, !tbaa !9
  %1028 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1015, ptr noundef @.str, i32 noundef %1016, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 192, ptr noundef %1019, ptr noundef %1022, ptr noundef %1025, i32 noundef %1027) #9
  br label %1046

1029:                                             ; preds = %1007, %1000
  %1030 = load i32, ptr %37, align 4, !tbaa !9
  %1031 = call ptr @__errno_location() #10
  store i32 %1030, ptr %1031, align 4, !tbaa !9
  %1032 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1033 = load i32, ptr @test_count, align 4, !tbaa !9
  %1034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1035 = load i32, ptr %1034, align 4, !tbaa !9
  %1036 = call ptr @s2n_strerror(i32 noundef %1035, ptr noundef @.str.3)
  %1037 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1038 = load i32, ptr %1037, align 4, !tbaa !9
  %1039 = call ptr @s2n_strerror_debug(i32 noundef %1038, ptr noundef @.str.3)
  %1040 = call ptr @__errno_location() #10
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = call ptr @strerror(i32 noundef %1041) #9
  %1043 = call ptr @__errno_location() #10
  %1044 = load i32, ptr %1043, align 4, !tbaa !9
  %1045 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1032, ptr noundef @.str.4, i32 noundef %1033, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 192, ptr noundef %1036, ptr noundef %1039, ptr noundef %1042, i32 noundef %1044) #9
  br label %1046

1046:                                             ; preds = %1029, %1012
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %1047

1047:                                             ; preds = %1046
  br label %1048

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

1049:                                             ; No predecessors!
  br label %1050

1050:                                             ; preds = %1049
  br label %1051

1051:                                             ; preds = %1050, %987
  br label %1052

1052:                                             ; preds = %1051
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

1054:                                             ; preds = %1053
  %1055 = load i32, ptr @test_count, align 4, !tbaa !9
  %1056 = add nsw i32 %1055, 1
  store i32 %1056, ptr @test_count, align 4, !tbaa !9
  %1057 = load ptr, ptr %21, align 8, !tbaa !5
  %1058 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef %1057, i32 noundef 1)
  br i1 %1058, label %1112, label %1059

1059:                                             ; preds = %1054
  br label %1060

1060:                                             ; preds = %1059
  br label %1061

1061:                                             ; preds = %1060
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  %1062 = call ptr @__errno_location() #10
  %1063 = load i32, ptr %1062, align 4, !tbaa !9
  store i32 %1063, ptr %38, align 4, !tbaa !9
  %1064 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1065 = call i32 @s2n_print_stacktrace(ptr noundef %1064)
  %1066 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1067 = trunc i8 %1066 to i1
  br i1 %1067, label %1068, label %1090

1068:                                             ; preds = %1061
  %1069 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1070 = call i32 @fileno(ptr noundef %1069) #9
  %1071 = call i32 @isatty(i32 noundef %1070) #9
  %1072 = icmp ne i32 %1071, 0
  br i1 %1072, label %1073, label %1090

1073:                                             ; preds = %1068
  %1074 = load i32, ptr %38, align 4, !tbaa !9
  %1075 = call ptr @__errno_location() #10
  store i32 %1074, ptr %1075, align 4, !tbaa !9
  %1076 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1077 = load i32, ptr @test_count, align 4, !tbaa !9
  %1078 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = call ptr @s2n_strerror(i32 noundef %1079, ptr noundef @.str.3)
  %1081 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1082 = load i32, ptr %1081, align 4, !tbaa !9
  %1083 = call ptr @s2n_strerror_debug(i32 noundef %1082, ptr noundef @.str.3)
  %1084 = call ptr @__errno_location() #10
  %1085 = load i32, ptr %1084, align 4, !tbaa !9
  %1086 = call ptr @strerror(i32 noundef %1085) #9
  %1087 = call ptr @__errno_location() #10
  %1088 = load i32, ptr %1087, align 4, !tbaa !9
  %1089 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1076, ptr noundef @.str, i32 noundef %1077, ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 194, ptr noundef %1080, ptr noundef %1083, ptr noundef %1086, i32 noundef %1088) #9
  br label %1107

1090:                                             ; preds = %1068, %1061
  %1091 = load i32, ptr %38, align 4, !tbaa !9
  %1092 = call ptr @__errno_location() #10
  store i32 %1091, ptr %1092, align 4, !tbaa !9
  %1093 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1094 = load i32, ptr @test_count, align 4, !tbaa !9
  %1095 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1096 = load i32, ptr %1095, align 4, !tbaa !9
  %1097 = call ptr @s2n_strerror(i32 noundef %1096, ptr noundef @.str.3)
  %1098 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1099 = load i32, ptr %1098, align 4, !tbaa !9
  %1100 = call ptr @s2n_strerror_debug(i32 noundef %1099, ptr noundef @.str.3)
  %1101 = call ptr @__errno_location() #10
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  %1103 = call ptr @strerror(i32 noundef %1102) #9
  %1104 = call ptr @__errno_location() #10
  %1105 = load i32, ptr %1104, align 4, !tbaa !9
  %1106 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1093, ptr noundef @.str.4, i32 noundef %1094, ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 194, ptr noundef %1097, ptr noundef %1100, ptr noundef %1103, i32 noundef %1105) #9
  br label %1107

1107:                                             ; preds = %1090, %1073
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  br label %1108

1108:                                             ; preds = %1107
  br label %1109

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

1110:                                             ; No predecessors!
  br label %1111

1111:                                             ; preds = %1110
  br label %1112

1112:                                             ; preds = %1111, %1054
  br label %1113

1113:                                             ; preds = %1112
  br label %1114

1114:                                             ; preds = %1113
  br label %1115

1115:                                             ; preds = %1114
  %1116 = load i32, ptr @test_count, align 4, !tbaa !9
  %1117 = add nsw i32 %1116, 1
  store i32 %1117, ptr @test_count, align 4, !tbaa !9
  %1118 = load ptr, ptr %20, align 8, !tbaa !5
  %1119 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef %1118, i32 noundef 1)
  br i1 %1119, label %1173, label %1120

1120:                                             ; preds = %1115
  br label %1121

1121:                                             ; preds = %1120
  br label %1122

1122:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  %1123 = call ptr @__errno_location() #10
  %1124 = load i32, ptr %1123, align 4, !tbaa !9
  store i32 %1124, ptr %39, align 4, !tbaa !9
  %1125 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1126 = call i32 @s2n_print_stacktrace(ptr noundef %1125)
  %1127 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1128 = trunc i8 %1127 to i1
  br i1 %1128, label %1129, label %1151

1129:                                             ; preds = %1122
  %1130 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1131 = call i32 @fileno(ptr noundef %1130) #9
  %1132 = call i32 @isatty(i32 noundef %1131) #9
  %1133 = icmp ne i32 %1132, 0
  br i1 %1133, label %1134, label %1151

1134:                                             ; preds = %1129
  %1135 = load i32, ptr %39, align 4, !tbaa !9
  %1136 = call ptr @__errno_location() #10
  store i32 %1135, ptr %1136, align 4, !tbaa !9
  %1137 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1138 = load i32, ptr @test_count, align 4, !tbaa !9
  %1139 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1140 = load i32, ptr %1139, align 4, !tbaa !9
  %1141 = call ptr @s2n_strerror(i32 noundef %1140, ptr noundef @.str.3)
  %1142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = call ptr @s2n_strerror_debug(i32 noundef %1143, ptr noundef @.str.3)
  %1145 = call ptr @__errno_location() #10
  %1146 = load i32, ptr %1145, align 4, !tbaa !9
  %1147 = call ptr @strerror(i32 noundef %1146) #9
  %1148 = call ptr @__errno_location() #10
  %1149 = load i32, ptr %1148, align 4, !tbaa !9
  %1150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1137, ptr noundef @.str, i32 noundef %1138, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 195, ptr noundef %1141, ptr noundef %1144, ptr noundef %1147, i32 noundef %1149) #9
  br label %1168

1151:                                             ; preds = %1129, %1122
  %1152 = load i32, ptr %39, align 4, !tbaa !9
  %1153 = call ptr @__errno_location() #10
  store i32 %1152, ptr %1153, align 4, !tbaa !9
  %1154 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1155 = load i32, ptr @test_count, align 4, !tbaa !9
  %1156 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1157 = load i32, ptr %1156, align 4, !tbaa !9
  %1158 = call ptr @s2n_strerror(i32 noundef %1157, ptr noundef @.str.3)
  %1159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1160 = load i32, ptr %1159, align 4, !tbaa !9
  %1161 = call ptr @s2n_strerror_debug(i32 noundef %1160, ptr noundef @.str.3)
  %1162 = call ptr @__errno_location() #10
  %1163 = load i32, ptr %1162, align 4, !tbaa !9
  %1164 = call ptr @strerror(i32 noundef %1163) #9
  %1165 = call ptr @__errno_location() #10
  %1166 = load i32, ptr %1165, align 4, !tbaa !9
  %1167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1154, ptr noundef @.str.4, i32 noundef %1155, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 195, ptr noundef %1158, ptr noundef %1161, ptr noundef %1164, i32 noundef %1166) #9
  br label %1168

1168:                                             ; preds = %1151, %1134
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  br label %1169

1169:                                             ; preds = %1168
  br label %1170

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

1171:                                             ; No predecessors!
  br label %1172

1172:                                             ; preds = %1171
  br label %1173

1173:                                             ; preds = %1172, %1115
  br label %1174

1174:                                             ; preds = %1173
  br label %1175

1175:                                             ; preds = %1174
  br label %1176

1176:                                             ; preds = %1175
  %1177 = load i32, ptr @test_count, align 4, !tbaa !9
  %1178 = add nsw i32 %1177, 1
  store i32 %1178, ptr @test_count, align 4, !tbaa !9
  %1179 = load ptr, ptr %21, align 8, !tbaa !5
  %1180 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef %1179, i32 noundef 2)
  br i1 %1180, label %1234, label %1181

1181:                                             ; preds = %1176
  br label %1182

1182:                                             ; preds = %1181
  br label %1183

1183:                                             ; preds = %1182
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  %1184 = call ptr @__errno_location() #10
  %1185 = load i32, ptr %1184, align 4, !tbaa !9
  store i32 %1185, ptr %40, align 4, !tbaa !9
  %1186 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1187 = call i32 @s2n_print_stacktrace(ptr noundef %1186)
  %1188 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1189 = trunc i8 %1188 to i1
  br i1 %1189, label %1190, label %1212

1190:                                             ; preds = %1183
  %1191 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1192 = call i32 @fileno(ptr noundef %1191) #9
  %1193 = call i32 @isatty(i32 noundef %1192) #9
  %1194 = icmp ne i32 %1193, 0
  br i1 %1194, label %1195, label %1212

1195:                                             ; preds = %1190
  %1196 = load i32, ptr %40, align 4, !tbaa !9
  %1197 = call ptr @__errno_location() #10
  store i32 %1196, ptr %1197, align 4, !tbaa !9
  %1198 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1199 = load i32, ptr @test_count, align 4, !tbaa !9
  %1200 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1201 = load i32, ptr %1200, align 4, !tbaa !9
  %1202 = call ptr @s2n_strerror(i32 noundef %1201, ptr noundef @.str.3)
  %1203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1204 = load i32, ptr %1203, align 4, !tbaa !9
  %1205 = call ptr @s2n_strerror_debug(i32 noundef %1204, ptr noundef @.str.3)
  %1206 = call ptr @__errno_location() #10
  %1207 = load i32, ptr %1206, align 4, !tbaa !9
  %1208 = call ptr @strerror(i32 noundef %1207) #9
  %1209 = call ptr @__errno_location() #10
  %1210 = load i32, ptr %1209, align 4, !tbaa !9
  %1211 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1198, ptr noundef @.str, i32 noundef %1199, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 197, ptr noundef %1202, ptr noundef %1205, ptr noundef %1208, i32 noundef %1210) #9
  br label %1229

1212:                                             ; preds = %1190, %1183
  %1213 = load i32, ptr %40, align 4, !tbaa !9
  %1214 = call ptr @__errno_location() #10
  store i32 %1213, ptr %1214, align 4, !tbaa !9
  %1215 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1216 = load i32, ptr @test_count, align 4, !tbaa !9
  %1217 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = call ptr @s2n_strerror(i32 noundef %1218, ptr noundef @.str.3)
  %1220 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1221 = load i32, ptr %1220, align 4, !tbaa !9
  %1222 = call ptr @s2n_strerror_debug(i32 noundef %1221, ptr noundef @.str.3)
  %1223 = call ptr @__errno_location() #10
  %1224 = load i32, ptr %1223, align 4, !tbaa !9
  %1225 = call ptr @strerror(i32 noundef %1224) #9
  %1226 = call ptr @__errno_location() #10
  %1227 = load i32, ptr %1226, align 4, !tbaa !9
  %1228 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1215, ptr noundef @.str.4, i32 noundef %1216, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 197, ptr noundef %1219, ptr noundef %1222, ptr noundef %1225, i32 noundef %1227) #9
  br label %1229

1229:                                             ; preds = %1212, %1195
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %1230

1230:                                             ; preds = %1229
  br label %1231

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

1232:                                             ; No predecessors!
  br label %1233

1233:                                             ; preds = %1232
  br label %1234

1234:                                             ; preds = %1233, %1176
  br label %1235

1235:                                             ; preds = %1234
  br label %1236

1236:                                             ; preds = %1235
  br label %1237

1237:                                             ; preds = %1236
  %1238 = load i32, ptr @test_count, align 4, !tbaa !9
  %1239 = add nsw i32 %1238, 1
  store i32 %1239, ptr @test_count, align 4, !tbaa !9
  %1240 = load ptr, ptr %20, align 8, !tbaa !5
  %1241 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef %1240, i32 noundef 2)
  br i1 %1241, label %1295, label %1242

1242:                                             ; preds = %1237
  br label %1243

1243:                                             ; preds = %1242
  br label %1244

1244:                                             ; preds = %1243
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %1245 = call ptr @__errno_location() #10
  %1246 = load i32, ptr %1245, align 4, !tbaa !9
  store i32 %1246, ptr %41, align 4, !tbaa !9
  %1247 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1248 = call i32 @s2n_print_stacktrace(ptr noundef %1247)
  %1249 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1250 = trunc i8 %1249 to i1
  br i1 %1250, label %1251, label %1273

1251:                                             ; preds = %1244
  %1252 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1253 = call i32 @fileno(ptr noundef %1252) #9
  %1254 = call i32 @isatty(i32 noundef %1253) #9
  %1255 = icmp ne i32 %1254, 0
  br i1 %1255, label %1256, label %1273

1256:                                             ; preds = %1251
  %1257 = load i32, ptr %41, align 4, !tbaa !9
  %1258 = call ptr @__errno_location() #10
  store i32 %1257, ptr %1258, align 4, !tbaa !9
  %1259 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1260 = load i32, ptr @test_count, align 4, !tbaa !9
  %1261 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1262 = load i32, ptr %1261, align 4, !tbaa !9
  %1263 = call ptr @s2n_strerror(i32 noundef %1262, ptr noundef @.str.3)
  %1264 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1265 = load i32, ptr %1264, align 4, !tbaa !9
  %1266 = call ptr @s2n_strerror_debug(i32 noundef %1265, ptr noundef @.str.3)
  %1267 = call ptr @__errno_location() #10
  %1268 = load i32, ptr %1267, align 4, !tbaa !9
  %1269 = call ptr @strerror(i32 noundef %1268) #9
  %1270 = call ptr @__errno_location() #10
  %1271 = load i32, ptr %1270, align 4, !tbaa !9
  %1272 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1259, ptr noundef @.str, i32 noundef %1260, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 198, ptr noundef %1263, ptr noundef %1266, ptr noundef %1269, i32 noundef %1271) #9
  br label %1290

1273:                                             ; preds = %1251, %1244
  %1274 = load i32, ptr %41, align 4, !tbaa !9
  %1275 = call ptr @__errno_location() #10
  store i32 %1274, ptr %1275, align 4, !tbaa !9
  %1276 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1277 = load i32, ptr @test_count, align 4, !tbaa !9
  %1278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1279 = load i32, ptr %1278, align 4, !tbaa !9
  %1280 = call ptr @s2n_strerror(i32 noundef %1279, ptr noundef @.str.3)
  %1281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1282 = load i32, ptr %1281, align 4, !tbaa !9
  %1283 = call ptr @s2n_strerror_debug(i32 noundef %1282, ptr noundef @.str.3)
  %1284 = call ptr @__errno_location() #10
  %1285 = load i32, ptr %1284, align 4, !tbaa !9
  %1286 = call ptr @strerror(i32 noundef %1285) #9
  %1287 = call ptr @__errno_location() #10
  %1288 = load i32, ptr %1287, align 4, !tbaa !9
  %1289 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1276, ptr noundef @.str.4, i32 noundef %1277, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 198, ptr noundef %1280, ptr noundef %1283, ptr noundef %1286, i32 noundef %1288) #9
  br label %1290

1290:                                             ; preds = %1273, %1256
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %1291

1291:                                             ; preds = %1290
  br label %1292

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

1293:                                             ; No predecessors!
  br label %1294

1294:                                             ; preds = %1293
  br label %1295

1295:                                             ; preds = %1294, %1237
  br label %1296

1296:                                             ; preds = %1295
  br label %1297

1297:                                             ; preds = %1296
  br label %1298

1298:                                             ; preds = %1297
  %1299 = load i32, ptr @test_count, align 4, !tbaa !9
  %1300 = add nsw i32 %1299, 1
  store i32 %1300, ptr @test_count, align 4, !tbaa !9
  %1301 = load ptr, ptr %21, align 8, !tbaa !5
  %1302 = call ptr @s2n_connection_get_last_message_name(ptr noundef %1301)
  %1303 = call i32 @strcmp(ptr noundef %1302, ptr noundef @.str.23) #12
  %1304 = icmp eq i32 %1303, 0
  br i1 %1304, label %1358, label %1305

1305:                                             ; preds = %1298
  br label %1306

1306:                                             ; preds = %1305
  br label %1307

1307:                                             ; preds = %1306
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  %1308 = call ptr @__errno_location() #10
  %1309 = load i32, ptr %1308, align 4, !tbaa !9
  store i32 %1309, ptr %42, align 4, !tbaa !9
  %1310 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1311 = call i32 @s2n_print_stacktrace(ptr noundef %1310)
  %1312 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1313 = trunc i8 %1312 to i1
  br i1 %1313, label %1314, label %1336

1314:                                             ; preds = %1307
  %1315 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1316 = call i32 @fileno(ptr noundef %1315) #9
  %1317 = call i32 @isatty(i32 noundef %1316) #9
  %1318 = icmp ne i32 %1317, 0
  br i1 %1318, label %1319, label %1336

1319:                                             ; preds = %1314
  %1320 = load i32, ptr %42, align 4, !tbaa !9
  %1321 = call ptr @__errno_location() #10
  store i32 %1320, ptr %1321, align 4, !tbaa !9
  %1322 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1323 = load i32, ptr @test_count, align 4, !tbaa !9
  %1324 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1325 = load i32, ptr %1324, align 4, !tbaa !9
  %1326 = call ptr @s2n_strerror(i32 noundef %1325, ptr noundef @.str.3)
  %1327 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1328 = load i32, ptr %1327, align 4, !tbaa !9
  %1329 = call ptr @s2n_strerror_debug(i32 noundef %1328, ptr noundef @.str.3)
  %1330 = call ptr @__errno_location() #10
  %1331 = load i32, ptr %1330, align 4, !tbaa !9
  %1332 = call ptr @strerror(i32 noundef %1331) #9
  %1333 = call ptr @__errno_location() #10
  %1334 = load i32, ptr %1333, align 4, !tbaa !9
  %1335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1322, ptr noundef @.str, i32 noundef %1323, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 200, ptr noundef %1326, ptr noundef %1329, ptr noundef %1332, i32 noundef %1334) #9
  br label %1353

1336:                                             ; preds = %1314, %1307
  %1337 = load i32, ptr %42, align 4, !tbaa !9
  %1338 = call ptr @__errno_location() #10
  store i32 %1337, ptr %1338, align 4, !tbaa !9
  %1339 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1340 = load i32, ptr @test_count, align 4, !tbaa !9
  %1341 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1342 = load i32, ptr %1341, align 4, !tbaa !9
  %1343 = call ptr @s2n_strerror(i32 noundef %1342, ptr noundef @.str.3)
  %1344 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1345 = load i32, ptr %1344, align 4, !tbaa !9
  %1346 = call ptr @s2n_strerror_debug(i32 noundef %1345, ptr noundef @.str.3)
  %1347 = call ptr @__errno_location() #10
  %1348 = load i32, ptr %1347, align 4, !tbaa !9
  %1349 = call ptr @strerror(i32 noundef %1348) #9
  %1350 = call ptr @__errno_location() #10
  %1351 = load i32, ptr %1350, align 4, !tbaa !9
  %1352 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1339, ptr noundef @.str.4, i32 noundef %1340, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 200, ptr noundef %1343, ptr noundef %1346, ptr noundef %1349, i32 noundef %1351) #9
  br label %1353

1353:                                             ; preds = %1336, %1319
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %1354

1354:                                             ; preds = %1353
  br label %1355

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

1356:                                             ; No predecessors!
  br label %1357

1357:                                             ; preds = %1356
  br label %1358

1358:                                             ; preds = %1357, %1298
  br label %1359

1359:                                             ; preds = %1358
  br label %1360

1360:                                             ; preds = %1359
  br label %1361

1361:                                             ; preds = %1360
  %1362 = load i32, ptr @test_count, align 4, !tbaa !9
  %1363 = add nsw i32 %1362, 1
  store i32 %1363, ptr @test_count, align 4, !tbaa !9
  %1364 = load ptr, ptr %20, align 8, !tbaa !5
  %1365 = call ptr @s2n_connection_get_last_message_name(ptr noundef %1364)
  %1366 = call i32 @strcmp(ptr noundef %1365, ptr noundef @.str.23) #12
  %1367 = icmp eq i32 %1366, 0
  br i1 %1367, label %1421, label %1368

1368:                                             ; preds = %1361
  br label %1369

1369:                                             ; preds = %1368
  br label %1370

1370:                                             ; preds = %1369
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #9
  %1371 = call ptr @__errno_location() #10
  %1372 = load i32, ptr %1371, align 4, !tbaa !9
  store i32 %1372, ptr %43, align 4, !tbaa !9
  %1373 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1374 = call i32 @s2n_print_stacktrace(ptr noundef %1373)
  %1375 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1376 = trunc i8 %1375 to i1
  br i1 %1376, label %1377, label %1399

1377:                                             ; preds = %1370
  %1378 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1379 = call i32 @fileno(ptr noundef %1378) #9
  %1380 = call i32 @isatty(i32 noundef %1379) #9
  %1381 = icmp ne i32 %1380, 0
  br i1 %1381, label %1382, label %1399

1382:                                             ; preds = %1377
  %1383 = load i32, ptr %43, align 4, !tbaa !9
  %1384 = call ptr @__errno_location() #10
  store i32 %1383, ptr %1384, align 4, !tbaa !9
  %1385 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1386 = load i32, ptr @test_count, align 4, !tbaa !9
  %1387 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1388 = load i32, ptr %1387, align 4, !tbaa !9
  %1389 = call ptr @s2n_strerror(i32 noundef %1388, ptr noundef @.str.3)
  %1390 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1391 = load i32, ptr %1390, align 4, !tbaa !9
  %1392 = call ptr @s2n_strerror_debug(i32 noundef %1391, ptr noundef @.str.3)
  %1393 = call ptr @__errno_location() #10
  %1394 = load i32, ptr %1393, align 4, !tbaa !9
  %1395 = call ptr @strerror(i32 noundef %1394) #9
  %1396 = call ptr @__errno_location() #10
  %1397 = load i32, ptr %1396, align 4, !tbaa !9
  %1398 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1385, ptr noundef @.str, i32 noundef %1386, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 201, ptr noundef %1389, ptr noundef %1392, ptr noundef %1395, i32 noundef %1397) #9
  br label %1416

1399:                                             ; preds = %1377, %1370
  %1400 = load i32, ptr %43, align 4, !tbaa !9
  %1401 = call ptr @__errno_location() #10
  store i32 %1400, ptr %1401, align 4, !tbaa !9
  %1402 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1403 = load i32, ptr @test_count, align 4, !tbaa !9
  %1404 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1405 = load i32, ptr %1404, align 4, !tbaa !9
  %1406 = call ptr @s2n_strerror(i32 noundef %1405, ptr noundef @.str.3)
  %1407 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1408 = load i32, ptr %1407, align 4, !tbaa !9
  %1409 = call ptr @s2n_strerror_debug(i32 noundef %1408, ptr noundef @.str.3)
  %1410 = call ptr @__errno_location() #10
  %1411 = load i32, ptr %1410, align 4, !tbaa !9
  %1412 = call ptr @strerror(i32 noundef %1411) #9
  %1413 = call ptr @__errno_location() #10
  %1414 = load i32, ptr %1413, align 4, !tbaa !9
  %1415 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1402, ptr noundef @.str.4, i32 noundef %1403, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 201, ptr noundef %1406, ptr noundef %1409, ptr noundef %1412, i32 noundef %1414) #9
  br label %1416

1416:                                             ; preds = %1399, %1382
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #9
  br label %1417

1417:                                             ; preds = %1416
  br label %1418

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

1419:                                             ; No predecessors!
  br label %1420

1420:                                             ; preds = %1419
  br label %1421

1421:                                             ; preds = %1420, %1361
  br label %1422

1422:                                             ; preds = %1421
  br label %1423

1423:                                             ; preds = %1422
  %1424 = load i32, ptr @test_type, align 4, !tbaa !9
  %1425 = icmp eq i32 %1424, 1
  br i1 %1425, label %1426, label %1549

1426:                                             ; preds = %1423
  br label %1427

1427:                                             ; preds = %1426
  %1428 = load i32, ptr @test_count, align 4, !tbaa !9
  %1429 = add nsw i32 %1428, 1
  store i32 %1429, ptr @test_count, align 4, !tbaa !9
  %1430 = load i32, ptr @async_pkey_op_called, align 4, !tbaa !9
  %1431 = icmp eq i32 %1430, 1
  br i1 %1431, label %1485, label %1432

1432:                                             ; preds = %1427
  br label %1433

1433:                                             ; preds = %1432
  br label %1434

1434:                                             ; preds = %1433
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #9
  %1435 = call ptr @__errno_location() #10
  %1436 = load i32, ptr %1435, align 4, !tbaa !9
  store i32 %1436, ptr %44, align 4, !tbaa !9
  %1437 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1438 = call i32 @s2n_print_stacktrace(ptr noundef %1437)
  %1439 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1440 = trunc i8 %1439 to i1
  br i1 %1440, label %1441, label %1463

1441:                                             ; preds = %1434
  %1442 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1443 = call i32 @fileno(ptr noundef %1442) #9
  %1444 = call i32 @isatty(i32 noundef %1443) #9
  %1445 = icmp ne i32 %1444, 0
  br i1 %1445, label %1446, label %1463

1446:                                             ; preds = %1441
  %1447 = load i32, ptr %44, align 4, !tbaa !9
  %1448 = call ptr @__errno_location() #10
  store i32 %1447, ptr %1448, align 4, !tbaa !9
  %1449 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1450 = load i32, ptr @test_count, align 4, !tbaa !9
  %1451 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1452 = load i32, ptr %1451, align 4, !tbaa !9
  %1453 = call ptr @s2n_strerror(i32 noundef %1452, ptr noundef @.str.3)
  %1454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1455 = load i32, ptr %1454, align 4, !tbaa !9
  %1456 = call ptr @s2n_strerror_debug(i32 noundef %1455, ptr noundef @.str.3)
  %1457 = call ptr @__errno_location() #10
  %1458 = load i32, ptr %1457, align 4, !tbaa !9
  %1459 = call ptr @strerror(i32 noundef %1458) #9
  %1460 = call ptr @__errno_location() #10
  %1461 = load i32, ptr %1460, align 4, !tbaa !9
  %1462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1449, ptr noundef @.str, i32 noundef %1450, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 204, ptr noundef %1453, ptr noundef %1456, ptr noundef %1459, i32 noundef %1461) #9
  br label %1480

1463:                                             ; preds = %1441, %1434
  %1464 = load i32, ptr %44, align 4, !tbaa !9
  %1465 = call ptr @__errno_location() #10
  store i32 %1464, ptr %1465, align 4, !tbaa !9
  %1466 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1467 = load i32, ptr @test_count, align 4, !tbaa !9
  %1468 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1469 = load i32, ptr %1468, align 4, !tbaa !9
  %1470 = call ptr @s2n_strerror(i32 noundef %1469, ptr noundef @.str.3)
  %1471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1472 = load i32, ptr %1471, align 4, !tbaa !9
  %1473 = call ptr @s2n_strerror_debug(i32 noundef %1472, ptr noundef @.str.3)
  %1474 = call ptr @__errno_location() #10
  %1475 = load i32, ptr %1474, align 4, !tbaa !9
  %1476 = call ptr @strerror(i32 noundef %1475) #9
  %1477 = call ptr @__errno_location() #10
  %1478 = load i32, ptr %1477, align 4, !tbaa !9
  %1479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1466, ptr noundef @.str.4, i32 noundef %1467, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 204, ptr noundef %1470, ptr noundef %1473, ptr noundef %1476, i32 noundef %1478) #9
  br label %1480

1480:                                             ; preds = %1463, %1446
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %1481

1481:                                             ; preds = %1480
  br label %1482

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

1483:                                             ; No predecessors!
  br label %1484

1484:                                             ; preds = %1483
  br label %1485

1485:                                             ; preds = %1484, %1427
  br label %1486

1486:                                             ; preds = %1485
  br label %1487

1487:                                             ; preds = %1486
  br label %1488

1488:                                             ; preds = %1487
  %1489 = load i32, ptr @test_count, align 4, !tbaa !9
  %1490 = add nsw i32 %1489, 1
  store i32 %1490, ptr @test_count, align 4, !tbaa !9
  %1491 = load i32, ptr @async_pkey_op_performed, align 4, !tbaa !9
  %1492 = icmp eq i32 %1491, 1
  br i1 %1492, label %1546, label %1493

1493:                                             ; preds = %1488
  br label %1494

1494:                                             ; preds = %1493
  br label %1495

1495:                                             ; preds = %1494
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  %1496 = call ptr @__errno_location() #10
  %1497 = load i32, ptr %1496, align 4, !tbaa !9
  store i32 %1497, ptr %45, align 4, !tbaa !9
  %1498 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1499 = call i32 @s2n_print_stacktrace(ptr noundef %1498)
  %1500 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1501 = trunc i8 %1500 to i1
  br i1 %1501, label %1502, label %1524

1502:                                             ; preds = %1495
  %1503 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1504 = call i32 @fileno(ptr noundef %1503) #9
  %1505 = call i32 @isatty(i32 noundef %1504) #9
  %1506 = icmp ne i32 %1505, 0
  br i1 %1506, label %1507, label %1524

1507:                                             ; preds = %1502
  %1508 = load i32, ptr %45, align 4, !tbaa !9
  %1509 = call ptr @__errno_location() #10
  store i32 %1508, ptr %1509, align 4, !tbaa !9
  %1510 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1511 = load i32, ptr @test_count, align 4, !tbaa !9
  %1512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1513 = load i32, ptr %1512, align 4, !tbaa !9
  %1514 = call ptr @s2n_strerror(i32 noundef %1513, ptr noundef @.str.3)
  %1515 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1516 = load i32, ptr %1515, align 4, !tbaa !9
  %1517 = call ptr @s2n_strerror_debug(i32 noundef %1516, ptr noundef @.str.3)
  %1518 = call ptr @__errno_location() #10
  %1519 = load i32, ptr %1518, align 4, !tbaa !9
  %1520 = call ptr @strerror(i32 noundef %1519) #9
  %1521 = call ptr @__errno_location() #10
  %1522 = load i32, ptr %1521, align 4, !tbaa !9
  %1523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1510, ptr noundef @.str, i32 noundef %1511, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 205, ptr noundef %1514, ptr noundef %1517, ptr noundef %1520, i32 noundef %1522) #9
  br label %1541

1524:                                             ; preds = %1502, %1495
  %1525 = load i32, ptr %45, align 4, !tbaa !9
  %1526 = call ptr @__errno_location() #10
  store i32 %1525, ptr %1526, align 4, !tbaa !9
  %1527 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1528 = load i32, ptr @test_count, align 4, !tbaa !9
  %1529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1530 = load i32, ptr %1529, align 4, !tbaa !9
  %1531 = call ptr @s2n_strerror(i32 noundef %1530, ptr noundef @.str.3)
  %1532 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1533 = load i32, ptr %1532, align 4, !tbaa !9
  %1534 = call ptr @s2n_strerror_debug(i32 noundef %1533, ptr noundef @.str.3)
  %1535 = call ptr @__errno_location() #10
  %1536 = load i32, ptr %1535, align 4, !tbaa !9
  %1537 = call ptr @strerror(i32 noundef %1536) #9
  %1538 = call ptr @__errno_location() #10
  %1539 = load i32, ptr %1538, align 4, !tbaa !9
  %1540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1527, ptr noundef @.str.4, i32 noundef %1528, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 205, ptr noundef %1531, ptr noundef %1534, ptr noundef %1537, i32 noundef %1539) #9
  br label %1541

1541:                                             ; preds = %1524, %1507
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %1542

1542:                                             ; preds = %1541
  br label %1543

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

1544:                                             ; No predecessors!
  br label %1545

1545:                                             ; preds = %1544
  br label %1546

1546:                                             ; preds = %1545, %1488
  br label %1547

1547:                                             ; preds = %1546
  br label %1548

1548:                                             ; preds = %1547
  br label %1672

1549:                                             ; preds = %1423
  br label %1550

1550:                                             ; preds = %1549
  %1551 = load i32, ptr @test_count, align 4, !tbaa !9
  %1552 = add nsw i32 %1551, 1
  store i32 %1552, ptr @test_count, align 4, !tbaa !9
  %1553 = load i32, ptr @async_pkey_op_called, align 4, !tbaa !9
  %1554 = icmp eq i32 %1553, 0
  br i1 %1554, label %1608, label %1555

1555:                                             ; preds = %1550
  br label %1556

1556:                                             ; preds = %1555
  br label %1557

1557:                                             ; preds = %1556
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  %1558 = call ptr @__errno_location() #10
  %1559 = load i32, ptr %1558, align 4, !tbaa !9
  store i32 %1559, ptr %46, align 4, !tbaa !9
  %1560 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1561 = call i32 @s2n_print_stacktrace(ptr noundef %1560)
  %1562 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1563 = trunc i8 %1562 to i1
  br i1 %1563, label %1564, label %1586

1564:                                             ; preds = %1557
  %1565 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1566 = call i32 @fileno(ptr noundef %1565) #9
  %1567 = call i32 @isatty(i32 noundef %1566) #9
  %1568 = icmp ne i32 %1567, 0
  br i1 %1568, label %1569, label %1586

1569:                                             ; preds = %1564
  %1570 = load i32, ptr %46, align 4, !tbaa !9
  %1571 = call ptr @__errno_location() #10
  store i32 %1570, ptr %1571, align 4, !tbaa !9
  %1572 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1573 = load i32, ptr @test_count, align 4, !tbaa !9
  %1574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1575 = load i32, ptr %1574, align 4, !tbaa !9
  %1576 = call ptr @s2n_strerror(i32 noundef %1575, ptr noundef @.str.3)
  %1577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1578 = load i32, ptr %1577, align 4, !tbaa !9
  %1579 = call ptr @s2n_strerror_debug(i32 noundef %1578, ptr noundef @.str.3)
  %1580 = call ptr @__errno_location() #10
  %1581 = load i32, ptr %1580, align 4, !tbaa !9
  %1582 = call ptr @strerror(i32 noundef %1581) #9
  %1583 = call ptr @__errno_location() #10
  %1584 = load i32, ptr %1583, align 4, !tbaa !9
  %1585 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1572, ptr noundef @.str, i32 noundef %1573, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 207, ptr noundef %1576, ptr noundef %1579, ptr noundef %1582, i32 noundef %1584) #9
  br label %1603

1586:                                             ; preds = %1564, %1557
  %1587 = load i32, ptr %46, align 4, !tbaa !9
  %1588 = call ptr @__errno_location() #10
  store i32 %1587, ptr %1588, align 4, !tbaa !9
  %1589 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1590 = load i32, ptr @test_count, align 4, !tbaa !9
  %1591 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1592 = load i32, ptr %1591, align 4, !tbaa !9
  %1593 = call ptr @s2n_strerror(i32 noundef %1592, ptr noundef @.str.3)
  %1594 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1595 = load i32, ptr %1594, align 4, !tbaa !9
  %1596 = call ptr @s2n_strerror_debug(i32 noundef %1595, ptr noundef @.str.3)
  %1597 = call ptr @__errno_location() #10
  %1598 = load i32, ptr %1597, align 4, !tbaa !9
  %1599 = call ptr @strerror(i32 noundef %1598) #9
  %1600 = call ptr @__errno_location() #10
  %1601 = load i32, ptr %1600, align 4, !tbaa !9
  %1602 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1589, ptr noundef @.str.4, i32 noundef %1590, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 207, ptr noundef %1593, ptr noundef %1596, ptr noundef %1599, i32 noundef %1601) #9
  br label %1603

1603:                                             ; preds = %1586, %1569
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  br label %1604

1604:                                             ; preds = %1603
  br label %1605

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

1606:                                             ; No predecessors!
  br label %1607

1607:                                             ; preds = %1606
  br label %1608

1608:                                             ; preds = %1607, %1550
  br label %1609

1609:                                             ; preds = %1608
  br label %1610

1610:                                             ; preds = %1609
  br label %1611

1611:                                             ; preds = %1610
  %1612 = load i32, ptr @test_count, align 4, !tbaa !9
  %1613 = add nsw i32 %1612, 1
  store i32 %1613, ptr @test_count, align 4, !tbaa !9
  %1614 = load i32, ptr @async_pkey_op_performed, align 4, !tbaa !9
  %1615 = icmp eq i32 %1614, 0
  br i1 %1615, label %1669, label %1616

1616:                                             ; preds = %1611
  br label %1617

1617:                                             ; preds = %1616
  br label %1618

1618:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #9
  %1619 = call ptr @__errno_location() #10
  %1620 = load i32, ptr %1619, align 4, !tbaa !9
  store i32 %1620, ptr %47, align 4, !tbaa !9
  %1621 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1622 = call i32 @s2n_print_stacktrace(ptr noundef %1621)
  %1623 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1624 = trunc i8 %1623 to i1
  br i1 %1624, label %1625, label %1647

1625:                                             ; preds = %1618
  %1626 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1627 = call i32 @fileno(ptr noundef %1626) #9
  %1628 = call i32 @isatty(i32 noundef %1627) #9
  %1629 = icmp ne i32 %1628, 0
  br i1 %1629, label %1630, label %1647

1630:                                             ; preds = %1625
  %1631 = load i32, ptr %47, align 4, !tbaa !9
  %1632 = call ptr @__errno_location() #10
  store i32 %1631, ptr %1632, align 4, !tbaa !9
  %1633 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1634 = load i32, ptr @test_count, align 4, !tbaa !9
  %1635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1636 = load i32, ptr %1635, align 4, !tbaa !9
  %1637 = call ptr @s2n_strerror(i32 noundef %1636, ptr noundef @.str.3)
  %1638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1639 = load i32, ptr %1638, align 4, !tbaa !9
  %1640 = call ptr @s2n_strerror_debug(i32 noundef %1639, ptr noundef @.str.3)
  %1641 = call ptr @__errno_location() #10
  %1642 = load i32, ptr %1641, align 4, !tbaa !9
  %1643 = call ptr @strerror(i32 noundef %1642) #9
  %1644 = call ptr @__errno_location() #10
  %1645 = load i32, ptr %1644, align 4, !tbaa !9
  %1646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1633, ptr noundef @.str, i32 noundef %1634, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 208, ptr noundef %1637, ptr noundef %1640, ptr noundef %1643, i32 noundef %1645) #9
  br label %1664

1647:                                             ; preds = %1625, %1618
  %1648 = load i32, ptr %47, align 4, !tbaa !9
  %1649 = call ptr @__errno_location() #10
  store i32 %1648, ptr %1649, align 4, !tbaa !9
  %1650 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1651 = load i32, ptr @test_count, align 4, !tbaa !9
  %1652 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1653 = load i32, ptr %1652, align 4, !tbaa !9
  %1654 = call ptr @s2n_strerror(i32 noundef %1653, ptr noundef @.str.3)
  %1655 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1656 = load i32, ptr %1655, align 4, !tbaa !9
  %1657 = call ptr @s2n_strerror_debug(i32 noundef %1656, ptr noundef @.str.3)
  %1658 = call ptr @__errno_location() #10
  %1659 = load i32, ptr %1658, align 4, !tbaa !9
  %1660 = call ptr @strerror(i32 noundef %1659) #9
  %1661 = call ptr @__errno_location() #10
  %1662 = load i32, ptr %1661, align 4, !tbaa !9
  %1663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1650, ptr noundef @.str.4, i32 noundef %1651, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 208, ptr noundef %1654, ptr noundef %1657, ptr noundef %1660, i32 noundef %1662) #9
  br label %1664

1664:                                             ; preds = %1647, %1630
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #9
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

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

1667:                                             ; No predecessors!
  br label %1668

1668:                                             ; preds = %1667
  br label %1669

1669:                                             ; preds = %1668, %1611
  br label %1670

1670:                                             ; preds = %1669
  br label %1671

1671:                                             ; preds = %1670
  br label %1672

1672:                                             ; preds = %1671, %1548
  br label %1963

1673:                                             ; preds = %779
  br label %1674

1674:                                             ; preds = %1673
  %1675 = load ptr, ptr %21, align 8, !tbaa !5
  %1676 = load ptr, ptr %20, align 8, !tbaa !5
  %1677 = call i32 @try_handshake(ptr noundef %1675, ptr noundef %1676)
  %1678 = icmp eq i32 %1677, -1
  br i1 %1678, label %1712, label %1679

1679:                                             ; preds = %1674
  br label %1680

1680:                                             ; preds = %1679
  br label %1681

1681:                                             ; preds = %1680
  %1682 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1683 = getelementptr inbounds %struct.s2n_debug_info, ptr %1682, i32 0, i32 0
  store ptr @.str.30, ptr %1683, align 8, !tbaa !59
  %1684 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1685 = getelementptr inbounds %struct.s2n_debug_info, ptr %1684, i32 0, i32 0
  %1686 = load ptr, ptr %1685, align 8, !tbaa !59
  %1687 = getelementptr inbounds i8, ptr %1686, i64 21
  %1688 = call ptr @strrchr(ptr noundef %1687, i32 noundef 47) #12
  %1689 = icmp ne ptr %1688, null
  br i1 %1689, label %1690, label %1697

1690:                                             ; preds = %1681
  %1691 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1692 = getelementptr inbounds %struct.s2n_debug_info, ptr %1691, i32 0, i32 0
  %1693 = load ptr, ptr %1692, align 8, !tbaa !59
  %1694 = getelementptr inbounds i8, ptr %1693, i64 21
  %1695 = call ptr @strrchr(ptr noundef %1694, i32 noundef 47) #12
  %1696 = getelementptr inbounds i8, ptr %1695, i64 1
  br label %1702

1697:                                             ; preds = %1681
  %1698 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1699 = getelementptr inbounds %struct.s2n_debug_info, ptr %1698, i32 0, i32 0
  %1700 = load ptr, ptr %1699, align 8, !tbaa !59
  %1701 = getelementptr inbounds i8, ptr %1700, i64 21
  br label %1702

1702:                                             ; preds = %1697, %1690
  %1703 = phi ptr [ %1696, %1690 ], [ %1701, %1697 ]
  %1704 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1705 = getelementptr inbounds %struct.s2n_debug_info, ptr %1704, i32 0, i32 1
  store ptr %1703, ptr %1705, align 8, !tbaa !61
  %1706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1706, align 4, !tbaa !9
  %1707 = call i32 @s2n_calculate_stacktrace()
  br label %1708

1708:                                             ; preds = %1702
  br label %1709

1709:                                             ; preds = %1708
  store i32 -1, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %2149

1710:                                             ; No predecessors!
  br label %1711

1711:                                             ; preds = %1710
  br label %1712

1712:                                             ; preds = %1711, %1674
  br label %1713

1713:                                             ; preds = %1712
  br label %1714

1714:                                             ; preds = %1713
  br label %1715

1715:                                             ; preds = %1714
  %1716 = load i32, ptr @test_count, align 4, !tbaa !9
  %1717 = add nsw i32 %1716, 1
  store i32 %1717, ptr @test_count, align 4, !tbaa !9
  %1718 = load ptr, ptr %21, align 8, !tbaa !5
  %1719 = call ptr @s2n_connection_get_last_message_name(ptr noundef %1718)
  %1720 = call i32 @strcmp(ptr noundef %1719, ptr noundef @.str.23) #12
  %1721 = icmp eq i32 %1720, 0
  br i1 %1721, label %1722, label %1775

1722:                                             ; preds = %1715
  br label %1723

1723:                                             ; preds = %1722
  br label %1724

1724:                                             ; preds = %1723
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  %1725 = call ptr @__errno_location() #10
  %1726 = load i32, ptr %1725, align 4, !tbaa !9
  store i32 %1726, ptr %48, align 4, !tbaa !9
  %1727 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1728 = call i32 @s2n_print_stacktrace(ptr noundef %1727)
  %1729 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1730 = trunc i8 %1729 to i1
  br i1 %1730, label %1731, label %1753

1731:                                             ; preds = %1724
  %1732 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1733 = call i32 @fileno(ptr noundef %1732) #9
  %1734 = call i32 @isatty(i32 noundef %1733) #9
  %1735 = icmp ne i32 %1734, 0
  br i1 %1735, label %1736, label %1753

1736:                                             ; preds = %1731
  %1737 = load i32, ptr %48, align 4, !tbaa !9
  %1738 = call ptr @__errno_location() #10
  store i32 %1737, ptr %1738, align 4, !tbaa !9
  %1739 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1740 = load i32, ptr @test_count, align 4, !tbaa !9
  %1741 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1742 = load i32, ptr %1741, align 4, !tbaa !9
  %1743 = call ptr @s2n_strerror(i32 noundef %1742, ptr noundef @.str.3)
  %1744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1745 = load i32, ptr %1744, align 4, !tbaa !9
  %1746 = call ptr @s2n_strerror_debug(i32 noundef %1745, ptr noundef @.str.3)
  %1747 = call ptr @__errno_location() #10
  %1748 = load i32, ptr %1747, align 4, !tbaa !9
  %1749 = call ptr @strerror(i32 noundef %1748) #9
  %1750 = call ptr @__errno_location() #10
  %1751 = load i32, ptr %1750, align 4, !tbaa !9
  %1752 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1739, ptr noundef @.str, i32 noundef %1740, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 212, ptr noundef %1743, ptr noundef %1746, ptr noundef %1749, i32 noundef %1751) #9
  br label %1770

1753:                                             ; preds = %1731, %1724
  %1754 = load i32, ptr %48, align 4, !tbaa !9
  %1755 = call ptr @__errno_location() #10
  store i32 %1754, ptr %1755, align 4, !tbaa !9
  %1756 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1757 = load i32, ptr @test_count, align 4, !tbaa !9
  %1758 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1759 = load i32, ptr %1758, align 4, !tbaa !9
  %1760 = call ptr @s2n_strerror(i32 noundef %1759, ptr noundef @.str.3)
  %1761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1762 = load i32, ptr %1761, align 4, !tbaa !9
  %1763 = call ptr @s2n_strerror_debug(i32 noundef %1762, ptr noundef @.str.3)
  %1764 = call ptr @__errno_location() #10
  %1765 = load i32, ptr %1764, align 4, !tbaa !9
  %1766 = call ptr @strerror(i32 noundef %1765) #9
  %1767 = call ptr @__errno_location() #10
  %1768 = load i32, ptr %1767, align 4, !tbaa !9
  %1769 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1756, ptr noundef @.str.4, i32 noundef %1757, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 212, ptr noundef %1760, ptr noundef %1763, ptr noundef %1766, i32 noundef %1768) #9
  br label %1770

1770:                                             ; preds = %1753, %1736
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %1771

1771:                                             ; preds = %1770
  br label %1772

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

1773:                                             ; No predecessors!
  br label %1774

1774:                                             ; preds = %1773
  br label %1775

1775:                                             ; preds = %1774, %1715
  br label %1776

1776:                                             ; preds = %1775
  br label %1777

1777:                                             ; preds = %1776
  br label %1778

1778:                                             ; preds = %1777
  %1779 = load i32, ptr @test_count, align 4, !tbaa !9
  %1780 = add nsw i32 %1779, 1
  store i32 %1780, ptr @test_count, align 4, !tbaa !9
  %1781 = load ptr, ptr %20, align 8, !tbaa !5
  %1782 = call ptr @s2n_connection_get_last_message_name(ptr noundef %1781)
  %1783 = call i32 @strcmp(ptr noundef %1782, ptr noundef @.str.23) #12
  %1784 = icmp eq i32 %1783, 0
  br i1 %1784, label %1785, label %1838

1785:                                             ; preds = %1778
  br label %1786

1786:                                             ; preds = %1785
  br label %1787

1787:                                             ; preds = %1786
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  %1788 = call ptr @__errno_location() #10
  %1789 = load i32, ptr %1788, align 4, !tbaa !9
  store i32 %1789, ptr %49, align 4, !tbaa !9
  %1790 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1791 = call i32 @s2n_print_stacktrace(ptr noundef %1790)
  %1792 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1793 = trunc i8 %1792 to i1
  br i1 %1793, label %1794, label %1816

1794:                                             ; preds = %1787
  %1795 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1796 = call i32 @fileno(ptr noundef %1795) #9
  %1797 = call i32 @isatty(i32 noundef %1796) #9
  %1798 = icmp ne i32 %1797, 0
  br i1 %1798, label %1799, label %1816

1799:                                             ; preds = %1794
  %1800 = load i32, ptr %49, align 4, !tbaa !9
  %1801 = call ptr @__errno_location() #10
  store i32 %1800, ptr %1801, align 4, !tbaa !9
  %1802 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1803 = load i32, ptr @test_count, align 4, !tbaa !9
  %1804 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1805 = load i32, ptr %1804, align 4, !tbaa !9
  %1806 = call ptr @s2n_strerror(i32 noundef %1805, ptr noundef @.str.3)
  %1807 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1808 = load i32, ptr %1807, align 4, !tbaa !9
  %1809 = call ptr @s2n_strerror_debug(i32 noundef %1808, ptr noundef @.str.3)
  %1810 = call ptr @__errno_location() #10
  %1811 = load i32, ptr %1810, align 4, !tbaa !9
  %1812 = call ptr @strerror(i32 noundef %1811) #9
  %1813 = call ptr @__errno_location() #10
  %1814 = load i32, ptr %1813, align 4, !tbaa !9
  %1815 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1802, ptr noundef @.str, i32 noundef %1803, ptr noundef @.str.32, ptr noundef @.str.2, i32 noundef 213, ptr noundef %1806, ptr noundef %1809, ptr noundef %1812, i32 noundef %1814) #9
  br label %1833

1816:                                             ; preds = %1794, %1787
  %1817 = load i32, ptr %49, align 4, !tbaa !9
  %1818 = call ptr @__errno_location() #10
  store i32 %1817, ptr %1818, align 4, !tbaa !9
  %1819 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1820 = load i32, ptr @test_count, align 4, !tbaa !9
  %1821 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1822 = load i32, ptr %1821, align 4, !tbaa !9
  %1823 = call ptr @s2n_strerror(i32 noundef %1822, ptr noundef @.str.3)
  %1824 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1825 = load i32, ptr %1824, align 4, !tbaa !9
  %1826 = call ptr @s2n_strerror_debug(i32 noundef %1825, ptr noundef @.str.3)
  %1827 = call ptr @__errno_location() #10
  %1828 = load i32, ptr %1827, align 4, !tbaa !9
  %1829 = call ptr @strerror(i32 noundef %1828) #9
  %1830 = call ptr @__errno_location() #10
  %1831 = load i32, ptr %1830, align 4, !tbaa !9
  %1832 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1819, ptr noundef @.str.4, i32 noundef %1820, ptr noundef @.str.32, ptr noundef @.str.2, i32 noundef 213, ptr noundef %1823, ptr noundef %1826, ptr noundef %1829, i32 noundef %1831) #9
  br label %1833

1833:                                             ; preds = %1816, %1799
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %1834

1834:                                             ; preds = %1833
  br label %1835

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

1836:                                             ; No predecessors!
  br label %1837

1837:                                             ; preds = %1836
  br label %1838

1838:                                             ; preds = %1837, %1778
  br label %1839

1839:                                             ; preds = %1838
  br label %1840

1840:                                             ; preds = %1839
  br label %1841

1841:                                             ; preds = %1840
  %1842 = load i32, ptr @test_count, align 4, !tbaa !9
  %1843 = add nsw i32 %1842, 1
  store i32 %1843, ptr @test_count, align 4, !tbaa !9
  %1844 = load i32, ptr @async_pkey_op_called, align 4, !tbaa !9
  %1845 = icmp eq i32 %1844, 0
  br i1 %1845, label %1899, label %1846

1846:                                             ; preds = %1841
  br label %1847

1847:                                             ; preds = %1846
  br label %1848

1848:                                             ; preds = %1847
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #9
  %1849 = call ptr @__errno_location() #10
  %1850 = load i32, ptr %1849, align 4, !tbaa !9
  store i32 %1850, ptr %50, align 4, !tbaa !9
  %1851 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1852 = call i32 @s2n_print_stacktrace(ptr noundef %1851)
  %1853 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1854 = trunc i8 %1853 to i1
  br i1 %1854, label %1855, label %1877

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

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

1877:                                             ; preds = %1855, %1848
  %1878 = load i32, ptr %50, align 4, !tbaa !9
  %1879 = call ptr @__errno_location() #10
  store i32 %1878, ptr %1879, align 4, !tbaa !9
  %1880 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1881 = load i32, ptr @test_count, align 4, !tbaa !9
  %1882 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1883 = load i32, ptr %1882, align 4, !tbaa !9
  %1884 = call ptr @s2n_strerror(i32 noundef %1883, ptr noundef @.str.3)
  %1885 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1886 = load i32, ptr %1885, align 4, !tbaa !9
  %1887 = call ptr @s2n_strerror_debug(i32 noundef %1886, ptr noundef @.str.3)
  %1888 = call ptr @__errno_location() #10
  %1889 = load i32, ptr %1888, align 4, !tbaa !9
  %1890 = call ptr @strerror(i32 noundef %1889) #9
  %1891 = call ptr @__errno_location() #10
  %1892 = load i32, ptr %1891, align 4, !tbaa !9
  %1893 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1880, ptr noundef @.str.4, i32 noundef %1881, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 214, ptr noundef %1884, ptr noundef %1887, ptr noundef %1890, i32 noundef %1892) #9
  br label %1894

1894:                                             ; preds = %1877, %1860
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  br label %1895

1895:                                             ; preds = %1894
  br label %1896

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

1897:                                             ; No predecessors!
  br label %1898

1898:                                             ; preds = %1897
  br label %1899

1899:                                             ; preds = %1898, %1841
  br label %1900

1900:                                             ; preds = %1899
  br label %1901

1901:                                             ; preds = %1900
  br label %1902

1902:                                             ; preds = %1901
  %1903 = load i32, ptr @test_count, align 4, !tbaa !9
  %1904 = add nsw i32 %1903, 1
  store i32 %1904, ptr @test_count, align 4, !tbaa !9
  %1905 = load i32, ptr @async_pkey_op_performed, align 4, !tbaa !9
  %1906 = icmp eq i32 %1905, 0
  br i1 %1906, label %1960, label %1907

1907:                                             ; preds = %1902
  br label %1908

1908:                                             ; preds = %1907
  br label %1909

1909:                                             ; preds = %1908
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  %1910 = call ptr @__errno_location() #10
  %1911 = load i32, ptr %1910, align 4, !tbaa !9
  store i32 %1911, ptr %51, align 4, !tbaa !9
  %1912 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1913 = call i32 @s2n_print_stacktrace(ptr noundef %1912)
  %1914 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1915 = trunc i8 %1914 to i1
  br i1 %1915, label %1916, label %1938

1916:                                             ; preds = %1909
  %1917 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1918 = call i32 @fileno(ptr noundef %1917) #9
  %1919 = call i32 @isatty(i32 noundef %1918) #9
  %1920 = icmp ne i32 %1919, 0
  br i1 %1920, label %1921, label %1938

1921:                                             ; preds = %1916
  %1922 = load i32, ptr %51, align 4, !tbaa !9
  %1923 = call ptr @__errno_location() #10
  store i32 %1922, ptr %1923, align 4, !tbaa !9
  %1924 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1925 = load i32, ptr @test_count, align 4, !tbaa !9
  %1926 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1927 = load i32, ptr %1926, align 4, !tbaa !9
  %1928 = call ptr @s2n_strerror(i32 noundef %1927, ptr noundef @.str.3)
  %1929 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1930 = load i32, ptr %1929, align 4, !tbaa !9
  %1931 = call ptr @s2n_strerror_debug(i32 noundef %1930, ptr noundef @.str.3)
  %1932 = call ptr @__errno_location() #10
  %1933 = load i32, ptr %1932, align 4, !tbaa !9
  %1934 = call ptr @strerror(i32 noundef %1933) #9
  %1935 = call ptr @__errno_location() #10
  %1936 = load i32, ptr %1935, align 4, !tbaa !9
  %1937 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1924, ptr noundef @.str, i32 noundef %1925, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 215, ptr noundef %1928, ptr noundef %1931, ptr noundef %1934, i32 noundef %1936) #9
  br label %1955

1938:                                             ; preds = %1916, %1909
  %1939 = load i32, ptr %51, align 4, !tbaa !9
  %1940 = call ptr @__errno_location() #10
  store i32 %1939, ptr %1940, align 4, !tbaa !9
  %1941 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1942 = load i32, ptr @test_count, align 4, !tbaa !9
  %1943 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1944 = load i32, ptr %1943, align 4, !tbaa !9
  %1945 = call ptr @s2n_strerror(i32 noundef %1944, ptr noundef @.str.3)
  %1946 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1947 = load i32, ptr %1946, align 4, !tbaa !9
  %1948 = call ptr @s2n_strerror_debug(i32 noundef %1947, ptr noundef @.str.3)
  %1949 = call ptr @__errno_location() #10
  %1950 = load i32, ptr %1949, align 4, !tbaa !9
  %1951 = call ptr @strerror(i32 noundef %1950) #9
  %1952 = call ptr @__errno_location() #10
  %1953 = load i32, ptr %1952, align 4, !tbaa !9
  %1954 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1941, ptr noundef @.str.4, i32 noundef %1942, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 215, ptr noundef %1945, ptr noundef %1948, ptr noundef %1951, i32 noundef %1953) #9
  br label %1955

1955:                                             ; preds = %1938, %1921
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %1956

1956:                                             ; preds = %1955
  br label %1957

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

1958:                                             ; No predecessors!
  br label %1959

1959:                                             ; preds = %1958
  br label %1960

1960:                                             ; preds = %1959, %1902
  br label %1961

1961:                                             ; preds = %1960
  br label %1962

1962:                                             ; preds = %1961
  br label %1963

1963:                                             ; preds = %1962, %1672
  br label %1964

1964:                                             ; preds = %1963
  %1965 = load i32, ptr @test_count, align 4, !tbaa !9
  %1966 = add nsw i32 %1965, 1
  store i32 %1966, ptr @test_count, align 4, !tbaa !9
  %1967 = load ptr, ptr %21, align 8, !tbaa !5
  %1968 = call i32 @s2n_connection_free(ptr noundef %1967)
  %1969 = icmp eq i32 %1968, -1
  br i1 %1969, label %1970, label %2023

1970:                                             ; preds = %1964
  br label %1971

1971:                                             ; preds = %1970
  br label %1972

1972:                                             ; preds = %1971
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  %1973 = call ptr @__errno_location() #10
  %1974 = load i32, ptr %1973, align 4, !tbaa !9
  store i32 %1974, ptr %52, align 4, !tbaa !9
  %1975 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1976 = call i32 @s2n_print_stacktrace(ptr noundef %1975)
  %1977 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %1978 = trunc i8 %1977 to i1
  br i1 %1978, label %1979, label %2001

1979:                                             ; preds = %1972
  %1980 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1981 = call i32 @fileno(ptr noundef %1980) #9
  %1982 = call i32 @isatty(i32 noundef %1981) #9
  %1983 = icmp ne i32 %1982, 0
  br i1 %1983, label %1984, label %2001

1984:                                             ; preds = %1979
  %1985 = load i32, ptr %52, align 4, !tbaa !9
  %1986 = call ptr @__errno_location() #10
  store i32 %1985, ptr %1986, align 4, !tbaa !9
  %1987 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1988 = load i32, ptr @test_count, align 4, !tbaa !9
  %1989 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1990 = load i32, ptr %1989, align 4, !tbaa !9
  %1991 = call ptr @s2n_strerror(i32 noundef %1990, ptr noundef @.str.3)
  %1992 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1993 = load i32, ptr %1992, align 4, !tbaa !9
  %1994 = call ptr @s2n_strerror_debug(i32 noundef %1993, ptr noundef @.str.3)
  %1995 = call ptr @__errno_location() #10
  %1996 = load i32, ptr %1995, align 4, !tbaa !9
  %1997 = call ptr @strerror(i32 noundef %1996) #9
  %1998 = call ptr @__errno_location() #10
  %1999 = load i32, ptr %1998, align 4, !tbaa !9
  %2000 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1987, ptr noundef @.str, i32 noundef %1988, ptr noundef @.str.33, ptr noundef @.str.2, i32 noundef 218, ptr noundef %1991, ptr noundef %1994, ptr noundef %1997, i32 noundef %1999) #9
  br label %2018

2001:                                             ; preds = %1979, %1972
  %2002 = load i32, ptr %52, align 4, !tbaa !9
  %2003 = call ptr @__errno_location() #10
  store i32 %2002, ptr %2003, align 4, !tbaa !9
  %2004 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2005 = load i32, ptr @test_count, align 4, !tbaa !9
  %2006 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2007 = load i32, ptr %2006, align 4, !tbaa !9
  %2008 = call ptr @s2n_strerror(i32 noundef %2007, ptr noundef @.str.3)
  %2009 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2010 = load i32, ptr %2009, align 4, !tbaa !9
  %2011 = call ptr @s2n_strerror_debug(i32 noundef %2010, ptr noundef @.str.3)
  %2012 = call ptr @__errno_location() #10
  %2013 = load i32, ptr %2012, align 4, !tbaa !9
  %2014 = call ptr @strerror(i32 noundef %2013) #9
  %2015 = call ptr @__errno_location() #10
  %2016 = load i32, ptr %2015, align 4, !tbaa !9
  %2017 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2004, ptr noundef @.str.4, i32 noundef %2005, ptr noundef @.str.33, ptr noundef @.str.2, i32 noundef 218, ptr noundef %2008, ptr noundef %2011, ptr noundef %2014, i32 noundef %2016) #9
  br label %2018

2018:                                             ; preds = %2001, %1984
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  br label %2019

2019:                                             ; preds = %2018
  br label %2020

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

2021:                                             ; No predecessors!
  br label %2022

2022:                                             ; preds = %2021
  br label %2023

2023:                                             ; preds = %2022, %1964
  br label %2024

2024:                                             ; preds = %2023
  br label %2025

2025:                                             ; preds = %2024
  br label %2026

2026:                                             ; preds = %2025
  %2027 = load i32, ptr @test_count, align 4, !tbaa !9
  %2028 = add nsw i32 %2027, 1
  store i32 %2028, ptr @test_count, align 4, !tbaa !9
  %2029 = load ptr, ptr %20, align 8, !tbaa !5
  %2030 = call i32 @s2n_connection_free(ptr noundef %2029)
  %2031 = icmp eq i32 %2030, -1
  br i1 %2031, label %2032, label %2085

2032:                                             ; preds = %2026
  br label %2033

2033:                                             ; preds = %2032
  br label %2034

2034:                                             ; preds = %2033
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  %2035 = call ptr @__errno_location() #10
  %2036 = load i32, ptr %2035, align 4, !tbaa !9
  store i32 %2036, ptr %53, align 4, !tbaa !9
  %2037 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2038 = call i32 @s2n_print_stacktrace(ptr noundef %2037)
  %2039 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %2040 = trunc i8 %2039 to i1
  br i1 %2040, label %2041, label %2063

2041:                                             ; preds = %2034
  %2042 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2043 = call i32 @fileno(ptr noundef %2042) #9
  %2044 = call i32 @isatty(i32 noundef %2043) #9
  %2045 = icmp ne i32 %2044, 0
  br i1 %2045, label %2046, label %2063

2046:                                             ; preds = %2041
  %2047 = load i32, ptr %53, align 4, !tbaa !9
  %2048 = call ptr @__errno_location() #10
  store i32 %2047, ptr %2048, align 4, !tbaa !9
  %2049 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2050 = load i32, ptr @test_count, align 4, !tbaa !9
  %2051 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2052 = load i32, ptr %2051, align 4, !tbaa !9
  %2053 = call ptr @s2n_strerror(i32 noundef %2052, ptr noundef @.str.3)
  %2054 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2055 = load i32, ptr %2054, align 4, !tbaa !9
  %2056 = call ptr @s2n_strerror_debug(i32 noundef %2055, ptr noundef @.str.3)
  %2057 = call ptr @__errno_location() #10
  %2058 = load i32, ptr %2057, align 4, !tbaa !9
  %2059 = call ptr @strerror(i32 noundef %2058) #9
  %2060 = call ptr @__errno_location() #10
  %2061 = load i32, ptr %2060, align 4, !tbaa !9
  %2062 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2049, ptr noundef @.str, i32 noundef %2050, ptr noundef @.str.34, ptr noundef @.str.2, i32 noundef 219, ptr noundef %2053, ptr noundef %2056, ptr noundef %2059, i32 noundef %2061) #9
  br label %2080

2063:                                             ; preds = %2041, %2034
  %2064 = load i32, ptr %53, align 4, !tbaa !9
  %2065 = call ptr @__errno_location() #10
  store i32 %2064, ptr %2065, align 4, !tbaa !9
  %2066 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2067 = load i32, ptr @test_count, align 4, !tbaa !9
  %2068 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2069 = load i32, ptr %2068, align 4, !tbaa !9
  %2070 = call ptr @s2n_strerror(i32 noundef %2069, ptr noundef @.str.3)
  %2071 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2072 = load i32, ptr %2071, align 4, !tbaa !9
  %2073 = call ptr @s2n_strerror_debug(i32 noundef %2072, ptr noundef @.str.3)
  %2074 = call ptr @__errno_location() #10
  %2075 = load i32, ptr %2074, align 4, !tbaa !9
  %2076 = call ptr @strerror(i32 noundef %2075) #9
  %2077 = call ptr @__errno_location() #10
  %2078 = load i32, ptr %2077, align 4, !tbaa !9
  %2079 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2066, ptr noundef @.str.4, i32 noundef %2067, ptr noundef @.str.34, ptr noundef @.str.2, i32 noundef 219, ptr noundef %2070, ptr noundef %2073, ptr noundef %2076, i32 noundef %2078) #9
  br label %2080

2080:                                             ; preds = %2063, %2046
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %2081

2081:                                             ; preds = %2080
  br label %2082

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

2083:                                             ; No predecessors!
  br label %2084

2084:                                             ; preds = %2083
  br label %2085

2085:                                             ; preds = %2084, %2026
  br label %2086

2086:                                             ; preds = %2085
  br label %2087

2087:                                             ; preds = %2086
  br label %2088

2088:                                             ; preds = %2087
  %2089 = load i32, ptr @test_count, align 4, !tbaa !9
  %2090 = add nsw i32 %2089, 1
  store i32 %2090, ptr @test_count, align 4, !tbaa !9
  %2091 = call i32 @s2n_io_pair_close(ptr noundef %28)
  %2092 = icmp eq i32 %2091, -1
  br i1 %2092, label %2093, label %2146

2093:                                             ; preds = %2088
  br label %2094

2094:                                             ; preds = %2093
  br label %2095

2095:                                             ; preds = %2094
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  %2096 = call ptr @__errno_location() #10
  %2097 = load i32, ptr %2096, align 4, !tbaa !9
  store i32 %2097, ptr %54, align 4, !tbaa !9
  %2098 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2099 = call i32 @s2n_print_stacktrace(ptr noundef %2098)
  %2100 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %2101 = trunc i8 %2100 to i1
  br i1 %2101, label %2102, label %2124

2102:                                             ; preds = %2095
  %2103 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2104 = call i32 @fileno(ptr noundef %2103) #9
  %2105 = call i32 @isatty(i32 noundef %2104) #9
  %2106 = icmp ne i32 %2105, 0
  br i1 %2106, label %2107, label %2124

2107:                                             ; preds = %2102
  %2108 = load i32, ptr %54, align 4, !tbaa !9
  %2109 = call ptr @__errno_location() #10
  store i32 %2108, ptr %2109, align 4, !tbaa !9
  %2110 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2111 = load i32, ptr @test_count, align 4, !tbaa !9
  %2112 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2113 = load i32, ptr %2112, align 4, !tbaa !9
  %2114 = call ptr @s2n_strerror(i32 noundef %2113, ptr noundef @.str.3)
  %2115 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2116 = load i32, ptr %2115, align 4, !tbaa !9
  %2117 = call ptr @s2n_strerror_debug(i32 noundef %2116, ptr noundef @.str.3)
  %2118 = call ptr @__errno_location() #10
  %2119 = load i32, ptr %2118, align 4, !tbaa !9
  %2120 = call ptr @strerror(i32 noundef %2119) #9
  %2121 = call ptr @__errno_location() #10
  %2122 = load i32, ptr %2121, align 4, !tbaa !9
  %2123 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2110, ptr noundef @.str, i32 noundef %2111, ptr noundef @.str.35, ptr noundef @.str.2, i32 noundef 220, ptr noundef %2114, ptr noundef %2117, ptr noundef %2120, i32 noundef %2122) #9
  br label %2141

2124:                                             ; preds = %2102, %2095
  %2125 = load i32, ptr %54, align 4, !tbaa !9
  %2126 = call ptr @__errno_location() #10
  store i32 %2125, ptr %2126, align 4, !tbaa !9
  %2127 = load ptr, ptr @stderr, align 8, !tbaa !5
  %2128 = load i32, ptr @test_count, align 4, !tbaa !9
  %2129 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2130 = load i32, ptr %2129, align 4, !tbaa !9
  %2131 = call ptr @s2n_strerror(i32 noundef %2130, ptr noundef @.str.3)
  %2132 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2133 = load i32, ptr %2132, align 4, !tbaa !9
  %2134 = call ptr @s2n_strerror_debug(i32 noundef %2133, ptr noundef @.str.3)
  %2135 = call ptr @__errno_location() #10
  %2136 = load i32, ptr %2135, align 4, !tbaa !9
  %2137 = call ptr @strerror(i32 noundef %2136) #9
  %2138 = call ptr @__errno_location() #10
  %2139 = load i32, ptr %2138, align 4, !tbaa !9
  %2140 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2127, ptr noundef @.str.4, i32 noundef %2128, ptr noundef @.str.35, ptr noundef @.str.2, i32 noundef 220, ptr noundef %2131, ptr noundef %2134, ptr noundef %2137, i32 noundef %2139) #9
  br label %2141

2141:                                             ; preds = %2124, %2107
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %2142

2142:                                             ; preds = %2141
  br label %2143

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

2144:                                             ; No predecessors!
  br label %2145

2145:                                             ; preds = %2144
  br label %2146

2146:                                             ; preds = %2145, %2088
  br label %2147

2147:                                             ; preds = %2146
  br label %2148

2148:                                             ; preds = %2147
  store i32 0, ptr %15, align 4
  br label %2149

2149:                                             ; preds = %2148, %1709, %788
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  %2150 = load i32, ptr %15, align 4
  switch i32 %2150, label %2155 [
    i32 0, label %2151
  ]

2151:                                             ; preds = %2149
  br label %2152

2152:                                             ; preds = %2151
  %2153 = load i32, ptr %14, align 4, !tbaa !9
  %2154 = add nsw i32 %2153, 1
  store i32 %2154, ptr %14, align 4, !tbaa !9
  br label %189, !llvm.loop !62

2155:                                             ; preds = %2149, %196
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  %2156 = load i32, ptr %15, align 4
  switch i32 %2156, label %2158 [
    i32 14, label %2157
  ]

2157:                                             ; preds = %2155
  store i32 0, ptr %5, align 4
  store i32 1, ptr %15, align 4
  br label %2158

2158:                                             ; preds = %2157, %2155
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  %2159 = load i32, ptr %5, align 4
  ret i32 %2159
}

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #3

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

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

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

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

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

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

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

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

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

declare zeroext i1 @s2n_is_in_fips_mode() #3

declare ptr @s2n_connection_new(i32 noundef) #3

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

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) #3

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

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #8

declare ptr @s2n_connection_get_cipher(ptr noundef) #3

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

declare ptr @s2n_connection_get_last_message_name(ptr noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare ptr @strrchr(ptr noundef, i32 noundef) #8

declare i32 @s2n_calculate_stacktrace() #3

declare i32 @s2n_connection_free(ptr noundef) #3

declare i32 @s2n_io_pair_close(ptr noundef) #3

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.s2n_debug_info = type { ptr, ptr }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_test_io_pair = type { i32, i32 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@async_pkey_op_called = external dso_local local_unnamed_addr global i32, align 4
@async_pkey_op_performed = external dso_local local_unnamed_addr global i32, align 4
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [101 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [77 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [106 x i8], align 1
@test_type = external dso_local local_unnamed_addr global i32, align 4
@.str.26 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [102 x i8], align 1
@_s2n_debug_info = external thread_local local_unnamed_addr global %struct.s2n_debug_info, align 8
@.str.31 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @test_cipher_preferences(ptr noundef %0, ptr noundef %1, ptr noundef readnone %2, i32 noundef %3) local_unnamed_addr #0 {
  %5 = alloca ptr, align 8
  %6 = alloca %struct.s2n_security_policy, align 8
  %7 = alloca %struct.s2n_cipher_preferences, align 8
  %8 = alloca %struct.s2n_test_io_pair, align 4
  %9 = getelementptr inbounds i8, ptr %0, i64 96
  %10 = load ptr, ptr %9, align 8, !tbaa !5
  %11 = load i32, ptr @test_count, align 4, !tbaa !16
  %12 = add nsw i32 %11, 1
  store i32 %12, ptr @test_count, align 4, !tbaa !16
  %13 = icmp eq ptr %10, null
  br i1 %13, label %14, label %38

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

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

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

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

38:                                               ; preds = %4
  %39 = tail call zeroext i1 @s2n_is_in_fips_mode() #11
  br i1 %39, label %40, label %42

40:                                               ; preds = %38
  %41 = getelementptr inbounds i8, ptr %1, i64 96
  store ptr %10, ptr %41, align 8, !tbaa !5
  br label %42

42:                                               ; preds = %40, %38
  %43 = getelementptr inbounds i8, ptr %10, i64 8
  %44 = load ptr, ptr %43, align 8, !tbaa !22
  %45 = load i32, ptr @test_count, align 4, !tbaa !16
  %46 = add nsw i32 %45, 1
  store i32 %46, ptr @test_count, align 4, !tbaa !16
  %47 = icmp eq ptr %44, null
  br i1 %47, label %52, label %.preheader

.preheader:                                       ; preds = %42
  %48 = load i16, ptr %44, align 8, !tbaa !24
  %.not138185.not = icmp eq i16 %48, 0
  br i1 %.not138185.not, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %49 = getelementptr inbounds i8, ptr %44, i64 8
  %50 = getelementptr inbounds i8, ptr %7, i64 8
  %51 = getelementptr inbounds i8, ptr %6, i64 8
  br label %76

52:                                               ; preds = %42
  %53 = tail call ptr @__errno_location() #10
  %54 = load i32, ptr %53, align 4, !tbaa !16
  %55 = load ptr, ptr @stderr, align 8, !tbaa !17
  %56 = tail call i32 @s2n_print_stacktrace(ptr noundef %55) #11
  %57 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %58 = trunc nuw i8 %57 to i1
  br i1 %58, label %59, label %63

59:                                               ; preds = %52
  %60 = load ptr, ptr @stderr, align 8, !tbaa !17
  %61 = tail call i32 @fileno(ptr noundef %60) #11
  %62 = tail call i32 @isatty(i32 noundef %61) #11
  %.not151 = icmp eq i32 %62, 0
  br i1 %.not151, label %63, label %64

63:                                               ; preds = %59, %52
  br label %64

64:                                               ; preds = %59, %63
  %.str.4.sink229 = phi ptr [ @.str.4, %63 ], [ @.str, %59 ]
  store i32 %54, ptr %53, align 4, !tbaa !16
  %65 = load ptr, ptr @stderr, align 8, !tbaa !17
  %66 = load i32, ptr @test_count, align 4, !tbaa !16
  %67 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %68 = load i32, ptr %67, align 4, !tbaa !16
  %69 = tail call ptr @s2n_strerror(i32 noundef %68, ptr noundef nonnull @.str.3) #11
  %70 = load i32, ptr %67, align 4, !tbaa !16
  %71 = tail call ptr @s2n_strerror_debug(i32 noundef %70, ptr noundef nonnull @.str.3) #11
  %72 = load i32, ptr %53, align 4, !tbaa !16
  %73 = tail call ptr @strerror(i32 noundef %72) #11
  %74 = load i32, ptr %53, align 4, !tbaa !16
  %75 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %65, ptr noundef nonnull %.str.4.sink229, i32 noundef %66, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, i32 noundef 139, ptr noundef %69, ptr noundef %71, ptr noundef %73, i32 noundef %74) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

76:                                               ; preds = %.lr.ph, %907
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %907 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #11
  %77 = load ptr, ptr %49, align 8, !tbaa !26
  %78 = getelementptr inbounds ptr, ptr %77, i64 %indvars.iv
  %79 = load ptr, ptr %78, align 8, !tbaa !17
  store ptr %79, ptr %5, align 8, !tbaa !17
  %80 = load i8, ptr %79, align 8
  %81 = and i8 %80, 1
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #11
  %82 = call ptr @s2n_connection_new(i32 noundef 1) #11
  %83 = call ptr @s2n_connection_new(i32 noundef 0) #11
  %84 = load i32, ptr @test_count, align 4, !tbaa !16
  %85 = add nsw i32 %84, 1
  store i32 %85, ptr @test_count, align 4, !tbaa !16
  %86 = icmp eq ptr %82, null
  br i1 %86, label %87, label %111

87:                                               ; preds = %76
  %88 = tail call ptr @__errno_location() #10
  %89 = load i32, ptr %88, align 4, !tbaa !16
  %90 = load ptr, ptr @stderr, align 8, !tbaa !17
  %91 = call i32 @s2n_print_stacktrace(ptr noundef %90) #11
  %92 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %93 = trunc nuw i8 %92 to i1
  br i1 %93, label %94, label %98

94:                                               ; preds = %87
  %95 = load ptr, ptr @stderr, align 8, !tbaa !17
  %96 = call i32 @fileno(ptr noundef %95) #11
  %97 = call i32 @isatty(i32 noundef %96) #11
  %.not150 = icmp eq i32 %97, 0
  br i1 %.not150, label %98, label %99

98:                                               ; preds = %94, %87
  br label %99

99:                                               ; preds = %94, %98
  %.str.4.sink240 = phi ptr [ @.str.4, %98 ], [ @.str, %94 ]
  store i32 %89, ptr %88, align 4, !tbaa !16
  %100 = load ptr, ptr @stderr, align 8, !tbaa !17
  %101 = load i32, ptr @test_count, align 4, !tbaa !16
  %102 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %103 = load i32, ptr %102, align 4, !tbaa !16
  %104 = call ptr @s2n_strerror(i32 noundef %103, ptr noundef nonnull @.str.3) #11
  %105 = load i32, ptr %102, align 4, !tbaa !16
  %106 = call ptr @s2n_strerror_debug(i32 noundef %105, ptr noundef nonnull @.str.3) #11
  %107 = load i32, ptr %88, align 4, !tbaa !16
  %108 = call ptr @strerror(i32 noundef %107) #11
  %109 = load i32, ptr %88, align 4, !tbaa !16
  %110 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %100, ptr noundef nonnull %.str.4.sink240, i32 noundef %101, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.2, i32 noundef 158, ptr noundef %104, ptr noundef %106, ptr noundef %108, i32 noundef %109) #12
  call void @exit(i32 noundef 1) #13
  unreachable

111:                                              ; preds = %76
  %112 = add nsw i32 %84, 2
  store i32 %112, ptr @test_count, align 4, !tbaa !16
  %113 = icmp eq ptr %83, null
  br i1 %113, label %114, label %138

114:                                              ; preds = %111
  %115 = tail call ptr @__errno_location() #10
  %116 = load i32, ptr %115, align 4, !tbaa !16
  %117 = load ptr, ptr @stderr, align 8, !tbaa !17
  %118 = call i32 @s2n_print_stacktrace(ptr noundef %117) #11
  %119 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %120 = trunc nuw i8 %119 to i1
  br i1 %120, label %121, label %125

121:                                              ; preds = %114
  %122 = load ptr, ptr @stderr, align 8, !tbaa !17
  %123 = call i32 @fileno(ptr noundef %122) #11
  %124 = call i32 @isatty(i32 noundef %123) #11
  %.not149 = icmp eq i32 %124, 0
  br i1 %.not149, label %125, label %126

125:                                              ; preds = %121, %114
  br label %126

126:                                              ; preds = %121, %125
  %.str.4.sink251 = phi ptr [ @.str.4, %125 ], [ @.str, %121 ]
  store i32 %116, ptr %115, align 4, !tbaa !16
  %127 = load ptr, ptr @stderr, align 8, !tbaa !17
  %128 = load i32, ptr @test_count, align 4, !tbaa !16
  %129 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %130 = load i32, ptr %129, align 4, !tbaa !16
  %131 = call ptr @s2n_strerror(i32 noundef %130, ptr noundef nonnull @.str.3) #11
  %132 = load i32, ptr %129, align 4, !tbaa !16
  %133 = call ptr @s2n_strerror_debug(i32 noundef %132, ptr noundef nonnull @.str.3) #11
  %134 = load i32, ptr %115, align 4, !tbaa !16
  %135 = call ptr @strerror(i32 noundef %134) #11
  %136 = load i32, ptr %115, align 4, !tbaa !16
  %137 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %127, ptr noundef nonnull %.str.4.sink251, i32 noundef %128, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.2, i32 noundef 159, ptr noundef %131, ptr noundef %133, ptr noundef %135, i32 noundef %136) #12
  call void @exit(i32 noundef 1) #13
  unreachable

138:                                              ; preds = %111
  call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %44, i64 24, i1 false)
  store i16 1, ptr %7, align 8, !tbaa !24
  store ptr %5, ptr %50, align 8, !tbaa !26
  call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, ptr noundef nonnull align 8 dereferenceable(64) %10, i64 64, i1 false)
  store ptr %7, ptr %51, align 8, !tbaa !22
  %139 = getelementptr inbounds i8, ptr %83, i64 16
  store ptr %6, ptr %139, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #11
  %140 = add nsw i32 %84, 3
  store i32 %140, ptr @test_count, align 4, !tbaa !16
  %141 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef nonnull %8) #11
  %142 = icmp eq i32 %141, -1
  br i1 %142, label %143, label %167

143:                                              ; preds = %138
  %144 = tail call ptr @__errno_location() #10
  %145 = load i32, ptr %144, align 4, !tbaa !16
  %146 = load ptr, ptr @stderr, align 8, !tbaa !17
  %147 = call i32 @s2n_print_stacktrace(ptr noundef %146) #11
  %148 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %150, label %154

150:                                              ; preds = %143
  %151 = load ptr, ptr @stderr, align 8, !tbaa !17
  %152 = call i32 @fileno(ptr noundef %151) #11
  %153 = call i32 @isatty(i32 noundef %152) #11
  %.not148 = icmp eq i32 %153, 0
  br i1 %.not148, label %154, label %155

154:                                              ; preds = %150, %143
  br label %155

155:                                              ; preds = %150, %154
  %.str.4.sink262 = phi ptr [ @.str.4, %154 ], [ @.str, %150 ]
  store i32 %145, ptr %144, align 4, !tbaa !16
  %156 = load ptr, ptr @stderr, align 8, !tbaa !17
  %157 = load i32, ptr @test_count, align 4, !tbaa !16
  %158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %159 = load i32, ptr %158, align 4, !tbaa !16
  %160 = call ptr @s2n_strerror(i32 noundef %159, ptr noundef nonnull @.str.3) #11
  %161 = load i32, ptr %158, align 4, !tbaa !16
  %162 = call ptr @s2n_strerror_debug(i32 noundef %161, ptr noundef nonnull @.str.3) #11
  %163 = load i32, ptr %144, align 4, !tbaa !16
  %164 = call ptr @strerror(i32 noundef %163) #11
  %165 = load i32, ptr %144, align 4, !tbaa !16
  %166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %156, ptr noundef nonnull %.str.4.sink262, i32 noundef %157, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 173, ptr noundef %160, ptr noundef %162, ptr noundef %164, i32 noundef %165) #12
  call void @exit(i32 noundef 1) #13
  unreachable

167:                                              ; preds = %138
  %168 = load i32, ptr @test_count, align 4, !tbaa !16
  %169 = add nsw i32 %168, 1
  store i32 %169, ptr @test_count, align 4, !tbaa !16
  %170 = call i32 @s2n_connection_set_io_pair(ptr noundef nonnull %82, ptr noundef nonnull %8) #11
  %171 = icmp eq i32 %170, -1
  br i1 %171, label %172, label %196

172:                                              ; preds = %167
  %173 = tail call ptr @__errno_location() #10
  %174 = load i32, ptr %173, align 4, !tbaa !16
  %175 = load ptr, ptr @stderr, align 8, !tbaa !17
  %176 = call i32 @s2n_print_stacktrace(ptr noundef %175) #11
  %177 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %178 = trunc nuw i8 %177 to i1
  br i1 %178, label %179, label %183

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

183:                                              ; preds = %179, %172
  br label %184

184:                                              ; preds = %179, %183
  %.str.4.sink273 = phi ptr [ @.str.4, %183 ], [ @.str, %179 ]
  store i32 %174, ptr %173, align 4, !tbaa !16
  %185 = load ptr, ptr @stderr, align 8, !tbaa !17
  %186 = load i32, ptr @test_count, align 4, !tbaa !16
  %187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %188 = load i32, ptr %187, align 4, !tbaa !16
  %189 = call ptr @s2n_strerror(i32 noundef %188, ptr noundef nonnull @.str.3) #11
  %190 = load i32, ptr %187, align 4, !tbaa !16
  %191 = call ptr @s2n_strerror_debug(i32 noundef %190, ptr noundef nonnull @.str.3) #11
  %192 = load i32, ptr %173, align 4, !tbaa !16
  %193 = call ptr @strerror(i32 noundef %192) #11
  %194 = load i32, ptr %173, align 4, !tbaa !16
  %195 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %185, ptr noundef nonnull %.str.4.sink273, i32 noundef %186, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.2, i32 noundef 175, ptr noundef %189, ptr noundef %191, ptr noundef %193, i32 noundef %194) #12
  call void @exit(i32 noundef 1) #13
  unreachable

196:                                              ; preds = %167
  %197 = load i32, ptr @test_count, align 4, !tbaa !16
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr @test_count, align 4, !tbaa !16
  %199 = call i32 @s2n_connection_set_config(ptr noundef nonnull %82, ptr noundef %1) #11
  %200 = icmp eq i32 %199, -1
  br i1 %200, label %201, label %225

201:                                              ; preds = %196
  %202 = tail call ptr @__errno_location() #10
  %203 = load i32, ptr %202, align 4, !tbaa !16
  %204 = load ptr, ptr @stderr, align 8, !tbaa !17
  %205 = call i32 @s2n_print_stacktrace(ptr noundef %204) #11
  %206 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %207 = trunc nuw i8 %206 to i1
  br i1 %207, label %208, label %212

208:                                              ; preds = %201
  %209 = load ptr, ptr @stderr, align 8, !tbaa !17
  %210 = call i32 @fileno(ptr noundef %209) #11
  %211 = call i32 @isatty(i32 noundef %210) #11
  %.not146 = icmp eq i32 %211, 0
  br i1 %.not146, label %212, label %213

212:                                              ; preds = %208, %201
  br label %213

213:                                              ; preds = %208, %212
  %.str.4.sink284 = phi ptr [ @.str.4, %212 ], [ @.str, %208 ]
  store i32 %203, ptr %202, align 4, !tbaa !16
  %214 = load ptr, ptr @stderr, align 8, !tbaa !17
  %215 = load i32, ptr @test_count, align 4, !tbaa !16
  %216 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %217 = load i32, ptr %216, align 4, !tbaa !16
  %218 = call ptr @s2n_strerror(i32 noundef %217, ptr noundef nonnull @.str.3) #11
  %219 = load i32, ptr %216, align 4, !tbaa !16
  %220 = call ptr @s2n_strerror_debug(i32 noundef %219, ptr noundef nonnull @.str.3) #11
  %221 = load i32, ptr %202, align 4, !tbaa !16
  %222 = call ptr @strerror(i32 noundef %221) #11
  %223 = load i32, ptr %202, align 4, !tbaa !16
  %224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %214, ptr noundef nonnull %.str.4.sink284, i32 noundef %215, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 176, ptr noundef %218, ptr noundef %220, ptr noundef %222, i32 noundef %223) #12
  call void @exit(i32 noundef 1) #13
  unreachable

225:                                              ; preds = %196
  %226 = load i32, ptr @test_count, align 4, !tbaa !16
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr @test_count, align 4, !tbaa !16
  %228 = call i32 @s2n_connection_set_io_pair(ptr noundef nonnull %83, ptr noundef nonnull %8) #11
  %229 = icmp eq i32 %228, -1
  br i1 %229, label %230, label %254

230:                                              ; preds = %225
  %231 = tail call ptr @__errno_location() #10
  %232 = load i32, ptr %231, align 4, !tbaa !16
  %233 = load ptr, ptr @stderr, align 8, !tbaa !17
  %234 = call i32 @s2n_print_stacktrace(ptr noundef %233) #11
  %235 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %236 = trunc nuw i8 %235 to i1
  br i1 %236, label %237, label %241

237:                                              ; preds = %230
  %238 = load ptr, ptr @stderr, align 8, !tbaa !17
  %239 = call i32 @fileno(ptr noundef %238) #11
  %240 = call i32 @isatty(i32 noundef %239) #11
  %.not145 = icmp eq i32 %240, 0
  br i1 %.not145, label %241, label %242

241:                                              ; preds = %237, %230
  br label %242

242:                                              ; preds = %237, %241
  %.str.4.sink295 = phi ptr [ @.str.4, %241 ], [ @.str, %237 ]
  store i32 %232, ptr %231, align 4, !tbaa !16
  %243 = load ptr, ptr @stderr, align 8, !tbaa !17
  %244 = load i32, ptr @test_count, align 4, !tbaa !16
  %245 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %246 = load i32, ptr %245, align 4, !tbaa !16
  %247 = call ptr @s2n_strerror(i32 noundef %246, ptr noundef nonnull @.str.3) #11
  %248 = load i32, ptr %245, align 4, !tbaa !16
  %249 = call ptr @s2n_strerror_debug(i32 noundef %248, ptr noundef nonnull @.str.3) #11
  %250 = load i32, ptr %231, align 4, !tbaa !16
  %251 = call ptr @strerror(i32 noundef %250) #11
  %252 = load i32, ptr %231, align 4, !tbaa !16
  %253 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %243, ptr noundef nonnull %.str.4.sink295, i32 noundef %244, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.2, i32 noundef 178, ptr noundef %247, ptr noundef %249, ptr noundef %251, i32 noundef %252) #12
  call void @exit(i32 noundef 1) #13
  unreachable

254:                                              ; preds = %225
  %255 = load i32, ptr @test_count, align 4, !tbaa !16
  %256 = add nsw i32 %255, 1
  store i32 %256, ptr @test_count, align 4, !tbaa !16
  %257 = call i32 @s2n_connection_set_config(ptr noundef nonnull %83, ptr noundef %0) #11
  %258 = icmp eq i32 %257, -1
  br i1 %258, label %259, label %283

259:                                              ; preds = %254
  %260 = tail call ptr @__errno_location() #10
  %261 = load i32, ptr %260, align 4, !tbaa !16
  %262 = load ptr, ptr @stderr, align 8, !tbaa !17
  %263 = call i32 @s2n_print_stacktrace(ptr noundef %262) #11
  %264 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %265 = trunc nuw i8 %264 to i1
  br i1 %265, label %266, label %270

266:                                              ; preds = %259
  %267 = load ptr, ptr @stderr, align 8, !tbaa !17
  %268 = call i32 @fileno(ptr noundef %267) #11
  %269 = call i32 @isatty(i32 noundef %268) #11
  %.not144 = icmp eq i32 %269, 0
  br i1 %.not144, label %270, label %271

270:                                              ; preds = %266, %259
  br label %271

271:                                              ; preds = %266, %270
  %.str.4.sink306 = phi ptr [ @.str.4, %270 ], [ @.str, %266 ]
  store i32 %261, ptr %260, align 4, !tbaa !16
  %272 = load ptr, ptr @stderr, align 8, !tbaa !17
  %273 = load i32, ptr @test_count, align 4, !tbaa !16
  %274 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %275 = load i32, ptr %274, align 4, !tbaa !16
  %276 = call ptr @s2n_strerror(i32 noundef %275, ptr noundef nonnull @.str.3) #11
  %277 = load i32, ptr %274, align 4, !tbaa !16
  %278 = call ptr @s2n_strerror_debug(i32 noundef %277, ptr noundef nonnull @.str.3) #11
  %279 = load i32, ptr %260, align 4, !tbaa !16
  %280 = call ptr @strerror(i32 noundef %279) #11
  %281 = load i32, ptr %260, align 4, !tbaa !16
  %282 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %272, ptr noundef nonnull %.str.4.sink306, i32 noundef %273, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.2, i32 noundef 179, ptr noundef %276, ptr noundef %278, ptr noundef %280, i32 noundef %281) #12
  call void @exit(i32 noundef 1) #13
  unreachable

283:                                              ; preds = %254
  store i32 0, ptr @async_pkey_op_called, align 4, !tbaa !16
  store i32 0, ptr @async_pkey_op_performed, align 4, !tbaa !16
  %.not.not = icmp eq i8 %81, 0
  %284 = call i32 @try_handshake(ptr noundef nonnull %83, ptr noundef nonnull %82)
  br i1 %.not.not, label %693, label %285

285:                                              ; preds = %283
  %286 = icmp sgt i32 %284, -1
  br i1 %286, label %287, label %.critedge

287:                                              ; preds = %285
  %288 = load i32, ptr @test_count, align 4, !tbaa !16
  %289 = add nsw i32 %288, 1
  store i32 %289, ptr @test_count, align 4, !tbaa !16
  %290 = call ptr @s2n_connection_get_cipher(ptr noundef nonnull %83) #11
  %291 = load ptr, ptr %5, align 8, !tbaa !17
  %292 = getelementptr inbounds i8, ptr %291, i64 8
  %293 = load ptr, ptr %292, align 8, !tbaa !51
  %294 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %290, ptr noundef nonnull dereferenceable(1) %293) #14
  %295 = icmp eq i32 %294, 0
  br i1 %295, label %320, label %296

296:                                              ; preds = %287
  %297 = tail call ptr @__errno_location() #10
  %298 = load i32, ptr %297, align 4, !tbaa !16
  %299 = load ptr, ptr @stderr, align 8, !tbaa !17
  %300 = call i32 @s2n_print_stacktrace(ptr noundef %299) #11
  %301 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %302 = trunc nuw i8 %301 to i1
  br i1 %302, label %303, label %307

303:                                              ; preds = %296
  %304 = load ptr, ptr @stderr, align 8, !tbaa !17
  %305 = call i32 @fileno(ptr noundef %304) #11
  %306 = call i32 @isatty(i32 noundef %305) #11
  %.not = icmp eq i32 %306, 0
  br i1 %.not, label %307, label %308

307:                                              ; preds = %303, %296
  br label %308

308:                                              ; preds = %303, %307
  %.str.4.sink317 = phi ptr [ @.str.4, %307 ], [ @.str, %303 ]
  store i32 %298, ptr %297, align 4, !tbaa !16
  %309 = load ptr, ptr @stderr, align 8, !tbaa !17
  %310 = load i32, ptr @test_count, align 4, !tbaa !16
  %311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %312 = load i32, ptr %311, align 4, !tbaa !16
  %313 = call ptr @s2n_strerror(i32 noundef %312, ptr noundef nonnull @.str.3) #11
  %314 = load i32, ptr %311, align 4, !tbaa !16
  %315 = call ptr @s2n_strerror_debug(i32 noundef %314, ptr noundef nonnull @.str.3) #11
  %316 = load i32, ptr %297, align 4, !tbaa !16
  %317 = call ptr @strerror(i32 noundef %316) #11
  %318 = load i32, ptr %297, align 4, !tbaa !16
  %319 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %309, ptr noundef nonnull %.str.4.sink317, i32 noundef %310, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.2, i32 noundef 188, ptr noundef %313, ptr noundef %315, ptr noundef %317, i32 noundef %318) #12
  call void @exit(i32 noundef 1) #13
  unreachable

320:                                              ; preds = %287
  %321 = load i32, ptr @test_count, align 4, !tbaa !16
  %322 = add nsw i32 %321, 1
  store i32 %322, ptr @test_count, align 4, !tbaa !16
  %323 = getelementptr inbounds i8, ptr %83, i64 1544
  %324 = load ptr, ptr %323, align 8, !tbaa !53
  %325 = icmp eq ptr %324, %2
  br i1 %325, label %350, label %326

326:                                              ; preds = %320
  %327 = tail call ptr @__errno_location() #10
  %328 = load i32, ptr %327, align 4, !tbaa !16
  %329 = load ptr, ptr @stderr, align 8, !tbaa !17
  %330 = call i32 @s2n_print_stacktrace(ptr noundef %329) #11
  %331 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %332 = trunc nuw i8 %331 to i1
  br i1 %332, label %333, label %337

333:                                              ; preds = %326
  %334 = load ptr, ptr @stderr, align 8, !tbaa !17
  %335 = call i32 @fileno(ptr noundef %334) #11
  %336 = call i32 @isatty(i32 noundef %335) #11
  %.not122 = icmp eq i32 %336, 0
  br i1 %.not122, label %337, label %338

337:                                              ; preds = %333, %326
  br label %338

338:                                              ; preds = %333, %337
  %.str.4.sink328 = phi ptr [ @.str.4, %337 ], [ @.str, %333 ]
  store i32 %328, ptr %327, align 4, !tbaa !16
  %339 = load ptr, ptr @stderr, align 8, !tbaa !17
  %340 = load i32, ptr @test_count, align 4, !tbaa !16
  %341 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %342 = load i32, ptr %341, align 4, !tbaa !16
  %343 = call ptr @s2n_strerror(i32 noundef %342, ptr noundef nonnull @.str.3) #11
  %344 = load i32, ptr %341, align 4, !tbaa !16
  %345 = call ptr @s2n_strerror_debug(i32 noundef %344, ptr noundef nonnull @.str.3) #11
  %346 = load i32, ptr %327, align 4, !tbaa !16
  %347 = call ptr @strerror(i32 noundef %346) #11
  %348 = load i32, ptr %327, align 4, !tbaa !16
  %349 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %339, ptr noundef nonnull %.str.4.sink328, i32 noundef %340, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.2, i32 noundef 190, ptr noundef %343, ptr noundef %345, ptr noundef %347, i32 noundef %348) #12
  call void @exit(i32 noundef 1) #13
  unreachable

350:                                              ; preds = %320
  %351 = add nsw i32 %321, 2
  store i32 %351, ptr @test_count, align 4, !tbaa !16
  %352 = getelementptr inbounds i8, ptr %83, i64 1528
  %353 = load ptr, ptr %352, align 8, !tbaa !54
  %354 = icmp eq ptr %353, null
  br i1 %354, label %355, label %379

355:                                              ; preds = %350
  %356 = tail call ptr @__errno_location() #10
  %357 = load i32, ptr %356, align 4, !tbaa !16
  %358 = load ptr, ptr @stderr, align 8, !tbaa !17
  %359 = call i32 @s2n_print_stacktrace(ptr noundef %358) #11
  %360 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %361 = trunc nuw i8 %360 to i1
  br i1 %361, label %362, label %366

362:                                              ; preds = %355
  %363 = load ptr, ptr @stderr, align 8, !tbaa !17
  %364 = call i32 @fileno(ptr noundef %363) #11
  %365 = call i32 @isatty(i32 noundef %364) #11
  %.not134 = icmp eq i32 %365, 0
  br i1 %.not134, label %366, label %367

366:                                              ; preds = %362, %355
  br label %367

367:                                              ; preds = %362, %366
  %.str.4.sink339 = phi ptr [ @.str.4, %366 ], [ @.str, %362 ]
  store i32 %357, ptr %356, align 4, !tbaa !16
  %368 = load ptr, ptr @stderr, align 8, !tbaa !17
  %369 = load i32, ptr @test_count, align 4, !tbaa !16
  %370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %371 = load i32, ptr %370, align 4, !tbaa !16
  %372 = call ptr @s2n_strerror(i32 noundef %371, ptr noundef nonnull @.str.3) #11
  %373 = load i32, ptr %370, align 4, !tbaa !16
  %374 = call ptr @s2n_strerror_debug(i32 noundef %373, ptr noundef nonnull @.str.3) #11
  %375 = load i32, ptr %356, align 4, !tbaa !16
  %376 = call ptr @strerror(i32 noundef %375) #11
  %377 = load i32, ptr %356, align 4, !tbaa !16
  %378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %368, ptr noundef nonnull %.str.4.sink339, i32 noundef %369, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.2, i32 noundef 191, ptr noundef %372, ptr noundef %374, ptr noundef %376, i32 noundef %377) #12
  call void @exit(i32 noundef 1) #13
  unreachable

379:                                              ; preds = %350
  %380 = add nsw i32 %321, 3
  store i32 %380, ptr @test_count, align 4, !tbaa !16
  %381 = getelementptr inbounds i8, ptr %353, i64 20
  %382 = load i32, ptr %381, align 4, !tbaa !55
  %383 = icmp eq i32 %382, %3
  br i1 %383, label %408, label %384

384:                                              ; preds = %379
  %385 = tail call ptr @__errno_location() #10
  %386 = load i32, ptr %385, align 4, !tbaa !16
  %387 = load ptr, ptr @stderr, align 8, !tbaa !17
  %388 = call i32 @s2n_print_stacktrace(ptr noundef %387) #11
  %389 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %390 = trunc nuw i8 %389 to i1
  br i1 %390, label %391, label %395

391:                                              ; preds = %384
  %392 = load ptr, ptr @stderr, align 8, !tbaa !17
  %393 = call i32 @fileno(ptr noundef %392) #11
  %394 = call i32 @isatty(i32 noundef %393) #11
  %.not123 = icmp eq i32 %394, 0
  br i1 %.not123, label %395, label %396

395:                                              ; preds = %391, %384
  br label %396

396:                                              ; preds = %391, %395
  %.str.4.sink350 = phi ptr [ @.str.4, %395 ], [ @.str, %391 ]
  store i32 %386, ptr %385, align 4, !tbaa !16
  %397 = load ptr, ptr @stderr, align 8, !tbaa !17
  %398 = load i32, ptr @test_count, align 4, !tbaa !16
  %399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %400 = load i32, ptr %399, align 4, !tbaa !16
  %401 = call ptr @s2n_strerror(i32 noundef %400, ptr noundef nonnull @.str.3) #11
  %402 = load i32, ptr %399, align 4, !tbaa !16
  %403 = call ptr @s2n_strerror_debug(i32 noundef %402, ptr noundef nonnull @.str.3) #11
  %404 = load i32, ptr %385, align 4, !tbaa !16
  %405 = call ptr @strerror(i32 noundef %404) #11
  %406 = load i32, ptr %385, align 4, !tbaa !16
  %407 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %397, ptr noundef nonnull %.str.4.sink350, i32 noundef %398, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.2, i32 noundef 192, ptr noundef %401, ptr noundef %403, ptr noundef %405, i32 noundef %406) #12
  call void @exit(i32 noundef 1) #13
  unreachable

408:                                              ; preds = %379
  %409 = add nsw i32 %321, 4
  store i32 %409, ptr @test_count, align 4, !tbaa !16
  %410 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef nonnull %83, i32 noundef 1) #11
  br i1 %410, label %435, label %411

411:                                              ; preds = %408
  %412 = tail call ptr @__errno_location() #10
  %413 = load i32, ptr %412, align 4, !tbaa !16
  %414 = load ptr, ptr @stderr, align 8, !tbaa !17
  %415 = call i32 @s2n_print_stacktrace(ptr noundef %414) #11
  %416 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %417 = trunc nuw i8 %416 to i1
  br i1 %417, label %418, label %422

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

422:                                              ; preds = %418, %411
  br label %423

423:                                              ; preds = %418, %422
  %.str.4.sink361 = phi ptr [ @.str.4, %422 ], [ @.str, %418 ]
  store i32 %413, ptr %412, align 4, !tbaa !16
  %424 = load ptr, ptr @stderr, align 8, !tbaa !17
  %425 = load i32, ptr @test_count, align 4, !tbaa !16
  %426 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %427 = load i32, ptr %426, align 4, !tbaa !16
  %428 = call ptr @s2n_strerror(i32 noundef %427, ptr noundef nonnull @.str.3) #11
  %429 = load i32, ptr %426, align 4, !tbaa !16
  %430 = call ptr @s2n_strerror_debug(i32 noundef %429, ptr noundef nonnull @.str.3) #11
  %431 = load i32, ptr %412, align 4, !tbaa !16
  %432 = call ptr @strerror(i32 noundef %431) #11
  %433 = load i32, ptr %412, align 4, !tbaa !16
  %434 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %424, ptr noundef nonnull %.str.4.sink361, i32 noundef %425, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.2, i32 noundef 194, ptr noundef %428, ptr noundef %430, ptr noundef %432, i32 noundef %433) #12
  call void @exit(i32 noundef 1) #13
  unreachable

435:                                              ; preds = %408
  %436 = load i32, ptr @test_count, align 4, !tbaa !16
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr @test_count, align 4, !tbaa !16
  %438 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef nonnull %82, i32 noundef 1) #11
  br i1 %438, label %463, label %439

439:                                              ; preds = %435
  %440 = tail call ptr @__errno_location() #10
  %441 = load i32, ptr %440, align 4, !tbaa !16
  %442 = load ptr, ptr @stderr, align 8, !tbaa !17
  %443 = call i32 @s2n_print_stacktrace(ptr noundef %442) #11
  %444 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %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 !17
  %448 = call i32 @fileno(ptr noundef %447) #11
  %449 = call i32 @isatty(i32 noundef %448) #11
  %.not125 = icmp eq i32 %449, 0
  br i1 %.not125, label %450, label %451

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

451:                                              ; preds = %446, %450
  %.str.4.sink372 = phi ptr [ @.str.4, %450 ], [ @.str, %446 ]
  store i32 %441, ptr %440, align 4, !tbaa !16
  %452 = load ptr, ptr @stderr, align 8, !tbaa !17
  %453 = load i32, ptr @test_count, align 4, !tbaa !16
  %454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %455 = load i32, ptr %454, align 4, !tbaa !16
  %456 = call ptr @s2n_strerror(i32 noundef %455, ptr noundef nonnull @.str.3) #11
  %457 = load i32, ptr %454, align 4, !tbaa !16
  %458 = call ptr @s2n_strerror_debug(i32 noundef %457, ptr noundef nonnull @.str.3) #11
  %459 = load i32, ptr %440, align 4, !tbaa !16
  %460 = call ptr @strerror(i32 noundef %459) #11
  %461 = load i32, ptr %440, align 4, !tbaa !16
  %462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %452, ptr noundef nonnull %.str.4.sink372, i32 noundef %453, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 195, ptr noundef %456, ptr noundef %458, ptr noundef %460, i32 noundef %461) #12
  call void @exit(i32 noundef 1) #13
  unreachable

463:                                              ; preds = %435
  %464 = load i32, ptr @test_count, align 4, !tbaa !16
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr @test_count, align 4, !tbaa !16
  %466 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef nonnull %83, i32 noundef 2) #11
  br i1 %466, label %491, label %467

467:                                              ; preds = %463
  %468 = tail call ptr @__errno_location() #10
  %469 = load i32, ptr %468, align 4, !tbaa !16
  %470 = load ptr, ptr @stderr, align 8, !tbaa !17
  %471 = call i32 @s2n_print_stacktrace(ptr noundef %470) #11
  %472 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %473 = trunc nuw i8 %472 to i1
  br i1 %473, label %474, label %478

474:                                              ; preds = %467
  %475 = load ptr, ptr @stderr, align 8, !tbaa !17
  %476 = call i32 @fileno(ptr noundef %475) #11
  %477 = call i32 @isatty(i32 noundef %476) #11
  %.not126 = icmp eq i32 %477, 0
  br i1 %.not126, label %478, label %479

478:                                              ; preds = %474, %467
  br label %479

479:                                              ; preds = %474, %478
  %.str.4.sink383 = phi ptr [ @.str.4, %478 ], [ @.str, %474 ]
  store i32 %469, ptr %468, align 4, !tbaa !16
  %480 = load ptr, ptr @stderr, align 8, !tbaa !17
  %481 = load i32, ptr @test_count, align 4, !tbaa !16
  %482 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %483 = load i32, ptr %482, align 4, !tbaa !16
  %484 = call ptr @s2n_strerror(i32 noundef %483, ptr noundef nonnull @.str.3) #11
  %485 = load i32, ptr %482, align 4, !tbaa !16
  %486 = call ptr @s2n_strerror_debug(i32 noundef %485, ptr noundef nonnull @.str.3) #11
  %487 = load i32, ptr %468, align 4, !tbaa !16
  %488 = call ptr @strerror(i32 noundef %487) #11
  %489 = load i32, ptr %468, align 4, !tbaa !16
  %490 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %480, ptr noundef nonnull %.str.4.sink383, i32 noundef %481, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 197, ptr noundef %484, ptr noundef %486, ptr noundef %488, i32 noundef %489) #12
  call void @exit(i32 noundef 1) #13
  unreachable

491:                                              ; preds = %463
  %492 = load i32, ptr @test_count, align 4, !tbaa !16
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr @test_count, align 4, !tbaa !16
  %494 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef nonnull %82, i32 noundef 2) #11
  br i1 %494, label %519, label %495

495:                                              ; preds = %491
  %496 = tail call ptr @__errno_location() #10
  %497 = load i32, ptr %496, align 4, !tbaa !16
  %498 = load ptr, ptr @stderr, align 8, !tbaa !17
  %499 = call i32 @s2n_print_stacktrace(ptr noundef %498) #11
  %500 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %501 = trunc nuw i8 %500 to i1
  br i1 %501, label %502, label %506

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

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

507:                                              ; preds = %502, %506
  %.str.4.sink394 = phi ptr [ @.str.4, %506 ], [ @.str, %502 ]
  store i32 %497, ptr %496, align 4, !tbaa !16
  %508 = load ptr, ptr @stderr, align 8, !tbaa !17
  %509 = load i32, ptr @test_count, align 4, !tbaa !16
  %510 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %511 = load i32, ptr %510, align 4, !tbaa !16
  %512 = call ptr @s2n_strerror(i32 noundef %511, ptr noundef nonnull @.str.3) #11
  %513 = load i32, ptr %510, align 4, !tbaa !16
  %514 = call ptr @s2n_strerror_debug(i32 noundef %513, ptr noundef nonnull @.str.3) #11
  %515 = load i32, ptr %496, align 4, !tbaa !16
  %516 = call ptr @strerror(i32 noundef %515) #11
  %517 = load i32, ptr %496, align 4, !tbaa !16
  %518 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %508, ptr noundef nonnull %.str.4.sink394, i32 noundef %509, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 198, ptr noundef %512, ptr noundef %514, ptr noundef %516, i32 noundef %517) #12
  call void @exit(i32 noundef 1) #13
  unreachable

519:                                              ; preds = %491
  %520 = load i32, ptr @test_count, align 4, !tbaa !16
  %521 = add nsw i32 %520, 1
  store i32 %521, ptr @test_count, align 4, !tbaa !16
  %522 = call ptr @s2n_connection_get_last_message_name(ptr noundef nonnull %83) #11
  %523 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %522, ptr noundef nonnull dereferenceable(1) @.str.23) #14
  %524 = icmp eq i32 %523, 0
  br i1 %524, label %549, label %525

525:                                              ; preds = %519
  %526 = tail call ptr @__errno_location() #10
  %527 = load i32, ptr %526, align 4, !tbaa !16
  %528 = load ptr, ptr @stderr, align 8, !tbaa !17
  %529 = call i32 @s2n_print_stacktrace(ptr noundef %528) #11
  %530 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %531 = trunc nuw i8 %530 to i1
  br i1 %531, label %532, label %536

532:                                              ; preds = %525
  %533 = load ptr, ptr @stderr, align 8, !tbaa !17
  %534 = call i32 @fileno(ptr noundef %533) #11
  %535 = call i32 @isatty(i32 noundef %534) #11
  %.not128 = icmp eq i32 %535, 0
  br i1 %.not128, label %536, label %537

536:                                              ; preds = %532, %525
  br label %537

537:                                              ; preds = %532, %536
  %.str.4.sink405 = phi ptr [ @.str.4, %536 ], [ @.str, %532 ]
  store i32 %527, ptr %526, align 4, !tbaa !16
  %538 = load ptr, ptr @stderr, align 8, !tbaa !17
  %539 = load i32, ptr @test_count, align 4, !tbaa !16
  %540 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %541 = load i32, ptr %540, align 4, !tbaa !16
  %542 = call ptr @s2n_strerror(i32 noundef %541, ptr noundef nonnull @.str.3) #11
  %543 = load i32, ptr %540, align 4, !tbaa !16
  %544 = call ptr @s2n_strerror_debug(i32 noundef %543, ptr noundef nonnull @.str.3) #11
  %545 = load i32, ptr %526, align 4, !tbaa !16
  %546 = call ptr @strerror(i32 noundef %545) #11
  %547 = load i32, ptr %526, align 4, !tbaa !16
  %548 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %538, ptr noundef nonnull %.str.4.sink405, i32 noundef %539, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 200, ptr noundef %542, ptr noundef %544, ptr noundef %546, i32 noundef %547) #12
  call void @exit(i32 noundef 1) #13
  unreachable

549:                                              ; preds = %519
  %550 = load i32, ptr @test_count, align 4, !tbaa !16
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr @test_count, align 4, !tbaa !16
  %552 = call ptr @s2n_connection_get_last_message_name(ptr noundef nonnull %82) #11
  %553 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %552, ptr noundef nonnull dereferenceable(1) @.str.23) #14
  %554 = icmp eq i32 %553, 0
  br i1 %554, label %579, label %555

555:                                              ; preds = %549
  %556 = tail call ptr @__errno_location() #10
  %557 = load i32, ptr %556, align 4, !tbaa !16
  %558 = load ptr, ptr @stderr, align 8, !tbaa !17
  %559 = call i32 @s2n_print_stacktrace(ptr noundef %558) #11
  %560 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %561 = trunc nuw i8 %560 to i1
  br i1 %561, label %562, label %566

562:                                              ; preds = %555
  %563 = load ptr, ptr @stderr, align 8, !tbaa !17
  %564 = call i32 @fileno(ptr noundef %563) #11
  %565 = call i32 @isatty(i32 noundef %564) #11
  %.not129 = icmp eq i32 %565, 0
  br i1 %.not129, label %566, label %567

566:                                              ; preds = %562, %555
  br label %567

567:                                              ; preds = %562, %566
  %.str.4.sink416 = phi ptr [ @.str.4, %566 ], [ @.str, %562 ]
  store i32 %557, ptr %556, align 4, !tbaa !16
  %568 = load ptr, ptr @stderr, align 8, !tbaa !17
  %569 = load i32, ptr @test_count, align 4, !tbaa !16
  %570 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %571 = load i32, ptr %570, align 4, !tbaa !16
  %572 = call ptr @s2n_strerror(i32 noundef %571, ptr noundef nonnull @.str.3) #11
  %573 = load i32, ptr %570, align 4, !tbaa !16
  %574 = call ptr @s2n_strerror_debug(i32 noundef %573, ptr noundef nonnull @.str.3) #11
  %575 = load i32, ptr %556, align 4, !tbaa !16
  %576 = call ptr @strerror(i32 noundef %575) #11
  %577 = load i32, ptr %556, align 4, !tbaa !16
  %578 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %568, ptr noundef nonnull %.str.4.sink416, i32 noundef %569, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 201, ptr noundef %572, ptr noundef %574, ptr noundef %576, i32 noundef %577) #12
  call void @exit(i32 noundef 1) #13
  unreachable

579:                                              ; preds = %549
  %580 = load i32, ptr @test_type, align 4, !tbaa !16
  %581 = icmp eq i32 %580, 1
  %582 = load i32, ptr @test_count, align 4, !tbaa !16
  %583 = add nsw i32 %582, 1
  store i32 %583, ptr @test_count, align 4, !tbaa !16
  %584 = load i32, ptr @async_pkey_op_called, align 4, !tbaa !16
  br i1 %581, label %585, label %639

585:                                              ; preds = %579
  %586 = icmp eq i32 %584, 1
  br i1 %586, label %611, label %587

587:                                              ; preds = %585
  %588 = tail call ptr @__errno_location() #10
  %589 = load i32, ptr %588, align 4, !tbaa !16
  %590 = load ptr, ptr @stderr, align 8, !tbaa !17
  %591 = call i32 @s2n_print_stacktrace(ptr noundef %590) #11
  %592 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %593 = trunc nuw i8 %592 to i1
  br i1 %593, label %594, label %598

594:                                              ; preds = %587
  %595 = load ptr, ptr @stderr, align 8, !tbaa !17
  %596 = call i32 @fileno(ptr noundef %595) #11
  %597 = call i32 @isatty(i32 noundef %596) #11
  %.not132 = icmp eq i32 %597, 0
  br i1 %.not132, label %598, label %599

598:                                              ; preds = %594, %587
  br label %599

599:                                              ; preds = %594, %598
  %.str.4.sink427 = phi ptr [ @.str.4, %598 ], [ @.str, %594 ]
  store i32 %589, ptr %588, align 4, !tbaa !16
  %600 = load ptr, ptr @stderr, align 8, !tbaa !17
  %601 = load i32, ptr @test_count, align 4, !tbaa !16
  %602 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %603 = load i32, ptr %602, align 4, !tbaa !16
  %604 = call ptr @s2n_strerror(i32 noundef %603, ptr noundef nonnull @.str.3) #11
  %605 = load i32, ptr %602, align 4, !tbaa !16
  %606 = call ptr @s2n_strerror_debug(i32 noundef %605, ptr noundef nonnull @.str.3) #11
  %607 = load i32, ptr %588, align 4, !tbaa !16
  %608 = call ptr @strerror(i32 noundef %607) #11
  %609 = load i32, ptr %588, align 4, !tbaa !16
  %610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %600, ptr noundef nonnull %.str.4.sink427, i32 noundef %601, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.2, i32 noundef 204, ptr noundef %604, ptr noundef %606, ptr noundef %608, i32 noundef %609) #12
  call void @exit(i32 noundef 1) #13
  unreachable

611:                                              ; preds = %585
  %612 = add nsw i32 %582, 2
  store i32 %612, ptr @test_count, align 4, !tbaa !16
  %613 = load i32, ptr @async_pkey_op_performed, align 4, !tbaa !16
  %614 = icmp eq i32 %613, 1
  br i1 %614, label %820, label %615

615:                                              ; preds = %611
  %616 = tail call ptr @__errno_location() #10
  %617 = load i32, ptr %616, align 4, !tbaa !16
  %618 = load ptr, ptr @stderr, align 8, !tbaa !17
  %619 = call i32 @s2n_print_stacktrace(ptr noundef %618) #11
  %620 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %621 = trunc nuw i8 %620 to i1
  br i1 %621, label %622, label %626

622:                                              ; preds = %615
  %623 = load ptr, ptr @stderr, align 8, !tbaa !17
  %624 = call i32 @fileno(ptr noundef %623) #11
  %625 = call i32 @isatty(i32 noundef %624) #11
  %.not133 = icmp eq i32 %625, 0
  br i1 %.not133, label %626, label %627

626:                                              ; preds = %622, %615
  br label %627

627:                                              ; preds = %622, %626
  %.str.4.sink438 = phi ptr [ @.str.4, %626 ], [ @.str, %622 ]
  store i32 %617, ptr %616, align 4, !tbaa !16
  %628 = load ptr, ptr @stderr, align 8, !tbaa !17
  %629 = load i32, ptr @test_count, align 4, !tbaa !16
  %630 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %631 = load i32, ptr %630, align 4, !tbaa !16
  %632 = call ptr @s2n_strerror(i32 noundef %631, ptr noundef nonnull @.str.3) #11
  %633 = load i32, ptr %630, align 4, !tbaa !16
  %634 = call ptr @s2n_strerror_debug(i32 noundef %633, ptr noundef nonnull @.str.3) #11
  %635 = load i32, ptr %616, align 4, !tbaa !16
  %636 = call ptr @strerror(i32 noundef %635) #11
  %637 = load i32, ptr %616, align 4, !tbaa !16
  %638 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %628, ptr noundef nonnull %.str.4.sink438, i32 noundef %629, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.2, i32 noundef 205, ptr noundef %632, ptr noundef %634, ptr noundef %636, i32 noundef %637) #12
  call void @exit(i32 noundef 1) #13
  unreachable

639:                                              ; preds = %579
  %640 = icmp eq i32 %584, 0
  br i1 %640, label %665, label %641

641:                                              ; preds = %639
  %642 = tail call ptr @__errno_location() #10
  %643 = load i32, ptr %642, align 4, !tbaa !16
  %644 = load ptr, ptr @stderr, align 8, !tbaa !17
  %645 = call i32 @s2n_print_stacktrace(ptr noundef %644) #11
  %646 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %647 = trunc nuw i8 %646 to i1
  br i1 %647, label %648, label %652

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

652:                                              ; preds = %648, %641
  br label %653

653:                                              ; preds = %648, %652
  %.str.4.sink449 = phi ptr [ @.str.4, %652 ], [ @.str, %648 ]
  store i32 %643, ptr %642, align 4, !tbaa !16
  %654 = load ptr, ptr @stderr, align 8, !tbaa !17
  %655 = load i32, ptr @test_count, align 4, !tbaa !16
  %656 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %657 = load i32, ptr %656, align 4, !tbaa !16
  %658 = call ptr @s2n_strerror(i32 noundef %657, ptr noundef nonnull @.str.3) #11
  %659 = load i32, ptr %656, align 4, !tbaa !16
  %660 = call ptr @s2n_strerror_debug(i32 noundef %659, ptr noundef nonnull @.str.3) #11
  %661 = load i32, ptr %642, align 4, !tbaa !16
  %662 = call ptr @strerror(i32 noundef %661) #11
  %663 = load i32, ptr %642, align 4, !tbaa !16
  %664 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %654, ptr noundef nonnull %.str.4.sink449, i32 noundef %655, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.2, i32 noundef 207, ptr noundef %658, ptr noundef %660, ptr noundef %662, i32 noundef %663) #12
  call void @exit(i32 noundef 1) #13
  unreachable

665:                                              ; preds = %639
  %666 = add nsw i32 %582, 2
  store i32 %666, ptr @test_count, align 4, !tbaa !16
  %667 = load i32, ptr @async_pkey_op_performed, align 4, !tbaa !16
  %668 = icmp eq i32 %667, 0
  br i1 %668, label %820, label %669

669:                                              ; preds = %665
  %670 = tail call ptr @__errno_location() #10
  %671 = load i32, ptr %670, align 4, !tbaa !16
  %672 = load ptr, ptr @stderr, align 8, !tbaa !17
  %673 = call i32 @s2n_print_stacktrace(ptr noundef %672) #11
  %674 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %675 = trunc nuw i8 %674 to i1
  br i1 %675, label %676, label %680

676:                                              ; preds = %669
  %677 = load ptr, ptr @stderr, align 8, !tbaa !17
  %678 = call i32 @fileno(ptr noundef %677) #11
  %679 = call i32 @isatty(i32 noundef %678) #11
  %.not131 = icmp eq i32 %679, 0
  br i1 %.not131, label %680, label %681

680:                                              ; preds = %676, %669
  br label %681

681:                                              ; preds = %676, %680
  %.str.4.sink460 = phi ptr [ @.str.4, %680 ], [ @.str, %676 ]
  store i32 %671, ptr %670, align 4, !tbaa !16
  %682 = load ptr, ptr @stderr, align 8, !tbaa !17
  %683 = load i32, ptr @test_count, align 4, !tbaa !16
  %684 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %685 = load i32, ptr %684, align 4, !tbaa !16
  %686 = call ptr @s2n_strerror(i32 noundef %685, ptr noundef nonnull @.str.3) #11
  %687 = load i32, ptr %684, align 4, !tbaa !16
  %688 = call ptr @s2n_strerror_debug(i32 noundef %687, ptr noundef nonnull @.str.3) #11
  %689 = load i32, ptr %670, align 4, !tbaa !16
  %690 = call ptr @strerror(i32 noundef %689) #11
  %691 = load i32, ptr %670, align 4, !tbaa !16
  %692 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %682, ptr noundef nonnull %.str.4.sink460, i32 noundef %683, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.2, i32 noundef 208, ptr noundef %686, ptr noundef %688, ptr noundef %690, i32 noundef %691) #12
  call void @exit(i32 noundef 1) #13
  unreachable

693:                                              ; preds = %283
  %694 = icmp eq i32 %284, -1
  br i1 %694, label %703, label %695

695:                                              ; preds = %693
  %696 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.30, ptr %696, align 8, !tbaa !57
  %697 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.30, i64 21), i32 noundef 47) #14
  %.not135 = icmp eq ptr %697, null
  %698 = getelementptr inbounds i8, ptr %697, i64 1
  %699 = select i1 %.not135, ptr getelementptr inbounds (i8, ptr @.str.30, i64 21), ptr %698
  %700 = getelementptr inbounds i8, ptr %696, i64 8
  store ptr %699, ptr %700, align 8, !tbaa !59
  %701 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %701, align 4, !tbaa !16
  %702 = call i32 @s2n_calculate_stacktrace() #11
  br label %.critedge

703:                                              ; preds = %693
  %704 = load i32, ptr @test_count, align 4, !tbaa !16
  %705 = add nsw i32 %704, 1
  store i32 %705, ptr @test_count, align 4, !tbaa !16
  %706 = call ptr @s2n_connection_get_last_message_name(ptr noundef nonnull %83) #11
  %707 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %706, ptr noundef nonnull dereferenceable(1) @.str.23) #14
  %708 = icmp eq i32 %707, 0
  br i1 %708, label %709, label %733

709:                                              ; preds = %703
  %710 = tail call ptr @__errno_location() #10
  %711 = load i32, ptr %710, align 4, !tbaa !16
  %712 = load ptr, ptr @stderr, align 8, !tbaa !17
  %713 = call i32 @s2n_print_stacktrace(ptr noundef %712) #11
  %714 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %715 = trunc nuw i8 %714 to i1
  br i1 %715, label %716, label %720

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

720:                                              ; preds = %716, %709
  br label %721

721:                                              ; preds = %716, %720
  %.str.4.sink471 = phi ptr [ @.str.4, %720 ], [ @.str, %716 ]
  store i32 %711, ptr %710, align 4, !tbaa !16
  %722 = load ptr, ptr @stderr, align 8, !tbaa !17
  %723 = load i32, ptr @test_count, align 4, !tbaa !16
  %724 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %725 = load i32, ptr %724, align 4, !tbaa !16
  %726 = call ptr @s2n_strerror(i32 noundef %725, ptr noundef nonnull @.str.3) #11
  %727 = load i32, ptr %724, align 4, !tbaa !16
  %728 = call ptr @s2n_strerror_debug(i32 noundef %727, ptr noundef nonnull @.str.3) #11
  %729 = load i32, ptr %710, align 4, !tbaa !16
  %730 = call ptr @strerror(i32 noundef %729) #11
  %731 = load i32, ptr %710, align 4, !tbaa !16
  %732 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %722, ptr noundef nonnull %.str.4.sink471, i32 noundef %723, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.2, i32 noundef 212, ptr noundef %726, ptr noundef %728, ptr noundef %730, i32 noundef %731) #12
  call void @exit(i32 noundef 1) #13
  unreachable

733:                                              ; preds = %703
  %734 = load i32, ptr @test_count, align 4, !tbaa !16
  %735 = add nsw i32 %734, 1
  store i32 %735, ptr @test_count, align 4, !tbaa !16
  %736 = call ptr @s2n_connection_get_last_message_name(ptr noundef nonnull %82) #11
  %737 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %736, ptr noundef nonnull dereferenceable(1) @.str.23) #14
  %738 = icmp eq i32 %737, 0
  br i1 %738, label %739, label %763

739:                                              ; preds = %733
  %740 = tail call ptr @__errno_location() #10
  %741 = load i32, ptr %740, align 4, !tbaa !16
  %742 = load ptr, ptr @stderr, align 8, !tbaa !17
  %743 = call i32 @s2n_print_stacktrace(ptr noundef %742) #11
  %744 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %745 = trunc nuw i8 %744 to i1
  br i1 %745, label %746, label %750

746:                                              ; preds = %739
  %747 = load ptr, ptr @stderr, align 8, !tbaa !17
  %748 = call i32 @fileno(ptr noundef %747) #11
  %749 = call i32 @isatty(i32 noundef %748) #11
  %.not142 = icmp eq i32 %749, 0
  br i1 %.not142, label %750, label %751

750:                                              ; preds = %746, %739
  br label %751

751:                                              ; preds = %746, %750
  %.str.4.sink482 = phi ptr [ @.str.4, %750 ], [ @.str, %746 ]
  store i32 %741, ptr %740, align 4, !tbaa !16
  %752 = load ptr, ptr @stderr, align 8, !tbaa !17
  %753 = load i32, ptr @test_count, align 4, !tbaa !16
  %754 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %755 = load i32, ptr %754, align 4, !tbaa !16
  %756 = call ptr @s2n_strerror(i32 noundef %755, ptr noundef nonnull @.str.3) #11
  %757 = load i32, ptr %754, align 4, !tbaa !16
  %758 = call ptr @s2n_strerror_debug(i32 noundef %757, ptr noundef nonnull @.str.3) #11
  %759 = load i32, ptr %740, align 4, !tbaa !16
  %760 = call ptr @strerror(i32 noundef %759) #11
  %761 = load i32, ptr %740, align 4, !tbaa !16
  %762 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %752, ptr noundef nonnull %.str.4.sink482, i32 noundef %753, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.2, i32 noundef 213, ptr noundef %756, ptr noundef %758, ptr noundef %760, i32 noundef %761) #12
  call void @exit(i32 noundef 1) #13
  unreachable

763:                                              ; preds = %733
  %764 = load i32, ptr @test_count, align 4, !tbaa !16
  %765 = add nsw i32 %764, 1
  store i32 %765, ptr @test_count, align 4, !tbaa !16
  %766 = load i32, ptr @async_pkey_op_called, align 4, !tbaa !16
  %767 = icmp eq i32 %766, 0
  br i1 %767, label %792, label %768

768:                                              ; preds = %763
  %769 = tail call ptr @__errno_location() #10
  %770 = load i32, ptr %769, align 4, !tbaa !16
  %771 = load ptr, ptr @stderr, align 8, !tbaa !17
  %772 = call i32 @s2n_print_stacktrace(ptr noundef %771) #11
  %773 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %774 = trunc nuw i8 %773 to i1
  br i1 %774, label %775, label %779

775:                                              ; preds = %768
  %776 = load ptr, ptr @stderr, align 8, !tbaa !17
  %777 = call i32 @fileno(ptr noundef %776) #11
  %778 = call i32 @isatty(i32 noundef %777) #11
  %.not136 = icmp eq i32 %778, 0
  br i1 %.not136, label %779, label %780

779:                                              ; preds = %775, %768
  br label %780

780:                                              ; preds = %775, %779
  %.str.4.sink493 = phi ptr [ @.str.4, %779 ], [ @.str, %775 ]
  store i32 %770, ptr %769, align 4, !tbaa !16
  %781 = load ptr, ptr @stderr, align 8, !tbaa !17
  %782 = load i32, ptr @test_count, align 4, !tbaa !16
  %783 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %784 = load i32, ptr %783, align 4, !tbaa !16
  %785 = call ptr @s2n_strerror(i32 noundef %784, ptr noundef nonnull @.str.3) #11
  %786 = load i32, ptr %783, align 4, !tbaa !16
  %787 = call ptr @s2n_strerror_debug(i32 noundef %786, ptr noundef nonnull @.str.3) #11
  %788 = load i32, ptr %769, align 4, !tbaa !16
  %789 = call ptr @strerror(i32 noundef %788) #11
  %790 = load i32, ptr %769, align 4, !tbaa !16
  %791 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %781, ptr noundef nonnull %.str.4.sink493, i32 noundef %782, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.2, i32 noundef 214, ptr noundef %785, ptr noundef %787, ptr noundef %789, i32 noundef %790) #12
  call void @exit(i32 noundef 1) #13
  unreachable

792:                                              ; preds = %763
  %793 = add nsw i32 %764, 2
  store i32 %793, ptr @test_count, align 4, !tbaa !16
  %794 = load i32, ptr @async_pkey_op_performed, align 4, !tbaa !16
  %795 = icmp eq i32 %794, 0
  br i1 %795, label %820, label %796

796:                                              ; preds = %792
  %797 = tail call ptr @__errno_location() #10
  %798 = load i32, ptr %797, align 4, !tbaa !16
  %799 = load ptr, ptr @stderr, align 8, !tbaa !17
  %800 = call i32 @s2n_print_stacktrace(ptr noundef %799) #11
  %801 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %802 = trunc nuw i8 %801 to i1
  br i1 %802, label %803, label %807

803:                                              ; preds = %796
  %804 = load ptr, ptr @stderr, align 8, !tbaa !17
  %805 = call i32 @fileno(ptr noundef %804) #11
  %806 = call i32 @isatty(i32 noundef %805) #11
  %.not137 = icmp eq i32 %806, 0
  br i1 %.not137, label %807, label %808

807:                                              ; preds = %803, %796
  br label %808

808:                                              ; preds = %803, %807
  %.str.4.sink504 = phi ptr [ @.str.4, %807 ], [ @.str, %803 ]
  store i32 %798, ptr %797, align 4, !tbaa !16
  %809 = load ptr, ptr @stderr, align 8, !tbaa !17
  %810 = load i32, ptr @test_count, align 4, !tbaa !16
  %811 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %812 = load i32, ptr %811, align 4, !tbaa !16
  %813 = call ptr @s2n_strerror(i32 noundef %812, ptr noundef nonnull @.str.3) #11
  %814 = load i32, ptr %811, align 4, !tbaa !16
  %815 = call ptr @s2n_strerror_debug(i32 noundef %814, ptr noundef nonnull @.str.3) #11
  %816 = load i32, ptr %797, align 4, !tbaa !16
  %817 = call ptr @strerror(i32 noundef %816) #11
  %818 = load i32, ptr %797, align 4, !tbaa !16
  %819 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %809, ptr noundef nonnull %.str.4.sink504, i32 noundef %810, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.2, i32 noundef 215, ptr noundef %813, ptr noundef %815, ptr noundef %817, i32 noundef %818) #12
  call void @exit(i32 noundef 1) #13
  unreachable

820:                                              ; preds = %665, %611, %792
  %821 = phi i32 [ %666, %665 ], [ %612, %611 ], [ %793, %792 ]
  %822 = add nsw i32 %821, 1
  store i32 %822, ptr @test_count, align 4, !tbaa !16
  %823 = call i32 @s2n_connection_free(ptr noundef nonnull %83) #11
  %824 = icmp eq i32 %823, -1
  br i1 %824, label %825, label %849

825:                                              ; preds = %820
  %826 = tail call ptr @__errno_location() #10
  %827 = load i32, ptr %826, align 4, !tbaa !16
  %828 = load ptr, ptr @stderr, align 8, !tbaa !17
  %829 = call i32 @s2n_print_stacktrace(ptr noundef %828) #11
  %830 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %831 = trunc nuw i8 %830 to i1
  br i1 %831, label %832, label %836

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

836:                                              ; preds = %832, %825
  br label %837

837:                                              ; preds = %832, %836
  %.str.4.sink515 = phi ptr [ @.str.4, %836 ], [ @.str, %832 ]
  store i32 %827, ptr %826, align 4, !tbaa !16
  %838 = load ptr, ptr @stderr, align 8, !tbaa !17
  %839 = load i32, ptr @test_count, align 4, !tbaa !16
  %840 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %841 = load i32, ptr %840, align 4, !tbaa !16
  %842 = call ptr @s2n_strerror(i32 noundef %841, ptr noundef nonnull @.str.3) #11
  %843 = load i32, ptr %840, align 4, !tbaa !16
  %844 = call ptr @s2n_strerror_debug(i32 noundef %843, ptr noundef nonnull @.str.3) #11
  %845 = load i32, ptr %826, align 4, !tbaa !16
  %846 = call ptr @strerror(i32 noundef %845) #11
  %847 = load i32, ptr %826, align 4, !tbaa !16
  %848 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %838, ptr noundef nonnull %.str.4.sink515, i32 noundef %839, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.2, i32 noundef 218, ptr noundef %842, ptr noundef %844, ptr noundef %846, i32 noundef %847) #12
  call void @exit(i32 noundef 1) #13
  unreachable

849:                                              ; preds = %820
  %850 = load i32, ptr @test_count, align 4, !tbaa !16
  %851 = add nsw i32 %850, 1
  store i32 %851, ptr @test_count, align 4, !tbaa !16
  %852 = call i32 @s2n_connection_free(ptr noundef nonnull %82) #11
  %853 = icmp eq i32 %852, -1
  br i1 %853, label %854, label %878

854:                                              ; preds = %849
  %855 = tail call ptr @__errno_location() #10
  %856 = load i32, ptr %855, align 4, !tbaa !16
  %857 = load ptr, ptr @stderr, align 8, !tbaa !17
  %858 = call i32 @s2n_print_stacktrace(ptr noundef %857) #11
  %859 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %860 = trunc nuw i8 %859 to i1
  br i1 %860, label %861, label %865

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

865:                                              ; preds = %861, %854
  br label %866

866:                                              ; preds = %861, %865
  %.str.4.sink526 = phi ptr [ @.str.4, %865 ], [ @.str, %861 ]
  store i32 %856, ptr %855, align 4, !tbaa !16
  %867 = load ptr, ptr @stderr, align 8, !tbaa !17
  %868 = load i32, ptr @test_count, align 4, !tbaa !16
  %869 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %870 = load i32, ptr %869, align 4, !tbaa !16
  %871 = call ptr @s2n_strerror(i32 noundef %870, ptr noundef nonnull @.str.3) #11
  %872 = load i32, ptr %869, align 4, !tbaa !16
  %873 = call ptr @s2n_strerror_debug(i32 noundef %872, ptr noundef nonnull @.str.3) #11
  %874 = load i32, ptr %855, align 4, !tbaa !16
  %875 = call ptr @strerror(i32 noundef %874) #11
  %876 = load i32, ptr %855, align 4, !tbaa !16
  %877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %867, ptr noundef nonnull %.str.4.sink526, i32 noundef %868, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.2, i32 noundef 219, ptr noundef %871, ptr noundef %873, ptr noundef %875, i32 noundef %876) #12
  call void @exit(i32 noundef 1) #13
  unreachable

878:                                              ; preds = %849
  %879 = load i32, ptr @test_count, align 4, !tbaa !16
  %880 = add nsw i32 %879, 1
  store i32 %880, ptr @test_count, align 4, !tbaa !16
  %881 = call i32 @s2n_io_pair_close(ptr noundef nonnull %8) #11
  %882 = icmp eq i32 %881, -1
  br i1 %882, label %883, label %907

883:                                              ; preds = %878
  %884 = tail call ptr @__errno_location() #10
  %885 = load i32, ptr %884, align 4, !tbaa !16
  %886 = load ptr, ptr @stderr, align 8, !tbaa !17
  %887 = call i32 @s2n_print_stacktrace(ptr noundef %886) #11
  %888 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !18, !range !20, !noundef !21
  %889 = trunc nuw i8 %888 to i1
  br i1 %889, label %890, label %894

890:                                              ; preds = %883
  %891 = load ptr, ptr @stderr, align 8, !tbaa !17
  %892 = call i32 @fileno(ptr noundef %891) #11
  %893 = call i32 @isatty(i32 noundef %892) #11
  %.not139 = icmp eq i32 %893, 0
  br i1 %.not139, label %894, label %895

894:                                              ; preds = %890, %883
  br label %895

895:                                              ; preds = %890, %894
  %.str.4.sink537 = phi ptr [ @.str.4, %894 ], [ @.str, %890 ]
  store i32 %885, ptr %884, align 4, !tbaa !16
  %896 = load ptr, ptr @stderr, align 8, !tbaa !17
  %897 = load i32, ptr @test_count, align 4, !tbaa !16
  %898 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %899 = load i32, ptr %898, align 4, !tbaa !16
  %900 = call ptr @s2n_strerror(i32 noundef %899, ptr noundef nonnull @.str.3) #11
  %901 = load i32, ptr %898, align 4, !tbaa !16
  %902 = call ptr @s2n_strerror_debug(i32 noundef %901, ptr noundef nonnull @.str.3) #11
  %903 = load i32, ptr %884, align 4, !tbaa !16
  %904 = call ptr @strerror(i32 noundef %903) #11
  %905 = load i32, ptr %884, align 4, !tbaa !16
  %906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %896, ptr noundef nonnull %.str.4.sink537, i32 noundef %897, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.2, i32 noundef 220, ptr noundef %900, ptr noundef %902, ptr noundef %904, i32 noundef %905) #12
  call void @exit(i32 noundef 1) #13
  unreachable

907:                                              ; preds = %878
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %908 = load i16, ptr %44, align 8, !tbaa !24
  %909 = zext i16 %908 to i64
  %.not138 = icmp ult i64 %indvars.iv.next, %909
  br i1 %.not138, label %76, label %.loopexit, !llvm.loop !60

.critedge:                                        ; preds = %285, %695
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  br label %.loopexit

.loopexit:                                        ; preds = %907, %.preheader, %.critedge
  %.not138183 = phi i32 [ -1, %.critedge ], [ 0, %.preheader ], [ 0, %907 ]
  ret i32 %.not138183
}

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

declare zeroext i1 @s2n_is_in_fips_mode() local_unnamed_addr #3

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #3

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

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #9

declare ptr @s2n_connection_get_cipher(ptr noundef) local_unnamed_addr #3

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

declare ptr @s2n_connection_get_last_message_name(ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare ptr @strrchr(ptr noundef, i32 noundef) local_unnamed_addr #9

declare i32 @s2n_calculate_stacktrace() local_unnamed_addr #3

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_io_pair_close(ptr noundef) local_unnamed_addr #3

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

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


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